Van programmeren naar coderen

 

 Vroeger kreeg je in sommige richtingen op school programmeren: je programmeerde in Cobol, Basic, Pascal of bijvoorbeeld C of C++. Bij de wat geavanceerdere talen maakte je gebruik van libraries. Je eindproduct was een programma, dat meteen draaide (in het geval van een geïnterpreteerde taal als Basic) of je moest het telkens even compileren voordat het draaide. In de basis is aan dit hele idee de laatste tientallen jaren niet veel veranderd.

 

 De laatste jaren wordt er niet alleen gesproken van programmeren maar ook van coderen. Maar is dat wel hetzelfde? Wetende dat een programma bestaat uit programmacode, dan ben je als programmeur aan het coderen om een programma te maken. Maar andersom hoeft dat niet waar te zijn: je kunt coderen zonder een programma te maken. Zo kun je code schrijven om op een website speciale content te tonen, je kunt coderen om een functie binnen een ziekenhuisinformatiesysteem toe te voegen, je schrijft code voor een App en maakt gebruik van templates, je schrijft code binnen een applicatie met macro’s, je schrijft code die data moet verwerken, je maakt code die in een apparaat draait, enzovoort. Zelfs een IFTTT-recept maken is coderen (www.ifttt.com). Lang niet alle programmeurs maken nieuwe code, er zijn minstens evenveel programmeurs de bestaande code verbeteren en uitbreiden, of die code onderhouden. Coderen vat de techniek dus beter samen dan programmeren in de zin van “het maken van een programma”.

 

 Coderen heeft toekomst

 

Coderen wordt nog belangrijker dan het feitelijk al is. De verwachting is dat in 2020 een Europees tekort is van maar liefst 900.000 ICT-pro’s. Dat komt allemaal door ontwikkelingen die we 15 jaar geleden niet konden voorspellen: de explosie aan websites die als paddenstoelen uit de grond zijn gekomen, de opkomst en enorme populariteit van smartphones en tablets met de diverse appstores apps en miljarden apps, de trend om allerlei apparaten van software te voorzien, de cloud met Big Data en het Internet of Things. Om jongeren te interesseren voor coderen, heeft voormalig vicepresident van de Europese Commissie Neelie Kroes in de 2013 de Codeweek bedacht (codeweek.nl). En ook de Raspberry Pi is natuurlijk een initiatief om kinderen laagdrempelig en goedkoop met computertechniek  en coderen kennis te laten maken.

 

 Meer dan een programmeertaal

 

