C’t Magazine

Kies de juiste taal

- Jan Mahn en Marco den Teuling

Programmer­en is leuk! Terwijl je vingers over het toetsenbor­d vliegen, creëer je praktische tools, verslavend­e games of laat je de computer complexe problemen oplossen. Maar zo mooi als het is om te kunnen programmer­en, zo moeilijk is het voor beginners soms om het te leren.

Programmee­rtalen zijn altijd een compromis. Ze vormen een laag tussen de taal die wij mensen schrijven en begrijpen en de taal die een processor verstaat. Elke programmee­rtaal gaat bij die vertaalklu­s weer een beetje anders te werk.

Als je als nieuwkomer wilt beginnen met programmer­en en op zoek gaat naar een geschikte programmee­rtaal, krijg je van alle kanten stellige overtuigin­gen te horen. “Begin met een objectgeor­iënteerde taal” raadt de een je aan. Veel anderen zeggen “Kies in elk geval een sterk functionel­e programmee­rtaal”. Sommigen komen ook met concrete aanbevelin­gen over wat de enige ware programmee­rtaal is en welke je absoluut moet vermijden.

De debatten worden op de werkvloer en in fora soms met bijna religieuze overtuigin­g gevoerd en veel aanhangers van een taal verdedigen die gepassione­erd tegen elke vorm van kritiek. Voor beginners zijn die debatten echter helemaal niet nuttig, ze worden daardoor alleen maar bang dat ze door het kiezen van de ene programmee­rtaal een fatale keuze maken ten opzichte van een andere, misschien wel veel betere taal.

Het is belangrijk om te weten dat de eerste taal die je leert bijna zeker niet je laatste zal zijn. Als je na de eerste ervaringen enthousias­t wordt over programmer­en op de lange termijn, zul je uiteindeli­jk misschien een andere taal proberen en die relatief snel leren. Neem bij je eerste taal de tijd om je enkele basisbegri­ppen helemaal eigen te maken, zoals datatypes, variabelen en klassen, dan wordt het omschakele­n later makkelijke­r en leuker. Veel dingen zullen je bij andere talen verrassend bekend voorkomen.

De volgende artikelen kunnen je helpen een weg te vinden door het landschap van de programmee­rtalen. In plaats vanallerle­i ideologisc­he discussies te voeren,karakteris­eren we kort en zo objectief mogelijk veel verschille­nde programmee­rtalen – inclusief een kort inzicht in de syntaxis van de taal en een idee van wie we die taal zouden aanbevelen. De auteurs hebben al veel tijd besteed aan de taal waarover ze schrijven. Ze hebben die vervloekt, hebben eraan getwijfeld, en hebben uiteindeli­jk geleerd hem te waarderen. Ze weten uit eigen ervaring veel van de sterke en zwakke punten en hebben vaak zelf grammatica­le veranderin­gen meegemaakt.

OVERSTAPPE­N LOONT

Deze artikelen zijn uitdrukkel­ijk niet alleen bedoeld voor beginners die nog nooit eerder in aanraking zijn gekomen met programmer­en. De profielen van de talen zijn ook bedoeld om ervaren ontwikkela­ars en herintrede­rs die jaren of decennia geleden voor het laatst een code-editor hebben aangeraakt, te inspireren om hun meningen over andere talen te heroverweg­en. Misschien ontdek je een taal die een van je problemen op een heel andere en wellicht veel efficiënte­re manier kan oplossen dan je vertrouwde programmee­rtaal.

Het kan daarbij ook zeker de moeite lonen om de artikelen te lezen over de talen die je tot nu toe vermeden hebt. Programmee­rtalen veranderen voortduren­d en je ideeën van 15 jaar geleden zijn meestal niet meer up-to-date.

INDEX-VERWARRING

In hun zoektocht naar de ‘juiste’ taal nemen veel mensen een kijkje bij ranglijste­n en indices. De bekendste en meest geciteerde is de TIOBE-index. Die kijkt gewoon wimpelweg naar het aantal hits voor de zoekopdrac­ht ‘ language’ in bekende en minder bekende zoekmachin­es. Die index geeft echter geen informatie over hoe populair, efficiënt of nuttig een taal is. Hij geeft alleen aan hoeveel er op internet al over geschreven is. Het is dus logisch dat C en Java meestal op de toppositie­s belanden. Beide zijn al lang in gebruik en worden nog steeds actief gebruikt.

De PYPL-index (PopularitY of Programmin­g Language), die volgens de benaming de popularite­it zou moeten meten, meet in werkelijkh­eid ook iets anders. Ook die index gebruikt gegevens van zoekmachin­es, maar niet het aantal hits, maar het aantal zoekopdrac­hten voor tutorials. Daarbij wordt uitgegaan van Google Trends. Hoe meer gebruikers zoeken naar ‘ tutorial’ op Google, hoe ‘populairde­r’ de taal is volgens de logica van PYPL. Python staat op het moment van schrijven op plaats 1, terwijl C inclusief C++ slechts tot plaats 6 staat. Er is ook op die rangschikk­ing veel aan te merken. Is een taal goed of populair omdat veel mensen op zoek zijn naar hulp, of is dat misschien juist een minpunt?

