Toon posts:

Raakvlak tussen OOP en menselijke perceptie en cognitie

Pagina: 1
Acties:

Verwijderd

Topicstarter
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 ;)

  • Koeniepoenie
  • Registratie: Oktober 2003
  • Laatst online: 14-11-2025
Tsjah, wat wil je precies bereiken met deze topic? Hoe je het beste kan uitleggen (mbv visualiteit e.d.) wat OOP inhoudt?

Je zou het onderwerp wat dichterbij henzelf kunnen brengen. Iets in de trand van, je lichaam is een object, deze heeft verschillende functies (methoden) zoals buigen, lopen, rennen e.d.

Ook heeft je lichaam bepaalde objecten 'aan zich hangen' zoals armen, benen etc. Deze hebben ook weer methoden en eigenschappen.

Zo zou je het kunnen proberen uit te leggen (als dit je doel is natuurlijk)

Parse error: syntax error, unexpected GOT_USER in https://gathering.tweakers.net on line 1337


Verwijderd

Toen ik Java leerde zat ik hier echt niet aan te denken en op dit moment zou ik echt niet willen dat een of andere psychologiestudent dat door mijn strot zou drukken. Ik wilde eerst iets hebben wat "iets" deed (zie "Hello World" (hiermee test je meteen of de taal in kwestie tenminste een simpel programma kan uitvoeren)). Ik vind het OOP gebeuren zelf een redelijk gehypte manier van programmeren/denken, en is in mijn ogen verouderd.

Of zit ik nu je onderzoek omzeep te helpen? :+

[ Voor 4% gewijzigd door Verwijderd op 03-12-2004 22:14 ]


  • Koeniepoenie
  • Registratie: Oktober 2003
  • Laatst online: 14-11-2025
Verwijderd schreef op vrijdag 03 december 2004 @ 20:38:
Toen ik Java leerde zat ik hier echt niet aan te denken en op dit moment zou ik echt niet willen dat een of andere psychologiestudent dat door mijn strot zou drukken. Ik wilde eerst iets hebben wat "iets" deed (zie "Hello World" (hiermee test je meteen of de taal in kwestie tenminste een simpel programma kan uitvoeren)). Ik vind het OOP gebeuren zelf een redelijk gehypte manier van programmeren/denken, maar in is in mijn ogen verouderd.

Of zit ik nu je onderzoek omzeep te helpen? :+
Als OOP oud is, wat is dan nieuw/hot?

Ik vind OOP gewoon een heel duidelijke en makkelijke (als je het principe eenmaal doorhebt) manier van programmeren en "denken".

Parse error: syntax error, unexpected GOT_USER in https://gathering.tweakers.net on line 1337


  • PaulZ
  • Registratie: Augustus 2004
  • Laatst online: 21-05-2024
Verwijderd schreef op vrijdag 03 december 2004 @ 16:54:
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.
Ik snap jouw doel, maar als programmeur zijnde heb zo mijn bedenkingen hierbij. Ik ben van mening dat de denkwijze van niet-programmeurs juist zo ver mogelijk van het programmeurs-denken af moet staan.

Practische overweging: je laat volksstammen een bepaalde denkwijze aanleren (in dit geval OOP) omdat dit op dit moment actueel is. Hoelang blijft OOP nog? Misschien krijgen we over een aantal jaren ineens een AAP-hype en moet die hele club herschoold worden, terwijl dit eigenlijk alleen maar voor de (beginnende) programmeurs (een klein percentage van die hele volksstam) nodig is.

Ik ben tot nu toe blij dat mijn opdrachtgevers geen idee hebben hoe ik hun wensen in elkaar flans. Voor hun geldt alleen het resultaat en hoe het op de achtergrond allemaal is geregeld interesseert ze niet. En zo zou het volgens mij ook moeten blijven, juist omdat zij hun tijd hard nodig hebben om het grotere geheel in de gaten te houden.
Daarnaast denk ik ook dat een hoop creativiteit verloren zal gaan als iedereen rekening gaat houden wat programmatechnisch in hun ogen op dat moment opzicht mogelijk zou zijn. Stop de mensen niet in een keurslijf maar laat ze onbegrensd ideeën en wensen spuien en laat de programmeurs vervolgens hun werk doen. Hoe ze het doen en met welke tools: 'Who cares?'. Vergaat de creativiteit, dan stopt de vooruitgang; dan gaan we niet meer 'boldly where no man has gone before'.



