viernes, 17 de octubre de 2008

Un poco de Historia...

La verdad que se me hace complicado mantener el blog con cosas interesantes, no porque no tenga ideas sino porque no tengo tiempo para escribir! 
En fin, hoy leí un post en la lista de squeak que me pareció muy interesante para compartir (y no escribir tanto). Es sobre la historia de Eclipse y VisualAge Smalltalk.
http://talklikeaduck.denhaven2.com/articles/2008/10/15/will-it-go-round-in-circles

jueves, 2 de octubre de 2008

Smalltalks 2008 - Concurso de Programación II

Quería comentar que la reglas del concurso ya están disponibles en castellano. Por un tema de tiempo no llegamos a tenerlas disponibles ayer, pero en el grupo del concurso se encuentra posteada las reglas en castellano.
Espero que esto no haya sido un inconveniente. También les comento que en el grupo del concurso se puede postear en inglés y castellano indistintamente.

miércoles, 1 de octubre de 2008

Smalltalks 2008 - Concurso de programación

Ya está disponible en el sitio del congreso de Smalltalks 2008 las bases para el concurso de programación! No pierdan tiempo! es un trabajo muy interesante y seguro que lo van a disfrutar y aprender!
Además el incentivo es bueno: 1er Premio un iPod Touch, 2do Premio un MP4 y 3er Premio voucher para libros en Yenny! 

Charla de Smalltalk/X - Mis conclusiones

Se hizo esperar, pero finalmente encontré algo de tiempo para escribir mis conclusiones sobre la charla que tuvimos sobre Smalltalk/X:
* La charla fue muy interesante y dinámica. Claus mostró mucho conocimiento y experiencia tanto en Smalltalk como en la implementación de Smalltalk. La primera parte de la charla la dedicó a mostrar la implementación de Smalltalk/X y sobre el final mostró la herramienta de testing que han desarrollado.
Me sorprendió la implementación de Smalltalk/X, no la conocía y me gustó bastante. Es una VM que no tiene nada que envidiarle a otras implementaciones, todo lo contrario, es muy superior a Squeak y VisualAge por ejemplo. Algunas características son:
a) Utiliza IC y PIC para acelerar el method lookup. Solo VW hace eso que yo sepa y por lo tanto sobrepasa en performance por varios cuerpos a Squeak y VisualAge (hagan la prueba sino)
b) Utiliza un GC incremental cuando realiza el mark & sweep del old space (por supuesto, es un GC generacional típico). Esto es muy bueno porque permite limitar el tiempo de gc y por lo tanto asegurar tiempos de respuestas para aplicaciones real time. No conozco otro Smalltalk que tenga esta característica. Por los menos VisualAge y Squeak no la tienen y me parece que VW tampoco
c) El modelo de treading es muy interesante. Primero utiliza threads nativas lo cual permite hacer uso automáticamente de máquinas con más de un procesador, sin embargo no pueden haber dos threads ejecutando concurrentemente. O sea, por un lado es una ventaja por poder distribuir la carga pero no está completamente implementada la posibilidad de ejecutar de manera concurrente. Segundo, cada ventana tiene su propia thread de ejecución, por lo tanto si por darle "evaluate" una ventana se queda haciendo un loop infinito, esto no "cuelga" las otras ventanas, se puede seguir trabajando de manera "normal" (Finalmente alguién que hizo bien esto!)
d) Tiene la opción interesante de generar imágenes muy chicas y empaquetar todo como exes reales. Aunque personalmente no utilizaría esta opción porque la imagen a mi entender sigue siendo algo muy importante, es una opción interesante cuando es necesario hacer aplicaciones para dispositivos con pocos recursos. Hacerlo traería aparejado mayor tiempo de mantenimiento y desarrollo porque habría que asegurarse de que esté todo lo necesario cuando se crea ese "exe" particular, pero es una opción válida para ciertos ambientes.
e) Es interesante la posibilidad de escribir las primitivas en el mismo ambiente, lo cual permite ver con exactitud cómo está implementado cada método. Una lástima no poder debuggear las primitivas, pero tampoco debería ser un requerimiento muy frecuente.
f) Desde el punto de vista de Smalltalk, es una implementación bastante completa. Tiene SUnit, concexión a BD via ODBC, tiene soporte para aplicaciones web (aunque no soporta SeaSide debido a no poder implementar continuations por no poder reificar el stack de ejecución), tiene el refactoring browser migrado y las herramientas típicas de cualquier Smalltalk.
g) Quizá lo único negativo que podría nombrar es la UI. Tiene un estilo un poco "antiguo" y no tan atractivo, pero es algo lógico puesto que hacer UIs "lindas" lleva tiempo y mucha creatividad. Por supuesto que esto para un programador experimientado no debería moverle la aguja, pero para programadores novatos puede ser un stopper (lo que no entra por los ojos...)

En conclusión, una charla muy completa y muy bien dada desde el punto de vista pedagógico. Se nota que Claus tiene experiencia en lo que habla y tiene mucha didáctica por ser profesor también. La verdad que la disfruté mucho y al día siguiente me bajé Smalltalk/X, lo instalé y jugé un poco con él. Un Smalltalk más para tener en cuenta. Es gratis sin ningún tipo de royalties para desarrollar o vender, completamente gratis. No open source, hay algunas temas que no están abiertos. No hay soporte más allá de la misma comunidad a menos que se page por él (no precisó costos). Es una lástima no compartir esta fabulosa implementación de la VM con otros Smalltalks open source como Squeak, o que Smalltalk/X no haga uso de la UI de Dolphin que es más atractiva... un Smalltalk "casi ideal" sería la VM de Smalltalk/X con el modelo de Squeak o VW (o una mezcla de ambos) y el UI de Dolphin... todo open source por supuesto. Una combinación así sería un caño me parece... igual no creo que suceda, por ahora seguimos viendo islas donde cada implementación trata de seguir mejorando lo que tiene. Eliot Miranda mejorando Squeak, Craig Latta haciendo Spoon, VisualAge tratando de soportar SeaSide, Gilad Bracha implementado NewSpeak, etc. No se si sería factible juntar todos los esfuerzos ni tampoco se si sería productivo, pero si se que sería interesante probar.