domingo, 25 de noviembre de 2012

Implementando la orientación a objetos con prototipos con Self




Self es un lenguaje orientado a objetos, pero sin clases. Self esta basado en el concepto de prototipos, es decir que un objeto se construye a partir de otro. Ya hablamos de IO un lenguaje prototipado, inspirado en Self. Conocen otro lenguaje prototipado? Si, javascript!

Pero continuemos con Self fue creado por David Ungar y Randall Smith en 1986  mientras trabajaban en la empresa Xerox Parc. Ellos siguieron su trabajo en la universidad de Stanford donde publicaron el primer compilador en 1990 para luego irse a la empresa Sun Microsystems. Self se puede considerar un dialecto de SmallTalk. También tiene un entorno de maquina virtual y esta basado en la simplicidad.

Self inspiro a todos los lenguajes basados en prototipos como NewtonScript, JavaScript, Io, Cel, Lisaac y Agora.

Tradicionalmente los lenguajes orientados a objetos definen clases que son como plantillas de objetos a partir de estas clases se van creando las instancias. En lenguajes dinámicos como Smalltalk las clases pueden cambiar en la ejecución del programa afectando las nuevas instancias. De esta forma si eliminamos las clases y tomamos este ultimo concepto podríamos crear objetos y dinámicamente agregándole métodos y propiedades.

Lenguajes basados en prototipos creamos un objeto a partir de otro objeto, es una copia y a esta copia se le pueden agregar o modificar métodos y propiedades de forma dinámica.  Todo es objeto y sin clases!

Dejo link: http://selflanguage.org