<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<META NAME="Generator" CONTENT="MS Exchange Server version 6.0.4630.0">
<TITLE>Squeak-EToys mit meinen Kindern - Woche 3</TITLE>
</HEAD>
<BODY>
<!-- Converted from text/rtf format -->

<P><FONT SIZE=2 FACE="Courier New">[Erstes Mal gesendet am 2.10.2004]</FONT>
</P>

<P><FONT SIZE=2 FACE="Courier New">Hallo - </FONT>
</P>

<P><FONT SIZE=2 FACE="Courier New">Weiter geht's bei uns mit Squeak!</FONT>
</P>

<P><FONT SIZE=2 FACE="Courier New">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</FONT></P>

<P><FONT SIZE=2 FACE="Courier New">* zur Welt des Software-Engineering (inklusive der Probleme) </FONT>

<BR><FONT SIZE=2 FACE="Courier New">* zur Welt der &quot;angewandten Informatik&quot;: Zu verstehen, wie man Computer *für* andere Problembereiche einsetzt (als Techniker, Physiker, aber auch Designer, ...)</FONT></P>

<P><FONT SIZE=2 FACE="Courier New">* und sogar zur allgemeinen Technik: Wie sich eine elektronische Schaltung oder eine abgedeckte Mechanik (verborgen, aber messbar) &quot;dynamisch&quot; verhält, erforscht und durchdenkt man nicht anders als bei einem Programm.</FONT></P>

<P><FONT SIZE=2 FACE="Courier New">Ein etwas steinigerer Weg ist der zur Science: Der Grund ist, dass die &quot;intuitive Dynamik&quot; von Squeak-EToys (wie die &quot;nicht-intuitive Dynamik&quot; von Software überhaupt) mit der &quot;Fixpunkt-Statik&quot; der Mathematik und Physik enorm schwer zu verbinden ist (wer einmal die Zusammenführung von der ebenfalls &quot;intuitiven&quot; 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 &quot;Verhalten&quot; eines &quot;Systems&quot; - damit ist der Sprung hier schon sehr groß ....</FONT></P>
<BR>

<P><FONT SIZE=2 FACE="Courier New">Nun zu Aktuellem: Die erste Hausaufgabe war (kurz zusammengefasst - steht auf einem anderen Rechner):</FONT>
</P>

<P><FONT SIZE=2 FACE="Courier New">&quot;Zeichne wieder ein Auto ... und eine Straße ...</FONT>

<BR><FONT SIZE=2 FACE="Courier New">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 ...</FONT></P>

<P><FONT SIZE=2 FACE="Courier New">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.&quot;</FONT></P>

<P><FONT SIZE=2 FACE="Courier New">- Lukas hat die Aufgabe während der Woche gelöst.</FONT>

<BR><FONT SIZE=2 FACE="Courier New">- Katrin hat gemeinsam mit mir und unter zu viel Unterbrechungen durch Lukas gestern eine Lösung entwickelt - wobei die Unterbrechungen &quot;tödlich fürs Denken&quot; 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 ... </FONT></P>
<BR>

<P><FONT SIZE=2 FACE="Courier New">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:</FONT></P>

<P><FONT SIZE=2 FACE="Courier New">11. Ich muss ein wenig ausholen:</FONT>

<BR><FONT SIZE=2 FACE="Courier New">Lukas ist ein &quot;Techniker&quot;, ein &quot;Lego-Getriebe-Bauer&quot;, ein &quot;Wie funktioniert das?-Frager&quot; - kurz, er denkt so wie ich. Damit fällt er in die Kategorie der &quot;kids who were like us&quot; (siehe </FONT><A HREF="www.squeakalpha.org:8080/super/310"><U><FONT COLOR="#0000FF" SIZE=2 FACE="Courier New">www.squeakalpha.org:8080/super/310</FONT></U></A><FONT SIZE=2 FACE="Courier New">, im Abschnitt &quot;Our Own Work&quot;). Aber wie Alan Kay schreibt, ist das eigentlich der &quot;uninteressante&quot; Teil der Kinder in Bezug auf das Lernen von &quot;Science&quot;. Außerdem ist er ein versierter Computerspieler und kann daher z.B. den Mauszeiger ohne Probleme auf die kleinen Dreiecke und schmale &quot;Handles&quot; setzen.</FONT></P>

<P><FONT SIZE=2 FACE="Courier New">Katrin dagegen ist ein literarischer Mensch: Sie kann seit ihrem vierten Lebensjahr lesen, liest (man könnte fast sagen: &quot;verbraucht&quot;) pro Tag bis zu einigen 100 Seiten, schreibt lange Aufsätze und spricht (und denkt wohl auch) &quot;nach der Schrift&quot; (im Gegensatz zu uns Eltern, die eine österreichische Umgangssprache &quot;pflegen&quot;). Außerdem ist sie fast 2 Jahre jünger als Lukas und nicht &quot;computer-versiert&quot;; wenn schon, dann liebt sie die Tastatur, aber nicht so sehr die Maus.</FONT></P>

<P><FONT SIZE=2 FACE="Courier New">Erstaunlicher (für mich! - und wohl für andere &quot;Techniker&quot; - aber sicher nicht für sie ...) Effekt bei der Hausaufgabe:</FONT>
</P>

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

<P><FONT SIZE=2 FACE="Courier New">Ich selber wäre nie auf die Idee mit dem &quot;langwierigen Tippen&quot; gekommen - aber für jemand, für den Sprache ein &quot;Primärmedium&quot; ist (und nicht &quot;die Struktur dahinter&quot;), ist dies wohl ein viel &quot;direkterer&quot; Zugang&nbsp; als &quot;direct(!) manipulation&quot;.</FONT></P>

<P><FONT SIZE=2 FACE="Courier New">Quintessenzen für mich:</FONT>

<BR><FONT SIZE=2 FACE="Courier New">&nbsp;- erstaunlich und wichtig!, wie &quot;anders&quot; jemand denken kann ...</FONT>

<BR><FONT SIZE=2 FACE="Courier New">&nbsp;- ... und wie daher vorsichtig und offen und ja nicht &quot;vorgebend&quot; und &quot;voreingestellt&quot; sein darf, wenn man jemandem erklärt, wie man ein Ziel erreicht ...</FONT></P>

<P><FONT SIZE=2 FACE="Courier New">&nbsp;- ... und zuletzt, dass ich von EToys(2) erwarten würde, dass es diesen Zugang auch unterstützt :-) (siehe auch unten 13.)</FONT></P>
<BR>

