![[Foto van de Auteur]](../../common/images/Brent-Welch.jpg) 
Brent Welch vermaakt zich met het sleutelen aan zijn website 
 www.scriptics.com
 waarin onder andere een database is te vinden met referenties -voorzien van
 commentaar- naar Tcl gerelateerde URLs (het: "Tcl Resource Center") en de
 e-commerce infrastructuur voor het product Tclpro. Hij heeft tevens
 een aantal grote applicaties gemaakt met behulp van Tcl/Tk, waaronder de webserver
 TclHttpd, waarop www.scriptics.com draait, de mail gebruikersinterface
 Exmh en de HTML-editor webtk. Hij is de auteur
 van "Practical Programming in Tcl and Tk".
Welch behaalde een ingenieurstitel in vliegtuigtechniek aan de universiteit van
 Boulder, Colorado in 1982. Hij werd doctorandus in de computerwetenschappen aan de
 universiteit van Berkeley, Californië in 1986 en zijn doctoraal in
 computerwetenschappen haalde hij in 1990, ook aan de universiteit van Berkeley.
 In het verleden was Welch werkzaam als onderzoeker aan gedistribueerde systemen
 bij Xerox PARC en later als lid van het Tcl/Tk-team bij Sun Microsystems
 Laboratories.
Hij is lid van ACM en de IEEE Computer Society. Homepage: www.beedub.com
![[Illustratie]](../../common/images/illustration110.gif) 
In vergelijking met andere script talen heeft Tcl een eenvoudige syntaxis.
cmd arg arg arg 
  $foo 
  foo.
  [clock seconds] 
  clock seconds, wat de huidige tijd in seconden geeft.
  "meerdere woorden" 
  {meerdere woorden} 
  \ 
  Hieronder een Tcl commando dat de huidige tijd laat zien. Het maakt gebruik van
 drie Tcl commando's: set, clock en puts. Het
 set commando wijst waarden toe aan variabelen. Het clock
 commando kan omgaan met tijdsgegevens en puts kan waardes afdrukken.
set seconden [clock seconds] puts "Het is [clock format $seconden]"
Merk op dat het dollarteken niet wordt gebruikt bij het toekennen aan een variabele.
 De variabele seconden is niet nodig in dit voorbeeld. Het afdrukken
 kan met één commando:
puts "Het is [clock format [clock seconds]]"
De Tcl syntaxis is erop gericht de parser in drie stappen te laten evalueren: groeperen van argumenten, substitueren van resultaten en commando's aanroepen.
puts commando.
  
  $foo met de
 waarde van foo en vervangt geneste commando's (binnen de vierkante
 haken) met het resultaat ervan. Belangrijk is hier dat substituties worden gedaan
 ná het groeperen. Hierdoor wordt vermeden dat ongebruikelijke waarden de structuur 
 in een commando compliceren.
  
  In dit voorbeeld worden accolades gebruikt voor het groeperen van argumenten zonder dat hierin substitutie plaatsvindt. Het is de implementatie van hetset i 0 while {$i < 10} { puts "$i squared = [expr $i*$i]" incr i }
while commando die weet dat het eerste argument een expressie is en
 het tweede nog meer Tcl commando's. De accolades groeperen dus twee argumenten:
 de logische expressie die de lus stuurt en de commando's binnen de lus.
Verder zien we twee rekenkundige expressies: de vergelijking en de vermenigvuldiging.
 Het while commando interpreteert het eerste argument automatisch als
 zijnde een expressie. In andere gevallen moet men de expressie expliciet aangeven
 middels het expr commando om een rekenkundige evaluatie te forceren.
expr aanroept voor het afhandelen van rekenkundige
 expressies, puts voor het afhandelen van uitvoerfuncties en
 set om waarden aan variabelen toe te kennen. Deze Tcl commando's zijn
 geïmplementeerd door C-functies die zichzelf aanmelden bij Tcl. Deze functies
 accepteren de argumenten als strings en retourneren een nieuwe
 string als resultaat. Het is heel eenvoudig om dit soort C functies te
 maken. De functie kan van alles doen. Van het benaderen van databases tot het
 creëren van een grafische gebruikersinterface. De taal Tcl weet niet echt wat
 het commando doet. Het groepeert slechts argumenten, substitueert resultaten en
 roept commando's aan.
proc fac {x} {
    if {$x < 0} {
        error "Ongeldig argument $x: moet een positief geheel getal zijn"
    } elseif {$x <= 1} {
        return 1
    } else {
        return [expr $x * [fac [expr $x-1]]]
    }
}