Een stukje verder in jouw betoog beperk je je echter tot studenten die moeten gaan programmeren. Ik ben het met je eens dat die een stukje OOP-awareness (net verzonnen :*) ) zullen moeten kweken.
Dat heeft een cursusleider mij ook ooit proberen bij te brengen met metaforen over auto's en zo ('ja meneer, ik snap het nu écht!') . Maar ik denk dat het pas echt duidelijk wordt wanneer je practisch bezig bent en ziet welke (soms desastreuze) gevolgen jouw wijzigingen in het ene object hebben op andere. Ik ben altijd een groot voorstander geweest van practisch onderzoek omdat je dan direct kan zien wat er gebeurt ('Onderzoekt alles en behoud het goede' klinkt het ergens diep uit mijn geheugen).
Mocht een student hier niet uitkomen omdat hij/zij nog niet snapt hoe e.e.a. syntactisch in elkaar zit, dan had die toch een soort beginnerscursus aangeboden moeten krijgen voordat hij/zij verder kan?



Teruglezend bedenk ik me dat ik jouw opdracht aan het verzieken ben. 8)7 't Is niet mijn bedoeling geweest om jouw opdracht als 'niet nuttig' te bestempelen, maar om er gewoon wat kanttekeningen bij te plaatsen.

Su6!

Vlinders moet je volgen, niet vangen...


Verwijderd

Topicstarter
@Koenieman
inderdaad kun je je lichaam nemen, al vind ik die koppeling wel erg direct net zoals auto, al is dat een bekend en vaak erg inzichtelijk voor veel mensen.
de benadering die ik graag wil bereiken mag abstracter / algemener zijn > real life handelingen, ipv real life objecten.

het is inderdaad een eye-opener wanneer je echt doorkrijgt wat de kracht is van OOP, het wordt een manier van denken. Waar ik eerst dacht dat het DE manier van denken was, kom ik er de laatste tijd qua real life op terug :) veel is toch niet zo soepel te benaderen wanneer je het benaderd vanuit OOP standpunt, sommige zaken zijn er ook wel weer uitermate geschikt voor voor, het opstellen van een work breakdown schema voor een te managen project bijvoorbeeld!

@Gang-ster
jammer voor .NET ... zoveel geld investeren in een nieuw OOP platform dat bij voorbaat al verouderd is, een ook PHP5, geheel nieuwe stijl volgens objecten, bij voorbaat al verouderd ;)
Je helpt mn onderzoek niet omzeep, alle kritiek is welkom, al mag het van mij net wel iets meer onderbouwd worden

@paulz
in het land der blinden is 1-oog koning ? :p
tanx voor je uitgebreide comment, inderdaad...ook ik zit liever in mn eentje achter de pc terwijl ik mn eigen object georienteerde werkelijkheid creer. Daadwerkelijk is het efficienter om 2 programmeurs met een gestandardiseerde werkwijze achter 1 pc te laten werken (1 typt,1controleert). Ook n grotere IT projecten werkt het niet zo dat een opdrachtgever je je eigen ding laat doen met je code.

Zoveel niet geschoolde "programmeurs" die ik aan het wek zie (uitzonderingen daargelaten), zijn vaak wat aan het prutsen (trial and error methode), juist omdat ze niet gecontroleerd worden. In Nederland is het zo dat de meest mislukte projecten zich bevinden in de IT sector, natuurlijk is dit zonder meer de schuld van de programmeur, maar toch...

Ben het met je eens dat om echt goed te kunnen OOP'n veel ervaring nodig hebt, de realisatie komt pas veel later.
Ik zit meer te denken aan de echte basis, voordat je ook maar iets van code te zien krijgt... misschien krijgt de persoon zelfs wel nooit code te zien, maar heeft wel de haakjes in zn hoofd hangen wanneer hij/zij eens geconfronteerd wordt met polymorfisme en inheritance

Net gevonden:
Using Natural Language as a Metaphoric Base for Object-Oriented Modeling and Programming
http://alistair.cockburn....ageasametaphoricbase.html .. Zal het zo eens doorlezen.
Taal is inderdaad een directe metafoor, evenals dergelijke hierarchien welke in onze hoofd behandeld worden:
> dier
> > gevogelte
> > > kanarie
> > vissen
> > > zalm

met behulp van gestalt-psychologie kun je visueel (objecten visualiseren door cirkeltjes te tekenen, 1 object is 1 cirkeltje) al een hele hoop sugereren, bepaalde objecten groeperen om zodoende te tonen dat ze gerelateerd zijn, groter maken van een bepaald object welke algemener is dan de ander.

[ Voor 14% gewijzigd door Verwijderd op 03-12-2004 23:42 ]


Verwijderd

Verwijderd schreef op vrijdag 03 december 2004 @ 23:26:
@Gang-ster
jammer voor .NET ... zoveel geld investeren in een nieuw OOP platform dat bij voorbaat al verouderd is, een ook PHP5, geheel nieuwe stijl volgens objecten, bij voorbaat al verouderd ;)
Je helpt mn onderzoek niet omzeep, alle kritiek is welkom, al mag het van mij net wel iets meer onderbouwd worden
-.NET zal best wel beter(als in veiliger, schonere semantiek) zijn dan assembly en C.
-PHP5 zal best wel beter zijn dan PHP4.
-...

