[Squeak-ev] Re: Zeitgemäße Programmiersprachen

Christian Mascher christian.mascher at gmx.de
Die Nov 15 16:30:44 UTC 2011


R. Baumann schrieb:
> Markus Schlager:
> 
>> Ich selber habe OO auch erst dank Etoys und Squeak wirklich verstanden. 
> 
> Ich leider noch nicht. Im Byob-Handbuch lesen wir:
> 
> "The idea of object oriented programming is often taught in a way that makes
> it seem as if a special object oriented programming language is necessary.
> In fact, any language with first class procedures allows objects to be
> implemented explicitly; this is a useful exercise to help demystify objects.
> The central idea of this implementation is that an object is represented as
> a dispatch procedure that takes a message as input and reports the
> corresponding method."
> 
Ich denke wie Enrico, das kommt aus der Ecke der funktionalen Sprachen, 
wenn die Objekte mit ihren eigenen Sprachmitteln implementieren ("das 
konnte Lisp doch schon immer...").

"Dispatch" heißt versenden auf englisch.

Zitat aus einem CLOS-Buch:-----------
Dispatching [ist ein] Begriff aus der realen Welt, der von der 
Computerwelt übernommen wurde. Das Dispatching beschreibt die Reaktion 
auf einen bestimmten Wert oder Eingabe. Man kann sich das sehr schön 
bildhaft in einer Postverteilstation vorstellen: Ein Postbeamter (der 
Verteiler), umgeben von Postsäcken. Entsprechend der Postleitzahl auf 
dem Päckchen oder Brief, wird es in den dafür bestimmten Sack geworfen. 
In CLOS sind die Postsäcke die Methoden, der Postbeamte ist der 
dispatcher, die Päckchen und Briefe sind die Instanzen, und die 
Postleitzahlen sind die Klassen, nach denen sie klassifiziert werden.
----------------------
(Paul Graham: ANSI Common Lisp)

In meinen eigenen Worten:

Die Lisp-Leute "simulieren" bzw. "implementieren" (je nach Sichtweise 
und Wertung) Objekte durch eine Funktion, die einen Aufruf wie

objekt tuWasMit: parameter

auch in Lisp möglich machen (an die richtige Stelle schicken), ohne eine 
neue Sprache zu erfinden.

Im Hintergrund müssen dafür Methoden als spezielle Funktionen definiert 
werden, die nur mit einem bestimmten Typ von Argument (Klasse) arbeiten, 
und die erst vom diapatcher aufgerufen werden. Das geht im Prinzip in 
allen Sprachen, wo eine Funktion als Parameter weitergereicht werden 
kann (first class fuction).

in Smalltalk-Syntax:

dispatcher versende: objekt anMethode: methode

Der dispatcher kann das Objekt inspizieren, erfährt dessen Klasse und 
findet dann die korrekte Methode.

Schöne Grüße

Christian Mascher