Scripttaal
Een scripttaal is een programmeertaal die geschikt is voor het schrijven van scripts, kleine programmaatjes om veel voorkomende taken (bijvoorbeeld systeembeheertaken) te automatiseren, of om een grote maar eenmalige taak te verrichten. Veelal hebben deze taken te maken met het verwerken van tekstbestanden. Scripttalen zijn over het algemeen high-level-talen en werden omwille van snelheid en gemak bij het ontwikkelen in het begin vaak geïmplementeerd door middel van een interpreter. Tegenwoordig worden scripttalen meestal geïmplementeerd met een compiler die bytecode, een syntaxisboom of een andere interne representatie van het programma produceert. Deze wordt vervolgens direct uitgevoerd (door een interpreter of virtuele machine).
De scripttalen komen voort uit de gewoonte uit de jaren 60 om een reeks commando's (een batch) op een ponskaart te zetten (bijvoorbeeld JCL). Bij latere, interactieve besturingssystemen (met een commandoregel) werden regelmatig uitgevoerde commandoreeksen opgeslagen in een bestand.
Toen men inzag dat een dergelijk bestand in feite een nieuw programma was, voegde men constructies toe aan de commandotaal zoals conditionele uitvoering (if-then-else), lussen (while, for) en variabelen. De shell van het besturingssysteem Unix (vanaf begin jaren 70) en taal SNOBOL zijn hier vroege voorbeelden van. Later (eind jaren 70) werd AWK ontworpen. Ook Rexx is begin jaren 80 als scripttaal ontworpen.
Vanaf eind jaren 80 werd een scala aan scripttalen ontwikkeld, zoals Perl, Python, ColdFusion, Tcl en Ruby. Sommige van deze talen bleken ook buiten hun oorspronkelijke toepassingsdomein succesvol te zijn.
In de jaren 90 werden verschillende scripttalen voor het Web ontwikkeld, bijvoorbeeld JavaScript dat meestal in de browser draait, en talen zoals PHP die uitsluitend op de server draaien. Ze zorgen allemaal voor dynamiek en interactie op websites. De scripttaal JavaScript moet niet worden verward met Java, dat ook een programmeertaal is.
[bewerken] Eigenschappen
Scripttalen hebben vaak een aantal eigenschappen met elkaar gemeen:
- Gecompileerd of geïnterpreteerd
- Hoewel de meeste scripttalen gecompileerd worden (naar bytecode of een andere interne representatie) is het vaak mogelijk om ze volledig met een interpreter regel-voor-regel uit te voeren. Bij talen zoals Perl die gebruikmaken van just-in-time-compilatie of andere voorzieningen waarvoor het nodig is eerst het hele programma te verwerken, is dit echter niet mogelijk.
- Het mixen van compiletime en runtime
- Scripttalen die geheel of gedeeltelijk gecompileerd worden bieden over het algemeen de mogelijkheid om tijdens het uitvoeren van een programma (runtime) code te compileren en deze vervolgens uit te voeren. Dit gebeurt meestal door het gebruik van een eval-functie. Sommige talen (zoals Perl) bieden ook de mogelijkheid om tijdens het compileren (compiletime) code uit te voeren. Deze code wordt dan eerst uitgevoerd voordat de rest van het programma gecompileerd wordt. Hierdoor kan het gedrag van de compiler, en de manier waarop de rest van het programma wordt gecompileerd, beïnvloed worden.
- Geen declaraties en eenvoudige regels voor variabelenbereik
- In veel scripttalen zijn variabeledeclaraties niet verplicht of zelfs niet mogelijk. Verder hebben in sommige talen (zoals Perl) alle variabelen standaard een globaal bereik en moeten lokale variabelen expliciet als zodanig gespecificeerd worden. In andere talen (zoals PHP en TCL) zijn variabelen juist altijd lokaal tenzij ze expliciet als globaal gemarkeerd worden.
- Dynamische typering
- Scripttalen zijn meestal dynamisch getypeerd. Soms (bijvoorbeeld bij PHP en Python) wordt het type datatype van een variabele of functie pas gecontroleerd op het moment dat deze gebruikt wordt. In andere talen (zoals Rexx en Perl) hangt het van de context af als welk type een variabele geïnterpreteerd wordt: dezelfde variabele kan in het ene geval als string en in een ander geval als integer behandeld worden.
- Toegang tot andere programma's en het besturingssysteem
- Hoewel het in alle programmeertalen mogelijk is om het besturingssysteem aan te spreken of andere programma's te starten, is dit in scripttalen vaak makkelijker. Deze mogelijkheden zijn vaak ingebouwd in de taal zelf in plaats van dat er aparte libraries voor nodig zijn.
- Tekstmanipulatie
- Scripttalen hebben vaak uitgebreide mogelijkheden voor het verwerken en bewerken van tekst. In het bijzonder is het gebruik van reguliere expressies in de taal ingebouwd. Zo heeft Perl een aantal speciale operatoren voor reguliere expressies en heeft JavaScript, dat in het algemeen maar weinig ingebouwde functionaliteit heeft, een aantal ingebouwde functies voor reguliere expressies.
- High-level datatypen
- Scripttalen hebben vaak ingebouwde mogelijkheden voor high-level datatypen. Zo hebben veel scripttalen associatieve arrays in plaats van (PHP), of naast (Perl), gewone arrays. Strings zijn primitieve datatypen met speciale operatoren in plaats van arrays van karakters.
| Bronnen, noten en/of referenties
Programming Language Pragmatics, 2e editie, Michael L. Scott, Morgan Kaufmann Pub, 2006, ISBN 0126339511 |