De reis van de meeste mensen naar het leren programmeren begint met een enkele nachtelijke Google-zoekopdracht.
Vaak is het iets als “Leer ______”
Maar hoe beslissen ze naar welke taal ze moeten zoeken?
“Ze maken op Silicon Valley altijd grapjes over Java. Ik denk dat ik dat maar moet leren.”
Of:
“Haskell. Zo hot op dit moment. Haskell.”
Of:
“Die Go gopher is gewoon zo gosh-darn schattig.”
En dan is er nog de rest van ons. Wij zullen waarschijnlijk zoeken naar iets als:
“Welke programmeertaal moet ik eerst leren?”
Weinig vragen worden zo vaak gesteld dat ze de volledige infographic-behandeling krijgen. Maar dit is er een van:
Het bepalen van je eerste programmeertaal kan een leuk proces zijn – een beetje zoals zo’n “Welk Quentin Tarantino-personage ben jij?”
Maar voordat je wegloopt om Ruby te leren omdat je als kind zo graag met Play-Doh speelde, wil ik je eraan herinneren dat de inzet hier behoorlijk hoog is.
Honderden uren oefening zijn nodig om ook maar enigszins vaardig te worden in uw eerste programmeertaal.
Dus moet je de volgende factoren in overweging nemen:
- de banenmarkt voor de taal
- de langetermijnvooruitzichten voor de taal
- hoe makkelijk de taal te leren is
- welke projecten je kunt bouwen terwijl je leert (en delen met vrienden zodat je gemotiveerd blijft)
Elk jaar brengt nieuwe programmeertalen, en daarmee ook nieuwe academische papers. En nieuwe webstrips.
Serieus. Kijk eens naar dit juweeltje van vorige maand:
Als het aankomt op het kiezen van een eerste programmeertaal, is er geen gebrek aan opties. Om het een beetje te beperken, zijn hier de meest voorkomende Google-zoekopdrachten met betrekking tot het leren programmeren, over de afgelopen 12 jaar:
Java heeft zijn ups en downs gehad.
Python is geleidelijk opgeklommen tot de populairste keuze.
Maar weggestopt daaronder is de Little Engine That Could, die de afgelopen jaren langzaam aan populariteit heeft gewonnen. En die motor is JavaScript.
Voordat ik over deze programmeertalen begin, wil ik het volgende verduidelijken:
- Ik beweer niet dat de ene taal objectief beter is dan de andere
- Ik ben het ermee eens dat ontwikkelaars uiteindelijk meer dan één taal moeten leren
- Ik beweer dat ze eerst één taal goed moeten leren. En – zoals je waarschijnlijk al kunt raden aan de ondersteboven gekeerde tekst in mijn kop – die taal zou JavaScript moeten zijn.
Laten we beginnen met te onderzoeken hoe programmeren momenteel op school wordt onderwezen.
Computer Science 101
Universiteiten hebben programmeren van oudsher onderwezen onder de paraplu van computerwetenschappen, dat zelf vaak wordt gezien als een uitbreiding van wiskunde, of als onderdeel van een graad in elektrotechniek.
Of course, as you may have heard by now:
“Computer science education cannot make anyone an expert programmer any more than studying brushes and pigment can make somebody an expert painter.” – Eric S. Raymond
In 2016 behandelen veel universiteiten programmeren nog steeds alsof het informatica is, en informatica alsof het wiskunde is.
Dientengevolge richten veel inleidende programmeercursussen zich op talen met een laag abstractieniveau, zoals C, of op mathematisch gerichte talen zoals MATLAB.
En de afdelingsvoorzitters houden over het algemeen voet bij stuk, door te wijzen op jaarlijkse ranglijsten van programmeertalen zoals de TIOBE Index, of deze van de IEEE:
De meeste van deze ranglijsten zien er vrijwel identiek uit aan hoe ze er 10 jaar geleden uitzagen.
Maar veranderingen gebeuren wel degelijk. Zelfs in de academische wereld.
In 2014 heeft Python Java ingehaald als populairste instructietaal bij de beste informaticaopleidingen in de VS.
En nog een verandering moet… uiteindelijk… gebeuren.
Als je kijkt naar de talen die daadwerkelijk door de beroepsbevolking worden gebruikt, zie je een heel ander beeld:
Meer dan de helft van alle ontwikkelaars gebruikt JavaScript. Het is essentieel voor front-end webontwikkeling en wordt steeds belangrijker voor back-end ontwikkeling. En het breidt zich snel uit naar gebieden als game-ontwikkeling en het internet der dingen.
Op vacatures wordt JavaScript ook vaker genoemd dan enige andere programmeertaal dan Java:
Het is geen toeval dat we het leerplan van onze open-sourcegemeenschap rond JavaScript hebben opgebouwd. In de afgelopen twee jaar hebben meer dan 5000 mensen het Free Code Camp gebruikt om hun eerste baan als ontwikkelaar te krijgen.
Ik ben geen voorstander van JavaScript omdat ik het geef. Ik geef les in JavaScript omdat het de zekerste weg is naar een eerste baan als ontwikkelaar.
Maar is JavaScript geschikt voor jou? Is het het waard om je eerste programmeertaal te zijn? Laten we eens kijken naar de factoren die ik eerder noemde.
Factor #1: De banenmarkt
Als je puur uit intellectuele nieuwsgierigheid wilt leren programmeren, kun je deze factor gerust overslaan. Maar als je – zoals de overgrote meerderheid van de mensen die leren programmeren – deze vaardigheid wilt gebruiken om een baan te vinden, is dit een belangrijke overweging.
Zoals ik al eerder zei, Java wordt in meer vacatures genoemd dan welke andere programmeertaal ook. JavaScript is een goede tweede.
Maar JavaScript: ook al bestaat het al 20 jaar, het is pas sinds kort een serieuze tool waar bedrijven als Netflix, Walmart en PayPal hele applicaties omheen bouwen.
Dientengevolge nemen veel bedrijven JavaScript-ontwikkelaars aan, maar er zijn er gewoon niet zoveel op de arbeidsmarkt.
Er zijn 2,7 Java-ontwikkelaars die concurreren voor elke openstaande Java-vacature. De concurrentie voor PHP- en iOS-vacatures is eveneens hevig.
Maar voor elke openstaande JavaScript-positie zijn er slechts 0,6 JavaScript-ontwikkelaars. Het is een echte verkopersmarkt voor ontwikkelaars met JavaScript-vaardigheden.
Factor #2: De vooruitzichten op lange termijn
Het gemiddelde JavaScript-project krijgt twee keer zoveel pull requests als het gemiddelde Java-, Python-, of Ruby-project. En bovendien groeit JavaScript sneller dan elke andere populaire taal.
Het ecosysteem van JavaScript profiteert ook van een zware investering van geld en engineeringtalent van bedrijven als Google, Microsoft, Facebook en Netflix.
Zo heeft TypeScript (een statisch getypeerde superset van JavaScript) meer dan 100 open source-contribuanten, waaronder veel werknemers van Microsoft en Google die worden betaald om eraan te werken.
Dit soort samenwerking tussen bedrijven is moeilijker te vinden bij Java. Oracle – dat in feite eigenaar is van Java door de overname van Sun Microsystems – klaagt vaak bedrijven aan die proberen het uit te breiden.
Factor #3: Moeilijk te leren
De meeste programmeurs zullen het ermee eens zijn dat high-level scripttalen relatief eenvoudig te leren zijn. JavaScript valt in deze categorie, samen met Python en Ruby.
Ondanks dat universiteiten nog steeds talen als Java en C++ onderwijzen als eerste taal, zijn deze aanzienlijk moeilijker te leren.
Factor #4: Projecten die je ermee kunt bouwen
Dit is waar JavaScript echt in uitblinkt. JavaScript draait op elk apparaat met een browser, direct in de browser. Je kunt in principe alles bouwen met JavaScript, en het overal delen.
Omdat JavaScript zo alomtegenwoordig is, bedacht Stack Overflow-oprichter Jeff Atwood zijn nu beroemde wet:
“Elke toepassing die in JavaScript kan worden geschreven, zal uiteindelijk in JavaScript worden geschreven.”
En met elke maand die voorbijgaat, houdt de wet van Atwood stand.
Java beloofde ooit ook overal te draaien. Misschien herinnert u zich Java Applets. Oracle heeft ze eerder dit jaar officieel de nek omgedraaid.
Python heeft met ongeveer dezelfde problemen te kampen:
“Hoe kan ik dit spel dat ik heb gemaakt aan mijn vriend geven? Nog beter, is er een manier waarop ik dit op mijn telefoon kan zetten zodat ik het aan kinderen op school kan laten zien zonder dat ze het hoeven te installeren? Eh.” – James Hague in Retiring Python as a Teaching Language
Daarentegen zijn hier enkele apps die leden van onze open source gemeenschap in hun browsers op CodePen hebben gebouwd. U kunt doorklikken en deze direct in uw browser gebruiken:
Leer één taal goed. Leer dan een tweede.
Als je van taal naar taal blijft springen, kom je niet ver.
Om verder te komen dan de basis, moet je je eerste taal goed leren. Dan zal je tweede taal veel, veel gemakkelijker zijn.
Van daaruit kun je verder gaan, en een meer veelzijdige ontwikkelaar worden door veel talen te leren:
- C is een geweldige manier om te leren hoe computers eigenlijk werken in termen van geheugenbeheer, en is nuttig in high-performance computing
- C++ is geweldig voor game-ontwikkeling.
- Python is geweldig voor wetenschap en statistiek.
- Java is belangrijk als je bij grote tech-bedrijven wilt werken.
Maar leer eerst JavaScript.
OK, nu ga ik het onmogelijke proberen – ik ga proberen te anticiperen op bezwaren uit de commentaarsectie.
bezwaar #1: Maar is JavaScript niet langzaam?
JavaScript is – voor de meeste praktische doeleinden – net zo snel als krachtige talen.
JavaScript (Node.js) is ordes van grootte sneller dan Python, Ruby, en PHP.
Het is ook bijna net zo snel als krachtige talen als C++, Java, en Go.
Hier zijn de resultaten van de meest uitgebreide recente cross-language benchmark:
Objectie #2: Maar JavaScript is niet statisch getypeerd
Net als Python en Ruby is JavaScript dynamisch getypeerd, wat handig is. Maar je kunt in de problemen komen. Hier wil ik dat exampleArray
een array is. Ik stel de waarden in, en controleer dan de lengte – dat wil zeggen het aantal elementen dat het bevat.
exampleArray = -> exampleArray.length-> 2
Maar dan wijs ik per ongeluk toe dat het een string is.
exampleArray = "text”-> "text”exampleArray.length-> 4
Dit soort fouten gebeuren de hele tijd in dynamisch getypeerde talen. De meeste ontwikkelaars zetten gewoon controles op om ze te voorkomen, en schrijven dienovereenkomstig tests.
Als je absoluut statische typing moet hebben in je eerste programmeertaal, dan raad ik je nog steeds aan om eerst JavaScript te leren. Dan kun je TypeScript snel oppikken.
“Typescript heeft een leercurve, maar als je JavaScript al kent, zal die soepel verlopen.” – Alex Ewerlöf over TypeScript
Objectie #3: Maar ik wil echt een mobiele app maken
Ik raad nog steeds aan om eerst JavaScript te leren.
- JavaScript kent verschillende tools voor het maken van native mobiele apps, zoals Angular Cordova en React Native.
- Om ervoor te zorgen dat je mobiele app ook echt iets interessants doet, heb je waarschijnlijk een goede back-end nodig, die je wilt bouwen met een goed webontwikkelingsframework, zoals Node.js + Express.js.
Ook is het de moeite waard om erop te wijzen dat de beste dagen van mobiele app-ontwikkeling wel eens achter zich zouden kunnen liggen.
Om te beginnen: hoe vaak mensen ook mobiele apps gebruiken, bijna de helft van alle banen bij ontwikkelaars bestaat uit webontwikkeling. Vergelijk dit met slechts 8% van de banen die betrekking hebben op mobiele app-ontwikkeling.
De grote visie van “daar is een app voor” is niet uitgekomen. In plaats daarvan zijn de meeste smartphonebezitters gestopt met het downloaden van nieuwe apps.
Zeker – ze gebruiken nog steeds apps. Meestal Facebook, Google Maps, en een handvol anderen. Als zodanig is veel van de vraag naar mobiele app-ontwikkelaars geconcentreerd in een paar grote werkgevers.
De vooruitzichten voor die mobiele ontwikkeling banen is moeilijk te voorspellen. Veel aspecten van het ontwikkelen, onderhouden en distribueren van mobiele apps zijn eenvoudiger met JavaScript. Dus bedrijven als Facebook en Google investeren zwaar in betere tools om deze te bouwen met behulp van JavaScript.
Vanaf 2016 is zo’n beetje alle ontwikkeling webontwikkeling. Alles raakt aan dat grote platform dat “het web” is. En de volgende golf apparaten waarmee je thuis praat, en auto’s die je kinderen van school halen – die zullen ook allemaal via het web met elkaar worden verbonden.
En dat betekent JavaScript.
Bedenking #4: Is JavaScript niet een speelgoedtaal die in 10 dagen is geschreven?
JavaScript heeft een eigenzinnige geschiedenis.
Je zult ongetwijfeld mensen grappen horen maken ten koste van JavaScript.
Mensen haten C++ ook graag. En net als JavaScript is C++ ondanks deze haat succesvol geweest, en nu is het ook bijna overal te vinden.
Dus als iemand het je ooit moeilijk maakt omdat je JavaScript hebt geleerd in plaats van de elite-taal-van-de-week, denk dan aan de beroemde woorden van de man die C++ heeft gemaakt:
“Er zijn maar twee soorten programmeertalen: de talen waar mensen altijd over zeuren en de talen die niemand gebruikt.” – Bjarne Stroustrup
Ik schrijf alleen over programmeren en technologie. Als je me volgt op Twitter zal ik je tijd niet verspillen. ?