Tcl (hääldatakse "tickle" või tee cee ell /ˈtiː siː ɛl/) ehk Tool Command Language on kõrgetasemeline programmeerimiskeel, mida saab kasutada paljude asjade jaoks. Tcl on loodud nii, et seda oleks lihtne kasutada, kuid see suudab teha palju asju. Tcl-i keel põhineb käskudel, mis ütlevad arvutile, mida teha või kuidas salvestada muutujat. Tcl on võimeline tegema objektorienteeritud, imperatiivset, funktsionaalset või protseduurilist stiili.
Tcl on algselt loodud 1980ndate lõpus akadeemilisel taustal kergeteks skriptülesanneteks ja tööriistade liidestamiseks; selle peamiseks eesmärgiks oli lihtsus, paindlikkus ja hea integreeritavus C-programmidega. Tcl-i tõlgitav arhitektuur tähendab, et olemas on tõlkijad paljudele platvormidele ja operatsioonisüsteemidele, mis teeb keelest sobiva valiku mitmesugusteks ülesanneteks — alates süsteemiadministreerimisest ja testimisest kuni GUI-de ja sisseembeditud lahendusteni.
Tcl-i kasutatakse palju C-s, et luua kiiresti prototüüpe. Paljude operatsioonisüsteemide jaoks on olemas tõlkijad. See tähendab, et paljud erinevad arvutid on võimelised Tcl-koodi käivitama. Tcl on väga väike keel, mis tähendab, et seda on hea kasutada manussüsteemides ja sisseehitatud seadmetes, kus ressursid on piiratud. Tcl-i standardpaketid pakuvad palju korduvkasutatavat funktsionaalsust (failisüsteem, regulaaravaldised, võrgundus jmt).
Tcl on mõnikord kombineeritud Tk-ga. Sellisel juhul nimetatakse seda Tcl/Tk. Tcl/Tk on osa tavalisest Pythoni installeerimisest. Tk on lihtne ja platvormiülene graafilise kasutajaliidese raamistiku komplekt, mis võimaldab kiiresti teha aknaid, nuppe, menüüsid ja muid GUI-komponente. Paljud tööriistad ja rakendused kasutavad Tk-d kiireks prototüüpimiseks või lihtsate graafiliste liideste loomiseks.
Põhiomadused ja süntaks: Tcl on dünaamiliselt tüübistatud ja väga stringipõhine keel — enamik andmeid ja väljendeid edastatakse tekstina. Käskude põhistruktuur on lihtne: käsk nimega, sellele järgnevad argumendid, mille eraldajaks on tühik. Blokeerimiseks ja argumentide säilitamiseks kasutatakse sageli lohakalt sulge {} või jutumärke "". Näide:
set x 10 proc summa {a b} { expr {$a + $b} } puts "x on $x, summa(2,3) = [summa 2 3]" Tcl-is on palju meta- ja kontrollfunktsioone nagu eval, käskude liitmine, käsu-asenduse süntaks ja skriptide laadimine pakettidena (package require). Objektipõhine programmeerimine on toetatud erinevate laienduste kaudu (nt TclOO), olemas on ka namespaces, event-tsüklid ja sidumine C-koodiga läbi lihtsa API.
Tcl laiendused ja tööriistad: tuntud laiendused on näiteks Tk (GUI), Expect (terminalide ja interaktiivsete protsesside automatiseerimine), Itcl/TclOO (objektimeetodid), Thread (mitme lõime tugi) ja Tcllib (täiendavad teegid). Populaarsed tööriistad on tclsh (Tcl-i tõlkija) ja wish (Tk-ga seotud tõlkija). Tcl on ka hästi sobiv testimise ja automaatika tööriistade loomiseks.
Kus Tcl-i kasutatakse: Tcl-i kasutatakse laialdaselt skriptimise, süsteemihalduse, automaattestimise, prototüüpimise, sisseehitatud süsteemide ja graafiliste tööriistade arendamiseks. Paljud tarkvaraprojektid ja võrguseadmete tootjad kasutavad Tcl-i konfiguratsiooniskeemide ja haldusskriptide loomiseks. Expect on eriti populaarne ajal, kui on vaja automatiseerida interaktiivseid CLI‑sessioone (nt SSH, telnet, modemid).
Eelised ja piirangud: Tcl-i peamised tugevused on lihtsus, kiire õppimiskõver, hea C-iga integreeritavus ja platvormideülene tugi. Tcl võimaldab kiiret arendust ning sobib hästi skriptimiseks ja kaasatavaks skriptimootoriks. Piiranguteks võivad olla see, et eksootilisemad moodulid ja suur avatud lähtekoodi ökosüsteem ei ole nii laiad kui mõnel populaarsemal keelel, ning funktsionaalsuse õppimine (nt quoting-reeglid ja stringipõhine lähenemine) nõuab alguses tähelepanu.
Kogukond ja ressursid: Tcl-il on aktiivne, ent suhteliselt väike kogukond, palju dokumentatsiooni ja mitmekesine hulk lisapakkette. Standardne paketihaldus ja package require lihtsustavad kolmanda osapoole teekide kasutamist. Arendajad hindavad Tcl-i kõrgelt tööriistade liidestamiseks ja süsteemide automatiseerimiseks.
Kokkuvõttes on Tcl väike, mitmekülgne ja kerge integreerida — sobib hästi nii lihtsate skriptide kui ka laiemate süsteemide osade kirjutamiseks. Keel sobib eelkõige neile projektidele, kus tähtis on kiirus prototüüpimisel, lihtne C-liidestus ja platvormideülene tõlgitavus.