De tweede jeugd van Javascript

Wat is een programmeertaal? Een vraag die ooit, en misschien nog steeds eenvoudig te beantwoorden leek; een programmeertaal is een taal waarin je een computer kunt vertellen wat hij moet doen. De eerste computers hadden genoeg aan instructies in de vorm van een reeks enen en nullen. De toename in capaciteit van zowel processoren als randapparatuur, en de mogelijkheid van complexere programmatuur die daarmee gepaard ging, resulteerden al snel in behoefte aan een betere leesbare vorm van deze instructies. Deze eerste taal, assembly, wordt nog steeds gebruikt voor basale beheersbare aansturing van processoren in diverse hardware, bijvoorbeeld in industriële context. Omdat met assembly de instructieset van een processor vrijwel direct wordt aangesproken, spreken we van een “low level” programmeertaal.

Verschillende programmeertalen

Het letterlijk uitschrijven van een processorinstructie is echter bewerkelijk, repetitief, onoverzichtelijk, en vooral ook onnodig. Operaties die voor het menselijk begrip als individueel en op zichzelf staand worden gezien, vertalen zich in assembly al snel in vele regels code. Een bepaald woord vinden in een stuk tekst lijkt een eenvoudige opdracht voor een computer, maar in machinetaal zijn hier tientallen processorinstructies voor nodig. Daarom zijn in de loop der jaren vele programmeertalen ontworpen waarin deze instructies naar een abstracter en voor het menselijk oog intuitiever niveau zijn gebracht. In deze “high level” programmeertalen hebben operaties als “zoek of een tekenreeks voor komt in een stuk tekst”, de vorm van één enkele opdracht, met een betekenisvolle naam als “inString (string1,string2)”.

Scripting

De gelaagdheid in de hiërarchie van programmeertalen is hiermee echter nog niet compleet. In de loop der jaren is veel software zo complex geworden, dat een eindgebruiker de volle mogelijkheden ervan alleen kan benutten als hij de software tot in detail kan aansturen. Het geven van commando’s aan, en uitvoeren van operaties binnen zulke software, gebeurt in de vorm van scripting. Scripting talen lijken in hun syntax en mogelijkheden op programmeertalen, maar zijn dus uitsluitend bedoeld voor gebruik in de context van bestaande software, of als middel om gebruikershandelingen te automatiseren.

De mogelijkheden van Javascript

Naarmate websites interactiever werden, ontstond de mogelijkheid om zo’n website meer softwarematige intelligentie te geven. Al enige tijd is Javascript hierachter de grote motor. Javascript bleek echter dermate handzaam en zat bij zoveel ontwikkelaars in de vingers, dat sommige visionairen ertoe bewogen werden om Javascript uit hun context van de webbrowser te tillen, en opnieuw toe te passen in de context van de machine. Het verband tussen de syntax van een taal en waarvoor hij wordt gebruik, hoeft immers helemaal niet 1 op 1 te zijn. Waarom zou je met Javascript geen volwaardige software kunnen schrijven?

Tegenwoordig bestaat een groot deel van de software, zowel in gebruik als in ontwikkeling, uit een deel dat opereert op een server op afstand, en een lokaal deel bij de eindgebruiker. Dankzij de geboorte van NodeJS, waarmee serverside software met de Javascript taal kan worden ontwikkeld, en aanverwante zaken zoals mongoDB, een database platform dat ook gebruik maakt van de Javascript format. Kunnen ontwikkelaars nu hun gehele architectuur op Javascript baseren.

WBSO subsidie voor ontwikkelaars

Het is een feit dat WBSO, de regeling die korting geeft op de loonkosten van ontwikkelaars, sinds 1 januari 2016 alleen kan worden verkregen voor ontwikkelingen die gedaan worden in een zogenaamde “formele programmeertaal”. Met deze term wil men programmeertalen aanduiden die dichter bij de hardware van de machine zitten. Echter, hoe direct men hardware wil programmeren hangt eigenlijk helemaal niet af van de taal waarin dat gebeurt. Ik zou hypothetisch zelfs in vloeiend Nederlands mijn computer kunnen programmeren, mits ik maar een interpreter of compiler heb die mijn Nederlands vertaalt naar enen en nullen.

Joris van Eil, consultant De Breed & Partners