Re: [Squeak-ev] Das fängt ja gut an

Jürgen Beckmerhagen juergen.beckmerhagen at mac.com
Don Dez 6 19:31:39 UTC 2007


Andreas - Guido's Antwort auf meinen Forum-Eintrag erreichte mich  
während ich mich wieder einmal - diesmal freiwillig - mit der  
Geschichte Europa's nach der Französischen Revolution beschäftigte.  
Revolutionen finden ja bekanntlich nur in den Köpfen statt.

Vielleicht sollte ich den Unterschied zwischen imperativen / objekt- 
orientierten Sprachen und funktionalen Sprachen wie Scheme, LISP o.  
ä. anhand von Lego-Bausteinen erklären. Passt doch zu Etoys und  
Scratch. Lego kennt jeder: Damals gab es Lego nur in der rechteckigen  
Form als 2er, 4er und 8er Steine. Und mit diesen sehr, sehr einfachen  
Steinen konnte man unglaublich kreativ werden. Als es dann von Lego  
auch abgeschrägte Dachziegel gab, sahen die Häuser zwar schöner aus,  
doch die Kombinierbarkeit dieser Steine mit anderen Steinen war sehr  
eingeschränkt. Und heute? Der Zeitgeist gebietet "vollständige  
Bausätze": UFOs, Ritterburgen, Flugzeuge, Tankstellen ... Kreativität  
gleich Null. Kombinierbarkeit kaum wahrnehmbar.

Ich hoffe, dass ich nicht zu sehr abschweife. Meine Erfahrung ist  
nur, dass die Programmiersprachen stetig komplexer werden - genauso  
wie die Lego-Bausätze. Das Konzept von LISP findet auf 1,5 Seiten  
Platz - Pascal, Modula, C++, Java benötigen hunderte von Seiten.  
Funktionale Sprachen sind wunderbar einfach (wenn man mal von den  
vielen Klammern absieht). Und gerade diese Einfachheit verleihen  
ihnen Mächtigkeit und Flexibilität. Ursprüngliches Lego eben.

Mein Anliegen ist, diese Einfachheit und Mächtigkeit zugleich dem  
"normalen" Anwender zugänglich zu machen. Wenn ich Kreativität  
fördern will, kann ich dem Anwender keine vollständigen Bausätze  
vorsetzen - und wenn, dann bitte nur Bausätze, die aus sehr wenigen  
Grundbausteinen bestehen.

End-user development (mir fällt kein deutsches Wort ein) und highly  
collaborative Systems - darum geht es mir. Dieses Anliegen motiviert  
mich, mich mit Sprachen wie Smalltalk und Systemen wie Squeak und  
Anwendungen wie Etoys und Scratch zu beschäftigen. Ich vermute (!),  
dass sich in diesem Kontext Konzepte der funktionalen und der objekt- 
orientierten Programmierung hervorragend ergänzen (sofern man denn  
die Objekte nur einfach genug hält).

Jürgen Beckmerhagen



Am 06.12.2007 um 18:54 schrieb Andreas Raab:

> Jürgen Beckmerhagen wrote:
>> Im Moment erscheint mir Guido's Gedankengang in Bezug auf funktionale
>> Programmiersprachen und die aufgezeigte Parallele zu Alan Kay's These
>> "Die Revolution hat noch nicht begonnen" durchaus nachvollziehbar.
>> Gerade die Assoziation "Revolution <-> Funktionale Programmierung"  
>> finde
>> ich aeusserst spannend.
>
> Das ist nicht die Assoziation die Alan damit im Sinn hat. Die  
> "Revolution" is die Simulation und der sich daraus ergebende  
> Erkenntnisgewinn, nicht irgendein Programmierparadigma. Wenn z.B.  
> jedermann in der Lage ist die (ziemlich willkuerlichen)  
> Behauptungen von Politikern zum Thema Global Warming trivial mal  
> eben zu ueberpruefen, *dann* beginnt die Computer-Revolution. Und  
> ob das mit Java, Haskell, Excel, oder Scratch passiert ist, mit  
> Verlaub, sch****egal ;-)
>
>> Funktionale Programmierung muendet in dynamischen und flexiblen  
>> Systemen
>> - also genau dem Gegenteil von Systemen mit Objekt-orientiertem  
>> Entwurf
>> und starker Typisierung. Letztlich ist Objekt-orientierte  
>> Programmierung
>> i. d. R. imperative Programmierung, nur dass sich die Prozeduren auf
>> eine genau definierte Datenstruktur beziehen. Dies erleichtert die
>> Arbeit des Programmierers ungemein, loest aber auch nicht das Problem
>> der aeusserst statischen Systeme.
>
> Ich bin verwirrt: Was genau heisst "aeusserst statisch"? Und wie  
> vermeiden funktionale Systeme das?
>
>> Hinzu kommt, dass dem Anwender i. d. R. der Einblick in die  
>> Objekte, die
>> er in seinem Computer benutzt, verwehrt bleibt. Der Anwender ist dumm
>> und wird dumm gehalten. Imperative Vorgehensweise halt.
>
> Und das ist anders bei funktionalen Systemen? Erlaeuter' das doch  
> mal naeher.
>
>> Was passiert, wenn "das Volk" lesen und schreiben lernt und Zugang zu
>> den Erkenntnissen der Geistes- und Naturwissenschaften erhaelt,  
>> erfahren
>> wir als Nach-1793er-Generation taeglich. Das Internet ist nur ein
>> Beweis.
>> Wir Software-Architekten muessen langsam zugeben, dass wir das  
>> sichere
>> und stabile System mit Objekt-orientierten Konzepten allein niemals
>> bauen koennen.
>> In sofern ist das "One Laptop Per Child"-Projekt aeusserst spannend:
>> Kinder werden auf Basis eines objekt-orientierten Systems in die
>> funktionale Denkweise eingefuehrt: sie stecken sehr kleine Teile zu
>> aeussert maechtigen System zusammen - genau das Prinzip der  
>> Funktionalen
>> Programmierung!
>
> Nein, das ist *modular* nicht funktional. Und gerade  
> objektorientierte Systeme sind erstklassig in der Lage ein  
> modulares Design umzusetzen.
>
> Ciao,
>   - Andreas