Ik bedoelde eigenlijk te zeggen dat veel van de mainstream imperatieve OOPL verouderd zijn. In de meeste talen is de manier waarop je berekeningen combineert vastgelegd door ;. Er zijn talen waar je dat idee(abstractie) zelf kunt definïeren.

Het probleem met Java is dat je, doordat alles een object moet zijn, echt heel snel door je conceptuele namespace heen bent. Je krijgt echt namen als MovieDisplayTableFactory(ik verzin maar wat), hoeveel designpatterns je ook toepast. Dit zie ik als een nadeel. Ik ben niet de enige die dit een slechte eigenschap vind.

Waarschijnlijk is het onmogelijk om jou te overtuigen van het feit dat OOP gewoon enorm gehypt is. Een goede onderbouwing zou waarschijnlijk >20 pagina's zijn. En er zijn genoeg mensen die daar wel iets over hebben geschreven.

Google weet daar nog wel meer over te vertellen.
http://www.google.nl/sear...pe&btnG=Google+zoeken&lr=

  • mrClass
  • Registratie: April 2002
  • Laatst online: 17-04-2025
Verwijderd schreef op vrijdag 03 december 2004 @ 23:55:
[...]

Ik bedoelde eigenlijk te zeggen dat veel van de mainstream imperatieve OOPL verouderd zijn. In de meeste talen is de manier waarop je berekeningen combineert vastgelegd door ;. Er zijn talen waar je dat idee(abstractie) zelf kunt definïeren.
En deze talen zijn nieuwer? Noem eens een naam van zo'n taal dan. Hier ben ik wel benieuwd naar.
Ik vind OOP namelijk een geweldig sluitende manier voor het beschrijven van object in de "echte wereld" :9
Ik zie OOP als een volwassen versie van 3GL talen. Maar als er meer volwassen talen zijn (dat 4GL), ben ik hier wel nieuwsgierig naar.

Maar daar ging het niet om..
@ts
Ik las dat je UML te technisch vond om OOP duidelijk te maken. Dat vind ik toch vreemd aangezien UML er juist voor bedoeld is om technisch concepten duidelijk te maken voor mensen die geen verstand van de onderliggende technologie hebben.
Er bestaan binnen de UML meer schema technieken dan de klasse diagram :P .
In mijn ogen zou een Use Case een prima manier zijn om dit soort dingen aan leken uit te leggen.

Verwijderd

Topicstarter
mrClass schreef op zaterdag 04 december 2004 @ 19:34:
[...]
@ts
Ik las dat je UML te technisch vond om OOP duidelijk te maken. Dat vind ik toch vreemd aangezien UML er juist voor bedoeld is om technisch concepten duidelijk te maken voor mensen die geen verstand van de onderliggende technologie hebben.
Er bestaan binnen de UML meer schema technieken dan de klasse diagram :P .
In mijn ogen zou een Use Case een prima manier zijn om dit soort dingen aan leken uit te leggen.
helemaal mee eens mrClass, UML is een goeie methode, ook de use case brengt prima onder woorden wat de object functionaliteit is.... gaandeweg wordt mij ook steeds meer duidelijk wat ik zoek, en dat is een metafoor die niet direct technisch op de programmeerkant ingaat, een metafoor die algemeen is (use case legt specifieke functionaliteit uit) en een metafoor die niet een TE directe link legt met de werkelijkheid. Hoewel een auto bijvoorbeeld misschien een mooi voorbeeld is om OOP te gaan beschrijven, toch is het voorbeeld niet algemeen of abstract genoeg, ook is dat geen directe link naar een menselijke cognitieve structuur.

Wat ik erg sterk vind aan onderstaande tekst is dat in plaats van een link maken met hoe een auto uit objecten beestaat en hoe het zelf een object is, wordt een directe link gelegd naar hoe wij taal 'maken' op object georienteerde wijze. Misschien is dat dan ook wel een mogelijkheid om uit te gaan werken in interactieve presentatie.... hoor graag hoe jullie over het metafoor taal denken.
Eerder schreef ik dat de link met de realiteit niet te direct mag zijn, maar in dit geval vind ik het een goeie metafoor aangezien de cognititieve-taal-structuur volgens het artikel geprepresenteerd kan worden als een OOP structuur is. Spreekt goed tot de verbeelding van mensen.

Using Natural Language as a Metaphoric Base for Object-Oriented Modeling and Programming
The purpose is to capture the simple cognitive structures that people use to build and manipulate their models of the world, and allow programmers to use those same cognitive structures to create and manipulate program models.
....
The object-oriented model takes advantage of our natural cognitive skills, anthropomorphizing the world into a model of communicating, even self-motivated objects. In doing so, it places us directly into the language metaphor , since we naturally use a simple noun-verb pairing to describe and manipulate that model
http://alistair.cockburn....ageasametaphoricbase.html

  • mrClass
  • Registratie: April 2002
  • Laatst online: 17-04-2025
