Das Für und Wider – Teil 2: Smalltalk und moderne Technologien


Das Argument:

Smalltalk war vor 15 Jahren ganz vorne. IBM und Parcplace hatten damals die fortschrittlichsten Entwicklungsplattformen und wenn nicht Java das Licht der Welt erblickt hätte, und nicht gerade IBM und Parcplace ihre eigenen Smalltalk-Kunden verunsichert hätten, wer weiss. Aber man ist mit Smalltalk von neueren Entwicklungen einfach abgenabelt.

Die Diskussion:

Smalltalk ist in der Tat eine sehr alte Programmiersprache, die inzwischen rund 30 Jahre auf dem Buckel hat. Und viel verändert hat sich an der Sprache in den letzten 20 Jahren eigentlich nicht. Die Bezeichnung “Smalltalk-80” kommt nicht von ungefähr: die aktuellen Implementierungen basieren auf dem Stand der Sprache von 1980.

Allerdings sollte man klar unterscheiden zwischen der Syntax einer Sprache und den Klassenbibliotheken, die zur Entwicklung verfügbar sind. Warum ändert sich eine Sprache in 20 Jahren kaum?

Ein Grund könnte sein, dass sie seit 20 Jahren nicht mehr genutzt wird, um neuere technologische Ansätze zu implementieren, vergleichbar etwa mit COBOL, das auf den meisten Großrechnern nach wie vor zum Durchwühlen großer Dateien und Datenbanken genutzt wird, und sich kaum noch verändert (dabei gibt es von Cobol durchaus neuere Evolutionsstufen als 1980, und, ja, ich weiss, dass es eine OO-Erweiterung zu Cobol gibt.

Der andere Grund könnte sein, dass die Sprache selbst eine sehr kompakte Syntax besitzt, die so flexibel erweiterbar ist, dass mit den verfügbaren Sprachmitteln auch neue Techniken und Technologien umgesetzt werden können. Wenn man es so betrachtet, ist die Tatsache, dass Smalltalk sich seit 1980 in seinem Kern kaum verändert hat, eine sehr gute Nachricht: es scheint flexibel genug zu sein, um für aktuelle Aufgabenstellungen erweiterbar zu sein.

Interessanter Weise stammen viele moderne Ansätze, die sich in praktisch jeder (OO-)Programmiersprache etabliert haben, aus dem Smalltalk-Umfeld:

Gut, so mag der geneigte Leser denken, das sind alles Klamotten, die 15 Jahre oder älter sind. Mit Gegenargumenten dazu muss ich passen😉 Und ich verkneife mir auch an dieser Stelle eine längere Ausarbeitung dazu, dass wir heutzutage mit der Maus und graphischen Benutzeroberflächen tagtäglich mit noch deutlich älteren Technologien umgehen, die auf Smalltalk fussen, denn das zeigt nur, dass in Smalltalk vor 20 und 30 Jahren bedeutende Innovationen  entwickelt wurden. (Zu diesen ganz ollen Kamellen empfehle ich die Episode 29 von FLOSS weekly).

Aber wie sieht das heute aus?

Genau hier kommt die oben erwähnte Trennung zwischender Sprache Smalltalk undden den für Smalltalk verfügbaren Klassenbibliotheken zum Tragen. Zwar sieht Smalltalk die Sprache heute noch ziemlich genau so aus, wie vor 20 Jahren, aber die Menge an Klassen für verschiedenste Einsatzzwecke sind in dieser Zeit enorm gewachsen.

Ich denke, hier muss zunächst mal unterschieden werden zwischen modernen Technologien, die man in kommerziellen Projekten einsetzen möchte oder muss, und Technologie-Innovationen, die heute entwickelt werden und die erst in einigen Jahren bereit für einen flächendeckenden Einsatz sind.

Schliesslich sind die meisten Technologien, die wir heute so im Browser sehen und nutzen, in der Regel auch schon einige Jahre alt. Im Wesentlichen besteht das Innovationsfeld Internetapplikation aus HTTP, Servlets (oder den unsäglichen JSPs) , XML, HTML und heutzutage einer ganzen Menge JavaScript-Code. Nichts davon ist wesentlich jünger als 10 Jahre. Alle neueren Ansätze wie AJAX, die aktuell die innovativen Web-Anwendungen ausmachen, sind im Wesentlichen eine neue Kombination bewährter Ansätze. Das ist nichts schlechtes, schliesslich funktionieren bewährte Ansätze in der Regel sehr gut.

Smalltalk unterstützt die Erstellung von Web-Anwendungen mit Servlets, spricht fliessend XML und kann sich über HTTP mit jeder anderen Anwendung austauschen. Es gibt Smalltalk-basierte Webserver wie Swazoo, Servlet-Engines, XML-Parser und Mapper und natürlich unterstützen die kommerziellen Varianten von Smalltalk allesamt Web Services (auch eine Kombination aus bewährten Technologien).

Smalltalk kann mit Java per RMI kommunizieren, Objekte per JSON austauschen, Scalable Vector Graphics erzeugen, Grafiken per OpenGL oder Cairo ausgeben. Es gibt Brücken zu Cocoa/Objective-C auf dem Mac, IIOP-Anbindung, Schnittstellen zu allen erdenklichen Datenbanken und Middleware-Technologien und so weiter und so fort…

Auf dem VA Smalltalk Forum am 23. September 2008 möchte ich dazu ein paarBeispiele zeigen und das auch ein bisschen weiter ausarbeiten. Als Beispiel dafür, dass man mit Smalltalk auch ganz “heisse” Themen anpacken kann, werde ich einen RESTful Web Services Client und einen Ansatz für einen Smalltalk-basierten RESTful Web Services Server zeigen.

In einem weiteren Beitrag werde ich mich zum Thema der Innovationen auslassen, die in Smalltalk entwickelt und möglicherweise wieder wegweisend sein werden. Das Für und Wider geht also weiter…