Scripttalen maken coderen eenvoudiger en sneller, dus het is niet verwonderlijk dat ze veel gebruikt worden bij webontwikkeling.
Maar dat is niet de enige toepassing voor scripttalen. Zo zijn er ook specifieke scripttalen voor besturingssystemen, statistische software, kantoortoepassingen, game-engines en diverse andere platforms.
Leer in dit artikel wat ze precies betekenen en maak kennis met de beste voorbeelden van scripttalen.
Wat zijn scripttalen?
Het belangrijkste is dat het niet veel zin heeft om te spreken over frontend vs backend scripttalen, ook al gebruiken veel artikelen die je overal op het web vindt een dergelijke groepering.
Scripttalen kunnen diverse acties laten uitvoeren binnen een bepaalde runtime-environment, zoals het automatisch uitvoeren van taken, de functionaliteit van de originele software uitbreiden, instellingen veranderen, data uit datasets halen, en nog veel meer.
Je ziet scripttalen in grofweg twee variaties:
- Een runtime-environment kan een eigen scripttaal introduceren, zoals Bash binnen het GNU besturingssysteem, of VBA voor Microsoft Office programma’s.
- Een runtime-environment kan een al bestaande scripttaal accepteren en adopteren, zo is bijvoorbeeld de
mongo
shell van MongoDB gebouwd rond JavaScript.
Aan de andere kant zijn het soms de scripttalen die eerst ontwikkeld worden, waarna een ‘parent platform’ ontwikkeld wordt, hoe gek dat ook klinkt.
Dit is bijvoorbeeld gebeurd bij Node.js, een back-end runtime-environment dat gemaakt werd zodat webdevelopers JavaScript konden gebruiken aan zowel de front-end als de back-end, om te voldoen aan het idee dat Javascript overal gebruikt moet kunnen worden.
Wat betekent ‘scripting’ binnen het programmeren?
Scripting komt eigenlijk neer op het schrijven van een serie opdrachten die één voor één geïnterpreteerd worden door een toepassing of een scripting-engine. Alhoewel het script het platform vertelt wat er moet gebeuren (via de opdrachten die verwerkt moeten worden), wordt de daadwerkelijke uitvoering door de runtime-environment zelf gedaan, en niet door de scripttaal.
Dit is dan ook waarin scripttalen verschillen van ‘gewone’ programmeertalen zoals Java, die je één keer kan schrijven en vervolgens overal kan uitvoeren. Het klassieke voorbeeld daarvan is de Java slogan ‘write once, run anywhere’, die aangeeft dat het overal als aparte toepassing uitgevoerd kan worden, wat sindsdien ook wel het WORA principe wordt genoemd voor cross-platform mogelijkheden.
Scripttalen en programmeertalen
Alhoewel de termen ‘scripting languages’, ofwel scripttalen, en ‘programming languages’, oftewel programmeertalen, vaak door elkaar gebruikt worden, zijn het verschillende dingen.
Platformspecifiek en niet-platformafhankelijk
Scripttalen zijn altijd platformspecifiek, terwijl programmeertalen in principe onafhankelijk zijn van het platform (dus cross-platform), omdat ze zelfstandig uitgevoerd kunnen worden. Zo kun je een Java programma op elk besturingssysteem uitvoeren.
(Veelal) geïnterpreteerd tegenover gecompileerd
Waar programmeertalen worden gecompileerd (via een compiler) worden scripttalen haast altijd geïnterpreteerd, alhoewel er ook enkele scripttalen zijn die gecompileerd en geïnterpreteerd kunnen worden, zoals Python en Groovy.
“Gecompileerd”, of “compiled”, betekent dat de programmeertalen een eigen compiler gebruikt die de syntax vertaalt naar machinetaal (machine code) voor de uitvoering. Scripttalen worden daarentegen regel voor regel geïnterpreteerd tijdens de uitvoering, door de interpreter van het platform waarop ze uitgevoerd worden.
Sneller en langzamer bij de uitvoering
Door dit verschil in implementatie worden programmeertalen sneller uitgevoerd dan scripttalen, aangezien ze niet in realtime nog gecompileerd hoeven te worden. Compilers voeren verder een foutcontrole uit vóór de uitvoering, terwijl interpreters de code regel voor regel afwerken, dus moeten ze pauzeren (of helemaal stoppen) wanneer ze een fout tegenkomen.
Dit voegt nog meer tijd toe aan de uitvoering van scripttalen, alhoewel dit op de moderne en snellere hardware van tegenwoordig minder problematisch is dan vroeger.
Meer of minder code
Programmeertalen gebruiken meer code, omdat je veel zaken handmatig moet invoeren, definiëren en bepalen, die bij scripttalen allemaal automatisch door het platform worden afgehandeld. Als je dus een scripttaal gebruikt, hoef je veel minder code te schrijven.
Zelfstandige toepassingen of toepassingen als onderdeel van een stack
Er zijn enkele dingen die je simpelweg niet kan doen met een scripttaal. Het belangrijkste voorbeeld daarvan is dat je geen zelfstandige toepassingen voor desktop of mobiel kan maken met een scripttaal, aangezien er dan geen runtime-environment is om ze te interpreteren.
Zo kan je bijvoorbeeld PHP frameworks zoals WordPress of Laravel alleen maar voor toepassingen op het web gebruiken omdat ze de browser als hun runtime-environment gebruiken. Zo worden mobiele WordPress apps uitgevoerd binnen mobiele runtime-environments zoals Capacitor, dat webviews biedt.
Scripttalen of programmeertalen – overzicht van de verschillen
De belangrijkste verschillen tussen scripttalen en programmeertalen zijn dus:
Scripttalen | Programmeertalen |
Platformspecifiek | Onafhankelijk van platform (cross-platform) |
(Veelal) geïnterpreteerd | Gecompileerd |
Langzamer tijdens de uitvoering | Sneller tijdens de uitvoering |
Minder code nodig | Meer code nodig |
Apps zijn onderdeel van een stack | Maakt zelfstandige apps |
Verwarring over scripttalen
Er bestaan nogal wat misverstanden over scripttalen, dus laten we daar even naar kijken voor we aan de beste scripttalen beginnen.
Het belangrijkste om op te merken is dat het niet echt zin heeft om te praten over front-end of back-end scripttalen, ook al zie je overal artikelen die scripttalen wel op zo’n manier indelen.
Er bestaat momenteel maar één front-end scripttaal die gebruikt wordt en dat is JavaScript (vroeger was er ook ActionScript en JScript, maar die zijn allemaal verouderd).
Front-end of back-end is niet erg belangrijk binnen de context van scripttalen, het gaat vooral om de runtime-environments waarin een scripttaal uitgevoerd kan worden.
Let erop dat hierbij ‘front-end’ simpelweg staat voor iets (een afbeelding, lettertype, markup, stylesheet, script, of ander statisch bestand) dat een browser kan interpreteren. Probeer maar eens een PHP bestand direct vanuit je browser te openen: dat lukt niet, omdat dit geïnterpreteerd moet worden door een PHP application server. Daarom is PHP een back-end scripttaal binnen de context van webdevelopment, terwijl het de application layer is binnen een server stack (bijv. LAMP) in de context van scripttalen.
Naast webdevelopment (zowel front-end als back-end scripting) kunnen scripttalen ook voor diverse andere zaken gebruikt worden, zoals het programmeren en instellen van besturingssystemen en specifieke toepassingen/omgevingen, bewerken van datasets, automatiseren van taken enzovoorts.
Een scripttaal kan ten slotte in meerdere omgevingen uitgevoerd worden.
Wat zijn geen scripttalen?
Voordat we de beste scripttalen behandelen, kijken we eerst nog even naar programmeertalen die soms ten onrechte scripttalen genoemd worden, maar waar je toch echt niet mee kan scripten:
- Markup talen, zoals HTML en XML. In HTML bestaan dan wel attributen voor event handling, zoals onclick en onmouseover, maar dat zijn nog altijd JavaScript callbacks.
- Stylesheet talen, zoals CSS, Sass en LESS.
- Elke library of framework die op een andere scripttaal gebouwd is, zoals jQuery, PostCSS, React, Vue, Angular, Rails, Grails, Django, Laravel, WordPress, en anderen.
- Talen die gecompileerd worden naar een scripttaal, zoals TypeScript en CoffeeScript.
- SQL, aangezien het voor het beheren van data is binnen relational database management systems (RBDMS) zoals MySQL en MariaDB. Maar je kan hiermee geen dynamische functies schrijven. Maar veel RDBMS’en hebben wel shells waarmee je een scripttaal kan gebruiken (zoals JavaScript of Python in de MySQL Shell).
- Runtime-environment voor één of meer scripttalen, zoals NodeJs.
Wat zijn de 13 beste scripttalen?
Er zijn allerlei geweldige scripttalen die we hier zouden willen noemen, maar die niet meer actief ontwikkeld en bijgehouden worden. Maar de volgende 13 scripttalen worden nog wel regelmatig bijgewerkt en voor productietoepassingen gebruikt.
Mocht je dus overwegen om een nieuwe scripttaal te leren als carrièrestap, dan zijn deze allemaal het overwegen waard.
1. JavaScript/ECMAScript
JavaScript is een implementatie van de ECMA-262 standaard waarmee de ECMAScript (ES) algemene scripttaal gedefinieerd is. Je zou dus kunnen zeggen dat JavaScript een dialect van de ECMAScript taal is, waardoor het geen eigen onafhankelijke specificatie heeft, maar dezelfde syntax als ECMAScript gebruikt.
JavaScript heeft first-class functies (functions worden als variabele gezien) en ondersteunt op prototype-gebaseerd object-oriented programmeren (bestaande objecten kunnen hergebruikt worden als prototype).
Voorbeeld van code
ECMAScript gebruikt een syntax met krulhaken. Het volgende voorbeeld van een stuk JavaScript code telt de getallen van 1 tot 10 op en geeft het resultaat weer in de console (je kan het in de JavaScript console van je browser testen door op F12 te drukken).
let total = 0, count = 1;
while (count <= 10) {
total += count;
count += 1;
}
console.log(total);
// 55
Bron: Eloquent JavaScript by Marijn Haverbeke: Introduction
Use cases en environments
JavaScript is de scripttaal die door moderne webbrowsers gebruikt wordt, zoals de V8 engine van Chrome en de SpiderMonkey engine van Mozilla. Naast front-end webdevelopment kan het ook gebruikt worden in omgevingen zonder browser. De NodeJS runtime-environment is ontwikkeld zodat webdevelopers de taal ook aan de back-end kunnen gebruiken.
De shells van sommige NoSQL database management systems, zoals MongoDB en Apache CouchDB, en sommige relational database management systems, zoals de eerdergenoemde MySQL Shell, gebruiken het ook als scripttaal.
2. PHP
PHP is een open source scripttaal voor algemeen gebruik, dat veel gebruikt wordt in back-end webdevelopment. De afkorting stond ooit voor ‘Personal Home Page’, omdat PHP ontwikkeld is om dynamische functionaliteit toe te voegen aan statische HTML pagina’s.
Maar sindsdien heeft PHP zich ontwikkeld tot een onafhankelijk taal, en de afkorting wordt nu meestal vertaald naar ‘PHP Hypertext Preprocessor’. PHP gebruikt losse types (je hoeft het datatype van een variabele niet te definiëren), het kan ingevoegd worden in HTML documenten, en heeft objectgeoriënteerde functies.
Voorbeeld van code
PHP heeft een syntax die op C lijkt. De volgende PHP code maakt een numerieke array met vier elementen, plaatst een loop door die elementen, waarbij elk item verdubbeld wordt, en unsets de $value
variabele aan het einde van de loop.
<?php
$arr = array(1, 2, 3, 4);
foreach ($arr as &$value) {
$value = $value * 2;
}
// $arr is now array(2, 4, 6, 8)
unset($value);
?>
Bron: PHP documentation: Control Structures
Use cases en environments
PHP kan gebruikt worden op verschillende soorten HTTP servers, waarbij Apache en Nginx de meest populaire opties zijn.
De meest gebruikelijke PHP server stacks zijn LAMP (Linux, Apache, MySQL, PHP), LEMP (Linux, Nginx, MySQL, PHP — gebruikt door Kinsta), WAMP (Windows, Apache, MySQL, PHP), en MAMP (macOS, Apache, MySQL, PHP).
Het wordt ook gebruikt door veel populaire content management systems (CMS) zoals WordPress, Drupal en Joomla, en diverse web application frameworks zoals Laravel, Symfony en CodeIgniter, die allemaal op de PHP taal gebouwd zijn en er extra functionaliteit aan geven.
Je kan PHP ook voor lokale WordPress development gebruiken.
3. Python
Python is momenteel de één na populairste programmeertaal op GitHub (na JavaScript). Het is zo populair vanwege de heldere en bondige syntax, waardoor je in Python voor dezelfde resultaten aanzienlijk minder hoeft te typen dan bij de meeste andere talen.
Python is een gratis en open source project, dat beheerd wordt door de Python Software Foundation. Het ondersteunt gestructureerde, object-oriented en functionele programmeerparadigma’s, en biedt een uitgebreide Standard Library die een verzameling is van veelgebruikt Python modules.
Voorbeeld van code
Python gebruikt geen krulhaken, en puntkomma’s zijn optioneel, waardoor de code eenvoudig te lezen en te schrijven is. De volgende Python code plaatst een loop door integers tussen 0 en 4, en print die.
count = 0
while count < 5:
print(count)
count += 1
Bron: Learn Python: Loops
Use cases en environments
De meest populaire Python implementatie is CPython, geschreven in de C taal. Dit is ook de implementatie die je als referentie downloadt bij de Python taal. Alhoewel Python een geïnterpreteerde taal is, gebruikt CPython een stap voor zowel compilatie als interpretatie. Allereerst wordt de broncode vertaald naar bytecode (niet machinetaal), die tijdens de uitvoering geïnterpreteerd wordt.
Naast CPython heeft Python ook andere runtime-environments, waarvan PyPy de belangrijkste is, waarbij de compilatie-stap overgeslagen wordt en alleen JIY (just-in-time) interpretatie plaatsvindt. Python implementaties worden cross-platform gedaan, wat betekent dat ze op verschillende besturingssystemen uitgevoerd kunnen worden, waaronder Linux, Windows en macOS.
Python wordt ook vaak gebruikt in machine learning, back-end webdevelopment (Django is het meest populaire webframework), data-analytics, automatisering, wetenschappelijk computergebruik, en webscraping.
4. Ruby
Ruby is een open source scripttaal voor algemeen gebruik, met een compacte en eenvoudig te lezen syntax. Het volgt de principes van objectgeoriënteerd programmeren en maakt het mogelijk nette en logische code te schrijven. In Ruby is alles een object, zelfs types die primitives zijn in de meeste andere talen, zoals integers en booleans.
Objectgeoriënteerde concepten zoals inheritance, mix-ins, en metaclasses worden veel gebruikt.
Alhoewel Ruby ontworpen is als puur objectgeoriënteerd, wordt procedural programming wel ondersteund (waarbij functies en variabelen die buiten classes gedefinieerd worden bij het object Self
horen), en functional programming (via anonieme functies, closures en continuations).
Voorbeeld van code
Ruby heeft een nette syntax die lijkt op Python. Het volgende voorbeeld van Ruby code definieert de class KaraokeSong
als subclass van de class Song
:
class KaraokeSong < Song
def initialize(name, artist, duration, lyrics)
super(name, artist, duration)
@lyrics = lyrics
end
end
Bron: Programming Ruby reference guide: Classes, Objects, and Variables
Use cases en environments
Ruby wordt vooral veel gebruikt in back-end webdevelopment, en maakt enkele robuuste frameworks voor webtoepassingen mogelijke, zoals Ruby on Rails. Veel populaire websites en toepassingen draaien op Ruby on Rails, zoals AirBnB, Shopify, GitHub en Hulu.
Ruby is ook de taal waarin veel populaire tools voor webdevelopment zijn geschreven, zoals de Sass CSS preprocessor, de Jekyll statische website generator en de Vagrant virtual machine omgeving.
De standaard implementatie van Ruby is YARV (Yet Another Ruby Virtual Machine). Dat was de overstap nadat de originele interpreter van Ruby, Matz’s Ruby Interpreter (ook wel Ruby MRI of CRuby) veel kritiek voor snelheid en schaalbaarheid kreeg.
Er zijn ook diverse concurrerende runtime-environments voor Ruby, zoals JRuby (waarmee je Ruby op de Java Virtual Machine kan draaien), mruby (een lichtgewicht implementatie die je in een toepassing kan gebruiken), TruffleRuby (Oracle’s Ruby interpreter gebouwd opGraalVM), Rubinius (een cloud-native virtual machine voor Ruby), en nog allerlei anderen.
5. Groovy
Groovy is een ontzettend flexibele taal die geschreven is voor de Java Virtual Machine (JVM) die zowel als scripttaal en als programmeertaal gebruikt kan worden. Het is een open source project dat beheerd wordt door de Apache Software Foundation. Groovy is een objectgeoriënteerde taal die de superclass java.lang.Object
uitbreidt.
Zowel statische als dynamische typing wordt ondersteund (types kunnen zowel gecontroleerd worden tijdens het compilen als tijdens het uitvoeren), en biedt native ondersteuning voor lijsten, associative arrays, regular expressions, en markup talen zoals HTML en XML.
Je kan Groovy samen met bestaande Java library’s gebruiken.
Voorbeeld van code
Groovy heeft een Java-compatible syntax, met krulhaken. Het volgende codevoorbeeld definieert de class Coordinates
met de lengte- en breedtegraad en de methode getAt()
:
@Immutable
class Coordinates {
double latitude
double longitude
double getAt(int idx) {
if (idx == 0) latitude
else if (idx == 1) longitude
else throw new Exception("Wrong coordinate index, use 0 or 1")
}
}
Bron: Groovy Documentation: Semantics
Use cases en environments
Aangezien Groovy compileert naar Java bytecode, kan je het ook als algemene programmeertaal gebruiken, net als Java zelf. In dat geval kan je de broncode eerst compileren naar bytecode voordat het uitgevoerd wordt, via de groovyc compiler (het equivalent van javac).
Maar er zijn een hoop Groovy implementaties waarmee je het direct als scripttaal kan gebruiken. De meest populaire zijn het Grails framework voor webapplicaties (eerder Groovy on Grails genoemd), en de Gradle build automatiseringstools, maar er zijn ook diverse anderen.
6. Perl
Perl is een scripttaal voor algemeen gebruik die al meer dan dertig jaar bestaat (sinds 1987). Het is origineel ontwikkeld als UNIX scripttaal voor het verwerken van rapporten. Daar komt dan ook de naam vandaan, aangezien Perl staat voor ‘Practical Extraction and Reporting Language’.
Perl werd populaire in de jaren negentig toen programmeurs het veel voor CGI (Common Gateway Interface) scripting begonnen te gebruiken, wat een oudere specificatie is voor webservers (het wordt nog altijd veel gebruikt door oudere websites).
Ondanks dat het al zo lang bestaat, staat Perl nog altijd slechts elfde op de TIOBE index en is het de 21e meest populaire taal op GitHub (oktober 2020).
Voorbeeld van code
De syntax van Perl lijkt sterk op C. Het voorbeeld van Perl hieronder definieert de subroutine square()
dat een getal kwadrateert, vervolgens de waarde 8 als argument gebruikt, de subroutine uitvoert en het resultaat opslaat in de variabele $sq
:
sub square {
my $num = shift;
my $result = $num * $num;
return $result;
}
$sq = square(8);
Bron: Perl docs: Perl Intro
Use cases en environments
Alhoewel het tegenwoordig niet de meest populaire keuze is onder webdevelopers, kan Perl nog altijd goed gebruikt worden in back-end development. Naast de CGI runtime-environment kan het ook uitgevoerd worden op Apache en Nginx webserver, aangezien de LAMP stack eigenlijk de LAMPP stack zou moeten zijn, namelijk Linux, Apache, MySQL, PHP, en Perl.
Er bestaan ook enkele frameworks voor webdevelopment voor Perl, waarvan Catalyst, Mojolicious, en Dancer de meest populaire zijn.
Perl wordt gebruikt door diverse bekende websites en toepassingen, zoals Amazon, IMDB, Booking.com, en de BBC iPlayer. Het wordt ook in andere gebieden gebruikt, zoals netwerkprogrammeren en systeembeheer. Je kan ook het Comprehensive Perl Archive Network (CPAN) bekijken waar je meer dan 25.000 open source Perl-project kan vinden die je zo kan downloaden.
7. Lua
Lua is een snelle en lichtgewicht scripttaal. Het woord ‘lua’ betekent ‘maan’ in het Portugees, aangezien de taal ontworpen en onderhouden wordt door de Pontifical Catholic University van Rio de Janeiro in Brazilië. Lua ondersteunt procedural, object-oriented en functional programming paradigms.
Aangezien de interpreter van Lua in C is geschreven, kan het eenvoudig in toepassingen gebruikt worden via de C API. Dat gezegd hebbende kan je Lua ook gebruiken om reeds bestaande toepassingen uit te breiden die geschreven zijn in C-achtige talen, zoals C, C++, C#, Java, Perl, Ruby, en anderen.
Voorbeeld van code
Lua heeft, net als Python en Ruby, een heldere en leesbare syntax. Het volgende voorbeeld in Lua laat zien hoe je het statement if-then-else
kan gebruiken. Allereerst wordt de op
variabele bekeken, en afhankelijk van de waarde daarvan worden er enkele eenvoudige sommige uitgevoerd.
if op == "+" then
r = a + b
elseif op == "-" then
r = a - b
elseif op == "*" then
r = a * b
elseif op == "/" then
r = a / b
else
error("invalid operation")
end
Bron: Programming in Lua reference guide: Statements
Use cases en environments
De standaard Lua implementatie interpreteert de broncode niet direct, maar compileert het eerst naar bytecode die vervolgens op de Lua virtual machine wordt uitgevoerd. Dit gebeurt allemaal tijdens de uitvoering, dus er is geen handmatige compilatie-stap, alhoewel je er ook voor kan kiezen om Lua vóór de uitvoering te compileren zodat het sneller wordt.
Er zijn ook diverse andere Lua implementaties, zoals LuaJIT, LuaVela, en nog allerlei anderen.
Lua wordt vaak gebruikt voor computergames, van Angry Birds en World of Warcraft tot Grim Fandango. Aangezien het zo eenvoudig te embedden is, wordt het ook veel gebruikt voor embedded apparaten, zoals set-top boxes, dashboards van auto’s (zoals Volvo), IP camera’s (bijv. Cisco) en anderen.
Het kan ook gebruikt worden voor webdevelopment, aangezien zowel Apache als Nginx webservers een Lua module hebben (hier vind je mod_lua voor Apache en ngx_http_lua_module voor Nginx). Wikipedia gebruikt Lua als template scripttaal, en ook de UI van Adobe Photoshop Lightroom is in Lua geschreven.
8. Bash
Bash is de naam van zowel een command-line interpreter (shell) voor het GNU besturingssysteem als de bijbehorende scripttaal. ‘Linux’ is zelfs het GNU besturingssysteem dat de Linux kernel gebruikt (een kernel is de kern van het OS, en het eerste programma dat het besturingssysteem laadt).
Het is een vervanging voor de oorspronkelijke UNIX Bourne shell (sh) – het Bash acroniem staat voor ‘Bourne Again SHell’ (een woordspeling op ‘born again shell’).
Naast dat het de superset van de Bourne shell syntax is, biedt Bash ook functies van andere shell scripttalen zoals KornShell (ksh) en C shell (csh), voor bijvoorbeeld command-line editing en geschiedenis van opdrachten. Je kunt Bash gebruiken in een interactieve modus (één commando tegelijk uitvoeren en wachten op het antwoord van de machine) en in een scriptmodus (een reeks commando’s – een Bash script – tegelijk uitvoeren).
Voorbeeld van code
Zoals de meeste CLI scripttalen, heeft Bash een duidelijke en eenvoudige syntax. Het volgende voorbeeld selecteert een bestand uit de huidige map en geeft een bericht weer met de naam en index van het bestand.
select fname in *;
do
echo you picked $fname \($REPLY\)
break;
done
Bron: Bash Reference Manual: Conditional Constructs
Use cases en environments
Je kan Bash gebruiken om diverse acties en bewerkingen voor je besturingssysteem uit te voeren, zoals het uitvoeren van opdrachten en taken waar veel mensen een grafische interface voor gebruiken (bijv. het beheren van mappen en bestanden), aanpassen en automatiseren van admintaken, verbinden met een remote server en nog allerlei andere zaken.
Bash is de standaard shell voor veel Unix-gebaseerde besturingssystemen, waaronder de meeste Linux distro’s en alle macOS releases vanaf macOS Catalina waarbij Bash Z shell (Zsh) verving in 2019. Je kan ook Bash scripts uitvoeren op Windows 10, via de Windows Subsystem for Linux (WSL) compatibility layer van Microsoft.
9. PowerShell
PowerShell is origineel ontwikkeld als command-line shell en scripttaal, puur voor Windows. Sindsdien heeft Microsoft het vrijgegeven en open source gemaakt én uit het .NET framework gehaald dat alleen Windows toepassingen kan maken. Het is naar de .NET core gezet, waarmee toepassingen voor Windows, Linux en macOS gemaakt kunnen worden. Hierdoor is PowerShell nu cross-platform.
Het heeft ook een nieuwe naam gekregen, PowerShell Core in plaats van Windows PowerShell. Anders dan de meeste command-line shells, accepteert en retourneert PowerShell .NET objecten in plaats van normale tekst, waardoor je meer mogelijkheden hebt voor automatiseren.
Voorbeeld van code
PowerShell heeft een compacte syntax waardoor je sneller in de command line kan werken. Het PowerShell code hieronder maakt een back-up van het boot.ini bestand en slaat het op naar boot.bak.
Copy-Item -Path C:\boot.ini -Destination C:\boot.bak
Bron: PowerShell Documentation: Working with Files and Folders
Use cases en environments
Je kan PowerShell gebruiken op Windows, Linux en macOS, en sommige ARM apparaten (zoals wearables, media-spelers, tablets en andere consumentenelektronica).
Verder kan PowerShell gebruikt worden voor systeembeheer, automatisering van taken en beheren van instellingen. Om de modules en scripts voor PowerShell te vinden, kan je de PowerShell Gallery en de officiële verzameling voorbeelden van Microsoft bekijken.
10. R
R is zowel een softwareomgeving als scripttaal die je kan gebruiken voor statistische applicaties, data-analyse en grafische weergave. Het is een gratis en open source GNU project en een implementatie van de statistische rekentaal S (die niet meer actief beheerd wordt).
R maakt het mogelijk om allerlei statistische bewerkingen toe te passen, zoals klassieke statistische tests, clustering, time series analysis, lineair en non-lineair modelleren, en nog veel meer.
Voorbeeld van code
De syntax van R is anders dan de meeste scripttalen, zo is <-
bijvoorbeeld de belangrijkste operator voor toewijzing in plaats van de normale =
en heeft het lussen zonder lussen. Lees meer over de eigenaardigheden van R in deze beginnersgids voor R van Sharon Machlis.
Het volgende R voorbeeld definieert een attribuut names
voor de vector fruit
(een vector is een gebruikelijke data structuur in R met elementen van hetzelfde type) met alfanumerieke namen (orange
, banana
, apple
, peach
) in de componenten terug te kunnen vinden. Daarna wordt de subvector lunch gebruikt om elk component op te halen via het alias:
> fruit <- c(5, 10, 1, 20)
> names(fruit) <- c("orange", "banana", "apple", "peach")
> lunch <- fruit[c("apple","orange")]
Bron: An Introduction to R: Index vectors; selecting and modifying subsets of a data set
Use cases en environments
De R software is cross-platform, je kan het dus op Windows, Linux en macOS gebruiken. De standaard R implementatie is ook via andere scripttalen te krijgen, zoals Python en Perl. Dit betekent dat je alle statistische functies van R ook via deze scripttalen kan gebruiken.
Naast de standaard R omgeving kan je R ook gebruiken in andere omgevingen, zoals pqR (voor ‘pretty quick R’), en Renjin (een R implementatie op de Java Virtual Machine).
11. VBA
VBA staat voor Visual Basic for Application en is een implementatie van Visual Basic 6, een programmeertalen die sinds 2008 niet meer actief onderhouden wordt. Het is gemaakt voor Microsoft Office developers om herhalende taken te automatiseren, nieuwe functies toe te voegen en te interacteren met de eindgebruikers van documenten.
Net als Visual Basic gebruikt VBA event-driven programming, waarbij events zoals een actie van de gebruiker het centrum zijn waardoor het programma iets doet.
Aangezien toepassingen van Microsoft Office een grafische userinterface hebben, kan je VBA script toevoegen aan menuknoppen, shortcuts en macro’s (programmeerbare patronen) en OLE events (Object Linking and Embedding, een Microsoft technologie waarmee je een toepassing vanuit een andere toepassing kan beheren).
Voorbeeld van code
Aangezien VBA op Visual Basic is gebaseerd (een variatie op BASIC), gebruikt het een syntax die lijkt op de talen van BASIC (voor Beginners’ All-purpose Symbolic Instruction Code), en het is dus erg eenvoudig voor beginners.
Het voorbeeld in VBA hieronder gebruikt de methode GetCertificateDetail()
van het SignatureInfo
object om de vervaldatum van een certificaat op te halen.
Sub GetCertDetails()
Dim objSignatureInfo As SignatureInfo
Dim varDetail As Variant
strDetail = objSignatureInfo.GetCertificateDetail(certdetExpirationDate)
End Sub
Bron: Office VBA Reference: SignatureInfo object
Use cases en environments
De VBA scripttaal vind je in de meeste Microsoft Office toepassingen, zoals Access, Excel, Office for Mac, Outlook, PowerPoint, Project, Publisher, Visio, en Word — die allemaal een eigen reference guide hebben op de documentatie website van Microsoft, terwijl algemene VBA concepten uitgelegd worden in de library reference.
Naast Microsoft Office toepassingen zijn er ook andere apps die VBA ondersteunen, zoals AutoCAD en CorelDRAW.
12. Emacs Lisp
Emacs Lisp is een domeinspecifieke scripttaal ontwikkeld voor de GNU Emacs tekstbewerker. Het is een dialect van de programmeertaal Lisp (voor LISt Processor).
Aangezien Emacs Lisp ontwikkeld is voor gebruik binnen een code-editor, biedt het een set functies die zich op die omgeving richt, zoals tekst scannen en parsen, buffer (objecten met bewerkbare tekst) en displaybeheer enzovoort.
De Emacs Lisp scripttaal is nauw geïntegreerd met de editorinterface zelf, dus elke opdracht is ook een Lisp functie die je kan callen vanuit het script, en de customization parameters zijn ook Lisp variabelen.
Voorbeeld van code
De syntax van Emacs Lisp is gebaseerd op een volledig prefix notatie in haken dat vrij lastig te lezen is als je nog nooit eerder met Lisp gewerkt hebt.
The following Emacs Lisp code example defines two variables (symbols) and assigns a list of values to each — a list of trees (pine
, fir
, oak
, maple
) to the symbol trees
and a list of herbivores (gazelle
, antelope
, zebra
) to the symbol herbivores
:
De volgende Emacs Lisp code definieert twee variabelen (symbols) en wijst aan beiden een lijst met waarden toe, een lijst met bomen (pine
, fir
, oak
, maple
) aan het symbol trees
en een lijst met herbivoren (gazelle
, antelope
, zebra
) aan het symbol herbivores
:
(setq trees '(pine fir oak maple)
herbivores '(gazelle antelope zebra))
Bron: An Introduction to Programming in Emacs Lisp: Setting the Value of a Variable
Use cases en environments
De Emacs tekstbewerker is een cross-platform toepassing voor Windows, Linux en macOS.
Door de scripttaal Emacs List te gebruiken kan je de tekstbewerker uitbreiden en aanpassen, processen automatiseren, grafieken maken, toegang beperken tot bepaalde plekken (betere beveiliging), zoeken op uitdrukkingen, tekst opslaan, modes definiëren en keymaps, gebruikers vragen stellen en andere zaken uitvoeren.
Er zijn ook configuration frameworks voor Emacs Lisp, zoals Doom Emacs en Spacemacs.
13. GML
De afkorting GML staat voor GameMaker Language. Dit is een goed voorbeeld van een categoriespecifieke scripttaal voor gamedevelopment. GML is een scripttaal met patent van GameMake Studio 2, een cross-platform game-engine en development platform van YoYo Games.
Alhoewel GML vooral gebruikt wordt voor het beheren van game objecten, is het geen objectgeoriënteerde taal, maar een procedurele. Je kan eigen scripts oproepen vanuit game objecten.
Naast de GML scripttaal heeft GameMaker Studio 2 ook een visuele scripttool die Drag and Drop oftewel DnD heet. Door de flexibele aard van GameMaker Studio 2 kan je DnD mixen met GML scrips.
Voorbeeld van code
De syntax van GML lijkt op JavaScript en C.
De volgende code in GML laat een game object horizontaal bewegen richten de muis, met 5 pixels per stap. Zodat het de muis bereikt, wordt er een explosie effect layer gemaakt door het script (je ziet dus een explosie), waarna de instantie verwijderd wordt (de explosie gaat dus weg):
if mp_linear_step(mouse_x, mouse_y, 5, 0) {
instance_create_layer(x, y, "Effects", obj_Explosion);
instance_destroy();
}
Bron: GameMaker Studio 2 Docs – Scripting – GML Reference – Movement and Collisions – Motion Planning
Use cases en environments
GML wordt geïnterpreteerd door GameMake Studio 2, wat je moet kopen als je games wilt maken in deze taal.
De prijs hangt af van je doelplatform: Mac en Windows zijn het goedkoopst, cross-platform (Windows, macOS, Ubuntu), HTML5 webgames en Universal Windows Platform samen met cross-platform mobile games (Android, Fire, iOS) zitten in de middenklasse en PS4, Xbox One en Nintendo Switch zijn het duurst.
Enkele voorbeeld van computergames op basis van GML zijn Blackhole, 10 Second Ninja X, Death’s Gambit, Deltarune en diverse anderen.
Samenvatting
Scripttalen zijn zeker fascinerend. Ze hebben verschillende variaties, syntaxen en implementaties en kunnen overal voor gebruikt worden.
Van het bouwen van dynamische websites tot het automatiseren van systeembeheer en maken van computergames.
De drie belangrijkste aandachtspunten bij een scripttaal zijn:
Ze kunnen niet zelfstandig draaien maar hebben altijd een omgeving nodig (een implementatie, runtime) met een interpreter voor die specifieke taal.
Soms kan je je algemene scripttalen gebruiken om toegang te krijgen tot omgevingen die primair voor andere talen zijn ontwikkeld. Denk aan JRuby (Ruby op de Java Virtual Machine), Renjin (R implementatie op de JVM) en Rpy2 (R vanuit Python) als typische voorbeelden.
Als laatste, voordat je een nieuwe scripttaal gaat leren is het altijd slim om even naar de huidige populariteit te kijken via de TIOBE index of GitHub.
Afhankelijk daarvan vind je ook meer of minder voorbeeldscripts, GitHub repositories, module libraries, reference guides, handleidingen, en app showcases waarmee je sneller kan starten en beter betaalde projecten en banen kan vinden!
Laat een reactie achter