Sven Rautenberg: Welche Programmiersprache für welches Problem???

Beitrag lesen

Moin!

Nun, selbst wenn ich einige Zeit in einer Programmiersprache programmiert habe und diese ziehmlich fließend behersche kann ich doch wohl annehmen, dass ich für ein bestimmtes Problem besser eine andere wähle,oder!?

Warum?

Wie finde ich heraus welches die beste Programmiersprache für ein bestimmtes Problem ist und ich nicht jede erlenen möchte, um dieses herauszufinden oder immer in diesem Forum fragen. :-)

Es gibt eigentlich nur zwei Arten von Kriterien, die hier eine Wahl ermöglichen: Harte Kriterien und weiche Kriterien.

Die harten Kriterien sind die Fakten. Wenn du mit clientseitigem Javascript allein ein CMS programmieren willst, wirst du schnell feststellen, dass es nichts wird, weil die Daten nicht haltbar gespeichert werden können.

Es gibt also gewisse Unmöglichkeiten bei einigen Programmiersprachen, die einen Einsatz von vorneherein verbieten.

Ansonsten aber kann man mit jeder Programmiersprache _alles_ programmieren, was man mit einer anderen Programmiersprache auch programmieren könnte. Der gute Herr Turing hat mal einen Automaten entworfen, mit dem man alle Programmierprobleme vollständig bearbeiten kann. Der Automat hatte nur einen ganz minimalen Befehlssatz. Irgendwie hat er wohl bewiesen, dass man damit alles programmieren kann. Und wenn man eine andere Programmiersprache hat, und mit der diesen Automaten simulieren kann, kann man mit dieser Programmiersprache auch alles programmieren.

Die Frage dabei ist nur, welche Sprache für ein Problem vielleicht am geeignetsten ist. Das sind die weichen Kriterien, für die es nach meiner Definition keine absoluten, sondern nur relative Hindernisse bzw. Entscheidungsgrundlagen gibt.

Ein Grund für dich, eine bestimmte Sprache einzusetzen, ist beispielsweise, dass du sie gut kennst. Würdest du eine andere Sprache einsetzen müssen, die du nicht kennst, wäre das Programmierergebnis vielleicht nicht so optimal.

Ein weiterer Grund, eine Programmiersprache einzusetzen wäre, wenn eine Sprache eine typische Aufgabe, die bei der Programmierung der gestellten Aufgabe sehr häufig anfällt, besonders einfach erledigen kann. PERL zum Beispiel ist mal als eine Sprache entstanden, die typischerweise Textdateien nach Textmustern durchsuchen und darüber einen Report anfertigen kann. Dementsprechend sind die Details der Perl-Programmierung immer noch darauf ausgelegt, Textdateien einzulesen und nach Mustern zu durchsuchen - das geht halt einfach irgendwie nett und schnell damit - vor allem in relativ wenig Codezeilen.

Nur bringt dir dieser Vorteil nichts, wenn du nur PHP programmieren kannst. Bis du Perl gelernt und die Feinheiten, bei denen Perl seine Vorteile mit Textdateien ausspielt, erkundet hast, hättest du vermutlich eine genauso gut funktionierende, nur wenige Zeilen längere Version in PHP programmiert.

Noch ein anderes Beispiel: Es gibt Programmiersprachen, deren innere Datenstrukturen sich möglicherweise gut für die Lösung eines Problems eignen. So bieten es sich beispielsweise an, eine Sprache mit einem Datentyp "Money" zu verwenden, welche ohne binäre Rundungsfehler (die bekanntermaßen immer da auftreten, wo man sie als dezimal rechnender Mensch nicht erwartet) rechnen kann, zu verwenden, wenn man eine finanzmathematische Applikation programmieren soll. Beispielsweise eine Software für eine Bank. Bei Banken ist es nämlich eine Katastrophe, wenn auf Kundenkonten ein Cent abhandenkommt.

Es muss doch irgendeine Organisation geben, die sämtliche Sprachen kennt und Auskunft geben könnte. Ich meine jetzt nicht irgendeine private Homepage.

Viele Sprachen sind tatsächlich standardisiert. Allerdings besagt das nicht sonderlich viel. Fortran ist beispielsweise ein ISO-Standard. Javascript ist ein ECMA-Standard. Zu Fortran kann ich nichts sagen, aber bei Javascript ist lediglich die Sprache selbst standardisiert worden, aber beispielsweise _nicht_ das Document Object Model, was den unerfahrenen Programmierern soviele Probleme mit alten IEs und Netscapes macht.

Auf einen Standard kann man sich also nicht verlassen. PHP ist vermutlich gar nicht standardisiert. Sowas kostet mit Sicherheit eine Menge Geld, und es lohnt sich eigentlich auch nur, wenn man verschiedene Hersteller hat, die Compiler, Interpreter o.ä. für diese Sprache herstellen wollen. Bei PHP ist der eine Interpreter in zentraler Hand und wird weiterentwickelt - Inkompatibilitäten aufgrund unterschiedlicher Hersteller treten da nicht auf. Die treten, wenn, dann deshalb auf, weil sich in den einzelnen Versionen was an den zur Verfügung stehenden Funktionen geändert hat. :)

Ein weiteres weiches Kriterium wäre, ob deine Lösung eine gewisse Performance bieten soll. Wenn du viele User und viele Zugriffe auf einem eher langsamen Server hast, dürfte eine Skriptsprache vielleicht nicht ganz so geeignet sein, eine compilierbare Sprache hingegen arbeitet wahrscheinlich wesentlich schneller.

Wenn du aber den Server aufrüsten kannst, dass er die Aufgaben dennoch bewältigen kann, und dafür den enormen Vorteil gewinnst, anscheinend simple Aufgaben tatsächlich mit nur wenigen Zeilen Code einer Skriptsprache zu programmieren, wozu du das zwanzigfache in der Compilersprache benötigt hättest, dann ist das ein guter Grund für die Skriptsprache.

Wenn du also eine Sprache zur Programmierung eines Projekts auswählen willst, kommen da so viele mögliche Auswahlkriterien in Betracht - die kann man gar nicht irgendwie standardisieren und zusammenfassen in eine "Wenn Problem X, dann Sprache Y"-Anleitung.

- Sven Rautenberg

--
ss:) zu:) ls:[ fo:} de:] va:) ch:] sh:) n4:# rl:| br:< js:| ie:( fl:( mo:|