De Wikipedia, la enciclopedia libre
Saltar a navegación Saltar a búsqueda

Tcl (pronunciado "cosquilleo" o como una sigla [6] ) es un alto nivel , de propósito general , interpretado , lenguaje de programación dinámica . Fue diseñado con el objetivo de ser muy simple pero poderoso. [7] Tcl pone todo en el molde de un comando , incluso construcciones de programación como la asignación de variables y la definición de procedimientos. [8] Tcl soporta múltiples paradigmas de programación , incluyendo programación orientada a objetos , imperativa y funcional o estilos procedimentales .

Se utiliza comúnmente integrado en aplicaciones C , [9] para la creación rápida de prototipos , aplicaciones con secuencias de comandos, GUI y pruebas. [10] Los intérpretes de Tcl están disponibles para muchos sistemas operativos , lo que permite que el código Tcl se ejecute en una amplia variedad de sistemas. Debido a que Tcl es un lenguaje muy compacto, se utiliza en plataformas de sistemas integrados , tanto en su forma completa como en varias otras versiones de tamaño reducido. [11]

La combinación popular de Tcl con la extensión Tk se conoce como Tcl / Tk y permite construir una interfaz gráfica de usuario (GUI) de forma nativa en Tcl. Tcl / Tk se incluye en la instalación estándar de Python en forma de Tkinter .

Historia [ editar ]

El lenguaje de programación Tcl fue creado en la primavera de 1988 por John Ousterhout mientras trabajaba en la Universidad de California, Berkeley . [12] [13] Originalmente "nacido de la frustración", [9] según el autor, con los programadores ideando sus propios lenguajes destinados a ser integrados en aplicaciones, Tcl ganó aceptación por sí solo. Ousterhout recibió el premio ACM Software System Award en 1997 por Tcl / Tk. [14]

El nombre proviene originalmente de T ool C ommand L anguage, pero se escribe convencionalmente "Tcl" en lugar de "TCL". [15]

Las conferencias y talleres de Tcl se llevan a cabo tanto en los Estados Unidos como en Europa. [25]

Funciones [ editar ]

Un archivo Tcl que se está editando en el IDE de Eclipse

Las características de Tcl incluyen

  • Todas las operaciones son comandos , incluidas las estructuras del lenguaje. Están escritos en notación de prefijo .
  • Los comandos comúnmente aceptan un número variable de argumentos (son variables ).
  • Todo se puede redefinir y anular dinámicamente. En realidad, no hay palabras clave, por lo que incluso se pueden agregar o cambiar estructuras de control, aunque esto no es recomendable.
  • Todos los tipos de datos se pueden manipular como cadenas , incluido el código fuente . Internamente, las variables tienen tipos como integer y double, pero la conversión es puramente automática.
  • Las variables no se declaran, sino que se asignan a. El uso de una variable no definida da como resultado un error.
  • Sistema de objetos totalmente dinámico basado en clases , TclOO, que incluye funciones avanzadas como metaclases, filtros y mixins . [26]
  • Interfaz basada en eventos para sockets y archivos . También son posibles eventos basados ​​en el tiempo y definidos por el usuario.
  • Visibilidad Variable restringido a léxica (estática) alcance por defecto, pero uplevely upvarpermitiendo procs para interactuar con ámbitos de las funciones que encierran.
  • Todos los comandos definidos por el propio Tcl generan mensajes de error por uso incorrecto.
  • Extensibilidad , a través de C , C ++ , Java , Python y Tcl.
  • Lenguaje interpretado usando bytecode
  • Soporte completo para Unicode (3.1 al principio, actualizado regularmente), lanzado por primera vez en 1999.
  • Expresiones regulares [18]
  • Multiplataforma : API de Windows ; Unix , Linux , Macintosh , etc.
  • Integración cercana y multiplataforma con interfaz de ventana ( GUI ) Tk .
  • Existen múltiples mecanismos de distribución:
    • Versión de desarrollo completo (para Windows, por ejemplo, ActiveState Tcl , consulte [1] )
    • Tclkits (archivo ejecutable de un solo archivo que contiene un tiempo de ejecución de scripting completo, solo alrededor de 4 megabytes de tamaño), Starkits (mecanismo de envoltura para entregar una aplicación de manera autónoma, sin instalación y altamente portátil) y Starpacks (combine Starkit con Tclkit para producir un Starpack: un archivo ejecutable específico de una sola plataforma, ideal para una fácil implementación)
    • The Jim Interpreter , una implementación de Tcl de tamaño reducido
    • Código fuente de libre distribución bajo una licencia BSD . [27]

