Remove ads
een flexibele scripttaal, eind jaren tachtig ontwikkeld door John Ousterhout Van Wikipedia, de vrije encyclopedie
Tcl (afkorting van tool command language) is een scripttaal die eind jaren tachtig werd ontwikkeld door John Ousterhout. Deze scripttaal, die steeds verder ontwikkeld wordt, is bedoeld om zelfstandig gebruikt te worden en wordt ook gebruikt om als scripttaal in andere programma's in te bouwen. Tcl wordt meestal uitgesproken als 'tikkel' en heel vaak wordt met Tcl de Tk-toolkit gebruikt, waarmee dan een grafische gebruikersinterface wordt gemaakt (men spreekt dan over Tcl/Tk). Tcl is beschikbaar voor Unix/Linux, Windows, OS X en Android.
Tcl | ||||
---|---|---|---|---|
Paradigma | multi-paradigm programming, objectgeoriënteerd programmeren, procedurele programmering, imperatief programmeren, functioneel programmeren, event-driven programming | |||
Verschenen | 1988 (35 jaar) | |||
Ontwerper | John Ousterhout | |||
Ontwikkelaar | John Ousterhout | |||
Huidige versie | 9.0.1[1] (21 december 2024) | |||
Typesysteem | dynamisch typesysteem | |||
Implementaties | ActiveTcl, Androwish | |||
Dialecten | Hecl, Jim, Jacl, Picol | |||
Invloed op | Windows PowerShell | |||
Licentie | (en) Tcl/Tk-licentie | |||
Bestandsextensies | tcl, tbc | |||
Website | (en) Officiële website | |||
|
Tcl heeft een eenvoudige grammatica:
set
Met dit commando wordt een variabele op een bepaalde waarde gezet. De eerste parameter is de variabelenaam, de tweede de gewenste waarde. Voorbeeld:
set a 0 set b $a set c "Waarde van b is $b"
proc
Met dit commando wordt een procedure gedefinieerd. De eerste parameter is de naam van de procedure. De tweede parameter wordt gezien als een zin, waarin ieder woord de naam van een parameter is. De derde parameter wordt gezien als een script, welke de commando's waaruit de procedure bestaat bevat. Voorbeeld:
proc kwadraat {x} { return [expr {$x * $x}] }
Als een procedure wordt beëindigd zonder return commando, dan wordt het resultaat van het laatste commando teruggegeven als het resultaat van de procedure. Men kan dus ook eenvoudigweg schrijven:
proc kwadraat x {expr {$x*$x}}
return
Dit commando onderbreekt de uitvoering van de huidige procedure. De eerste parameter is het resultaat van de procedure.
expr
Dit commando berekent een rekenkundige expressie. Alle parameters worden samengevoegd tot één woord en de rekenkundige expressie die zij vormen wordt berekend. Gewoonlijk verdient het de voorkeur om de expressie tussen accolades te plaatsen om dubbele evaluatie te voorkomen. Zonder accolades zou de expressie eerst door de shell en vervolgens door het expr commando worden geëvallueerd.
if
Dit commando wordt gebruikt om commando's voorwaardelijk te kunnen uitvoeren. De eerste parameter is de voorwaarde. Deze voorwaarde is een rekenkundige expressie. Het tweede woord is altijd gelijk aan "then". Het derde woord wordt gezien als een script dat uitgevoerd moet worden als het resultaat van de voorwaarde ongelijk is aan "0". Het vierde woord is altijd gelijk aan "else". Het vijfde woord wordt gezien als een script dat uitgevoerd moet worden als het resultaat van de voorwaarde gelijk is aan 0. Voorbeeld:
if {$x == 5} then { set y 200 } else { set y 0 }
Natuurlijk mogen het woord "else" en het daaropvolgende script ook worden weggelaten. Ook het woord "then" is optioneel en wordt normaal gesproken niet vermeld. Voorbeeld:
if {$y > 200} {set y 200}
while
Dit commando wordt gebruikt om een lus te maken. De eerste parameter wordt gezien als een rekenkundige expressie. De tweede parameter wordt gezien als een script dat uitgevoerd moet worden zolang de rekenkundige expressie ongelijk is aan "10". Voorbeeld:
set x 0 while {$x != 10} { set x [expr {$x + 1}] }
Meer commando's worden beschreven in de documentatie.[2]
Doordat in Tcl alles om woorden en zinnen draait, is de taal erg geschikt voor het bewerken van teksten. Tcl blijkt ook een uitstekende vervanger van Unix sh-scripts; de taal blijkt krachtiger, presteert beter en is bovenal makkelijker te programmeren dan de standaard Unix-shells.
Tcl is ook beschikbaar voor Windows en kan op dezelfde manier een welkome vervanging voor batch-scripts vormen. Om de scripts ook te laten werken zonder dat Tcl geïnstalleerd moet zijn is de TclPro Compiler beschikbaar.
Tcl is geschikt voor het genereren van webpagina's. Tclhttpd is een webserver die volledig geschreven is in Tcl.
Een andere webserver waarin Tcl centraal staat is AOLserver. In AOLserver kan men, in typische ASP- of PHP-stijl HTML-code mengen met Tcl-code. Doordat Tcl veel en uitgebreide tekstfuncties bevat ontstaat er een krachtige combinatie. Tcl integreert daarnaast met databases (waarbij de tekstomgang van Tcl weer goed van pas komt om SQL-query's op te bouwen) en beschikt over een API om met webservers te communiceren.
Doordat Tcl veelvoudig gebruikmaakt van strings (tekst) zou het logisch zijn dat Tcl traag is. Dit is niet het geval, omdat Tcl lui is in het converteren naar strings: dat gebeurt enkel als dit echt nodig is. Bijvoorbeeld:
set i 0 set i [expr {$i+4}] set i [expr {$i+4}] set t "i is gelijk aan $i"
In het eerste commando wordt i gelijk gezet aan "0". Omdat "0" een tekst is wordt deze als tekst in het geheugen opgeslagen.
In het tweede commando wordt i als getal gebruikt. De tekstversie wordt naar een integer geconverteerd, uit het geheugen verwijderd. De integer-versie wordt vervolgens gebruikt in de berekening.
Als vervolgens het derde commando uitgevoerd wordt, is i nog steeds in het geheugen opgeslagen als integer, en kan de berekening vlot zonder conversies uitgevoerd worden.
In het vierde commando is i echter weer als string nodig. De integer wordt in een tekstrepresentatie omgezet en gebruikt om de waarde van t te berekenen.
Bovenstaand schema zorgt ervoor dat conversies geen groot snelheidsprobleem meer vormen. Om de prestaties verder te verhogen beschikt Tcl over een compiler. Deze compiler compileert code in procedures automatisch naar een tussencode als deze de eerste keer worden uitgevoerd. De procedure kan dan bij een volgende aanroep veel sneller worden uitgevoerd dan de originele code in tekstvorm.
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.