Scripttaal
Scripttalen kunnen worden onderverdeeld in verschillende typen, met een aanzienlijke mate van overlap tussen de typen.
ScripttalenEdit
Scripting wordt vaak tegenover systeemprogrammering geplaatst, zoals in de dichotomie van Ousterhout of “programmeren in het groot en programmeren in het klein”. In deze opvatting is scripting lijmcode, die softwarecomponenten met elkaar verbindt, en een taal die voor dit doel is gespecialiseerd is een lijmtaal. Pipelines en shell scripting zijn archetypische voorbeelden van lijmtalen, en Perl werd oorspronkelijk ontwikkeld om deze zelfde rol te vervullen. Webontwikkeling kan worden beschouwd als een gebruik van lijmtalen, als interface tussen een database en een webserver. Maar als een aanzienlijke hoeveelheid logica in scripts wordt geschreven, is het beter te worden gekarakteriseerd als gewoon een andere softwarecomponent, niet als “lijm”.
Lijmtalen zijn vooral nuttig voor het schrijven en onderhouden van:
- maatwerkcommando’s voor een commandoshell;
- kleinere programma’s dan die welke beter in een gecompileerde taal kunnen worden geïmplementeerd;
- “wrapper”-programma’s voor uitvoerbare bestanden, zoals een batchbestand dat bestanden verplaatst of manipuleert en andere dingen met het besturingssysteem doet voor of na het uitvoeren van een toepassing zoals een tekstverwerker, spreadsheet, gegevensbank, assembler, compiler, enz.;
- scripts die kunnen veranderen;
- snelle applicatieontwikkeling van een oplossing die uiteindelijk in een andere, meestal gecompileerde, taal wordt geïmplementeerd.
Voorbeelden van lijmtalen:
Macro-talen die worden blootgesteld aan besturingssysteem- of applicatiecomponenten kunnen dienen als lijmtalen. Hiertoe behoren Visual Basic for Applications, WordBasic, LotusScript, CorelScript, Hummingbird Basic, QuickScript, Rexx, SaxBasic en WinWrap Basic. Andere tools zoals AWK kunnen ook als lijmtalen worden beschouwd, net als elke taal die door een Windows Script Host engine wordt geïmplementeerd (VBScript, JScript en VBA standaard in Windows en engines van derden waaronder implementaties van Rexx, Perl, Tcl, Python, XSLT, Ruby, Modern Pascal, Delphi, en C). De meeste toepassingen kunnen toegang krijgen tot en gebruik maken van besturingssysteemcomponenten via de objectmodellen of de eigen functies.
Andere apparaten zoals programmeerbare rekenmachines kunnen ook lijmtalen hebben; de besturingssystemen van PDA’s zoals Windows CE kunnen native of door derden ontwikkelde macro-tools hebben die toepassingen aan elkaar lijmen, naast implementaties van veelgebruikte lijmtalen-waaronder Windows NT, DOS, en sommige Unix shells, Rexx, Modern Pascal, PHP, en Perl. Afhankelijk van de OS-versie zijn WSH en de standaard script engines (VBScript en JScript) beschikbaar.
Programmeerbare rekenmachines kunnen op drie manieren in lijmtalen worden geprogrammeerd. De Texas Instruments TI-92, bijvoorbeeld, kan standaard worden geprogrammeerd met een opdrachtscripttaal. De opname van de script- en lijmtaal Lua in de TI-NSpire-reeks van rekenmachines kan worden gezien als een opvolger hiervan. De primaire on-board programmeertalen op hoog niveau van de meeste grafische rekenmachines (meestal Basic varianten, soms Lisp afgeleiden, en meer ongewoon, C afgeleiden) kunnen in veel gevallen rekenmachinefuncties aan elkaar lijmen, zoals grafieken, lijsten, matrices, enz. Er zijn implementaties van derden beschikbaar van uitgebreidere Basic-versies die dichter in de buurt komen van varianten die in dit artikel als lijmtalen worden genoemd – en ook pogingen om Perl, Rexx, of verschillende besturingssysteem-shells te implementeren op de TI- en HP-grafische rekenmachines worden genoemd. PC-gebaseerde C cross-compilers voor sommige TI en HP machines met tools die converteren tussen C en Perl, Rexx, AWK, en shell scripts naar Perl, Modern Pascal, VBScript naar en van Perl maken het mogelijk om een programma in een lijmtaal te schrijven voor uiteindelijke implementatie (als een gecompileerd programma) op de rekenmachine.
Editor talenEdit
Een aantal tekst editors ondersteunen macro’s die geschreven zijn met behulp van een in de editor ingebouwde macro taal, bijv, De SemWare Editor (TSE), verbeterde vi (VIM), of met behulp van een externe implementatie, bijv. XEDIT, of beide, bijv. KEDIT. Soms worden teksteditors en edit-macro’s onder de dekmantel gebruikt om andere toepassingen te bieden, b.v. FILELIST en RDRLIST in CMS .
Taakregeltalen en shellsEdit
Een belangrijke klasse van scripttalen is gegroeid uit de automatisering van taakcontrole, die betrekking heeft op het starten en controleren van het gedrag van systeemprogramma’s. (In die zin zou men shells kunnen zien als afstammelingen van IBM’s JCL, of Job Control Language, die precies voor dit doel werd gebruikt). Veel van de interpreters van deze talen werken ook als command-line interpreters, zoals de Unix shell of de MS-DOS COMMAND.COM
. Andere, zoals AppleScript bieden het gebruik van Engels-achtige commando’s om scripts te bouwen.
GUI scriptingEdit
Met de komst van grafische gebruikers interfaces, ontstond een gespecialiseerd soort scripting taal voor het besturen van een computer. Deze talen interageren met dezelfde grafische vensters, menu’s, knoppen, enzovoort, als een menselijke gebruiker zou doen. Zij doen dit door de handelingen van een gebruiker te simuleren. Deze talen worden meestal gebruikt om gebruikersacties te automatiseren. Zulke talen worden ook wel “macro’s” genoemd wanneer de besturing gebeurt door gesimuleerde toetsaanslagen of muisklikken, maar ook door tikken of drukken op een aanraakscherm.
Deze talen zouden in principe gebruikt kunnen worden om elke GUI applicatie te besturen; maar in de praktijk is het gebruik ervan beperkt omdat het gebruik ervan ondersteuning nodig heeft van de applicatie en van het besturingssysteem. Er zijn een paar uitzonderingen op deze beperking. Sommige GUI scripting talen zijn gebaseerd op het herkennen van grafische objecten aan de hand van hun beeldschermpixels. Deze GUI scripttalen zijn niet afhankelijk van ondersteuning door het besturingssysteem of de applicatie.
Wanneer de GUI de juiste interfaces biedt, zoals in de IBM Workplace Shell, kan een generieke scripttaal, bijvoorbeeld OREXX, worden gebruikt voor het schrijven van GUI scripts.
Applicatie-specifieke talenEdit
Applicatie-specifieke talen kunnen worden opgesplitst in veel verschillende categorieën, d.w.z.D.w.z. standalone gebaseerde app-talen (uitvoerbaar) of interne applicatie-specifieke talen (postscript, xml, gscript als enkele van de wijd verspreide scripts, respectievelijk geïmplementeerd door Adobe, MS en Google) omvatten onder andere een idiomatische scripttaal die is afgestemd op de behoeften van de gebruiker van de applicatie. Evenzo gebruiken veel computerspelsystemen een aangepaste scripttaal om de geprogrammeerde acties van niet-spelerpersonages en de spelomgeving uit te drukken. Dergelijke talen zijn ontworpen voor een enkele toepassing; en hoewel zij oppervlakkig kunnen lijken op een specifieke taal voor algemeen gebruik (b.v. QuakeC, gemodelleerd naar C), hebben zij aangepaste kenmerken die hen onderscheiden. Emacs Lisp, hoewel een volledig gevormd en capabel dialect van Lisp, bevat veel speciale kenmerken die het het nuttigst maken voor het uitbreiden van de bewerkingsfuncties van Emacs. Een toepassingsspecifieke scripttaal kan worden gezien als een domeinspecifieke programmeertaal die is gespecialiseerd in een enkele toepassing.
Uitbreidbare/embeddable talenEdit
Er zijn een aantal talen ontworpen met het doel toepassingsspecifieke scripttalen te vervangen door ze in toepassingsprogramma’s in te bedden. De applicatieprogrammeur (werkend in C of een andere systeemtaal) neemt “haken” op waar de scripting taal de applicatie kan besturen. Deze talen kunnen technisch gelijkwaardig zijn aan een applicatiespecifieke uitbreidingstaal, maar wanneer een applicatie een “gemeenschappelijke” taal insluit, krijgt de gebruiker het voordeel dat hij vaardigheden van applicatie naar applicatie kan overdragen. Een meer generiek alternatief is simpelweg het aanbieden van een bibliotheek (vaak een C bibliotheek) die een taal voor algemeen gebruik kan gebruiken om de applicatie te besturen, zonder de taal aan te passen voor het specifieke domein.
JavaScript begon als en is in de eerste plaats nog steeds een taal voor scripting binnen web browsers; de standaardisatie van de taal als ECMAScript heeft het echter populair gemaakt als een taal voor algemeen gebruik die kan worden ingebed. Met name de Mozilla-implementatie SpiderMonkey is ingebed in verschillende omgevingen, zoals de Yahoo Widget Engine. Andere toepassingen die ECMAScript implementaties inbedden zijn de Adobe producten Adobe Flash (ActionScript) en Adobe Acrobat (voor het scripten van PDF bestanden).
Tcl is gemaakt als een extensie taal, maar wordt steeds vaker gebruikt als een taal voor algemeen gebruik in rollen vergelijkbaar met Python, Perl, en Ruby. Aan de andere kant is Rexx oorspronkelijk gemaakt als een job control taal, maar wordt veel gebruikt als een extensie taal en een taal voor algemeen gebruik. Perl is een taal voor algemeen gebruik, maar had het Oraperl (1990) dialect, dat bestond uit een Perl 4 binary met Oracle Call Interface erin gecompileerd. Dit is sindsdien echter vervangen door een bibliotheek (Perl Module), DBD::Oracle.
Overige complexe en taakgerichte toepassingen kunnen een ingebedde programmeertaal bevatten en openstellen om hun gebruikers meer controle te geven en hen meer functionaliteit te bieden dan via een gebruikersinterface beschikbaar is, hoe geavanceerd die ook is. Autodesk Maya 3D authoring tools gebruiken bijvoorbeeld de Maya Embedded Language, of Blender dat Python gebruikt om deze rol te vervullen.
Sommige andere soorten applicaties die sneller functies moeten toevoegen of tweak-and-run cycli moeten doorlopen (bijv. game engines) gebruiken ook een embedded taal. Tijdens de ontwikkeling kunnen ze dan sneller prototypes maken en vrijer tweaken, zonder dat de gebruiker een grondige kennis hoeft te hebben van de werking van de applicatie of deze na elke tweak opnieuw moet opbouwen (wat veel tijd in beslag kan nemen). De scripttalen die voor dit doel worden gebruikt variëren van de meer gebruikelijke en bekendere Lua en Python tot minder bekende als AngelScript en Squirrel.
Ch is een andere C-compatibele scriptmogelijkheid voor de industrie om in te bouwen in C/C++ applicatieprogramma’s.