Wil je programmeur, (embedded) software engineer of software developer worden? Het gaat dan al lang niet meer om het kunnen coderen in een programmeertaal. Er wordt kennis gevraagd van meerdere talen en je moet ervaring hebben in het werken met ontwikkelomgevingen. Deze ontwikkelomgevingen worden IDE’s genoemd:  integrated development environments zoals Apple Xcode, Microsoft Visual Studio of Android Studio. IDE’s kunnen open source of closed source omgevingen zijn en sommigen draaien zelfs helemaal in de cloud (een voorbeeld online IDE is https://www.codebox.io/). Een IDE bevat code-editors, compilers, tools om grafische apps te bouwen, device emulators (zie Linux Magazine 3 van dit jaar) en meer. Ook moet je als programmeur op de hoogte zijn van de vele SDK’s, bibliotheken en frameworks, cloud API en IaaS-oplossingen. Hoe breder je kennis is, hoe meer kans je hebt op een goede baan als programmeur. Maar software ontwikkelen vergt ook creativiteit, je moet goed kunnen samenwerken in projectvorm en je moet kunnen omgaan met ontwikkeltechnieken zoals Agile. Misschien zijn deze softs-skills zelfs wel belangrijker als een taal en IDE. Bekijk maar eens wat vacatures voor programmeurs en meteen is duidelijk dat duizendpoten gezocht worden.

 

 Begin simpel

 

Het werken met een specifieke programmeertaal en IDE kun je leren (in het onderwijs, als cursus of zelfstudie). Als je eenmaal één taal en IDE beheerst, is de stap naar een ander platform niet zo ingewikkeld, het is dan toch meer van hetzelfde met andere tools en een andere syntax. Leer één taal extreem goed inclusief alle concepten, algoritmes, data-structuren enzovoort en je bent klaar voor de toekomst. Je zult bij je eerste baan als programmeur waarschijnlijk toch een andere taal moeten aanleren, dus de lange lijst met eisen bij de sollicitatie zal niet zo hard te zijn! Maar welke programmeertaal moet je als aankomend en beginnend programmeur nu gaan leren? Het coderen van een iOS app is heel iets anders dan het coderen van een NoSQL-algoritme voor een data-analyse of het coderen van embedded software in bijvoorbeeld een auto. Maar talen, SDK-tools en IDE’s vormen de basis. De taal moet dus aansluiten bij hetgeen je wenst te programmeren.

 

 Welke taal?

 

Je kunt kiezen uit duizenden (!) programmeertalen. Er zijn zelfs programmeurs die een eigen programmeertaal hebben ontwikkeld om in te programmeren. Misschien is Java een goede start, Java wordt immers in veel vacatures gevraagd. Toch lijkt Java heel langzaam terrein te verliezen. Ook lijkt Oracle minder geïnteresseerd te zijn in Java. Moet je je dan meer richten op Node.js, Spark, MongoDB, PHP, Javascript? Of is coderen met NoSQL de toekomst in de Big Data-wereld? Voor statistiek is R een mooie keuze en C# doet het ook goed op je CV’tje. Wil je echte snelheid, dan is machinetaal natuurlijk het beste en het staat ook bijzonder stoer op je CV. Maar wie kent dat nog voor de processor in zijn systeem? Nee, HTML5 is toch the way to go, het belooft device-onafhankelijke apps en kan natie apps vervangen? De IEEE heeft onderzocht welke talen populair zijn en of ze geschikt zijn voor de toepassingsgebieden web, mobile, systeem of embedded applicaties, en dat geeft een bijzonder aardig overzicht: zie http://bit.ly/1N9frAr

 

 

 

Onderschrift: De top 15 programmeertalen volgens de IEEE

 

 De top 5 talen zijn Java, C, C++, Python en C#. Wat in dit overzicht opvalt, is dat geen enkele van de bijna 50 talen geschikt is voor alle vier de toepassingsgebieden. Ook opvallend is dat assembler (machinetaal) nog veel gebruikt wordt en dat die-hards als Fortran en Cobol op het lijstje staan. Boven het overzicht bevinden zich enkele knopjes, waarmee je de tabel anders weergeeft: Trending toont je de populariteit van de taal en Jobs sorteert het overzicht naar aanleiding van vacatures.

 

 Welke taal is nu slim te leren als je basiskennis programmeren wilt opbouwen? Met de al lang bestaande low-level taal als C of een high level taal als Python of Perl bouw je prima kennis op. In het bijzonder Python is populair en handig in de Raspberry Linux-wereld. Javascript is een aanrader en nieuwkomer en trending taal Swift kan ook wel eens een hit worden (met de support van Apple).

 

 Kinderen

 

Hoe bereid je kinderen voor op een gouden toekomst als programmeur? Om te beginnen moeten ze geïnteresseerd zijn in computers, techniek en ‘maken’. Kinderen die veel met Lego gebouwd hebben, of die later met Minecraft gamen en werelden bouwen, zijn al goede kandidaten. Kinderen die voor sinterklaas en verjaardagen geïnteresseerd zijn in techniek (elektrobouwdozen, experimenteerdozen, drones) zijn eveneens mogelijke toekomstige programmeurs. Je kunt natuurlijk met Lego Mindstorms aan de slag, erg leuk (maar duur) om te programmeren en robots aan te sturen. Meer basic hoor je vaak Scratch (https://scratch.mit.edu) of Alice (http://www.alice.org) als taal voor kinderen en er is zelfs een Ruby voor kinderen (http://kidsruby.com). Maar Python op de Raspberry Pi is eveneens goed te leren door de wat oudere kinderen op het voortgezet onderwijs.

 

 

Python!

 

De grootste gemene deler lijkt Python. Het is open source en heeft een lage instapdrempel en toch krachtige mogelijkheden. Het is populair bij Linux-gebruikers en draait net zo handig op Windows, het wordt op de RPi gebruikt door tieners en wordt door programmeurs gebruikt voor web-development op Linux en Windows-servers. Met Python-kennis kun je geen buil vallen. Aan de slag dus, te beginnen met het Python artikel van Douwe Kiela verderop in dit magazine!