Safe-Tcl [ editar ]

Safe-Tcl es un subconjunto de Tcl que tiene características restringidas para que los scripts de Tcl no puedan dañar su máquina o aplicación de alojamiento. [28] El acceso al sistema de archivos es limitado y se impide la ejecución de comandos arbitrarios del sistema. Utiliza un modelo de intérprete dual con el intérprete que no es de confianza ejecutando código en un script que no es de confianza. Fue diseñado por Nathaniel Borenstein y Marshall Rose para incluir mensajes activos en el correo electrónico. Safe-Tcl se puede incluir en el correo electrónico cuando se admiten la aplicación / safe-tcl y multipart / enabled-mail . Desde entonces, la funcionalidad de Safe-Tcl se ha incorporado como parte de las versiones estándar de Tcl / Tk. [29] [30]

Sintaxis y semántica fundamental [ editar ]

La sintaxis y semántica de Tcl están cubiertas por doce reglas [31] conocidas como Dodekalogue. [32]

Un script Tcl consta de una serie de invocaciones de comandos. Una invocación de comando es una lista de palabras separadas por espacios en blanco y terminadas por una nueva línea o punto y coma. La primera palabra es el nombre de un comando, que puede estar integrado en el idioma, encontrarse en una biblioteca disponible o definirse en el propio script. Las siguientes palabras sirven como argumentos para el comando:

commandName argumento1 argumento2 ... argumentoN

El siguiente ejemplo utiliza las pone (abreviatura de "cadena de venta") comando para mostrar una cadena de texto en la consola del host:

pone  "¡Hola, mundo!"

Esto envía la cadena "¡Hola, mundo!" al dispositivo de salida estándar junto con un carácter de nueva línea adjunto.

Las variables y los resultados de otros comandos se pueden sustituir en cadenas, como en este ejemplo que usa los comandos set y expr para almacenar el resultado de un cálculo en una variable (tenga en cuenta que Tcl no lo usa =como operador de asignación), y luego utiliza put para imprimir el resultado junto con algún texto explicativo:

# expr evalúa la cadena de texto como un conjunto de expresiones suma [expr  1 + 2 + 3 + 4 + 5 ] pone  "La suma de los números 1..5 es $ suma".

El #personaje introduce un comentario . Los comentarios pueden aparecer en cualquier lugar donde el intérprete esté esperando un nombre de comando.

# con llaves, la sustitución de variables se realiza mediante expr set x 1 set sum [expr  { $ x  +  2  +  3  +  4  +  5 }];  # $ x no se sustituye antes de pasar el parámetro a expr;  # expr sustituye $ x por 1 al evaluar la expresión pone  "La suma de los números 1..5 es $ suma". ;  # suma es 15
# sin llaves, la sustitución de variables ocurre en el sitio de definición (alcance léxico) set x 2 set op * set y 3 set res [expr  $ x $ op $ y ];  # $ x, $ op y $ y se sustituyen y la expresión se evalúa pone  "2 * 3 es $ res". ;  # 6 se sustituye por $ res

Como se ve en estos ejemplos, hay una construcción básica en el lenguaje: el comando. Los mecanismos de cotización y las reglas de sustitución determinan cómo se procesan los argumentos de cada comando.

Se produce una sustitución especial antes del análisis de cualquier comando o argumento. Si el carácter final de una línea (es decir, inmediatamente antes de una nueva línea) es una barra invertida, entonces la combinación de barra invertida y nueva línea (y cualquier espacio o tabulación que siga inmediatamente a la nueva línea) se reemplaza por un solo espacio. Esto proporciona un mecanismo de continuación de línea , mediante el cual las líneas largas en el código fuente se pueden ajustar a la línea siguiente para la conveniencia de los lectores.

