|Portada|Blog|Space|
[Índice] > Tcl para el desarrollo rápido de aplicaciones
Es bien sabido que uno de los más importantes factores que promueven el
software libre es ni más ni menos que el aburrimiento, el cual al
mezclarse con la capacidad de gente creativa permite que salgan obras
muy interesantes.
Aburrimiento que nos llega a todos, por ejemplo a mi. Y es por esto que
decidí armar un programa muy simple para escribir en el celular usando
el teclado de mi computadora. Hacer este programa me llevó media hora
aproximadamente, a los hechos, mucho menos tiempo del que me tomó hacer
esta entrada en el blog.
Esto se debe más que nada al lenguaje que decidí usar: Tcl.
Es un muy interesante lenguaje, con características poco comunes.
* Interpretado, pero que se compila a bytecode automáticamente en
tiempo de ejecución.
* Totalmente estructurado, no existe goto, ni es funcional, una de sus
críticas importantes es que tiene un mal rendimiento en algoritmos
recursivos.
* Orientación a objetos opcional, muy completo, rápido, flexible y
prolija es por ejemplo la extensión xotcl.
* Sintaxis increíblemente simple basada en órdenes.
* No hay dramas con la precedencia de operadores sencillamente porque
no existen los operadores :)
La idea es la siguiente, el programa está formado por líneas donde cada
línea es una orden, se puede usar el ; para poner más de una orden por
línea. Y para continuar una misma orden en la siguiente se puede usar la
contrabarra o agrupar varias líneas con llaves.
por ejemplo:
puts "Hola mundo"
o también:
puts {
Este texto es mucho más grande y largo
y tiene varias líneas en una sola orden.
}
Las ordenes están formadas por palabras separadas por espacios y también
se puede usar "" para agrupar texto de forma similar al {} también
permitiendo expandirse a varias líneas.
La primer palabra es el nombre del procedimiento a ejecutar.
Los procedimientos, son una lista de órdenes para poder ejecutar una vez
definidos. No se les pueden pasar parámetros por referencia, pero de
forma análoga a C lo que se puede hacer es pasar el nombre de la
variable a la cual nos referimos.
A su vez los procedimientos devuelven un valor que por extrañas razones
no puede ser un array.
Con el procedimiento proc podemos definir nuevos procedimientos,
ejemplo:
proc "Suma dos números." {Número1 Número2} {
return [expr ${Número1} + ${Número2}]
}
Pero lo más importante del lenguaje es aprender a usar los corchetes,
sin los cuales el lenguaje sería totalmente inútil. Los corchetes
permiten obtener el resultado del procedimiento como si fuera un
argumento en donde se usa, de esta forma tener:
puts "1 + 1 = [expr 1+1]"
sería equivalente a tener
puts "1 + 1 = 2"
dado que expr 1+1 devuelve "2".
Para almacenar cosas en memoria ram se pueden usar los siguientes
mecanismos:
* Arrays (que se implementan como diccionarios)
* y Variables comunes (que se implementan automáticamente y de forma
100% transparente como escalares, texto, listas, vectores o árboles,
según como se use la variable)
Las arrays y las variables NO son intercambiables, excepto usando las
órdenes array get y array set.
Y de forma similar a muchos otros lenguajes poniendo $ antes del nombre
de la variable es que obtenemos su valor.
De esta forma es fácil hacer un programa que salude:
puts "Ingrese su nombre: "
gets stdin nombre
puts "Hola $nombre."
Como habrán visto, puts y gets son órdenes importantes del lenguaje.
Las órdenes que vienen en el lenguaje son:
after append array auto_execok auto_execok auto_import auto_import
auto_load auto_load auto_load_index auto_load_index auto_qualify
auto_qualify binary break case catch cd clock close concat continue
encoding eof error eval exec exit expr fblocked fconfigure fcopy file
fileevent flush for foreach format gets glob global history history if
incr info interp join lappend lindex linsert list llength load lrange
lreplace lsearch lset lsort namespace open package pid proc puts pwd
read regexp regsub rename return scan seek set socket source split
string subst switch tclLog tclLog tell time trace unknown unset update
uplevel upvar variable vwait while
de las cuales aprender las siguientes son cruciales para poder arrancar
a programar en Tcl:
after array break catch continue exit expr for foreach gets if incr
lindex list llength proc puts return set string switch while
Con eso aprendido después es recomendable profundizar en los siguientes
conceptos: focos de variables, espacios de nombres, manejo de archivos,
expresiones regulares, y sockets.
Finalmente vale la pena aprender Tk, que para mi gusto tiene algunas
cosas que dejan mucho que desear, pero bueno, también tiene sus
ventajas, y es realmente muy fácil.
Aprender Tcl/Tk entonces les puedo decir que no lleva más que un par de
días, y espero que con la introducción que dí en esta página les sirva
para arrancar.
A los usuarios de debian: apt-get install tcl8.4 tk8.4
y ya que estoy les paso el programa que hice (me llevó media hora)
cvs -d :pserver:anonymous@fideo.no-ip.info/repos checkout escribir
---------
Los documentos en este sitio se encuentran licenciados bajo la GFDL.
Ver comentarios: [Hay i comentarios]
Para agregar un comentario: agregue a la URL: ?do=show_comment_form (explicación)