Smalltalk y Javascript

Published on Author lopezLeave a comment

Por décadas Smalltalk fue "la fragata bandera” de las ideas de objetos y clases implementadas en un lenguaje, ambiente de desarrollo e imagen viva. Pero ha sido un caso de “demasiado, y demasiado temprano”. Aparecieron Smalltalks diferentes, compañías que lo implementaban distintos, no había tanta comunicación en línea y masa crítica como para formar una comunidad que lo desarrollado. Se necesitaba mucho hardware, su ambiente de desarrollo era (y es) muy “lo hago a mi manera”, todo eso conspiró para que no llegara a la corriente principal de lenguajes usados hoy en día. Mientras tantos, nuevos lenguajes de los 90s (noten el paralelismo con el desarrollo de la web) aparecen Javascript hasta Ruby, tomando ideas de Smalltalk. Y son lenguajes más usados que Smalltalk. En este siglo, Javascript, Ruby, Python, CLR (la VM de .NET con varios lenguajes), JVM (la VM de java con scala, Groovy, Clojure (“look ma.. Lisp for the masses” 😉 siguen ganando momento. Con la emergencia de múltuples dispositivos, móbiles, tables, smart phones, distintos sistemas operativos, estos nuevos lenguajes están siendo desarrollados para ejecutar en muchos entornos diferentes. Y están soportados por una comunidad vibrante, con cantidad de buenos proyectos de código abierto que contribuyen a la popularidad y adopción de estas tecnologías. Vean como ejemplo a Node.js, una implementación en Javascript/Google V8 Engine del patrón reactor. Tiene cantidad de módulos que se montan sobre su implementación núcleo.

Los Smalltalkers clásicos preferiran sus entornos, pero es una realidad que el código Smalltalk podría aprovecharse de los lenguajes, máquinas virtuales y librerías existentes. Un camino promisorio: compilar Smalltalk a Javascript, y conseguir el sueño “run everywhere”. (Noten que Clojure (special Lisp over JVM and CLR) tiene una nueva rama: ClojureScript ver su rationale). Este post de hoy es una enumeración de proyectos que usan alguna variación de Smalltalk compilado a Javascript.

Está el ST2JS (Smalltalk to Javascript translator):

ST2JS – Smalltalk to Javascript translator
http://www.squeaksource.com/ST2JS/

ST2JS – Traductor de Smalltalk a JavaScript (Parte I) (Spanish)
http://diegogomezdeck.blogspot.com/2006/07/st2js-traductor-de-smalltalk.html

ST2JS – Traductor de Smalltalk a JavaScript (Parte II) (Spanish)
http://diegogomezdeck.blogspot.com/2006/07/st2js-traductor-de-smalltalk_28.html

Hay un Smalltalk Web Toolkit basado en el ST2JS (no pude encontrar el código fuente):

Smalltalk Web Toolkit (Smalltalks 2009)
http://www.slideshare.net/garduino1/swt-2009

Introducción a Smalltalk Web Toolkit (SWT) « CEIBO
http://ceibo.wordpress.com/2008/01/06/introduccion-a-smalltalk-web-toolkit-swt/ (with detailed mini examples of Smalltak to Javascript translations, like closures, blocks, etc)

Nicolas Petton tiene Amber (antes era JTalk), que crea archivos Javascript traduciendo código Smalltalk (tiene ejemplo ejecutando en Node.js):

ST 4U 133: Amber
http://www.jarober.com/blog/blogView?entry=3493610269

NicolasPetton/amber – GitHub
https://github.com/NicolasPetton/amber

Peter Fisk (creador VistaSmalltak, GWT Smalltalk, y ahora SilverSmalltalk) estuvo escribiendo Smalltalk usando Silverlight, herramientas de Google, y ahora, Javascript:

Implementing Smalltalk’s Non-Local Returns in JavaScript « Silver Smalltalk
http://silversmalltalk.wordpress.com/2011/02/02/implementing-smalltalks-non-local-returns-in-javascript/

Smalltalk Classes in JavaScript « Silver Smalltalk
http://silversmalltalk.wordpress.com/2011/02/02/smalltalk-classes-in-javascript/

Vean el Lively Kernel, Javascript inspirado por Smalltalk, y JTalk (ahora Amber):

InfoQ: Smalltalk IDEs Come to the Browser: Jtalk, tODE, Lively Kernel 2.0
http://www.infoq.com/news/2011/08/smalltalk-in-browser

InfoQ: Dan Ingalls on the History of Smalltalk and the Lively Kernel
http://www.infoq.com/interviews/ingalls-smalltalk

Lively Kernel
http://en.wikipedia.org/wiki/Lively_Kernel

Hay una implementación de Smalltalk a Javascript, llamada S8, trabajo en progreso. Ver:

Blog de Leo De Marco: Lanzamiento de S8 en Smalltalking
http://leodemarco.blogspot.com/2011/09/lanzamiento-de-s8-en-smalltalking.html

Y sí, adivinaron! Hay Smalltalk a Javascript (y espero, a otros lenguajes dinámicos) en mi proyecto AjTalk (Work in Progress) (tengo que escribir post!). Estoy trabajando en cómo implementar algunas características como:

doesNotUnderstand for JavaScript?
http://stackoverflow.com/questions/3918920/doesnotunderstand-for-javascript

Is there an equivalent of the __noSuchMethod__ feature for properties, or a way to implement it in JS?
http://stackoverflow.com/questions/2266789/is-there-an-equivalent-of-the-nosuchmethod-feature-for-properties-or-a-way-t

Mis enlaces:
http://www.delicious.com/ajlopez/smalltalk+javascript

Gracias a @garduino por sus enlaces acerca de ST2JS y el Smalltalk Web Toolkit. Y a @leodmarco por su post aclaratorio sobre S8.

Se viene más Smalltalk a Javascript (usando AjTalk) 😉

Nos leemos!

Angel “Java” Lopez
http://www.ajlopez.com
http://twitter.com/ajlopez

Leave a Reply

Your email address will not be published. Required fields are marked *