[Squeak-ev] Re: Neues Squeak-Buch - Kachel->Smalltalk

Markus Schlager m.slg at gmx.de
Sam Mar 26 17:18:37 UTC 2011


Lieber Rüdeger Baumann,

Den Übergang zur Smalltalk-Programmierung mit dem Fehlen der 
Wiederholungskachel in Squeak zu motivieren, halte ich für wenig zwingend. 
Die naheliegende Reaktion aus meiner Sicht wäre die, dann eben Etoys zu 
benutzen, wie generell eher Konsens sein dürfte, daß man zum 
Kachelprogrammieren besser ein Etoys-Image benutzt.

Ich habe auch einmal mit Etoys (damals noch Squeak) begonnen, weil mir der 
Wechsel zur Textansicht bei den Skripten gefallen hat und ich an einen 
ähnlichen Weg dachte, wie der im Buch beschrieben wird. Aber das erste, 
was mich daran gestört hat, waren dann diese aussagekräfitgen 
Parameternamen der Form 't1', das zweite die eingeschränkten 
Editormöglichkeiten der Skriptfenster.

Die eigentliche Einschränkung, die ich beim Kachelprogrammieren empfinde, 
ist das Fehlen von Methoden mit mehreren Parametern. Das kann man zwar 
auch schaffen, wenn man einen Parameter vom Typ 'player', also Darsteller 
benutzt und dessen Attribute im Skript auswertet, aber das ist eher 
trickreich als naheliegend.

In meinen 10. Klassen taucht der Smalltalk-Quelltext aber meist aus ganz 
anderen Gründen auf: Schüler programmieren etwas, bei dem sie sich (und 
manchmal auch erst einmal ich mich) wundern, warum das nicht (immer) 
klappt. Mit den Kacheln sieht man das nämlich nicht immer.

Konkretes Szenario: Die Schüler programmieren bei mir ein 
Tausammler-Spiel, in dem ein Käfer Tautropfen einsammeln muß. Entscheidend 
ist hier, daß es mehrere Tautropfen gibt, die alle Geschwister sind.

Lösung 1: Die Tropfen warten auf den Käfer.

Lösung 2: Der Käfer sucht die Tropfen.

Anschließend läuft der Tropfen dem Käfer hinterher oder der Käfer 
transportiert ihn - das ist egal, wie herum.

Die Schüler programmieren das zuerst für einen Tropfen und erweitern es 
anschließend auf mehrere Tropfen. Was üblicherweise passiert, ist 
folgendes:

Die Schüler mit Lösung 1 haben keine Probleme. Zumindest ein Teil der 
Schüler mit Lösung 2 beklagt sich irgendwann, dass der Käfer immer 
denselben Tropfen mitnimmt, egal welchen er gerade überlappt.

Die Kachelskripte sehen praktisch gleich aus:

"Käfer überlappt Tropfen" oder umgekehrt. Wer bei den Kacheln wen 
überlappt ist egal. Einziger Unterschied: Bei Lösung 1 ist das ein Skript 
des Tropfens, bei Lösung 2 ein Skript des Käfers.

Verschieden werden die beiden Skripte aber, sobald man in die Textversion 
blickt: Da steht als einmal "self überlappt Käfer" und einmal "self 
überlappt TropfenSoundSo". Und daran läßt sich auch erklären, warum Lösung 
2 ein Problem hat und wie man das mit "überlappt irgendein" noch lösen 
kann. Zugleich sehen die Schüler hier eine Stelle, an der die Kacheln 
einen echten Schwachpunkt haben, weil sie etwas verbergen - es gibt kein 
'self'.

Anschließend wechsle ich aber direkt zum Programmieren mit Workspace und 
Browser, weil die Syntaxvervollständigung einfach angenehm ist, und ich 
ohnehin dorthin will/muß.

Markus