Continuando con el procesamiento de argumentos normal, una palabra que comienza con un carácter de comillas dobles ( ") se extiende al siguiente carácter de comillas dobles. Por tanto, una palabra de este tipo puede contener espacios en blanco y punto y coma sin que esos caracteres se interpreten como si tuvieran un significado especial (es decir, se tratan como caracteres de texto normales). Una palabra que comienza con un carácter de llave de apertura ( {) se extiende hasta el siguiente carácter de llave de cierre ( }). Dentro de las llaves se suprimen todas las formas de sustitución, excepto la eliminación de barra invertida y nueva línea mencionada anteriormente. Las palabras que no están incluidas en ninguno de los conceptos se conocen como palabras desnudas.

En palabras simples y entre comillas, pueden ocurrir tres tipos de sustitución:

  • La sustitución de comandos reemplaza el contenido de los corchetes equilibrados con el resultado de evaluar el script que contiene. Por ejemplo, [expr 1+2+3]se reemplaza por el resultado de evaluar la expresión contenida (en este caso 6).
  • La sustitución de variable reemplaza el nombre de una variable con el prefijo de un signo de dólar con el contenido (o valor) de la variable. Por ejemplo, $foose reemplaza por el contenido de la variable llamada "foo". El nombre de la variable puede estar entre llaves para separarlo del texto subsiguiente en casos ambiguos (p ${foo}ing. Ej., ).
  • La sustitución de barra invertida reemplaza una barra invertida seguida de una letra con otro carácter. Por ejemplo, \nse reemplaza por una nueva línea.

La sustitución procede de izquierda a derecha en un solo escaneo a través de cada palabra. Cualquier texto sustituido no se volverá a escanear en busca de posibles sustituciones adicionales. Sin embargo, cualquier número de sustituciones puede aparecer en una sola palabra.

A partir de Tcl 8.5 en adelante, cualquier palabra puede tener el prefijo by {*}, lo que hace que la palabra se divida en sus subpalabras constituyentes con el propósito de construir la invocación del comando (similar a la ,@secuencia de la característica de cuasiquote de Lisp ).

Como consecuencia de estas reglas, el resultado de cualquier comando puede usarse como argumento para cualquier otro comando. Además, no existe un operador o comando para la concatenación de cadenas, ya que el lenguaje se concatena directamente. Tenga en cuenta que, a diferencia de los shells de comandos de Unix , Tcl no analiza ninguna cadena a menos que se le indique explícitamente que lo haga, lo que hace que el uso interactivo sea más engorroso, pero el uso con secuencias de comandos más predecible (por ejemplo, la presencia de espacios en los nombres de archivo no causa dificultades).

El signo de igualdad único ( =) no tiene ningún papel especial en el lenguaje. El signo de doble igualdad ( ==) es la prueba de igualdad que se utiliza en contextos de expresión como el exprcomando y en el primer argumento de if. (Ambos comandos son parte de la biblioteca estándar; no tienen un lugar especial en la biblioteca y se pueden reemplazar si se desea).

La mayoría de los comandos de Tcl, especialmente en la biblioteca estándar, son variables , y el proc(el constructor de procedimientos de comandos con script ) permite definir valores predeterminados para argumentos no especificados y un argumento general para permitir que el código procese números arbitrarios de argumentos. .

Tcl no se escribe estáticamente: cada variable puede contener números enteros, flotantes, cadenas, listas, nombres de comandos, diccionarios o cualquier otro valor; los valores se reinterpretan (sujetos a restricciones sintácticas) como otros tipos bajo demanda. Sin embargo, los valores son inmutables y las operaciones que parecen cambiarlos en realidad solo devuelven un nuevo valor.

Comandos básicos [ editar ]

Los comandos más importantes que se refieren a la ejecución del programa y las operaciones de datos son:

  • setescribe un nuevo valor en una variable (crea una variable si no existía). Si se usa solo con un argumento, devuelve el valor de la variable dada (debe existir en este caso).
  • procdefine un nuevo comando, cuya ejecución da como resultado la ejecución de un determinado script Tcl, escrito como un conjunto de comandos. returnse puede utilizar para devolver inmediatamente el control a la persona que llama.

Los comandos de control de ejecución habituales son:

  • ifejecuta el cuerpo de script dado (segundo argumento), si se cumple la condición (primer argumento). Puede ir seguido de argumentos adicionales a partir de elseifla condición y el cuerpo alternativos, o elsecon el bloque complementario.
  • while repite la ejecución del cuerpo de script dado, siempre que la condición (primer argumento) permanezca satisfecha
  • foreach ejecuta un cuerpo dado donde a la variable de control se le asignan elementos de lista uno por uno.
  • foratajo para inicializar la variable de control, la condición (como en while) y la instrucción adicional "siguiente iteración" (comando ejecutado después de ejecutar el cuerpo)

Los comandos de bucle anteriores se pueden controlar adicionalmente mediante los siguientes comandos:

  • break interrumpe la ejecución del cuerpo y regresa del comando de bucle
  • continueinterrumpe la ejecución del cuerpo, pero el control aún se devuelve al comando de bucle. Porque whilesignifica volver a realizar un bucle, for fory foreach, retomar la siguiente iteración.
  • return interrumpe la ejecución del cuerpo actual sin importar qué tan profundo esté dentro de un procedimiento, hasta alcanzar el límite del procedimiento, y devuelve el valor dado al llamador.

Comandos avanzados [ editar ]

  • exprpasa el argumento a un intérprete de expresión independiente y devuelve el valor evaluado. Tenga en cuenta que el mismo intérprete se utiliza también para la expresión "condicional" ify los comandos de bucle.
  • listcrea una lista que comprende todos los argumentos, o una cadena vacía si no se especifica ningún argumento. El lindexcomando puede usarse en el resultado para volver a extraer los argumentos originales.
  • arraymanipula variables de matriz .
  • dictmanipula el diccionario (desde 8.5), que son listas con un número par de elementos donde cada dos elementos se interpretan como un par clave / valor.
  • regexp hace coincidir una expresión regular con una cadena.
  • regsub Realiza sustituciones basadas en la coincidencia de patrones de expresiones regulares.
  • upleveles un comando que permite ejecutar un script de comando en un ámbito diferente al ámbito más interno actual en la pila.
  • upvar crea un enlace a la variable en un marco de pila diferente.
  • namespace le permite crear, acceder y destruir contextos separados para comandos y variables.
  • apply aplica una función anónima (desde 8.6).
  • coroutine, yieldy yieldtocrear y producir valores a partir de corrutinas (desde 8.6).
  • try le permite capturar y procesar errores y excepciones.
  • catch le permite atrapar retornos excepcionales.
  • zlib proporciona acceso a las funciones de compresión y suma de comprobación de la biblioteca Zlib (desde 8.6).

Nivel superior [ editar ]

uplevelpermite que un script de comando se ejecute en un ámbito que no sea el ámbito más interno actual en la pila. Debido a que la secuencia de comandos de comando puede llamar a procedimientos que utilizan el comando de nivel superior , esto tiene el efecto neto de transformar la pila de llamadas en un árbol de llamadas. [33]

Originalmente se implementó para permitir que los procedimientos de Tcl reimplementan los comandos incorporados (como para , si o mientras ) y aún tienen la capacidad de manipular variables locales . Por ejemplo, el siguiente script Tcl es una reimplementación del comando for (omitiendo el manejo de excepciones ):

proc para { initCmd testExpr advanceCmd bodyScript }  {  uplevel  1  $ initCmd  establece testCmd [ lista de expr $ testExpr ]  , mientras que  {[uplevel  1  $ testCmd ]}  {  uplevel  1  $ bodyScript  uplevel  1  $ advanceCmd  } }

Upvar [ editar ]

upvarorganiza que una o más variables locales en el procedimiento actual se refieran a variables en una llamada de procedimiento adjunto oa variables globales . El comando upvar simplifica la implementación de llamadas a procedimientos de llamada por nombre y también facilita la construcción de nuevas construcciones de control como procedimientos Tcl. [34]

Un comando decr que funciona como el incrcomando integrado, excepto que resta el valor de la variable en lugar de sumarlo:

proc decr { varName  { decremento  1 }}  {  upvar  1  $ varName var incr var [expr  { - $ decremento }] }

Orientado a objetos [ editar ]

Tcl 8.6 agregó un sistema de objetos dinámicos incorporado, TclOO, en 2012. [26] Incluye características como:

  • Sistema de objetos basado en clases. Esto es lo que la mayoría de los programadores esperan de OO.
  • Permite la personalización por objeto y la redefinición dinámica de clases.
  • Metaclases
  • Filtros
  • Mixins
  • Un sistema para implementar métodos de forma personalizada, de modo que los autores de paquetes que quieran formas significativamente diferentes de realizar la implementación de un método puedan hacerlo de forma bastante sencilla.
oo :: class crear fruta {  método comer {}  {  pone  "¡delicioso!"  } } oo :: class create banana {  superclase constructor de frutas {}  {  mi variable pelado conjunto pelado 0  }  método peel {}  {  mi variable pelado conjunto pelado 1  pone  "piel ahora apagada"  }  método comestible ?  {}  {  mivariable peled return  $ peeled  }  método comer {}  {  if  { ! [ mi comestible ? ]}  {  my peel }  next  } } set b [ banana new ] $ b  eat   imprime "skin now off" y "¡delicioso!" fruta destruir $ b  comer   error "comando desconocido"

Tcl no tenía sintaxis orientada a objetos (OO) hasta 2012, [26] por lo que surgieron varios paquetes de extensión para permitir la programación orientada a objetos. Están muy extendidos en el código fuente de Tcl existente. Las extensiones populares incluyen:

  • incr Tcl
  • XOTcl
  • Itk
  • Snit
  • DETENER

TclOO no solo se agregó para construir un sólido sistema orientado a objetos, sino también para permitir que los paquetes de extensión construyan abstracciones orientadas a objetos usándolo como base. Después del lanzamiento de TclOO, incr Tcl se actualizó para utilizar TclOO como base. [24]

Desarrollo de aplicaciones web [ editar ]

Tcl Web Server es una implementación pura de Tcl de un servidor de protocolo HTTP. Se ejecuta como un script sobre un intérprete de Tcl de vainilla.

Apache Rivet es un sistema de programación de código abierto para Apache HTTP Server que permite a los desarrolladores utilizar Tcl como lenguaje de programación para crear aplicaciones web dinámicas. Rivet es similar a PHP , ASP y JSP . Rivet fue desarrollado principalmente por Damon Courtney, David Welton, Massimo Manghi, Harald Oehlmann y Karl Lehenbauer . Rivet puede usar cualquiera de los miles de paquetes Tcl disponibles públicamente que ofrecen innumerables características como interacción con bases de datos (Oracle, PostgreSQL, MySQL, SQLite, etc.) o interfaces para aplicaciones populares como GD Graphics Library .

Interfaz con otros idiomas [ editar ]

Tcl interactúa de forma nativa con el lenguaje C. [35] Esto se debe a que fue escrito originalmente para ser un marco para proporcionar una interfaz sintáctica a los comandos escritos en C, y todos los comandos en el lenguaje (incluidas las cosas que de otro modo podrían ser palabras clave , como ifo while) se implementan de esta manera. . A cada función de implementación de comando se le pasa una matriz de valores que describen los argumentos (ya sustituidos) del comando, y es libre de interpretar esos valores como mejor le parezca.

Los simuladores de lógica digital a menudo incluyen una interfaz de scripting Tcl para simular los lenguajes de hardware Verilog , VHDL y SystemVerilog .

Existen herramientas (por ejemplo , SWIG , Ffidl ) para generar automáticamente el código necesario para conectar funciones C arbitrarias y el tiempo de ejecución de Tcl, y Critcl hace lo contrario, permitiendo incrustar código C arbitrario dentro de un script Tcl y compilarlo en tiempo de ejecución en una DLL .

Paquetes de extensión [ editar ]

El lenguaje Tcl siempre ha permitido paquetes de extensión, que brindan funcionalidad adicional, como una GUI, automatización de aplicaciones basada en terminales, acceso a bases de datos, etc. Las extensiones de uso común incluyen:

Tk
La extensión de Tcl más popular es el kit de herramientas Tk , que proporciona una biblioteca de interfaz gráfica de usuario para una variedad de sistemas operativos . Cada GUI consta de uno o más marcos . Cada marco tiene un administrador de diseño.
Suponer
Una de las otras extensiones Tcl muy populares es la extensión Expect . La estrecha relación temprana de Expect con Tcl es en gran parte responsable de la popularidad de Tcl en áreas prolíficas de uso, como en las pruebas de Unix, donde Expect se empleó (y todavía lo es hoy) con mucho éxito para automatizar telnet, ssh y sesiones en serie para realizar muchas tareas repetitivas (es decir, creación de scripts de aplicaciones que antes eran solo interactivas). Tcl era la única forma de ejecutar Expect, por lo que Tcl se hizo muy popular en estas áreas de la industria.
Azulejo / Ttk
Tile / Ttk [36] es una colección de widgets de estilos y temas que puede reemplazar la mayoría de los widgets en Tk con variantes que son verdaderamente nativas de la plataforma a través de llamadas a la API de un sistema operativo . Los temas cubiertos de esta manera son Windows XP , Windows Classic, Qt (que se conecta a las bibliotecas del entorno X11 KDE ) y Aqua (Mac OS X). También se puede construir un tema sin estas llamadas utilizando definiciones de widgets complementadas con mapas de píxeles de imágenes. . Los temas creados de esta manera incluyen Classic Tk, Step, Alt / Revitalized, Plastik y Keramik. En Tcl 8.4, este paquete se conoce como Tile, mientras que en Tcl 8.5 se ha incorporado a la distribución central de Tk (como Ttk).
Tix
Tix, Tk Interface eXtension, es un conjunto de componentes de interfaz de usuario que amplían las capacidades de las aplicaciones Tcl / Tk y Python. Es un paquete de software de código abierto mantenido por voluntarios en Tix Project Group y publicado bajo una licencia estilo BSD. [37]
Itcl / IncrTcl
Itcl es un sistema de objetos para Tcl, y normalmente se denomina [incr Tcl] (que es la forma de incrementar en Tcl, similar al nombre C ++).
Tcllib
Tcllib es un conjunto de paquetes programados para Tcl que se pueden usar sin pasos de compilación.
Tklib
Tklib es una colección de módulos de utilidad para Tk y un complemento de Tcllib.
tDOM
tDOM es una extensión Tcl para analizar XML, basada en el analizador Expat
TclTLS
TclTLS es una extensión OpenSSL para Tcl.
TclUDP
La extensión TclUDP [38] proporciona una biblioteca simple para admitir sockets del Protocolo de datagramas de usuario (UDP) en Tcl.
Bases de datos
Tcl Database Connectivity (TDBC), parte de Tcl 8.6, es una interfaz común de acceso a la base de datos para los scripts de Tcl. Actualmente es compatible con controladores para acceder a bases de datos MySQL , ODBC , PostgreSQL y SQLite . Se planean más para el futuro. El acceso a las bases de datos también se admite a través de extensiones específicas de la base de datos, de las cuales hay muchas disponibles. [39]

Ver también [ editar ]

  • Eggdrop
  • Suponer
  • TclX
  • Tkdesk
  • Comparación de entornos de desarrollo integrados de Tcl
  • Comparación de lenguajes de programación
  • Lista de lenguajes de programación
  • Módulos ambientales

Referencias [ editar ]

  1. ^ a b "Desarrollo básico de Tcl / Tk" . Tcl Developer Xchange . Consultado el 1 de noviembre de 2016 .
  2. ^ "Términos de la licencia Tcl / Tk" . Tcl Developer Xchange . Consultado el 2 de noviembre de 2016 .
  3. ^ "Kit de desarrollo de Tcl - compilador" . Documentos de ActiveState . Consultado el 2 de noviembre de 2016 .
  4. Lerdorf, Rasmus (26 de abril de 2007). "PHP sobre hormonas - historia de la presentación de PHP por Rasmus Lerdorf en la Conferencia MySQL en Santa Clara, California" . La red de conversaciones . Consultado el 11 de diciembre de 2009 .
  5. ^ "PowerShell y WPF: WTF" . Blog de Windows PowerShell . Microsoft. Archivado desde el original el 25 de diciembre de 2008 . Consultado el 3 de abril de 2019 .
  6. ^ Kenny, Kevin (4 de julio de 2005). "Re: certificación TCL" . Grupo de noticiascomp.lang.tcl .
  7. ^ "Idioma" . Tcl Developer Xchange . Consultado el 2 de noviembre de 2016 .
  8. ^ Fundamentos de Tcl , Capítulo 1 en Programación práctica en Tcl y Tk , ISBN 0-13-038560-3 
  9. ^ a b Desde la solapa interior de Tcl y Tk Toolkit , ISBN 0-201-63337-X 
  10. ^ "Usos de Tcl / Tk" . Tcl Developer Xchange . Consultado el 2 de noviembre de 2016 .
  11. ^ "Guía de configuración de Cisco IOS Scripting con TCL" . Soporte de Cisco . Consultado el 2 de noviembre de 2016 .
  12. ^ John Ousterhout. "Historia de Tcl" . Páginas personales . Universidad de Stanford . Consultado el 9 de agosto de 2011 .
  13. ^ "Historia de Tcl" . Tcl Developer Xchange . Consultado el 2 de noviembre de 2016 .
  14. ^ "John K Ousterhout - ganador del premio" . Premios ACM . Consultado el 4 de noviembre de 2016 .
  15. ^ De la Wiki de Tcler Tcl vs.TCL
  16. ^ "Anuncio de lanzamiento de Tcl / Tk 8.0" . Tcl Developer Xchange . Consultado el 1 de julio de 2014 .
  17. ^ "Anuncio de lanzamiento de Tcl / Tk 8.1" . Tcl Developer Xchange . Consultado el 1 de julio de 2014 .
  18. ^ a b "Nuevas funciones de expresión regular en Tcl 8.1" . Tcl Developer Xchange . Consultado el 2 de noviembre de 2016 .
  19. ^ "Anuncio de lanzamiento de Tcl / Tk 8.2" . Tcl Developer Xchange . 1999-08-18 . Consultado el 1 de julio de 2014 .
  20. ^ "Anuncio de lanzamiento de Tcl / Tk 8.4" . Tcl Developer Xchange . 2013-06-01 . Consultado el 1 de julio de 2014 .
  21. ^ "CONSEJO # 237: enteros de precisión arbitraria para Tcl" . Tcl Developer Xchange . Consultado el 1 de noviembre de 2016 .
  22. ^ "SUGERENCIA # 194: SUGERENCIA # 194: Procedimientos como valores a través de aplicar" . Tcl Developer Xchange . Consultado el 1 de noviembre de 2016 .
  23. ^ "Anuncio de lanzamiento de Tcl / Tk 8.5" . Tcl Developer Xchange . 2013-09-18 . Consultado el 1 de julio de 2014 .
  24. ^ a b "Anuncio de lanzamiento de Tcl / Tk 8.6" . Tcl Developer Xchange . 2013-09-20 . Consultado el 1 de julio de 2014 .
  25. ^ "Conferencias Tcl / Tk" . Tcl Developer Xchange . Consultado el 1 de noviembre de 2016 .
  26. ^ a b c "SUGERENCIA # 257: Orientación a objetos para Tcl" . Tcl Developer Xchange . Consultado el 1 de noviembre de 2016 .
  27. ^ "Descargar fuentes Tcl / Tk" . Tcl Developer Xchange . Consultado el 1 de noviembre de 2016 .
  28. ^ "Safe Tcl" . Tcl Developer Xchange . Consultado el 1 de noviembre de 2016 .
  29. ^ Brown, Lawrie (18 al 20 de septiembre de 1996). "Seguridad de código móvil" . En Bossomaier, Terry; Chubb, Lucy (eds.). Actas, Segunda Conferencia Conjunta, AUUG '96 y Asia-Pacífico WWW '96 . Melbourne, Australia. pag. 50 . Consultado el 22 de marzo de 2011 .
  30. ^ Welch, Brent B .; Jones, Ken; Hobbs, Jeffrey (2003). Programación práctica en Tcl y Tk . 1 (4ª ed.). Prentice Hall PTR. pag. 291. ISBN 0-13-038560-3.
  31. ^ "Página de manual de Tcl - Comandos integrados de Tcl" . Tcl Developer Xchange . Consultado el 14 de junio de 2014 .
  32. ^ "Dodekalogue" . Wiki de Tcler . Consultado el 14 de junio de 2014 . (También contiene una versión más corta de las reglas en "Octalogo").
  33. ^ "página de manual de nivel superior - Comandos integrados" . Tcl Developer Xchange . Consultado el 14 de junio de 2016 .
  34. ^ "página de manual de upvar - Comandos integrados" . Tcl Developer Xchange . Consultado el 14 de junio de 2016 .
  35. ^ "API de Tcl C" . tcl.tk . Consultado el 2 de noviembre de 2016 .
  36. ^ "Tile: un motor de temas mejorado para Tk" . SourceForge . Consultado el 7 de agosto de 2016 .
  37. ^ "Licencia Tix" . SourceForge . Consultado el 7 de agosto de 2012 .
  38. ^ "TclUDP" . Wiki de Tcl'ers . Consultado el 7 de agosto de 2012 .
  39. ^ "TDBC" . Wiki de Tcl'ers . Consultado el 7 de agosto de 2012 .

Lectura adicional [ editar ]

  • Ousterhout, John K .; Jones, Ken (2009). Tcl y Tk Toolkit (2ª ed.). Addison Wesley. ISBN 978-0-321-33633-0. Consultado el 4 de noviembre de 2012 .
  • Foster-Johnson, Eric (1997). Aplicaciones gráficas con Tcl & Tk (2ª ed.). Nueva York, NY: M&T Books. ISBN 1-55851-569-0. Consultado el 4 de noviembre de 2012 .
  • Brent B. Welch, Programación práctica en Tcl y Tk , Prentice Hall , Upper Saddle River, Nueva Jersey, EE. UU., ISBN 0-13-038560-3 , 2003 
  • J Adrian Zimmer, Tcl / Tk for Programmers , IEEE Computer Society , distribuido por John Wiley and Sons, ISBN 0-8186-8515-8 , 1998 
  • Mark Harrison y Michael McLennan, Programación eficaz de Tcl / Tk , Addison-Wesley , Reading, MA, EE. UU., ISBN 0-201-63474-0 , 1998 
  • Bert Wheeler, Tcl / Tk 8.5 Programming Cookbook , Packt Publishing , Birmingham, Inglaterra, Reino Unido, ISBN 1849512981 , 2011 
  • Wojciech Kocjan, Piotr Beltowski Tcl 8.5 Programación de red , Packt Publishing , ISBN 1849510962 , 2010 
  • Clif Flynt Tcl / Tk, tercera edición: Guía del desarrollador , ISBN 0123847176 , 2012 
  • Ashok P. Nadkarni El lenguaje de programación Tcl , ISBN 154867964X , 2017 

Enlaces externos [ editar ]

  • Página web oficial
  • Tcl Sources , sitio web principal de descarga de código fuente de Tcl y Tk
  • Wiki de Tcler
  • TkDocs
  • Libro de texto coreano Tcl / Tk