Zoals ik op de welkomstpagina en in mijn eerste blog heb aangegeven, ben ik weer begonnen met te leren programmeren. Tijdens de studie Game Development heb ik weliswaar talen als ActionScript 3.0 (R.I.P.), C# en C++ geleerd, maar die kennis is al geruime tijd verdwenen. Weliswaar ben ik nog enigszins bekend met de onderliggende principes en wat theorie, maar for all intents and purposes begin ik vanaf nul.
Aangezien mijn dagelijkse wakkere uren helaas eindig zijn, wilde ik een taal leren die een groot scala aan toepassingen beslaat, zodat ik voorlopig aan één taal genoeg heb, en die past binnen mijn interesses. Overigens is het eerste component van deze missie al mislukt; voor deze website heb ik mij ook in HTML-code is simpelweg de voor machines leesbare vorm waarin websites worden gemaakt. Je browser leest die code wanneer je een website bezoekt en geeft deze weer op een manier die voor mensen makkelijk te begrijpen is.(en CSS staat voor Cascading Style Sheets. Het is een taal waarmee developers de stijl en het uiterlijk van hun webpagina's kunnen bepalen. CSS wordt bijvoorbeeld gebruikt om de kleuren, lettertypen, lay-out en andere visuele aspecten van een webpagina te bepalen.) verdiept. Zo kwam ik al vrij snel uit op Python. Python heeft namelijk een eenvoudige syntax (heb ik mij laten vertellen), een groot aantal libraries (welke jurist houdt er niet van bibliotheken?), uitgebreide documentatie (welke jurist houdt er niet van documentatie?) en brede toepassingsmogelijkheden die mijn interesses raken zoals machine learning en artificial intelligence.
Na de keuze voor Python te hebben gemaakt, ben ik online cursussen gaan vergelijken. Hoewel ik doorgaans vrij autodidactisch ben, wilde ik bij het aanleren van deze nieuwe vaardigheid alle mogelijke hulp aanpakken. Dat neemt niet weg dat, zoals het een waar developer betaamt, ik al vele uren op Google heb doorgebracht om de meest voor de hand liggende errors op te zoeken. Uiteindelijk viel mijn oog op de cursus Complete Python Developer in 2023: Zero to Mastery (geen reclame). Met deze cursus – die mij vooralsnog goed bevalt – ben ik nu enkele weken bezig. Hieronder zet ik uiteen wat ik tot dusver heb behandeld. En voor de developers: aarzel niet mij te corrigeren als je onjuistheden leest.
Bytes en compilers
Tijdens de eerste lessen van de cursus leerde ik de basis van Python en programmeertalen in het algemeen. Dat was niet alleen handig om de gaten in mijn theoretische kennis op te vullen, maar ook omdat mijn resterende programmeerkennis op zijn best verouderd is. Zo kreeg ik al snel een uitleg over het verschil tussen interpreters en compilers. Ook werd daarbij aangegeven dat Python doorgaans als een interpreted-taal wordt beschouwd, maar ook facetten van compilatie bevat.
Bij het uitvoeren van een programma wordt Pythoncode namelijk eerst gecompileerd naar bytecode en vervolgens vertaald in machinecode. Byte code is een tussenstap tussen Pythoncode (de broncode die door mensen wordt geschreven) en machinecode. Dus, na compilatie tot bytecode, kan die bytecode vervolgens regel-voor-regel worden geïnterpreteerd door een Python Virtual Machine (PVM). Er volgt dus een vertaling van mensentaal, naar tussentaal, naar uiteindelijk machinetaal die door computers wordt begrepen. Zo lijkt het ineens een stuk minder vreemd om tegen je computer te praten.
Data typen, draden en trauma’s
Daarna kwamen de fundamentele data typen aan bod, zoals integers, floats, booleans en strings. In feite zijn data typen een manier om gegevens te classificeren op basis van kenmerken zoals decimalen, cijfers of tekst. Dit houdt in dat een data type simpelweg beschrijft wat voor soort gegeven iets is. Zo wordt een variabele met de waarde 21.1 automatisch als een float geclassificeerd, tenzij je het bijvoorbeeld als een string definieert. In dat laatste geval verander je de variabele van een cijfer met decimaal, naar een stuk tekst. Zo kunnen variabelen dus worden gewijzigd. Extreem basale kennis voor de doorsnee developer, maar het heeft mij wel laten zien hoe flexibel Python is.
Naast de data typen kreeg ik een ander belangrijk leerstuk voorgeschoteld, de order of precedence voor wiskundige functies. In Nederland staat dit bekend als de volgorde van bewerkingen en deze is van belang omdat de computer berekeningen in een specifieke volgorde uitvoert. Hierbij kreeg ik flashbacks naar de voor mij onbegrijpelijke wiskundelessen in muffe lokalen op de middelbare. Maar goed, het is heel normaal om nog steeds bedekt in angstzweet ’s nachts wakker te worden met datzelfde beeld in je hoofd, toch? Toch..? Gelukkig gaf de maker van de cursus direct in de video aan dat de vereiste mate van wiskundige vaardigheid niet veel complexer zou worden dan hetgeen hij in die video vertelde.
Een ander basisonderdeel waar ik over leerde is het breed scala aan functies die betrekking hebben op strings. Zo ben ik in de weer geweest met long strings, formatted strings, string indexes, string slicing, string immutability en string concatenation. Het was interessant om te leren dat strings in Python onveranderlijk (immutable) zijn, wat betekent dat elke bewerking op een string een nieuwe string creëert in plaats van de originele te wijzigen. Als ik het zo typ snap ik de theorie, maar de praktijk blijft nog vrij abstract. Ik verwacht gaandeweg vanzelf te ondervinden hoe die immutability in de praktijk werkt zodra ik zelf ga experimenteren met programma’s.
Vervolg
Dit was de eerste blog in een reeks waarin ik periodiek mijn ervaringen en vooruitgang met het leren van Python deel. Nu is het zaak om de cursus consequent te blijven volgen en zelf aan de slag te gaan met de lessen. De tegenslagen, (vele) beginnersfouten en overwinningen worden allemaal ter lering ende vermaak in deze reeks gedeeld.