Ver Mensaje Individual
  #3 (permalink)  
Antiguo 01/07/2008, 14:59
Epaminondas Pantulis
 
Fecha de Ingreso: enero-2006
Mensajes: 48
Antigüedad: 18 años, 3 meses
Puntos: 0
Respuesta: Ruby 100% orientado a objetos

Ruby es un lenguaje fuertemente orientado a objetos, en la tradición de Smalltalk: *todo* es un objeto. Sin embargo convendría aclarar algunas cosas que lo hacen difernte de Java: en primer lugar Ruby tiene una fuerte componente de programación funcional (lambdas, bloques, funciones de mapeo, etc) de la que carece -por el momento- Java.

En segundo lugar, Ruby opta en algunos casos por paradigmas distintos para resolver un mismo problema. En Ruby *todo* es dinámico, de forma que no hay chequeo de tipos en el paso de parámetros (lo llaman "duck typing") Mientras el objeto que pasas como parámetro responda adecuadamente alo que la función le pida, tu programa funcionará. En caos contrario saltará una excepción. Esto es muy potente.

Además, puedes *abrir* las clases en tiempo de ejecución; puedes cambiar el código de una clase ya existente; no heredar de ella -que es lo que C++ o Java te permiten- sino *cambiar* la forma en la que se comportan todas las instancias de una clase aunque hayan sido instanciadas *antes* de que tú hagas ese cambio en la clase. Con esto se pueden abordar los problemas de otra manera. Por ejemplo, en Java tienes los interfaces (o las clases virtuales puras de C++). Ruby enfoca el problema de una manera distinta usando módulos o "mixins", que te permiten inyectar los métodos que quieras en tu clase -en lugar de heredar de una clase abstracta-.

En defiitiva, que Ruby es un gran lenguaje de programación pero yo creo que para aprovechar bien su potencia (y entender por ejemplo lo que hacen las tripas de Rails) es necesario tener una base de programación orientada a objetos muy sólida que sólo la consigues viendo cómo se hacen las cosas en varios lenguajes distintas (por ejemplo C++, Eiffel, Java...) y luego aplicándolo o contrastándolo con la forma de trabajar de Ruby.
__________________
------------------------------
http://www.sobrerailes.com