Sprache Smalltalk / Vorurteile
 
StartSeite | SpracheSmalltalk/ | Neues | TestSeite | ForumSeite | Teilnehmer | Kategorien | Index | Hilfe | Einstellungen | Ändern

Smalltalk ist zu langsam

In letzter Zeit werden vermehrt Sprachen populär, die entweder von einem Interpreter oder durch eine VirtuelleMaschine ausgeführt werden. Mit diesen Sprachen können moderne Smalltalk-Systeme i. A. locker mithalten, denn die VM-Entwicklung ist bei Smalltalk nicht in den 80er Jahren stehengeblieben. Die schnellste Smalltalk-VM ist wahrscheinlich die von VisualWorks. Von Smalltalk nach C übersetzter Code ist in der Ausführung nicht schneller als ein durch moderne Just-In-Time-Compiler interpretiertes Smalltalk, was z. B. die Ausführungsgeschwindigkeiten von Smalltalk/X zeigen. Dass Smalltalk zu seiner Entstehungszeit langsam war, ist eine auch von Smalltalkern akzeptierte Tatsache.

Einige Smalltalk-Systeme haben eine konkrete Zielplattform, andere sind sehr portabel. Hohe Portabilität ist in der Vergangenheit oft durch Verzicht auf native Widgets (GUI-Elemente) erreicht worden. Das macht sich bei den Laufzeiten bemerkbar und dies wird z. T. bei der Weiterentwicklung bestehender Smalltalk-Systeme berücksichtigt. Ähnliche Erfahrungen wurden bei Java gemacht aber Smalltalker werden sich vehement dagegen wehren, wenn hier Vergleiche gezogen werden. Die Implementation von Swing genießt unter Smalltalkern keinen guten Ruf.

Ob Smalltalk im konkreten Fall tatsächlich zu langsam ist, muss je nach Art und Größe der Anwendung, Betriebssystem und Rechnerausstattung individuell entschieden werden. Da im Zweifel auch eine Auslagerung von Routinen in C-Bibliotheken möglich ist, lassen sich solche Vorurteile in den allermeisten Fällen ad absurdum führen. Hat meine Anwendung z. B. einen hohen GUI-Anteil aber auch einen gut isolierbaren numerischen Kern, kommt Smalltalk als Implementationssprache für den Großteil der Anwendung immer noch in Frage. Über Prototyping und Profiling ist die Information über Laufzeitengpässe schnell verfügbar und es müssen nicht etwa Teile der Anwendung komplett neu geschrieben werden.

"Da im Zweifel auch eine Auslagerung ...": Moment mal, wie ist das. Man habe das Vorurteil, Smalltalk sei zu langsam. Und nun stelle sich im konkreten Fall heraus, dass Smalltalk tatsächlich zu langsam ist. In erster Näherung würde man nun sein Vorurteil für bestätigt halten. Aber Pustekuchen, man programmiert stattdessen den kritischen Teil in C nochmal komplett neu, nutzt diesen Teil von Smalltalk aus, und - Bingo - Smalltalk ist doch nicht langsam. Na, dann ist ja alles super. Siehe auch DeWikiPedia:Dialektik.

Ja. Nach der 80/20 Regel hast Du Dir nämlich damit erspart 80 % Deines Codes in C zu schreiben.

Richtig. 20 % des Codes ist neu zu schreiben. Nur nach der 80/20 Regel ist es der Teil des Codes, in den du zuvor (und nun wieder) 80 % des Arbeitsaufwands gesteckt hast. (Beinahe hättest du mich gehabt.)

Wie groß ist die Überdeckung zwischen den 20% Code die 80% der CPU-Zeit ausmachen und den 20% die 80% des Aufwandes ergeben?

Äh, wenn ich mal kurz intervenieren dürfte: Vom Neuschreiben steht da nichts. Ob etwas im konkreten Fall zu langsam ist erfährt man durch ein simples Prototyping und nicht durch Implementation der kompletten Funktionalität. Und bei Fällen, in denen man so vorgeht, ist meistens sogar ohne Prototyping klar, dass Smallalk nicht geeignet ist. Ich hänge mal den entsprechenden Hinweis in den Haupttext.

Wo Smalltalk tatsächlich lagsam ist:

Smalltalk hat eine schwere Syntax

Siehe dazu den lesenswerten Essay von Niall Ross: http://wiki.cs.uiuc.edu/CampSmalltalk/new+code+syntax.

Jüngere Sprachen sind moderner

Für Smalltalker höchst ärgerlich sind Annahmen, die Smalltalk-Entwicklung stagniere. Das ist leicht zu widerlegen. Viele, wenn auch nicht alle, bestehenden Dialekte werden derzeit aktiv weiterentwickelt; und es entstehen neue! Dabei wird natürlich auch der Markt beobachtet und Trends aufgegriffen.

Charts, in denen SpracheJava als Nachfolger von Smalltalk (und SpracheCpp) präsentiert wird, sind ähnlich irreführend, wie solche, in denen C++ als besseres SpracheCee gefeiert wird. Sicher, Smalltalk kann als Vorlage für vieles dienen, aber man kann gut oder schlecht abschreiben. SpracheRuby ist ohne Zweifel näher an Smalltalk als Java. Trotzdem wird niemand Ruby als Nachfolger von Smalltalk bezeichnen. Ruby ist eine in gleichen Teilen von SprachePerl und Smalltalk beeinflusste Sprache mit eigener Entwicklungskultur.

Ohne auf Details einzugehen: Gemessen an einigen Trends der letzten Jahre müsste Smalltalk als modern gelten. Leider wird selten auf rein technischer Ebene argumentiert und stattdessen der Grad der Popularität als Maß der Fortschrittlichkeit missbraucht.


StartSeite | SpracheSmalltalk/ | Neues | TestSeite | ForumSeite | Teilnehmer | Kategorien | Index | Hilfe | Einstellungen | Ändern
Text dieser Seite ändern (zuletzt geändert: 25. Mai 2004 12:33 (diff))
Suchbegriff: gesucht wird
im Titel
im Text