2011-08-29 9 views
11

Una introducción reciente a Smalltalk me ha iluminado sobre la aplicación y los beneficios de un estilo orientado a objetos 'puro'. Anteriormente había visto los beneficios de esto en Ruby, aunque la presencia de construcciones no orientadas a objetos if, unless etc. parecía no llevar todo el camino.¿Cuáles son algunos de los lenguajes más 'puros' orientados a objetos?

Por puro aquí, estoy hablando de cosas como 'todo es un objeto' (incluyendo funciones por bloques o algo similar) y sin control de flujo de estilo de procedimiento, en lugar de usar métodos de control de flujo en colecciones booleanas &.

Sin embargo, incluso en un lenguaje como Smalltalk algunas cosas se destacan como no orientadas a objetos. Por ejemplo, no parece posible hacer una asignación de variable sin usar una sintaxis especial (: = en lugar de un 'es:' o un método similar) y devolver valores de una función parece requerir el operador^que no parece pertenecer 'a cualquier objeto.

¿Hay algún idioma que lleve este estilo aún más?

+0

¿Cuál es el beneficio de la pureza? La pureza hace que Haskell tenga una curva de aprendizaje significativamente más alta que otros lenguajes funcionales porque las mónadas son tan difíciles de entender desde el punto de vista del procedimiento. –

+2

@Chris: Sí, pero las mónadas son * increíbles * una vez que las tienes. Esta pregunta, por otro lado, parece llevar la cuestión de la pureza un poco lejos ... Claro, puedes soltar valores de retorno y en su lugar requerir que ese tipo de comunicación pase por el estado del objeto (llamar a un método no da como resultado nada, luego usar 'self.result'), pero hay una razón por la que los programadores usualmente intentamos mantener el alcance de todo lo más pequeño posible. Además, rompería el encadenamiento de métodos ya que no hay valor de retorno, a menos que definas que alguna propiedad del objeto sea ese valor, pero luego volvemos a la magia. Y la lista continúa. – delnan

+1

Reconozco totalmente que la pureza en este aspecto puede hacer que las cosas sean bastante prolijas y potencialmente no perfectas, pero también hay un beneficio significativo en un lenguaje que tiene un conjunto de reglas muy pequeño y consistente. Dicho esto, me encantaría encontrar un lenguaje que haya llevado las cosas al extremo, incluso si solo fuera un buen ejemplo de algo demasiado bueno. – donalbain

Respuesta

8

Como mucho tiempo Smalltalker I (en comparación con muchas otras respuestas aquí) entender lo que está después - y la lengua "propia" hace ir un poco más lejos, en el menos cuando se trata de asignaciones. Al no haberme programado en sí mismo, no puedo comentar más que eso. Otro lenguaje más nuevo similar a uno mismo es Slate, también prototípico y también utiliza envíos de mensajes para asignaciones.

2
+2

Smalltalk fue discutido y descartado en la pregunta. Ruby es mucho más híbrido que Smalltalk (por ejemplo, tiene características funcionales como 'call/cc'). Por favor lea la pregunta. – delnan

+0

Ese enlace es realmente un gran recurso. – donalbain

+0

fue un gran recurso hace diez años. Java tiene genéricos desde 2003. – fdreger

Cuestiones relacionadas