Tcl (acronimo di Tool Command Language [ 1] , pronuncia tickle ⓘ [ 2] ) è un linguaggio di programmazione creato da John Ousterhout . È un linguaggio di scripting multipiattaforma , considerato di facile apprendimento e utilizzato nel rapid application development .[ 3] [ 4]
Caratteristiche
Le caratteristiche del linguaggio TCL comprendono:
Qualsiasi cosa è un comando, comprese le strutture del linguaggio. Queste ultime utilizzano la notazione polacca detta anche notazione prefissa .
Qualsiasi cosa può essere ridefinita o sovrascritta dinamicamente.
Tutti i tipi di dato possono essere manipolati come stringhe, compreso il codice.
Utilizza regole sintattiche estremamente semplici.
Possiede un'interfaccia a eventi per i socket e i file .
Facilmente estendibile tramite un'API che permette di collegare all'interprete oggetti scritti in C , C++ , REXX e Java .
Completo supporto per l'Unicode già dal 1999.
Indipendente dalla piattaforma. L'interprete è già stato portato su Win32 , Unix , Mac , e altri.
Buona integrazione con il sistema a finestre grazie all'estensione Tk.
Esempi
Per un Hello world il codice è
Semplicissimo esempio di codice:
puts "dammi un numero"
gets stdin numero
puts "Il quadrato è [expr {$numero * $numero}]"
Un altro esempio in stile funzionale:
proc filter { list script} {
set res {}
foreach e $list {
if {[uplevel 1 $script $e ]} {
lappend res $e
}
}
set res
}
L'elemento e è incluso nella lista list ? Se sì ritorna 1, altrimenti 0.
proc in { list e} {
expr {[ lsearch - exact $list $e ] >= 0 }
}
Elementi comuni di due liste, ossia insieme intersezione:
% filter { a b c} { in { b c d}}
b c
Tk
L'estensione Tk è un insieme di strumenti per scrivere GUI (un toolkit di widget ) implementato dallo stesso autore di Tcl. Può essere usato anche in combinazione ad altri linguaggi come Perl , Python , Ruby , Lisp e altri, ed è stato portato su varie piattaforme quali GNU/Linux , Apple Macintosh , Unix e Windows .
Esempio Tk, un orologio numerico in tre righe:
proc every { ms body} {eval $body ; after $ms [ info level 0 ]}
pack [ label .clock - textvar time]
every 1000 {set :: time [ clock format [ clock sec] - format % H:% M:% S]}
Note
Bibliografia
(EN ) John K. Ousterhout e Ken Jones, Tcl and the Tk Toolkit , 2ª ed., Addison-Wesley, 2010, ISBN 978-0-321-33633-0 .
(EN ) Ashok P. Nadkarni, The Tcl Programming Language: A Comprehensive Guide , 2017, ISBN 978-1548679644 .
Voci correlate
Altri progetti
Collegamenti esterni