lenguaje de programación tcl | |
---|---|
Autor | Juan Ousterhout |
Fecha de origen | 1988 |
Ultima versión | 8.6.12 (5 de noviembre de 2021) |
Paradigmas | programación multiparadigma, programación orientada a objetos , programación procedimental , programación imperativa , programación funcional y programación de eventos |
Mecanografía | débil |
Extensiones comunes | .tcl y .tbc |
Influenciado por | Awk y ceceo |
Influyó | PHP , PowerShell y Té |
Implementación de referencia | |
Licencia | licencia BSD |
Sitio web | tcl.tk |
En informática , TCL (acrónimo de Tool command language ) es un lenguaje de scripting creado por John Ousterhout generalmente considerado fácil de aprender (en comparación con los lenguajes de su generación), pero al mismo tiempo poderoso. Se utiliza comúnmente para crear rápidamente prototipos y probar aplicaciones interpretadas , incluidas aquellas con una interfaz gráfica . La pronunciación sugerida para el acrónimo TCL es "cosquillas".
Las características del lenguaje TCL incluyen:
Para un Hello world el código es
pone "¡Hola mundo!"Ejemplo de código sencillo:
pone "dame un número" obtiene el número de entrada estándar pone "El cuadrado es [expr {$ número * $ número}]"Otro ejemplo de estilo funcional:
filtro de proceso { guión de lista } { establecer res {} foreach y $ lista { if {[nivel superior 1 $ guión $ e ]} { lappend res $ e } } set res }¿Está el elemento e incluido en la lista lista ? Si es así, devuelve 1, de lo contrario 0.
proc en { lista e } { expr {[ lsearch - lista $ exacta $ e ] > = 0 } }Elementos comunes de dos listas, es decir, intersección conjunta:
% filtro { a b c } { en { b c d }} b cLa extensión Tk es un conjunto de herramientas para escribir GUI (un kit de herramientas de widgets ) implementado por el propio autor de TCL. También se puede usar en combinación con otros lenguajes como Perl , Python , Ruby , Lisp y otros, y ha sido portado a varias plataformas como GNU/Linux , Apple Macintosh , Unix y Windows .
Ejemplo Tk, un reloj numérico en tres líneas:
proc cada { ms cuerpo } {eval $ cuerpo ; after $ ms [ info level 0 ]} pack [ label .clock - textvar time ] cada 1000 {set :: time [ clock format [ clock sec ] - format % H: % M: % S ]}