[Squeak-ev] Das fängt ja gut an
Andreas Raab
andreas.raab at gmx.de
Don Dez 6 22:22:18 UTC 2007
Jürgen Beckmerhagen wrote:
> 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.
Damit stimme ich durchaus ueberein. Womit ich nicht uebereinstimme ist
die Behauptung das *nur* funktionale Sprachen eine entsprechende
Einfachheit und Flexibilitaet haben koennen und das *alle* funktionalen
Sprachen dies auch in Zukunft haben werden. Warte mal bis Microsoft
Visual H++ auf den Markt wirft ;-)
Interessant in diesem Zusammenhang ist auch Ian's Pseudo-Lisp, was
definitiv nicht funktional ist (wg. seiner dualen Daten- und
Programmstruktur) aber so ziemlich die simpelste imperative Sprache die
ich je gesehen habe (ich habe leider keine Referenz zur Hand aber schau
mal bei VPRI.org vorbe).
Ciao,
- Andreas
> 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
>