viernes, 11 de mayo de 2007

(Re)Descubriendo Tcl/Tk

En esto tiempos aciagos para los/as programadores/as, en los que cada dos días sale un lenguaje o herramienta nuevos, en los que para montar una sencilla web hay que lidiar con los omnipresentes patrones de diseño, montones de capas de abstracción y demás, se agradece la simplicidad y sencillez de los viejos tiempos.
Tcl significa "Tool Command Language" y Tk "ToolKit". Es un lenguaje de "script", con una sintaxis muy similar a la de cualquier "shell" (como Bash).

Hacía mucho que no hacía nada con Tcl/Tk, y el otro día recordé que existe todavía la estupenda librería Snack. Es una librería de tratamiento y generación de sonido en tiempo real.

Así que, provisto del tutorial de Snack y la documentación de Tcl/Tk pertinente, me hice un pequeño afinador (cutre: sólo da notas de referencia, no "lee" las notas del instrumento):

Captura pantalla

(Captura de pantalla en Windows)

En 65 líneas de código simple tenemos casi un programa completo:

Código (renombrar a tuner.tcl)

Lo que más atención me llama es que a cada "widget" se le puede asociar una variable (global) de tal forma que, al cambiar la variable, se actualiza el elemento convenientemente. Por ejemplo, el "message" y el "spinbox" tienen asociados dos variables, newfreq y octave, respectivamente.

Desde el procedimiento beep modificamos newfreq y el texto de la etiqueta cambia.
Ocultamiento de información y encapsulamiento: ninguno. ¿Acaso es necesario siempre? ;-)

Recursos

  • Todavía hay en la red un tutorial en castellano (de lo poquito que he podido encontrar) de la Universidad de Oviedo. Data de 1998 (!) y está bastante bien. Lo bueno del mundillo Tcl/Tk es que las cosas no se quedan obsoletas tan pronto.

  • Visual Tcl es un IDE para Tcl/Tk. Permite desarrollar las aplicaciones Tcl/Tk de forma "visual": pinchando y dibujando los "widgets". Funciona perfectamente y su última actualización fue en 2006.

6 comentarios:

  1. Hola, perdona busca un manual de Visual Tcl en español, sabes si existe alguno? lo necesito para un proyecto de fin de carrera. Muchas gracias por la contestacion.

    ResponderEliminar
  2. En español no conozco nada, sin embargo, en el tutorial de la Universidad de Oviedo tienen un apéndice sobre "programación visual":http://www.etsimo.uniovi.es/tcl/tutorial/apen_c.htmlPero me temo que está bastante desactualizado.En la página de Visual Tcl sí que hay algún tutorial (en inglés).Me permito darte un consejo: si el proyecto es medianamente complejo, no conoces mucho el lenguaje y puedes prescindir de Tcl, hazlo. Para mi gusto, Tcl no es de los lenguajes más "amigables" que hay.Saludos y suerte.

    ResponderEliminar
  3. Buenas,Me llamó la atención lo de que no es un lenguaje amigable.Te comento que necesito desarrollar una interfaz gráfica de la manera más rápida y simple posible para un proyecto en Ubuntu.Básicamente necesito de una interfaz con algunos "select" botones y campos de texto. De acuerdo a la información establecida en las variables definidas por los distintos elementos de la interfaz se debe modificar un archivo de texto (es simplemente un script que corre en un simulador).Luego debo tener un botón que corra el script en la consola de ubuntu.Soy ingeniero en telecomunicaciones, así que de lenguajes casi nada.. jejeQue me recomendás hacer o buscar para realizar esta simple interfaz lo más rápido posible (5 días)?Gracias de antemano

    ResponderEliminar
  4. Gonzalo: para lo que tú quieres, Tcl/Tk es idóneo.

    ResponderEliminar
  5. Ok, David.. Muchas gracias!La última... ¿tienes algo de código que me pueda servir de base en particular para lo que yo busco?Sobre todo me interesa la parte de escritura sobre el script que te mencioné antes y la comunicación con el terminal de Ubuntu a partir de los elementos gráficos de la interfaz.

    ResponderEliminar
  6. hola estoy desarrollando mi tesis de grado en tcl/tk y tengo algunos problemas conb el lenguaje no se como activas y desactivar ventanas, tampoco como vaciar la informacion de una base de datos a archivo, si me pudiera ayudar se lo agradeceria.

    ResponderEliminar