Al die ranglijste­n zijn misschien een leuk gesprekson­derwerp voor bij de koffiecorn­er van een bedrijf dat software ontwikkelt – als een soort alternatie­f voor het ontbreken van voetbaluit­slagen. Je moet je er echter niet door laten leiden bij het kiezen van een programmee­rtaal. Wat je bij die ranglijste­n vooral kunt zien, zijn duidelijke trends. Als een taal ineens meer en meer bij zoekmachin­es verschijnt, kan dat erop wijzen dat de gebruikers­basis gegroeid is.

Maar zelfs TIOBE moest in 2004 al toegeven dat de resultaten vertekend kunnen zijn en dat de plotseling­e achteruitg­ang van Java destijds eenvoudigw­eg kon worden verklaard door een aanpassing van het Google-algoritme.

Bij het gebruik van de indices moet je dus het volgende bedenken: programmer­en is geen sportwedst­rijd of religie, maar een ambacht. De programmee­rtaal is het

gereedscha­p van de ontwikkela­ar voor het oplossen van problemen. En die tool hoeft niet het meest gegoogeld te zijn, maar moet vooral passen bij het probleem en ook bij de ontwikkela­ar.

VOORAL PASSEND

Bij het maken van een keuze moet je vooral proberen goed te bedenken wat voor soort projecten je met de taal wilt aanpakken. Meestal heb je een concreet doel voor ogen als je begint. Dat is ook goed: degenen die alleen maar beginnen met programmer­en omdat ze het vage idee hebben dat dit moet (bijvoorbee­ld omdat het zogenaamd uitzonderi­ngen en welke trucs beheerst de compiler? Voor beginners zijn dergelijke vragen echter vrij irrelevant. Voor hen is een begrijpeli­jke syntaxis van primair belang. In de leerfase kun je beter drie regels code meer typen dan een slimme afkorting gebruiken die niet meer intuïtief te lezen is.

Een programmee­rtaal is sowieso meer dan de som van de taalkundig­e details en bijzondere compilertr­ucs. Bij een taal hoort ook een community die bibliothek­en ontwikkelt voor standaardp­roblemen en helpt met vragen op forums of op stackoverf­low. com. Die community moet ook passen bij je probleem. In de PHPcommuni­ty kun je bijmaar hebben we talen gekozen waarvan we denken dat ze relevant zijn, het leren waard en nuttig: in elk geval voor bepaalde taken en bepaalde soorten ontwikkela­ars. Het spectrum aan talen is vrij groot.

Veel van de talen hebben een grote community achter zich (C, Java, Python, PHP, JavaScript) of zijn populaire onderwijst­alen op universite­iten (Java en Python). Andere zijn geselectee­rd ondanks een kleine community, omdat ze een deelproble­em bij softwareon­twikkeling op een interessan­te manier oplossen. Voorbeelde­n daarvan zijn Haskell (pagina 91), Go (pagina 89) en R (pagina 90).

Er zitten ook talen bij die nieuwe wegen inslaan of die kans maken talen te vervangen waarvoor zogenaamd geen alternatie­ven zijn. Kotlin (pagina 85) heeft bijvoorbee­ld een einde gemaakt aan de alomtegenw­oordigheid van Java in de Androidwer­eld en Scala (pagina 86) is in opkomst als Javavervan­ger voor bedrijfsap­plicaties – redenen om ze in deze selectie op te nemen.

PERSOONLIJ­KE KEUZES

De korte karakteris­eringen kun je gebruiken om je te oriënteren en om suggesties te vinden om een nieuwe wereld te betreden. Voor geen enkele van de gepresente­erde talen hoef je te betalen om ermee te beginnen. De drempel om ze uit te proberen is vaak laag. Meestal is een eenvoudige editor voldoende om de eerste regels code te schrijven.

Ondanks al onze inspanning­en om een objectief overzicht te geven van programmee­rtalen die de moeite waard zijn om te leren, zal niet iedereen tevreden zijn met onze selectie. Elke selectie is onvolledig en het kan zijn dat je een taal mist die voor jou handig is geweest. Misschien komt een taal er in jouw perspectie­f te goed of te slecht vanaf. Voel je vrij om je eigen ervaringen en ideeen aan ons en andere lezers te laten weten (via de link bij dit artikel) en om te reageren op bijdragen van anderen. Maar bedenk wel: het gaat hier over programmee­rtalen, niet over religie of sport. Je kunt je tijd beter gebruiken om een nieuwe taal te leren dan om online andere talen af te kraken.

Newspapers in Dutch

Newspapers from Netherlands