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!
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipSwJcBiwFfMYytTVQysJHGP5wuxeG2utRJTutZI0x7IhlPLL4fULN36b_1NbaGCHdKNPh4mTafbtGVX-kertzOB0cI1t6l4DLo0b3XR68XmjeKGE55SeoyasT5HVv-XT2k_I9T7PlCAo/s1600/Self_lang_logo.png)
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