[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