Artificiële Intelligentie gebruikersgroep (AIgg)
Java workshop "TaalExperiment"
"Hè? Workshop?"
In het kader van de "AI-cursus voor gevorderden" zouden Patrick Molenaar en Gerard Vriens oorspronkelijk in drie bijeenkomsten een introductie tot het programmeren in Java verzorgen. Deze introductie lijkt momenteel, na drie zittingen, echter het karakter van een heuse workshop te gaan krijgen. Dit komt o.a. door het volgende:
- Het heeft weinig zin om in drie "lessen" zoveel mogelijk taalregels, standaard objecten, voorbeeldprogrammaatjes, en kenmerken van Java over de mensen uit te storten in de hoop dat er wat van blijft hangen. Programmeren leer je alleen door het zelf te doen, met vallen en opstaan.
- Zelfs al kun je aardig procedureel programmeren, het object-georiënteerd denken is een heel andere tak van sport. Het komt de meeste mensen niet aanwaaien, maar vergt "supervised learning", d.w.z. training waarbij je op je fouten wordt gewezen.
- Op onze bijeenkomsten is regelmatig te horen: "Oké, ik snap in theorie hoe een neuraal netwerk / genetisch algoritme / fuzzy logic / enz. werkt. Maar hoe programmeer je nu zoiets?" Het leek nuttig om iedereen eens aan de hand mee te nemen door zo'n heel programmeerproject heen.
- Hopelijk ervaren de mensen, door tijdens de bijeenkomsten gezamenlijk aan een programma te werken, aan den lijve het nut en plezier van het meedoen aan projektgroepen.
Wat doen we dan precies in deze workshop, en hoe?
- Naar aanleiding van het Talking Heads-projekt aan de universiteit van Brussel ontstond de diskussie of taal kan ontstaan in afwezigheid van betekenis. In de workshop willen we stapsgewijs een programma ontwikkelen dat taalgebruikers laat communiceren zonder dat het "ergens over gaat", om te kijken of (en zo ja, hoe) er een gemeenschappelijke syntax kan ontstaan.
- De gevolgde methode is die van prototyping: we bepalen grofweg in welke richting we willen gaan, en zetten dan het kleinst mogelijke stapje in die richting. Daarbij willen we iets maken dat output levert, zodat het testbaar is. En zo blijven we doorgaan: voortdurend hele kleine stapjes zettend, die telkens een testbare verandering of uitbreiding opleveren.
- De deelnemers aan de workshop zullen beurtelings aan de computer plaats nemen om zo'n stapje te programmeren. Degenen die niet aan de computer zitten kunnen het proces via de (hopelijk aanwezige) beamer volgen en meedenken. Natuurlijk mag men ook een eigen computer meenemen om alle stappen aktief zelf te zetten.
- Patrick en Gerard hebben van tevoren "het terrein verkend", en zullen telkens aangeven wat de meest geschikte eerstvolgende stap is, en hoe deze het beste gezet kan worden. Hoewel je programmeren echt alleen maar met vallen en opstaan kunt leren, kan dat vallen ontmoedigend werken - vooral in het begin. Door op deze wijze grote struikelpartijen te vermijden, hopen we te laten zien hoe je in een aantal simpele stappen een tamelijk complex programma kunt opbouwen, en hoe overzichtelijk en elegant de uiteindelijke programmacode kan zijn, vooral in Java - mits je de taal beheerst...
- We werken met JDK1.3.1 van Sun (die ons welwillend van een aantal CD-ROMs heeft voorzien). Dit houdt in dat we geen "moderne" geïntegreerde ontwikkelomgeving hebben, maar lekker spartaans met MS-DOS en edit (of evt. Notepad) aan de slag gaan. Dit alles onder het motto: "It ain't what you got, it's the way that you use it!"...
- De voortgang van het project zal op deze website worden bijgehouden; zie hieronder. Daarbij kan eventueel wat "gesjoemeld" worden: het streven is niet zozeer om een "historisch juist" verslag te doen, maar om een verhaal te schrijven dat óók begrijpelijk is voor mensen die er niet bij waren. Zo kunnen bijvoorbeeld verbeteringen die tijdens de workshop in één stap zijn gezet, hier voor de duidelijkheid als twee kleinere stappen worden gepresenteerd; of de volgorde van stappen kan worden omgedraaid als dat tot een logischer opbouw leidt.
- De in de workshop gemaakte programmaversies zullen in eerste instantie zonder (veel) begeleidende tekst worden gepubliceerd. Het is echter uiteindelijk de bedoeling dat bij alle gemaakte stappen een zo duidelijk mogelijke toelichting wordt geschreven. Het commentaar bij de eerste stappen zal behoorlijk uitvoerig zijn; later, wanneer iedereen wat meer vertrouwd is met de basisprincipes van de taal, zal met wat bondiger begeleidende teksten worden volstaan.
Hoever zijn we nu?
- Eerste sessie, 28 september 2002:
Installatieprocedure.
"Hello, World!"
"Hello, Web!": de applet-versie van "Hello, World!".
Begonnen met versie 1: het afdrukken van een willekeurig getal.
- Tweede sessie, 26 oktober 2002:
Versie 1 afgemaakt.
Versie 2: het afdrukken van een willekeurige letter.
Versie 3: het gebruik van funkties.
- Derde sessie, 25 januari 2003:
Recapitulatie: waar waren we ook al weer gebleven?
Versie 4: we maken er een applet van.
- Vierde sessie, 22 februari 2003:
Versie 5: Schrijven op een labeltje.
Versie 6: Spreker gaat een eigen leven leiden.
- Vijfde sessie, 22 maart 2003:
Een verhaal over ontwerpbeslissingen en een discussie over de beste voortzetting.
U kunt natuurlijk ook de laatste versie in werking zien!
Wat gaat er komen?
We hebben onze Spreker nu zo ver dat hij (of is het een zij?) een stroom willekeurige karakters genereert. Over de precieze voortzetting moeten we ons nog beraden; iedereen die daar over mee wil denken wordt hopelijk in grote verwarring gebracht ;-) door de volgende, opzettelijk vage kreten:
- Taal is meer dan spreken alleen!
- Een beetje inspiratie.
- Wie praat met wie?
- Een goed verstaander...
- Wie houdt de stand bij?
GV 25-03-2003
Terug naar overzicht eigen maaksels