<P><FONT SIZE=2 FACE="Courier New">12.</FONT>

<BR><FONT SIZE=2 FACE="Courier New">Lukas' erste Lösung hat sich aus der &quot;Fahrautomatik&quot; entwickelt: &quot;gehe vorwärts um&quot; in einen Test legen, der durch einen &quot;Sensor&quot; (sieht Farbe) gesteuert wird.</FONT></P>

<P><FONT SIZE=2 FACE="Courier New">Mit Katrin hat sich eine andere Lösung ergeben: Sie hat gesagt &quot;... dann soll das da [das Skript] stoppen&quot;. Darauf habe ich vorgeschlagen, unter den Skripts ein &quot;Stopp-Skript&quot; zu suchen - und tatsächlich, da gibt es unter &quot;scripting&quot; (noch nicht übersetzt) ein &quot;stoppe Script &lt;emptyScript&gt;&quot;. Ein Stück darunter gibt's dann sogar ein &quot;stop all&quot;! - hört sich doch gut an ...</FONT></P>

<P><FONT SIZE=2 FACE="Courier New">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 &quot;emptyScript&quot; den Namen des &quot;vorwärts&quot;-Skripts auszuwählen - dann hat's funktioniert!</FONT></P>

<P><FONT SIZE=2 FACE="Courier New">Aber: &quot;stoppe Skript &lt;Skriptname&gt;&quot; ist mir klar. Aber was ist dann &quot;stop all &lt;Skriptname&gt;&quot;? Und wieso gibt es kein &quot;stop all&quot; ohne Parameter (was noch immer nur alle Skripts *dieses* Objekts stoppen würde).</FONT></P>

