Bitte Beachten: Dieser Blog wird hier nicht weiter geführt! Kommentare und neue Blogposts gibt es unter http://feitel.indeedgeek.de. Dort bitte auch neue Kommentare zu diesen Beiträge erstellen.

Donnerstag, 6. Dezember 2007

Was macht eine Programmiersprache gut?

Ich brauche euch glaube ich nicht mehr zu erklären was eine Programmiersprache ist. Jeder von euch hatte wahrscheinlich schon mit mehreren Sprachen zu tun gehabt. Jeder von euch mag die eine Sprache mehr und eine andere weniger. Aber im Grunde sind die meisten Sprachen alle gleich. Man hat seine Standardbefehle wie z.B. if oder for, und in den meisten Sprachen lassen sich Funktionen oder auch Klassen definieren.

Gut, zugegeben jede Sprache hat einige besondere Features. In C++ kann man z.B. vieles elegant über Pointer lösen hat aber an anderer Stelle dafür wieder andere Probleme damit. Java ist durch seine Virtuelle Maschine mehr oder weniger plattformunabhänig. Python zeichnet sich als Script Sprache aus und wird dynamisch typisiert und in Ruby ist Codeblöcke und Callback Möglichkeiten markant. Aber sind diese Features wirklich entscheidend welcher Sprache wir den Vorzug geben? Lassen sich nicht alle diese Features mehr oder weniger einfach auf alle anderen Sprachen übertragen?

Man kann mit allen Sprachen alles Programmieren. Man braucht nur ein einfachen Interpreter und ich kann mit C++ Webseiten programmieren. Ein extra Compiler und mit PHP lassen sich Desktop GUI Programme erstellen. Alles nur eine Frage des Aufwands den man rein stecken muss. Bestes Beispiel ist hier wohl Ruby on Rails (RoR) und PHP. Viele loben RoR schon als neues PHP. Etwas unfair wenn man bedenkt das RoR ein komplettes Framework ist und PHP nur eine Sprache. Aber ich kann doch ohne Probleme dieses Framework mit PHP nach programmieren (Wurde auch schon gemacht). Auch die Vorteile das RoR von der Sprache selbst besser ist trifft nicht unbedingt zu. Einfach nur ein Paar Librarys neu schreiben und schon hat man in PHP die Objektorientierung wie man sie aus RoR kennt. Warum soll also RoR eine bessere "Sprache" sein als PHP?

Worauf ich eigentlich hinaus will, es ist auf Sprachebene relativ egal welche Sprache ich benutze. Manche sind für den Verwendungszweck besser geeignet manche Schlechter aber vom Prinzip macht es kein Unterschied. Aber warum mag man nun eine Sprache mehr oder eine andere weniger? Meine Theorie ist einfach das es sehr viel auf das Umfeld ankommt. Wenn ich mir zum Beispiel so manche API Dokumentation von Ruby anschaue bleiben oft Fragen offen. Bei Java hingegen bekomme ich zu jeder popeligen API eine super Dokumentation. Wenn ich in Ruby eine Frage habe wartet man in Supportforen oft vergebens auf eine Antwort. Wo hingegen bei C++ so gut wie jede Frage schon einmal geklärt wurde. Oder um wieder auf Rails zurück zu kommen: Wenn ich in PHP ein Programm kurz testen will muss ich erst Apache einrichten und starten. RoR bringt sein Webserver bereits mit. Das ganze lässt sich noch beliebig fortsetzten aber meine Message ist denke ich klar: Die Sprache selbst macht wenig aus. Auf das Environment kommt es an!

Wobei ich nicht abstreiten mag das bei Vielen sich eine "Das kenne ich, das nehme ich" - Mentalität bei Programmiersprachen abzeichnet. Mir ist das vor kurzem wieder aufgefallen. Ich habe einige Beispielprogramme mit Java und aufwendiger Swing-GUI gesehen. In Ruby wäre in Kombination mit dem Kommandozeileninterpreter irb das Programm wahrscheinlich nur ein Zehntel so lange.

Aber gut, muss jedem selbst überlassen sein in welcher Sprache er gerne Programmiert. Ich kann nur jedem ausdrücklich empfehlen sich möglichst viele Sprachen mal anzuschauen um einfach über seinen Horizont zu sehen. Jede Sprache hat ihre eigene Mentalität ihre eigene Community und eigene Ideen warum sie so ist wie sie ist. Und alle Sprachen sind interessant!

1 Kommentar:

kb hat gesagt…

Sowas ähnliches dachte ich letztens auch schon. Ich bin irgendwie viel zu lange mit Scheuklappen vor den Augen herumgelaufen und wollte nie ein Framework nutzen. Aber die Einarbeitungszeit rentiert sich schon in diesem Sinne, dass man dadurch an Erfahrung und neuen Sichtweisen gewinnt die man auch für andere Projekte brauchen kann - auch wenn unter Umständen mehr Zeit gebraucht wird als wenn man das kurz - wie seit jeher gewohnt in Java (oder einer sonstigen "Stammsprache".