Voor een studie opdracht ben ik raakvlakken aan het onderzoeken tussen object georiënteerd programmeren (zoals dat gebeurd in tegenwoordige toegankelijke programmeertalen: java,c#,etc..) en de menselijke waarneming, cognitie en geheugen.
Het uiteindelijke doel is het ontwikkelen van een interactieve applicatie waarmee de niet-programmeur, de beginnende-programmeur, interactie-ontwerpers en/of bijvoorbeeld project-managers aan de slag kunnen en zodoende denkgereedschappen ontwikkelen waarmee ze de werkwijze van programmeurs kunnen bevatten. Het is dus zaak zoveel mogelijk de programmeerkant te benaderen met metaforen welke bekend zijn voor de mens.
Ik heb in de afgelopen jaren bij mij op de opleiding zoveel studenten zien worstelen met het doorkrijgen van object georiënteerd programmeren in Java. Alles komt dan ineens bij elkaar als je nog nooit hebt geprogrammeerd: polymorfisme,inheritance,classes,functions… terwijl de student zichzelf nog afvraagt waarom die accolade nou juist daar staat en waarom een waarde toewijzing in een statement van rechts naar links werkt i.p.v. andersom.
Het brengt de focus van een mooie taal zoals Java is af. Na 2 maanden college levert dit dan een hoop getekende stoplichten, bloemetjes en andere leuke probeerseltjes op, maar de essentie van object georiënteerd programmeren zit er lang niet in. Laat staan de denkwijze kunnen toepassen op andere programmeertalen die vrijwel identiek werken.
Ik ben van mening, dat voordat een student ook maar naar iets van Java code heeft gekeken hij of zei al de essentie van object georiënteerd programmeren in het hoofd kan hebben door visueel bezig te zijn geweest met objecten, hun relaties, specialisaties, eigenschappen en functionaliteiten. Kortom, de student beschikt over (en zo noem ik het maar even) object realisatie, een bewuste dan wel niet onbewust denkgereedschap welke een kapstok wordt voor wanneer de echte code om de hoek komt kijken.
UML doet dit al voor een groot deel, doch blijft het een wat technische benadering, en dat wil ik juist omzeilen. Zoals ik al zei moet ook de project manager die niet perse technisch is, inzicht kunnen krijgen in hetgeen dat zijn duur betaalde programmeurs ontwikkelen.
Voor zover heb ik 3 kernwoorden kunnen ontleden welke in mijn ogen ten grondslage liggen aan ieder object georiënteerd stuk software:
1 hiërarchie / keuze
van algemeen object overerven tot specificatie en de juiste keuzes maken m.b.t. objecten er nodig zijn en welke functionaliteiten er gerealiseerd kunnen worden door het overerven van parent objecten
2 hergebruiken
Overerven, polymorfisme, recursie
3 message paths
Objecten bestaan niet 1 op 1, ze zijn onderdeel van een grotere functionaliteit, de argumenten (doorgegeven aan de constructor en/of functies) en return data vormen de “message paths” welke de algehele functionaliteit en flexibiliteit ondersteunen.
Ik vraag niet hoe mijn applicatie er uiteindelijk uit moet gaan zien
maar wil graag weten hoe jullie denken over het op metaforische wijze bijbrengen van object georiënteerde programmeer principe aan niet-programmeurs. Hoe je dat zou kunnen doen, hoe dit eerder is gedaan. Of misschien denkt 1 van jullie wel aan een artikel of boek welke mij perfect inzicht zou kunnen verschaffen voor wat betreft mijn onderzoek (hieronder staan enkele inspiraties van mijn kant). Om maar iets te noemen, alle content m.b.t.: psychologie en informatica is welkom.
Alles is welkom, ik hoop een hoop los te maken bij jullie…
Inspiratie
Interface culture Steven Johnson
Understanding media McLuhan
As we may think Vannevar Bush
Datastructures and Algorithms in Java Goodrich & Tamassia
Speed and Information: Cyberspace Alarm! Paul Virillio
Manuel Castells, als filosoof in het algemeen
Het onzichtbare product, Items http://www.xs4all.nl/~maxb/items-vbo1.htm
Object oriented thinking http://www.obsolete.com/dug/sorcery/oot.htm
Object-oriented programmers are quite happy about the fact that these objects have shape or form only in their own imaginations.
Die laatste zin (te vinden via de laatst geplaatste link) is de essentie, alleen nu moet het duidelijk worden voor de niet-programmeur
Het uiteindelijke doel is het ontwikkelen van een interactieve applicatie waarmee de niet-programmeur, de beginnende-programmeur, interactie-ontwerpers en/of bijvoorbeeld project-managers aan de slag kunnen en zodoende denkgereedschappen ontwikkelen waarmee ze de werkwijze van programmeurs kunnen bevatten. Het is dus zaak zoveel mogelijk de programmeerkant te benaderen met metaforen welke bekend zijn voor de mens.
Ik heb in de afgelopen jaren bij mij op de opleiding zoveel studenten zien worstelen met het doorkrijgen van object georiënteerd programmeren in Java. Alles komt dan ineens bij elkaar als je nog nooit hebt geprogrammeerd: polymorfisme,inheritance,classes,functions… terwijl de student zichzelf nog afvraagt waarom die accolade nou juist daar staat en waarom een waarde toewijzing in een statement van rechts naar links werkt i.p.v. andersom.
Het brengt de focus van een mooie taal zoals Java is af. Na 2 maanden college levert dit dan een hoop getekende stoplichten, bloemetjes en andere leuke probeerseltjes op, maar de essentie van object georiënteerd programmeren zit er lang niet in. Laat staan de denkwijze kunnen toepassen op andere programmeertalen die vrijwel identiek werken.
Ik ben van mening, dat voordat een student ook maar naar iets van Java code heeft gekeken hij of zei al de essentie van object georiënteerd programmeren in het hoofd kan hebben door visueel bezig te zijn geweest met objecten, hun relaties, specialisaties, eigenschappen en functionaliteiten. Kortom, de student beschikt over (en zo noem ik het maar even) object realisatie, een bewuste dan wel niet onbewust denkgereedschap welke een kapstok wordt voor wanneer de echte code om de hoek komt kijken.
UML doet dit al voor een groot deel, doch blijft het een wat technische benadering, en dat wil ik juist omzeilen. Zoals ik al zei moet ook de project manager die niet perse technisch is, inzicht kunnen krijgen in hetgeen dat zijn duur betaalde programmeurs ontwikkelen.
Voor zover heb ik 3 kernwoorden kunnen ontleden welke in mijn ogen ten grondslage liggen aan ieder object georiënteerd stuk software:
1 hiërarchie / keuze
van algemeen object overerven tot specificatie en de juiste keuzes maken m.b.t. objecten er nodig zijn en welke functionaliteiten er gerealiseerd kunnen worden door het overerven van parent objecten
2 hergebruiken
Overerven, polymorfisme, recursie
3 message paths
Objecten bestaan niet 1 op 1, ze zijn onderdeel van een grotere functionaliteit, de argumenten (doorgegeven aan de constructor en/of functies) en return data vormen de “message paths” welke de algehele functionaliteit en flexibiliteit ondersteunen.
Ik vraag niet hoe mijn applicatie er uiteindelijk uit moet gaan zien
Alles is welkom, ik hoop een hoop los te maken bij jullie…
Inspiratie
Interface culture Steven Johnson
Understanding media McLuhan
As we may think Vannevar Bush
Datastructures and Algorithms in Java Goodrich & Tamassia
Speed and Information: Cyberspace Alarm! Paul Virillio
Manuel Castells, als filosoof in het algemeen
Het onzichtbare product, Items http://www.xs4all.nl/~maxb/items-vbo1.htm
Object oriented thinking http://www.obsolete.com/dug/sorcery/oot.htm
Object-oriented programmers are quite happy about the fact that these objects have shape or form only in their own imaginations.
Die laatste zin (te vinden via de laatst geplaatste link) is de essentie, alleen nu moet het duidelijk worden voor de niet-programmeur