Oma2-Coding01: verschil tussen versies

Uit Aureus Beta
Naar navigatie springen Naar zoeken springen
(Nieuwe pagina aangemaakt met 'Programmeer talen! Met de nadruk op 'talen' in het meervoud want er zijn er een heleboel. In dit deel maken we een mooie start met de taal Python. Je hebt een kwart...')
(geen verschil)

Versie van 3 sep 2019 om 18:24

Programmeer talen! Met de nadruk op 'talen' in het meervoud want er zijn er een heleboel. In dit deel maken we een mooie start met de taal Python. Je hebt een kwartaal de tijd en dit is normaal gesproken best genoeg om een programmeertaal te leren kennen ...

... maar dat is in een ideale wereld. Helaas hebben jullie het allemaal ook erg druk met leuke dingen en vervelende verplichtingen wat ervoor zorgt dat je de tijd goed moet opdelen. Je krijgt hier dan ook niet alles uit de taal Python aangereikt, maar precies voldoende om wat dingen mee te doen waarvan ik denk dat je er iets mee kunt.


Python dus

Ja. Er zijn veel mogelijkheden maar wij kiezen op school voor Python. Je valt direct binnen bij de eerste les min of meer want deze hele pagina mag je zien als les nummer 1!

Er komen geen toetsvragen over uiteraard, maar het is toch slim om alles even goed door te lezen. Ben je halfverwege je aandacht kwijt, ga dan even een rondje lopen ofzo en ga dan na een minuut of 3 weer verder. Zo blijf je bij de les zogezegd!

Waarom Python en niet JS / PHP / C / Swift / Haskell / Perl etc. etc.?

Goeie vraag, blij dat je hem stelt. Het antwoord is vrij simpel: Met Python kun je (bijna) alles.

Wat kun je er niet of nauwelijks mee: Android en iOS applicaties maken. Tja, er zijn wel wat manieren om e.e.a. gedaan te krijgen maar echt mooi vind ik het niet. Ook is Python niet de meest geschikte taal om een snelle 3D game als Fortnite ofzo mee te bouwen.


Python wordt veel gebruikt voor data analyse, kunstmatige intelligentie, DevOps (zoek dat maar eens op) en Cyber Security. Aangezien jullie op een gymnasium zitten is de kans heel groot dat je dit dus gaat tegenkomen; Is het niet in je directe studierichting, dan is het wel in een secundair traject!

Waarom is het niet zo snel dan?

Daarvoor gaan we even terug naar de programmeertaal C die je gebruikt hebt bij de Arduino.

We nemen twee variabelen 'a' en 'b' en geven deze een waarde en tellen ze bij elkaar op.

int a = 3;

int b = 2;

int c = a + b;

In Python zou het dit zijn:

a = 3

b = 2

c = a + b

Nou dat verschilt helemaal niet zoveel van elkaar. Waarom is Python dan toch langzamer? Het zit hem in de manier waarop je zaken letterlijk intypt. In de programmeertaal C vertel je heel expliciet dat de variabelen a, b en c 'integers' (int) zijn. De compiler kan vervolgens heel netjes jouw programmacode in machinecode vertalen dat de computer heel precies kan uitvoeren.

Hierbij zorgt diezelfde compiler ervoor dat alle stukjes code netjes geoptimaliseerd worden.


Bij Python werkt het iets anders. Het enige dat je hoeft te doen is te zeggen dat er variabelen a, b en c zijn. Python zoekt dan zelf wel uit of het om een cijfer of een stuk tekst of zelfs een complete formule gaat.

Dat werkt makkelijk voor ons mensen, maar voor de computer is het vervolgens moeilijker om mee om te gaan. Dat arme ding moet er tenslotte rekening mee houden dat de slimme gebruiker misschien strakjes hele andere dingen met de variabele gaat doen of misschien wel helemaal geen integer bedoelde maar stiekem toch een float (weet je nog wat dat was?) of toch een tekst karakter.

Elke keer als je iets met de variabele gaat doen moet Python dus even checken of dat wel 'okay' is. C code wordt in 'machinecode' vertaald. Dit is de 'taal' van de processor zelf. Foutjes mag je niet maken hier en je moet precies opschrijven wat je wilt. Bij Python willen we flexibel blijven dus dat laatste gaat niet op. Python wordt dan ook niet in machinecode vertaald, maar in zogenaamde 'bytecode'. Dat is een tussenvorm zegmaar.


Die Bytecode is dus langzamer maar daar staat dus wel tegenover dat je heel flexibel bent in het gebruik van de taal zelf en dat het ontwikkelen van een programma doorgaans juist weer heel weinig tijd in beslag neemt.

Meer over Python kun je vinden op de wikipedia pagina ervan: https://nl.wikipedia.org/wiki/Python_(programmeertaal)#Interpreter

Waarom vinden mensen het dan toch cool?

Omdat het een vrij lage drempel heeft en omdat goed geschreven Python code heel goed leesbaar is (sterker nog: Hoe leesbaarder je code, hoe beter deze is!).


Ook zijn er heel veel modules in gemaakt. Dat zijn kleine pakketjes Python code die je kunt gebruiken. Er is bijna geen universiteit waar je het niet meer krijgt dus je hebt er de rest van je leven iets aan!

Kan ik er thuis mee werken?

Jazeker! Je kunt Python gratis downloaden van de website en dan op je computer installeren. Meer daarover kun je hier lezen: Python Installeren.

Hoe gaan we dat op school doen?

Tijdens het eerste deel van deze reeks werken we op een iets andere manier met Python dan doorgaans begonnen wordt. We werken met een zogenaamd Jupyter notebook (Engelstalig wikipedia artikel: https://en.wikipedia.org/wiki/Project_Jupyter)

Deze notebooks zijn eigenlijk ontwikkeld om interactief met data te werken. Een groot voordeel is dat de programmacode altijd in beeld is. Normaal maak je gebruik van een 'Interactieve Ontwikkel Omgeving' of 'IDE' zoals je die bijvoorbeeld bij het Arduino programmeren gewend was. Zodra je code uitvoert dan wordt je bij een fout getracteerd op een obscure foutcode onderin je scherm ... dat schiet niet altijd op.

Binnen het notebook zie je een mooie relatie tussen je code en de uitvoer ervan. Dit is om de programmeertaal te leren een fijne manier!

Oh ja joh?

Ja.

... dus? ...

Goed, zonder gekheid; Hoe zit dit stuk OMA in elkaar.

In eerste instantie pakken we wat algemene zaken op zodat je uberhaupt aan de slag kunt. De instructie bestaat uit Jupyter notebook bestanden die je in Google Colabs kunt bekijken (dat is de Jupyter server van Google zegmaar). De eerste opdrachten zul je vooral veel Python leren en niet direct iets '(af)maken'.

We maken halfverwege een uitstapje naar Python op de Apple. Dit is weliswaar een oudere versie, maar het gaat er vooral om dat je kennis maakt met de interpreter op de computer en eens in een andere omgeving werkt dan in Jupyter.

Tot slot maken we een old-school text-adventure spelletje en gebruiken we een web-scraper om wat zaken van internet te plukken. Als dit abracadabra voor je is dan zit je hier helemaal goed!


De eindopdracht bespreek je met je docent. Een programma schrijven dat veel kan is best moeilijk, dus we verwachten een programma dat iets kleins kan maar wel leuk is!