Verwijderd schreef op zondag 05 december 2004 @ 13:26:
[...]
hoor graag hoe jullie over het metafoor taal denken.
Ik begrijp niet helemaal hoe je dit bedoeld. Je wilt taal gebruiken om OOP uit te leggen. Dit is toch logisch?!. Je gebruikt een taal voor de uitleg. Ik zie de OOP structuur niet helemaal in taal.

Je zou ook iets van een brainstorm sessie kunnen bedenken, om achter bepaalde woorden te komen, die de structuur en eigenschappen van je object omschrijven. Het voordeel van een brainstorm sessie is dat je het op alle abstractie niveaus kan toepassen. Voor zowel het woord: "auto" als het woord: "kunst". En dus de context van de uitleg heel breed is.

Je gebruikt hierin dus taal als een hulpmiddel.

  • Christiaan
  • Registratie: Maart 2001
  • Laatst online: 09-08-2021
Ik zeg van tevoren dat ik te weinig weet van OOP om er inhoudelijk veel over te kunnen zeggen. Wat ik wel kan zeggen is dat ik zowel informatica heb gestudeerd (en afgerond) als psychologie (waar ik nu mee bezig ben), dus ik heb wel wat van beide werelden mee gekregen. Ik kan me nog herinneren dat ik bij mijn informatica-opleiding moest leren werken met een methode waarin zinnen semantisch geanalyseerd worden, en waarbij object-typen en actie-typen werden afgeleid. Het 'enige' wat nodig was was managers interviewen, en uit de zinnen was dan af te leiden welke objecten noodzakelijk waren en hoe die interacteerden. De naam ben ik dan alleen weer vergeten, maar het was veel en veel te omslachtig. Bovendien kon je amper vertrouwen op de juistheid van alle uitspraken van de manager, of jouw vermogen om alles boven tafel te krijgen. Ik denk niet dat managers er gebaat bij zijn de denkwijze van programmeurs, mbt bijv OOP, te leren begrijpen. Het is beter dat een manager gewoon zegt wat nodig is, en dat dat dan vervolgens door informatie-architekten wordt omgezet in een zinnig design-document waarmee de programmeur aan de slag kan. De studie ik heb gedaan was gericht op informatie-architectuur (binnen informatica) en ik denk niet dat een manager mijn manier van denken op dit gebied a) zou moeten begrijpen of b) zou moeten hebben.

Wat betreft het gebruik van taal als metafoor; die term is hier niet o[ zijn plek. Het gaat niet om de taal als metafoor, maar om de woorden die we gebruiken, en de wijzen waarop ze in een zin gecombineerd worden, die interessant is. Als ik jou was zou ik eens kijken naar hoe cognitief psychologen omgaan met het vertalen van taal naar proposities die in een semantisch netwerk geplaatst kunnen worden. Chomsky heeft daar al heel wat over geschreven, maar je vindt er nog meer over bij de lexicale analyse (ook wel 'case grammar' genoemd) van Whitney, Bresnan, Jackendorff, enzovoorts.

  • Christiaan
  • Registratie: Maart 2001
  • Laatst online: 09-08-2021
mrClass schreef op zondag 05 december 2004 @ 17:53:
Je gebruikt hierin dus taal als een hulpmiddel.
Dat bedoelt hij niet. Hij bedoelt, denk ik, dit:

"De man fietst naar huis"

man is dan een object, fietst is een actie van man en huis is het object waarop de actie wordt uitgevoerd. Een man kan dus fietsen, en dat kan hij op een aantal manieren. Hij kan 'van' en 'naar', eventueel zelfs 'op', en dat in relatie tot een aantal objecten.

[ Voor 19% gewijzigd door Christiaan op 05-12-2004 19:14 ]


Verwijderd

Topicstarter
Christiaan schreef op zondag 05 december 2004 @ 19:13:
[...]


Dat bedoelt hij niet. Hij bedoelt, denk ik, dit:

"De man fietst naar huis"

man is dan een object, fietst is een actie van man en huis is het object waarop de actie wordt uitgevoerd. Een man kan dus fietsen, en dat kan hij op een aantal manieren. Hij kan 'van' en 'naar', eventueel zelfs 'op', en dat in relatie tot een aantal objecten.
De wijze waarop woorden gecombineerd worden in een zin.
Exact! das is wat ik bedoel. Ik zal eens kijken naar werk van de door jou aangehaalde cognitief psychologen. Bedankt voor je heldere input.

[ Voor 13% gewijzigd door Verwijderd op 06-12-2004 11:23 ]

Pagina: 1