Sunday, October 19, 2008

El LayerD de las eminencias

Me agrada muchísimo enterarme – lamentablemente recién ahora – del trabajo de eminencias mundiales en ciencias de la computación como son:

  • Alan Kay : Creador de Smalltalk, Simula, uno de los padres inventores de la orientación a objetos en los 70, Ganador del premio Turing (para quienes no conocen son como los premios nobel en las ciencias de la computación)… bue si no sabes quién es Alan Kay se merece lo "googlees".
  • Dan Ingalls: Colaborador de Alan Kay en los míticos Xerox PARC implemento el primer compilador de Small Talk, trabajo en los equipos que inventaron las primeras UI de la historia, en los laboratorios de HP, entro otros trabajos.
  • Yoshiki Ohshima, Ian Piumarta, Andreas Raab: Todos ellos conocidos científicos de ciencias de la computación con docenas de trabajos publicados en los congresos "top" como los organizados por el ACM.

Entre otros colaboradores están desarrollando el proyecto "Steps Toward the Reinvention of Programming" el cual intenta resolver muchos de los problemas existentes en la ingeniería de software planteando (humildemente al igual que lo afirmo e intento colaborar proponiendo soluciones con LayerD) las limitaciones del software actual y sus problemas de implementación como el "bloated code", la fragilidad del software, la escasa expresividad de los programas, las limitaciones de acoplamiento del código fuente actual entre otros problemas.

Aún no he tenido tiempo de estudiar este proyecto en profundidad pero por lo que he leído es muy ambicioso y no abarca sólo la etapa de implementación.

Me resulto muy grato como para la etapa de implementación del software planean (y utilizan) mecanismos muy similares a los que uso en LayerD:

La diferencia principal de su método (principalmente está detrás de esta parte Ian Piumarta parece ser) es que utilizan lenguajes dinámicos en tiempo de compilación y ejecución. También tiene en común como tratan y hablan del problema de los lenguajes y tecnologías actuales de desarrollo en cuanto al acoplamiento a los entornos de ejecución, librerías y hardware (el ambiente) y señalan que es necesario eliminar estas limitaciones para poder "reinventar la programación". En definitiva, se trata de un proyecto que tiene mucho en común filosóficamente hablando con LayerD aunque la implementación sea diferente en varios sentidos y común en algunos otros.

No es la primera vez que encuentro que existe algún proyecto "filosóficamente" similar a LayerD, de hecho es algo que se viene buscando hace mucho tiempo lograr. Anteriormente tenía conocimiento de proyectos similares como el empuje de la Programación Orientada al Lenguaje por tipos como Sergey Dmitriev y la programación intencional impulsada por el mítico Charles Simonyi (Xerox, Microsoft, Intentional Programming); aunque estos autores no hablan demasiado del acoplamiento del software a APIs y entornos de ejecución, lo cual para mi es fundamental erradicar, sino que hablan más de utilizar paradigmas más abstractos.

LayerD se desarrollo en su formato actual alrededor de fines del año 2002, es muy grato para mi saber que aún cuando no conocía nada de estos proyectos, meta-programación, programación orientada al lenguaje o programación intencional, haya llegado a desarrollar algo muy similar a las tecnologías que estas eminencias ganadoras de premios Turing y repletas en PhD, Masters y cosas por el estilo. Me da esperanzas porque me hace pensar que en la próxima década definitivamente veremos nacer un nueva era en la ingeniería de software de la mano de algunos de estos proyectos y saber que humildemente forme parte de uno de ellos que impulsa con pasión hacia ese destino inevitable de nuestra querida profesión me hace sentir bien y tener la certeza de que no perdí el tiempo todos estos años que tanto esfuerzo – a pesar de mis limitaciones, ignorancia y falta de experiencia – puse en este proyecto.

Les dejo algunos links, y sigo estudiando :-P

http://www.vpri.org/html/work/NSFproposal.pdf

http://piumarta.com/papers/colas-whitepaper.pdf

http://vpri.org/html/work/ifnct.htm

No comments: