miércoles, julio 27, 2005

La magia del Smalltalk: Capítulo 2 - ¿IDE? no gracias

Es muy difícil mostrar las diferencias que tiene Smalltalk con los lenguajes de programación “tradicionales”.

Una de las cosas que cuesta trabajo ver es la diferencia que implica el hecho que Smalltalk sea un ambiente. Un ambiente de Smalltalk no es un nuevo tipo de IDE (Integrated Development Environment). En Smalltalk los objetos sobreviven al hecho de salir del Smalltalk. Todos los objetos que tengamos instanciados son grabados, en el estado exacto que están, al disco rígido en el momento de grabar la imagen (se llama imagen porque queda en el disco una imagen de la memoria de la máquina).

Este hecho nos expone a ciertas características que ni soñamos cuando usamos lenguajes con el clásico ciclo de desarrollo: vi/emacs > compilar > ejecutar el código > depurar > vi/emacs. Los nuevos IDEs (como el Eclipse) disimulan ese ciclo, pero no lo mejoran.

La diferencia fundamental es que, en Smalltalk, los objetos están siempre “vivos”, y no mueren cuando uno tiene que escribir código. Este implica, entre otras cosas, que los objetos sobreviven a los cambios en las clases.

Una de las primeras cosas que suelo mostrar cuando explico Smalltalk es lo siguiente:

  • Creo una clase vacía, sin nada.
  • Instancio un objeto de esa clase y lo inspecciono.
  • Con el inspector a la vista, sin cerrarlo, modifico la estructura de la clase (por ejemplo agregando una variable de instancia).
  • Ahora el inspector muestra la instancia actualizada a la nueva forma de la clase.


Este simple ejercicio muestra una característica fundamental de la programación con Smalltalk. Ahora imaginemos que salimos (grabando) del Squeak después del segundo paso, que nos vamos de vacaciones por 15 días, y que abrimos el Squeak y hacemos los otros 2 pasos.... ¿Qué es lo que ocurre? Nada. Sólo ocurrió que nuestro objeto (la única instancia de Customer) se "durmió" una siesta de 15 días esperando hasta que lo despertemos (¡Al mejor estilo de Walt Disney!).

De hecho, en cualquier Squeak actual, hay objetos que llevan casi 30 años instanciados (desde el Smalltalk/76).

9 Comentarios:

At 28/7/05 13:19, Blogger Alejandro Curado said...

Hola Diego,

muchas gracias por estas lecciones en tu blog. Como sabes, en mi trabajo como profesor de inglés en informática, estamos intentando implementar squeak en un proyecto de fin de carreras. Mis alumnos están en ello,lo cual prueba que trabajar con squeak puede incluir a educadores e informáticos; ya estaremos en contacto.- Un abrazo

 
At 29/7/05 10:10, Anonymous Anónimo said...

Toda esta documentación es estupenda ¿alguna intención de ponerlo también en pdf o similar para poder guardarlo todo en nuestro disco duro? Sería el primer libro de smalltalk y Squeak en el idioma de Cervantes... Si te da para mucho puedes seguir el modelo de "Thinking in Java..."

 
At 29/7/05 14:36, Anonymous Anónimo said...

Hola Diego,

>Los nuevos IDEs (como el Eclipse) >disimulan ese ciclo, pero no lo >mejoran.

Por q decis q ciertos IDE no mejoran este ciclo ? . Con que fundamentos ?.

No veo que un IDE disimule este ciclo, diria todo lo contrario.

Saludos,
ibarrasg at gmail

 
At 29/7/05 14:38, Anonymous Anónimo said...

fe erratas post anterior:

ibarrags at gmail

Saludos,
Gustavo.-

 
At 29/7/05 14:48, Blogger Diego Gomez Deck said...

Hola Gustavo,

¡Bienvenida la polémica!

Digo que los IDEs no mejoran el ciclo porque, para mejorarlo, hace falta lenguajes que no asuman que escribir código es una tarea inconexa con la ejecución del mismo código.

Sólo entornos “vivos” como el Smalltalk, el LISP, el Forth, etc. son capaces de romper con ese ciclo.

Con “vivos” me refiero a entornos donde la tarea de programación ocurre en el mismo espacio que la ejecución. De hecho no existe la diferencia entre programación/ejecución.

Saludos,

-- Diego

 
At 2/8/05 01:59, Anonymous Anónimo said...

Hola Diego,
queria escuchar esa misma respuesta.

El tema en cuestion entonces no es IDE o no IDE (yo lo tome asi). Bien remarcas que en un un entorno como los mencionados se habla directamente con el por medio de un dialecto, en el Squeak el smalltalk (como lenguaje)...en otros lenguajes que no cuentan con entornos "vivos", son SOLO lenguajes que requieren de dicho cilo si o si, ahora el IDE en estos ultimos no esta para disimular el ciclo o mejorarlo

Tengo otra pregunta, un inspector, un workspace, un class browser en el Squeak, no hacen de IDE ?

Saludos,
Gustavo
ibarrags at gmail

 
At 2/8/05 11:56, Blogger Diego Gomez Deck said...

Hola Gustavo,

> Tengo otra pregunta, un inspector, un workspace, un class browser en el Squeak, no hacen de IDE ?

Bueno, depende de que entiendas como IDE. Como decía en el post, yo creo que los IDEs son como un parche a un problema de fondo de los lenguajes como Java, C++, C# y un (lamentablemente) etcétera.

Las herramientas que usamos en un ambiente de Smalltalk son una continuación del modelo de Smalltalk. Hay una frase que me gusta mucho que dice que una buena vista no puede ocultar un mal diseño del modelo (refiriéndose a la triada Model-View-Controller). En Smalltalk, las herramientas que tenemos, son una consecuencia de un buen modelo... los IDEs son, IMHO, el intento de mejorar en la vista un mal modelo.

 
At 3/8/05 23:45, Anonymous Anónimo said...

Hola Diego,

gracias por las rtas.

Se me acomodo mas el significado de de q es un IDE cando lei esto

"Puede dedicarse en exclusiva a un sólo LENGUAJE de programación o bien, poder utilizarse para varios."

La palabra lenguaje me aclaro el tema. En fin, uno repite siglas y no las tiene bien definidas en la cabeza.

Para cerrar (de mi parte), me quedo con esta frase

>una buena vista no puede ocultar un >mal diseño del modelo

Saludos,
Gustavo.-

 
At 11/11/05 22:25, Blogger Idis said...

Hola Diego:
disculpa que lo moleste pero me hace falta su ayuda.Bueno primero dejeme presentarme:me llamo Idis soy una estudiante de Cibernetica en Cuba,me encuentro en 3er aÑo de la carrera.bueno ya puedo decirle,tengo que hacer un seminario de Smalltalk para este miercoles 16 de noviembre y entre los requerimiento del trabajo estan:
Recoleccion de basura
Sistema de clases dinamicas
Interpretacion y maquina virtual
sistema de envio y ejecucion de mensajes
Metaclases
Estos son los aspectos que tengo que investigar,ojala y pueda contar con su ayuda.
Saludos Idis,esperando su respuesta(me puede escribir cualquier dia)

 

Publicar un comentario

<< Principal