[Squeak-ev] Squeak-EToys mit meinen Kindern - Woche 3

Harald M. Müller harald_m_mueller at gmx.de
Fre Okt 22 07:49:26 UTC 2004


[Erstes Mal gesendet am 2.10.2004]

Hallo - 

Weiter geht's bei uns mit Squeak!

Einmal eine Generalbemerkung: Je länger ich Squeak-Etoys kenne, desto
großartiger finde ich es - auch wenn ich viele Sachen bemängle: Das Ding
ist einfach wirklich gut. Ich sehe von meinem geistigen Auge fast
problemlose Wege von Squeak
* zur Welt des Software-Engineering (inklusive der Probleme) 
* zur Welt der "angewandten Informatik": Zu verstehen, wie man Computer
*für* andere Problembereiche einsetzt (als Techniker, Physiker, aber
auch Designer, ...)
* und sogar zur allgemeinen Technik: Wie sich eine elektronische
Schaltung oder eine abgedeckte Mechanik (verborgen, aber messbar)
"dynamisch" verhält, erforscht und durchdenkt man nicht anders als bei
einem Programm.

Ein etwas steinigerer Weg ist der zur Science: Der Grund ist, dass die
"intuitive Dynamik" von Squeak-EToys (wie die "nicht-intuitive Dynamik"
von Software überhaupt) mit der "Fixpunkt-Statik" der Mathematik und
Physik enorm schwer zu verbinden ist (wer einmal die Zusammenführung von
der ebenfalls "intuitiven" Turingmaschinen und präziser, formaler
Mathematik - etwa im Haltetheorem - gemeistert hat, weiß, wovon ich
rede). Aber das scheint ein Grundsatzproblem zu sein - und es ist
fraglich, ob wir mit dynamischen Systemen hier *überhaupt* so leicht
Verständnis schaffen: Bei der klassischen Mathematik gibt es eigentlich
kein "Verhalten" eines "Systems" - damit ist der Sprung hier schon sehr
groß ....


Nun zu Aktuellem: Die erste Hausaufgabe war (kurz zusammengefasst -
steht auf einem anderen Rechner):

"Zeichne wieder ein Auto ... und eine Straße ...
Und auch ein Lenkrad, mit dem Du das Auto lenken kannst. Wenn sich das
Lenkrad um 10 Grad dreht, soll sich das Auto um 1 Grad drehen - dann
kannst Du leichter lenken. Wenn Du willst, kannst Du nun ein paarmal die
Straße entlangfahren ...
Mache nun einen Notstopp: Wenn das Auto von der Straße herunterfährt,
soll es sofort stoppen. Es gibt sicher mehrere Wege, wie man das
erreichen kann; wenn eine Möglichkeit nicht funktioniert, diskutiert
miteinander - vielleicht fallen Euch weitere Möglichkeiten ein."

- Lukas hat die Aufgabe während der Woche gelöst.
- Katrin hat gemeinsam mit mir und unter zu viel Unterbrechungen durch
Lukas gestern eine Lösung entwickelt - wobei die Unterbrechungen
"tödlich fürs Denken" sind: Da muss ich mir noch etwas einfallen lassen,
wie die kleine Schwester sicher die Chance hat, unabhängig und in ihrem
Tempo und auf ihre Art über eine Lösung nachzudenken ... 


Ein paar Dinge, die mir aufgefallen sind - weil sie alle (auch) mit
fehlenden (? - oder von uns nicht gefundenen) Features von EToys zu tun
haben, wieder einmal weiternummeriert:

11. Ich muss ein wenig ausholen:
Lukas ist ein "Techniker", ein "Lego-Getriebe-Bauer", ein "Wie
funktioniert das?-Frager" - kurz, er denkt so wie ich. Damit fällt er in
die Kategorie der "kids who were like us" (siehe
www.squeakalpha.org:8080/super/310, im Abschnitt "Our Own Work"). Aber
wie Alan Kay schreibt, ist das eigentlich der "uninteressante" Teil der
Kinder in Bezug auf das Lernen von "Science". Außerdem ist er ein
versierter Computerspieler und kann daher z.B. den Mauszeiger ohne
Probleme auf die kleinen Dreiecke und schmale "Handles" setzen.
Katrin dagegen ist ein literarischer Mensch: Sie kann seit ihrem vierten
Lebensjahr lesen, liest (man könnte fast sagen: "verbraucht") pro Tag
bis zu einigen 100 Seiten, schreibt lange Aufsätze und spricht (und
denkt wohl auch) "nach der Schrift" (im Gegensatz zu uns Eltern, die
eine österreichische Umgangssprache "pflegen"). Außerdem ist sie fast 2
Jahre jünger als Lukas und nicht "computer-versiert"; wenn schon, dann
liebt sie die Tastatur, aber nicht so sehr die Maus.

Erstaunlicher (für mich! - und wohl für andere "Techniker" - aber sicher
nicht für sie ...) Effekt bei der Hausaufgabe:

An der Stelle, wo man die Richtung des Lenkrad an den Drehwinkel des
Autos ("... drehe Dich um ...") koppeln muss, schreibt(!!) sie ohne
einen Fehler in das Feld nach "um" den Text(!) "Lenkrads Richtung". Von
einer idealen Umgebung würde ich mir tatsächlich erwarten, dass das
genau dasselbe bewirkt wie die "drag and drop"-Methode - aber EToys
reagiert darauf leider mit einer schrecklichen Fehlermeldung ...

Ich selber wäre nie auf die Idee mit dem "langwierigen Tippen" gekommen
- aber für jemand, für den Sprache ein "Primärmedium" ist (und nicht
"die Struktur dahinter"), ist dies wohl ein viel "direkterer" Zugang
als "direct(!) manipulation".