<P><FONT SIZE=2 FACE="Courier New">[Eine Idee von Lukas habe ich erst jetzt gerade zusammengebracht - und damit wieder etwas über die &quot;Orthogonalität&quot; von EToys gelernt: Wenn das Auto über den Straßenrand fährt, sollte &quot;der Stop-Knopf gedrückt werden!&quot;. Ok - da alles Skripts hat, muss der Stopknopf sicher auch eines haben, wo man ihn &quot;drücken&quot; kann. Problem: Ich kann den Stopknopf nicht auswählen :-( :-( </FONT></P>

<P><FONT SIZE=2 FACE="Courier New">... 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 &quot;durchsteppen&quot; kann! - und jetzt ist es leicht: Nach ein wenig Suche finde ich &quot;Stop button&quot; &quot;feuer&quot;, hänge das an den Sensor der Autos - und schon stoppt alles: Ein richtiger &quot;Notstopp&quot;!]</FONT></P>

<P><FONT SIZE=2 FACE="Courier New">13. </FONT>

<BR><FONT SIZE=2 FACE="Courier New">Namensgebung: Katrin - verständlich, oder? - denkt sich für jedes Objekt, das sie gezeichnet hat, einen Namen aus - nicht einfach eine Bezeichnung; ein &quot;Name&quot; - fast ein &quot;Kosename&quot;: Also ein Wort, das sich vollständig mit dem Bezeichneten &quot;verbindet&quot;. So hießen ihre zwei ersten Autos &quot;Blauto&quot; und &quot;Rosauto&quot;. Bei der Hausaufgabe nannte sie das Lenkrad &quot;Lenkrad für Hausaufgabe&quot; - für sie schon &quot;nur ein schnell hingeschriebener Name - da muss ich noch nachdenken, wie ich es richtig nennen will&quot;</FONT></P>

<P><FONT SIZE=2 FACE="Courier New">[Nebenbei: &quot;Lenkrad für Hausaufgabe&quot; ... was die Implementierung für ihr Vorgehen mit dem direkt Eintippen &quot;Lenkrads Richtung&quot; - also einer Abkürzung des Objektnamen - noch etwas aufwendiger machen würde ...)].</FONT></P>

<P><FONT SIZE=2 FACE="Courier New">Lukas - &quot;Techniker&quot; (ok - ich schreibe hier meinen Kindern schon &quot;Stereotypen&quot; zu - soll man eigentlich nicht!) lässt die Namen &quot;Zeichnung&quot;, &quot;Zeichnung1&quot; usw. hemmungslos stehen; erst wenn er mit den Skripts durcheinanderkommt, wählt er sich kürzere Namen - und dann &quot;asd&quot;, &quot;a&quot; usw.: Eine alte Programmiererkrankheit, die auch bei Erwachsenen schwer wegzukriegen ist (die -zig Variablen mit Namen wie &quot;temp1&quot;, &quot;helper2&quot; usw. ....).</FONT></P>

<P><FONT SIZE=2 FACE="Courier New">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 &quot;asd&quot; eingeben ... ...</FONT></P>

<P><FONT SIZE=2 FACE="Courier New">14. Platz: Schon für eine Straße, 4 Skripts, einen Betrachter und die &quot;Ampel&quot; (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?):</FONT></P>

<P><FONT SIZE=2 FACE="Courier New">* Man kann Dingen sagen &quot;immer im Hintergrund bleiben&quot; (z.B. die Straße).</FONT>

<BR><FONT SIZE=2 FACE="Courier New">* Man kann eine Gruppe von Dingen &quot;minimieren&quot; - dann stehen sie um den Faktor 3..10 verkleinert in der Ecke (genauso wie die kleinen Grafiken an einem Betrachter).</FONT></P>

<P><FONT SIZE=2 FACE="Courier New">* Man kann mehrere &quot;Bildschirme&quot; 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 ... ... ...</FONT></P>

<P><FONT SIZE=2 FACE="Courier New">So - das war's.</FONT>
</P>

<P><FONT SIZE=2 FACE="Courier New">Regards</FONT>

<BR><FONT SIZE=2 FACE="Courier New">Harald</FONT>
</P>
<BR>

</BODY>
</HTML>