shutterstock_133819700

Tot nu suggereerde ik in deze blog dat je programmeren leren het beste kunt doen in Java. Dat blijft een goede keus, maar er wringt iets. Java is soms te moeilijk, er zijn te veel merkwaardige details die afleiden van de essentie en van de structuur. Het gebruik van een pseudo-taal, wat ik deed in “GUI’s, iets concreter”, is beter om tot de kern door te dringen en de principes uit te leggen. Maar ook dat is niet perfect: het is droogzwemmen. Je kunt wat je programmeert niet testen, je kunt niets uitproberen, je kunt de resultaten niet zichtbaar maken en toetsen aan je bedoelingen. Bijna zou ik zelf de ideale, simpele doch krachtige, onderwijstaal zijn gaan uitvinden. Als ik dat al zou kunnen. Maar dat is natuurlijk helemaal niet nodig. Anderen hebben hier allang over nagedacht. Zo is er een taal die Quorum heet, die dezelfde ideeën verkondigt als Java (en gebruik maakt van dezelfde infrastructuur), maar die de verwarrende syntactische details van Java weet te omzeilen.

Om de verschillen en overeenkomsten te laten zien staat hieronder een stukje pseudo-code, met daarna de vertaling in Java en in Quorum. Het is een class (een object-type) met data en functies. Het beschrijft de objecten die je ervan kunt maken. Al die objecten “hebben” iets (zoals gedefinieerd door de data) en “kunnen” iets (zoals gedefinieerd door de functies). Dat is altijd zo bij objecten, maar ik wil je laten zien hoe je dat uitdrukt in een programmeertaal.

Eerste de pseudo-code; ik gebruik het voorbeeld uit de hierboven aangehaalde GUI. Hier is het type Knop nog een keer:

Knop

Vervolgens de Java-versie:

Knop.java

Vergelijk de Java-code met de pseudo-code en leer zo een beetje Java. ’t Is redelijk één-op-één, als ik een paar details onbenoemd laat.

En tot slot de Quorum-versie:

Knop.quorum

In Quorum heet een object-type een class (net als in de meeste object-oriented programmeertalen). Bij de data definieer je het type van de data (in dit geval een Luisteraar). En een functie heet een action. De essentie, nogmaals, is dat je per object-type definieert wat objecten van dat type voor gegevens onthouden (het “hebben”) en welke taken ze uitvoeren (het “kunnen”). Onze Knop “heeft” een Luisteraar, en “kan” een luisteraar registreren, evenals reageren op een aanraking van de knop.

Hm, nog niet alles is simpeler dan Java. Nog een vergelijking dan: de code waarmee je alle objecten maakt en laat werken. Eerst weer Java:

GUI.java

En dan Quorum:

GUI.quorum

Kijk, het wordt al wat simpeler, doordat veel van de details die Java nodig heeft in Quorum overbodig zijn. Maar ik ben nog op zoek naar een taal waarin zelfs dit simpele voorbeeld echt simpel is. Ik denk aan… nee, daarover volgende keer. Het begint met een… nee, ik zeg het niet.

Als je met Quorum wilt spelen kan dat op de Quorum-site. Je kunt daar stukjes code intypen of plakken, en laten vertalen en uitvoeren. Speel ermee en laat me weten wat je ervan vindt. Misschien is dit de taal die we kunnen gebruiken om uit te leggen wat programmeren is?

Advertenties