Quintessenzen für mich:
 - erstaunlich und wichtig!, wie "anders" jemand denken kann ...
 - ... und wie daher vorsichtig und offen und ja nicht "vorgebend" und
"voreingestellt" sein darf, wenn man jemandem erklärt, wie man ein Ziel
erreicht ...
 - ... und zuletzt, dass ich von EToys(2) erwarten würde, dass es diesen
Zugang auch unterstützt :-) (siehe auch unten 13.)


12.
Lukas' erste Lösung hat sich aus der "Fahrautomatik" entwickelt: "gehe
vorwärts um" in einen Test legen, der durch einen "Sensor" (sieht Farbe)
gesteuert wird.

Mit Katrin hat sich eine andere Lösung ergeben: Sie hat gesagt "... dann
soll das da [das Skript] stoppen". Darauf habe ich vorgeschlagen, unter
den Skripts ein "Stopp-Skript" zu suchen - und tatsächlich, da gibt es
unter "scripting" (noch nicht übersetzt) ein "stoppe Script
<emptyScript>". Ein Stück darunter gibt's dann sogar ein "stop all"! -
hört sich doch gut an ...
Also: Dieses Skript rausziehen, Test dazu (hat länger gedauert ...
übergehe ich hier), und ausprobieren: Geht nicht ?!?!?! Ich habe dann
vorgeschlagen (obwohl ich nicht steuern will ...), doch hinten bei
"emptyScript" den Namen des "vorwärts"-Skripts auszuwählen - dann hat's
funktioniert!

Aber: "stoppe Skript <Skriptname>" ist mir klar. Aber was ist dann "stop
all <Skriptname>"? Und wieso gibt es kein "stop all" ohne Parameter (was
noch immer nur alle Skripts *dieses* Objekts stoppen würde).

[Eine Idee von Lukas habe ich erst jetzt gerade zusammengebracht - und
damit wieder etwas über die "Orthogonalität" von EToys gelernt: Wenn das
Auto über den Straßenrand fährt, sollte "der Stop-Knopf gedrückt
werden!". Ok - da alles Skripts hat, muss der Stopknopf sicher auch
eines haben, wo man ihn "drücken" kann. Problem: Ich kann den Stopknopf
nicht auswählen :-( :-( 
... durch Zufall drücke ich mehrmals auf Alt-Maus - und sehe plötzlich,
wie das Viereck der Handles seine Größe ändert: Nach 4 oder 5 Versuchen
bin ich sicher, dass man damit die Handles der geschachtelten Objekte
"durchsteppen" kann! - und jetzt ist es leicht: Nach ein wenig Suche
finde ich "Stop button" "feuer", hänge das an den Sensor der Autos - und
schon stoppt alles: Ein richtiger "Notstopp"!]

13. 
Namensgebung: Katrin - verständlich, oder? - denkt sich für jedes
Objekt, das sie gezeichnet hat, einen Namen aus - nicht einfach eine
Bezeichnung; ein "Name" - fast ein "Kosename": Also ein Wort, das sich
vollständig mit dem Bezeichneten "verbindet". So hießen ihre zwei ersten
Autos "Blauto" und "Rosauto". Bei der Hausaufgabe nannte sie das Lenkrad
"Lenkrad für Hausaufgabe" - für sie schon "nur ein schnell
hingeschriebener Name - da muss ich noch nachdenken, wie ich es richtig
nennen will"
[Nebenbei: "Lenkrad für Hausaufgabe" ... was die Implementierung für ihr
Vorgehen mit dem direkt Eintippen "Lenkrads Richtung" - also einer
Abkürzung des Objektnamen - noch etwas aufwendiger machen würde ...)].
Lukas - "Techniker" (ok - ich schreibe hier meinen Kindern schon
"Stereotypen" zu - soll man eigentlich nicht!) lässt die Namen
"Zeichnung", "Zeichnung1" usw. hemmungslos stehen; erst wenn er mit den
Skripts durcheinanderkommt, wählt er sich kürzere Namen - und dann
"asd", "a" usw.: Eine alte Programmiererkrankheit, die auch bei
Erwachsenen schwer wegzukriegen ist (die -zig Variablen mit Namen wie
"temp1", "helper2" usw. ....).

Vorschlag für Etoys(2): Wenn man bei einem neuen Objekt auf Keep drückt,
wird man nach einem Namen direkt gefragt - *ohne* Vorgabe! Natürlich
kann man noch immer "asd" eingeben ... ...

14. Platz: Schon für eine Straße, 4 Skripts, einen Betrachter und die
"Ampel" (stop/step/go) haben wir zuwenig Platz! Mit Herumschieben geht
es ganz gut - aber da ist der Nachteil, dass das angeklickte Ding immer
in den Vordergrund springt - die Straße verdeckt dann die Autos und
Skripts. (nicht durchdachte) Ideen (- vielleicht gibt es das ja schon
irgendwie/wo?):
* Man kann Dingen sagen "immer im Hintergrund bleiben" (z.B. die
Straße).
* Man kann eine Gruppe von Dingen "minimieren" - dann stehen sie um den
Faktor 3..10 verkleinert in der Ecke (genauso wie die kleinen Grafiken
an einem Betrachter).
* Man kann mehrere "Bildschirme" haben und hin- und herspringen (unter
X-Systemen gibt's das schon lange) - dann kann man sich die Skripts
woanders hinlegen. Nachteil: Man sieht nicht mehr alles ... ... ...

So - das war's.

Regards
Harald


-------------- nächster Teil --------------
Ein Dateianhang mit HTML-Daten wurde abgetrennt...
URL: http://lists.squeakfoundation.org/pipermail/squeak-ev/attachments/20041022/02381947/attachment.htm