Tcl linguaggio di programmazione | |
---|---|
Autore | John Ousterhout |
Data di origine | 1988 |
Ultima versione | 9.0.0 (26 settembre 2024) |
Paradigmi | programmazione multi-paradigma, programmazione orientata agli oggetti, programmazione procedurale, programmazione imperativa, programmazione funzionale e programmazione a eventi |
Tipizzazione | debole |
Estensioni comuni | tcl e tbc |
Influenzato da | Awk e Lisp |
Ha influenzato | PHP, PowerShell, Tea |
Implementazione di riferimento | |
Licenza | licenza BSD |
Sito web | tcl.tk |
Tcl (acronimo di Tool Command Language[1], pronuncia [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
[modifica | modifica wikitesto]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
[modifica | modifica wikitesto]Per un Hello world il codice è
puts "Hello World!"
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
[modifica | modifica wikitesto]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
[modifica | modifica wikitesto]- ^ (EN) Welcome to the Tcl Developer Xchange!, su Tcl Developer Xchange.
- ^ (EN) Tcl vs. TCL, su Tcler's Wiki.
- ^ (EN) Features and Benefits, su Tcl Developer Xchange.
- ^ (EN) What is Tcl, su sito=Tcler's Wiki.
Bibliografia
[modifica | modifica wikitesto]- (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
[modifica | modifica wikitesto]Altri progetti
[modifica | modifica wikitesto]- Wikimedia Commons contiene immagini o altri file su Tcl
Collegamenti esterni
[modifica | modifica wikitesto]- (EN) Sito ufficiale, su tcl.tk.
- (EN) Tcl, su SourceForge.
- Tcl, su packages.debian.org.
- Repository sorgenti di Tcl, su core.tcl-lang.org.
Controllo di autorità | LCCN (EN) sh94000154 · GND (DE) 4361529-6 · J9U (EN, HE) 987007558786705171 |
---|