(07.02.04 21:15)

Es ist schon einige Zeit her, seit ich mich das letzte Mal verliebt habe; genau genommen mehr als 10 Jahre. Natürlich gab es seither die eine oder andere nähere Bekanntschaft, und es waren sogar ein oder zwei Partnerschaften dabei, aber so richtige Liebe war es seit damals nicht mehr.

Aber jetzt ist es wieder geschehen: ich habe mich verliebt - so richtig doll verliebt. Damals hiess meine Liebste Smalltalk, heute ist ihr Name Ruby. Sie ist - wie ihr Name schon sagt - wirklich ein kleines Juwel, und wahrscheinlich mag ich sie so gut, weil sie mich in vielen Dingen an Smalltalk erinnert. Doch bevor ich noch ein Bisschen über Ruby schwärme, möchte ich zuerst ein zwei Dinge zu meinen anderen programmiersprachlichen Bekanntschaften der letzten 10 Jahre sagen:

Object Pascal (Delphi) - Eine hübsche Sprache, ordentlich und sauber. Typensicher, zuverlässig, robust, mit einem extrem flinken Compiler und Linker. Strukturiertes Exception-Handling kennt Object Pascal genauso wie Properties und Schnittstellen, wobei Letztere ein paar Ecken und Kanten aufweisen, die einem das Leben manchmal doch ziemlich schwer machen können. Mit ein paar Tricks ist es dagegen sogar möglich, rudimentäre Unterstützung für Generics zu bekommen, wodurch sich das Schreiben von immer gleichem Code doch merklich verringern lässt; als eingefleischter DRY-Fan schätze ich das sehr. Alles in allem leisten mir die Sprache und die dazugehörige Komponenten-Bibliothek (VCL) bis heute treue Dienste, und so wird Delphi wohl noch ein Weilchen einen Platz in meinem Leben als Entwickler haben.

Java - Im Grossen und Ganzen eine ansehnliche Sprache mit vielen modernen Konzepten. Die Syntax ist recht ordentlich - abgesehen von der teilweise abstrusen Schreibweise für die Instantiierung von Inneren Klassen. Die Sprachkonzepte sind bis auf wenige Ausnahmen durchdacht, und die Bibliothek der Standard Edition stellt für eine Vielzahl von Problemstellungen geeignete Abstraktionen zur Verfügung. Java ist wesentlich objekt-orientierter als Object Pascal, und das Schnittstellenkonzept ist recht sauber umgesetzt. Sorge bereitet mir allerdings die wachsende Komplexität der Java-Plattform, und Java Swing ist ein prominentes Beispiel dafür, dass man es mit dem Einsatz von Entwurfsmustern auch übertreiben kann. Letztlich scheint mir auch die Art der Umsetzung von Generics mit Java 1.5 missraten, da sie ausser syntaktischem Zucker wenig bringt. Alles in allem bin ich mir nicht sicher, welchen Stellenwert Java für mich künftig haben wird.

C++ - Nun ja, was soll ich sagen? C++ ist bezogen auf die Möglichkeiten eine schon fast erschreckend mächtige Sprache. Genauso erschreckend ist aber ihre Komplexität und ihr Potential, es komplett zu versaubeuteln. Von der höchst eigenwilligen Syntax will ich gar nicht reden. Den meisten Entwicklern sollte man diese Sprache einfach nicht in die Finger geben, zumindest nicht ohne den warnenden Hinweis, dass sie höllisch aufpassen müssen, sich nicht zu verletzen. Es gibt viele Dinge, die ich an C++ mag, aber es gibt mindestens ebenso viele Aspekte, die ich einfach nur furchtbar finde. Am schlimmsten scheint mir aber der Umstand, dass der versierte C++ Entwickler oft gar nicht mehr merkt, wieviel ungewollte Komplexität diese Sprache einem unter dem Deckmantel der Effizienz aufbürdet.

C# - Fusion Cooking in der Programmierküche: Eine gehörige Portion Java, angereichert mit etwas C++, darüber dann ein paar Prisen Object Pascal und schliesslich noch ein paar frischgezupfte Aspekt-orientierte Neuzüchtungen aus dem Kräutergarten zum Anrichten. Wer für die .NET Plattform entwickelt, hat mit dieser Sprache die momentan wohl besten Karten. Mir gefällt die Sprache recht gut, die Syntax scheint mir aber manchmal etwas überladen.

Smalltalk - meine erste und einzige Liebe! Alles ist ein Objekt, die Syntax umwerfend einfach und die Möglichkeiten fast unbegrenzt. Immer steht das Problem, das man zu lösen hat, im Vordergrund, nie kommt einem die Sprache in die Quere; das können nur wenige Programmiersprachen von sich behaupten. Leider hat die Marketingmaschinerie für Smalltalk wesentlich schlechter funktioniert als zum Beispiel für Java.


Wie gesagt - Ruby erinnert mich in vielen Bereichen an Smalltalk. Auch in Ruby ist alles ein Objekt, und wie Smalltalk kennt auch Ruby keine strenge Typenprüfung. Das alleine genügt, um Ruby in den Augen vieler Entwickler als Kinderkram erscheinen zu lassen. Und auch in der Entwickler-Community wird dieser Punkt momentan rege diskutiert. Ich sehe dieses Thema mit konsequentem Unit-Testing im Werkzeugkasten ziemlich entspannt. Zwar ist die strenge Typenprüfung durchaus eine Hilfe. Einer Software aber die Qualität abzusprechen, nur weil die verwendete Sprache nicht typensicher ist, halte ich für abwegig. Wenn Typensicherheit wirklich soviel zur Güte einer Software beiträgt, warum lässt dann die Qualität so vieler Anwendungen, die in einer typensicheren Sprache geschrieben sind, trotzdem zu wünschen übrig? Weil eben eine Software noch lange nicht lauffähig ist, geschweige denn die Anforderungen erfüllt, nur weil sie kompiliert. Könnte es sein, das der Wert von Typensicherheit überschätzt wird?

Aber nochmals zurück zu Ruby: Es macht wirklich Spass, mit Ruby zu programmieren, und es erstaunt mich stets aufs Neue, wie durchdacht diese Sprache ist, und wie kompakt und leserlich der resultierende Code wird. Natürlich ist Ruby nicht die Antwort auf jedes Problem, aber sie zeigt eindrücklich, was eine auf einfachen Konzepten beruhende Sprache leisten kann. Wie gesagt, ich habe mich verliebt, und wer weiss, vielleicht wird daraus sogar eine länger dauernde Beziehung...

-nemo :-)

Über diesen Artikel diskutieren.

Zugriffe heute: 1 - gesamt: 4722.




Der schlaue Bert Menschenfreundlich

Druckbare Version