Programmiersprachen-Vergleich für Webentwicklung

| 10 Kommentare | 1 TrackBack

Ruby, Python, Perl, PHP, Java oder .NET – was ist besser?

Eine subjektive Zusammenfassung einer Umfrage mit subjektiven Meinungen

Letztes Jahr wurde von der Freien Univerität Berlin der erste Plat_Forms-Contest zum Vergleich von Web-Programmiersprachen durchgeführt (siehe auch: Fotos mit Rätsel über die Teams); nach Veröffentlichung des Ergebnisses starteten die Initiatoren eine Umfrage unter professionellen Web-Entwicklern, um deren subjektive Meinungen zu populären Web-Sprachen zu erfassen und wissenschaftlich.

Auch von dieser Umfrage liegt nun das Ergebnis als umfangreiche Analyse von Autor Will Hardy vor.

Die Teilnehmer der Umfrage sollten die zwei Sprachen, mit denen sie sich am besten auskennen, in verschiedenen Kategorien (Sicherheit, Robustheit, Performanz, ...) miteinander vergleichen. Zur Auswahl standen neben Perl die Scriptsprachen Ruby, Python, und PHP sowie Java und .NET.

Neben quasi-numerischen Antworten (X ist bezüglich Y viel besser als Z) waren auch Freitexteingaben möglich. Leider sind diese Texte in der Studie kaum erwähnt. Hier hätte ich mir gewünscht, dass diese – zur Not unkommentiert – zumindest im Anhang komplett aufgeführt worden wären. Nachtrag: Die Materialien wurden in der Zwischenzeit veröffentlicht, siehe Sourcecodes und Datenmaterial zum Plat_Forms Wettbewerb und zur Umfrage veröffentlicht

Im Text konzentriert sich der Autor häufig darauf, die Unterschiede zwischen Java und PHP/Python/Ruby oder zwischen Python/Ruby und PHP aufzuführen; aus (ganz subjektiver!) Perl-Sicht hätte ich mir natürlich ein wenig mehr gewünscht. Aber das ist natürlich vollkommen subjektiv.

Perl sieht der Autor, ebenso wie PHP, als eher traditionelle Sprache an und schreibt, dass Java, Python und Ruby linguistische Features bieten würden, die es bei den traditionellen Sprachen nicht gebe. Hier muss ich ihm eindeutig widersprechen, denn das gilt zwar teilweise für PHP, nicht aber für Perl. Im Gegenteil, Perl bietet als moderne dynamische Sprache einen Haufen Features, die es in Java und .NET nicht gibt. Aber auch so manches Perl-Feature wie die Ties und die daraus entstehenden Module, den Taint-Mode oder „use strict“ gibt es zum Beispiel in Python nicht – dafür gibt es da wieder andere Features.

Diese fehlerhafte Ansicht korrespondiert aber mit der Außenwirkung von Perl. Oft heißt es: „Wird das überhaupt noch genutzt?“ Perl gilt bei manchen als alt, als Sprache aus einer anderen Zeit. In der Hinsicht war die Perl-Community wohl zu wenig aktiv und hat sich auf das kommende Perl 6, das streng genommen eine vollkommen neue Sprache mit ein paar Perl-Elementen wird, verlassen. Nur schade, dass der Mythos vom etwas altbackenen Perl auch in der Wissenschaft einzug gehalten hat.

 

Dennoch kann man als vorweggenommenes Fazit sagen:

Perl schneidet bei der Umfrage insbesondere im Vergleich mit PHP und Java deutlich besser ab (sprich: demnach ist es eine bessere Plattform zur Web-Entwicklung). Aber lest meine grobe Zusammenfassung, subjektiv aus der Sicht eines Perl-Entwicklers, selbst:

 

Aufwand

Bei der Frage, welcher Aufwand nötig ist ein Ziel zu erreichen schneidet Perl ganz gut ab. Die Teilnehmer der Umfrage sind sich darin einig, dass ein Web-Entwickler mit Perl deutlich weniger Aufwand betreiben als bei Java. Auch im Vergleich zu PHP ist der Aufwand geringer. Bei Python und Ruby sind sich die Teilnehmer der Umfrage nicht mehr so einig. Während eine knappe Mehrheit der Ansicht ist, dass Perl weniger Aufwand als Python erfordert, ist es bei Ruby umgekehrt. Bei beiden gehen die Meinung aber relativ stark auseinander.

Dies ist möglicherweise dadurch zu erklären, dass Perl relativ lange im Einsatz ist, es von vielen früher als CGI genutzt wurde und so mancher Entwickler beim Umstieg zu Python/Ruby gleich nicht nur ein entsprechendes Framework nutzt sondern aufgrund von mehr Erfahrung auch besseren Code produziert. Und so mancher andere nutzt eines der modernen Perl-Frameworks und sieht das dann u.U. anders.

Interessant finde ich, dass PHP hier sehr schlecht abschneidet, während das bei Java zu erwarten war. Will Hardy, der Autor der Studie, vermutet, dass PHP aufgrund fehlender Sprach-Features und der bei Python und Ruby standardmäßig genutzten Frameworks so schlecht abschneidet.

 

Lesbarkeit

Wie zu erwarten war schneidet Perl bei der Lesbarkeit eher mäßig ab. Zwar ist sich eine Mehrheit einig, dass Perl (leicht) besser lesbar ist als PHP und Java. Bei Python und Ruby sieht es da aber ganz anders aus. Insbesondere Python gilt als besonders lesbar. Wobei die Meinungen relativ stark auseinander gehen, wie sehr Pyhon und Ruby  besser lesbar seien. Unter dem Strich ist der Unterschied laut der Teilnehmer zu Ruby gering, zu Python mittelmäßig.

Und tatsächlich bietet Perl dem Entwickler sehr viele Freiheiten – er kann den Code unlesbar oder lesbar gestalten.

 

Modifizierbarkeit

Hier gehen die Meinungen teilweise sehr stark auseinander. Zwar sind sich die Teilnehmer einig, dass Perl eine bessere Modifizierbarkeit (und ich fasse darunter auch die Erweiterbarkeit) bietet als PHP und Java. Dies korrespondiert auch mit den Erfahrungen beim plat_forms contest.

Beim Vergleich mit Python und Ruby sind die Meinungen aber sehr unterschiedlich. Während Perl im Vergleich zu Ruby leicht die Nase vorne hat, wird von einer knappen Mehrheit Python im Vergleich zu Perl leicht im Vorteil gesehen.

Die großen Unterschiede der einzelnen Meinungen dürften auch hier aufgrund unterschiedlicher Erfahrung im Umgang mit Frameworks auf Perl-Seite herrühren. Reines CGI ist natürlich häufig nicht so gut modifizierbar wie eine Applikation unter Verwendung entsprechender Frameworks wie Catalyst, Gantry oder Jifty.

Die Studie sagt, dass im Freitext viele Entwickler die Vorteile von Python gegenüber PHP bei der besseren Modularität, den Testing-Werkzeuge und den besseren Frameworks sehen. Das gleiche dürfte für Perl auch gelten.

 

Robustheit

Bei der Einschätzung der Robustheit sind sich die Entwickler in einem Punkt sehr einig: PHP wird im Vergleich zu allen anderen Sprachen als weniger Robust angesehen.

Will Hardy vermutet, dass dies an dem populären Glauben an Sicherheitsprobleme mit PHP liegt, die aber beim Plat_Forms Experiment wiederlegt worden seien. In diesem Punkt muss ich widersprechen, denn die Testmethoden bezüglich der Sicherheit waren beim Plat_Forms Contest eher oberflächlich und ungenau.

Weitere Gründe für PHPs schlechtes Abschneiden bei der Robustheit sind laut der Freitextangaben Umfrageteilnehmer, dass es bessere Frameworks in allen anderen Sprachen gebe, dass PHP ein schlechtes Exception handling habe und schwer zu testen sei, außerdem seien PHP-Entwickler oftmals unerfahren. Zwei wichtige Punkt im Vergleich mit Perl hätte ich da noch hinzuzufügen: ein fehlendes Äquivalent zu „use strict“ in PHP sowie die Tatsache, dass es bei PHP teilweise mehrere Funktionen für die gleiche Aufgabe gibt, die alle den einzigen Namensraum verseuchen.

Im Vergleich mit den anderen Sprachen sind die Unterschiede zu Perl relativ gering und die Meinungen schwanken deutlich stärker als beim Vergleich mit PHP. Je nach Sichtweise ist Perl etwas robuster oder etwas weniger Robust. Perl spielt dabei vor allem die Trumpfkarte CPAN aus.

 

Skalierbarkeit

Bei der Skalierbarkeit holt PHP wieder ein wenig auf, ist aber nach einhelliger Meinung dennoch deutlich weniger skalierbar als Perl.  Insgesamt gibt es aber kein klares Ergebnis, auch wenn Java ein wenig die Nase vorne hat. Warum der Autor seine eigene Meinung, dass Java und PHP bei hochfrequentierten Webseiten gut skalieren dazu schreibt ohne das näher zu untermauern bleibt mir ein Rätsel; schließlich gibt es auch eine Reihe von mit Perl betriebenen Sites, die sehr gut skalieren (Slashdot, heise online, XING, Livejournal, ... um mal einige zu nennen).

 

Usability

Hier gab es nur sehr wenige Antworten und die Frage wurde von den meisten wohl mißverstanden. Da zudem die Antworten relativ ausgewogen sind gibt kann man hier keine genaue Aussage feststellen, außer vielleicht, dass PHP im Gegensatz zu Python und Ruby die Entwickler eher zu weniger benutzerfreundlichen Sites animiert. Die Unterschiede sind wie gesagt eher gering.

 

Sicherheit

Deutlich ist hier wieder, dass PHP sehr schlecht abschneidet. Der Grafik nach schneidet Perl am besten ab, es erleichtert den Entwicklern also besser sichere Web-Applikationen zu schreiben als Ruby, Python, PHP, Java und .NET. Im Text findet sich dies aber nicht wieder.

 

Geschwindigkeit

Bezüglich der Geschwindigkeit ist ein Ergebnis eindeutig, wenn auch nur von 7 Umfrageteilnehmern erhoben: Perl ist schneller als Ruby. Aber auch im Vergleich zu PHP sind sich die Entwickler einig, dass Perl zu performanteren Websites führt. Bezüglich Java und Python im Vergleich zu Perl sind die Meinungen uneinheitlich, insgesamt schneidet Perl ganz knapp am besten ab. Insgesamt haben aber natürlich viele andere Faktoren einen Einfluß auf die Performance einer Web-Applikation – siehe auch meinen Vortrag zu Performance-Optimierung auf dem letztjährigen Perl-Workshop.

 

Speicherverbrauch

Hier ist offensichtlich ein Fehler in der „Textual description of overervations“ in der Studie, denn da heißt es, dass Perl-Applikationen mehr Speicher verbrauchen würden als Java-Applikationen. Im Text steht aber genau das Gegenteil, und anhand des Diagramms geht auch hervor, dass Perl-Applikationen weniger Speicher benötigen als ihre Java-Kollegen. Dies deckt sich auch mit den üblichen Erfahrungsberichten.

Auch PHP wurde, was den Speicherverbrauch anbelangt, gut bewertet.

 

Entwicklungswerkzeuge

Bei der Frage nach der Unterstützung duch Entwicklungswerkzeuge (Tools) schneidet Perl schlecht ab. Java und PHP und .NET bieten demnach mehr Entwicklungswerkzeuge.

Dies liegt sicherlich auch daran, dass  es nur wenige IDEs mit Perl-Unterstützung gibt, zum Beispiel Komodo mit und ohne Perl Dev Kit und Eclipse mit dem E.P.I.C-Plugin. In der Realität ist die Unterstütung durch moderne Entwicklungswerkzeuge also gar nicht so schlecht, aber diese sind relativ wenig bekannt. Hinzu kommt dass sehr viele Perl-Entwickler vi(m)- oder Emacs-Freaks sind und sich damit nach jahrelangem Training sehr wohl fühlen. Für die meisten Einsteiger und nicht Hardcore-Nerds ist das aber i.d.R. alles andere als geeignet.

Neben IDEs gehören für mich zu den Entwicklungswerkzeugen auch die Testing-Tools, Tools für die Messung der Code-Coverage, Debugging und so weiter. Dafür gibt es nicht nur die bekannten Kommandozeilen-Tools sondern auch GUI-Werkzeuge wie das Perl Dev Kit. Aber auch das ist nicht sonderlich bekannt.

 

Abhängigkeit von Entwicklungswerkzeugen

Perl ist von allen untersuchten Sprachen am wenigsten von Entwicklungswerkzeugen abhängig.  Insbesondere Java- und .NET-Entwickler können sich wohl kaum ein Leben ohne umfangreiche IDE vorstellen.

 

Abhängigkeit von Frameworks

Deutlicher ist es bei der Frage nach der Abhängigkeit von Frameworks: die Befragten sehen bei Perl eindeutig eine geringere Abhängigkeit von Frameworks als bei Ruby – was nachvollziehbar ist, schließlich gibt es bei Ruby kaum Web-Entwicklung unabhängig von Rails. Bei Perl gibt es immer noch einige Projekte, die mehr oder weniger auf reinem CGI aufsetzen, obwohl ebenfalls mächtige Frameworks wie Catalyst, Gantry oder Jifty zur Verfügung stehen. Selbst mod_perl möchte ich als Framework bezeichnen.

Ähnlich wie bei Perl sehen es die Teilnehmer der Umfrage bei PHP, auch dort ist die Web-Entwicklung nicht zwangsweise an die Nutzung eines Frameworks gebunden.

Während die Befragten also bei Perl und PHP wenig Abhängigkeit zu Frameworks sehen, sieht das auch bei Python, Java und .NET anders aus, wenn auch nicht so stark wie bei Ruby.

 

Fazit

Wie schon einleitend geschrieben schneidet Perl insgesamt sehr gut ab, die Konkurrenten PHP und Java kann es in den meisten Punkten abhängen. Mit Python und Ruby steht es in vielen Punkten auf ähnlichem Level und kann andere für sich entscheiden. Für den Vergleich zu .NET gab es nur wenige Teilnehmer.

Aber an zwei Punkten muss die Perl-Community arbeiten:

  1. Perl braucht ein besseres Image
  2. Wir brauchen bessere Entwicklerwerkzeuge für GUI-Nutzer, die auch entsprechend prominent beworben werden

Wenn man mal beobachtet, wie stark derzeit Perl-Entwickler gesucht werden, dann ist auch noch ein dritter Punkt wichtig: wir brauchen mehr Nachwuchs. Und dafür sind wieder die obigen beiden Punkte wichtig ...

1 TrackBack

TrackBack-URL: http://www.perl-blog.de/mt/mt-tb.cgi/63

Als Ergänzung zum Bericht zum Programmiersprachen-Vergleich vor ein paar Tagen:Die „Software Engineering (SE) research group“ der Freien Universität Berlin hat nun alle (manuell geschriebenen) Source-Codes zum letztjährigen P... Mehr

10 Kommentare

Ich wäre auch stark für den Nachwuchs! :-)

Gut wäre auch, wenn sich mehr gestandene Entwickler für Perl interessieren würden - auch so kann man Nachwuchs kreieren. Fortbildungen und Schulungen werden genug angeboten – leider sind die Teilnehmer oft eher Sysadmins (mit „20 Jahren Korn-Shell-Erfahrung“) und die Kursinhalte oft entsprechend. „use strict“ wird dann vielleicht am letzten Tag mal erwähnt.
Schön ist aber dass in der Zwischenzeit die Unternehmen selbst in Perl aus- und weiterbilden, ich habe Eure Anzeige in der Foo gesehen ;-)

Das Problem - wenn man es denn so nennen will - liegt m.E. auch weniger in den Eigenschaften der Sprache als in der Kommunikation nach außen.

Sollte Perl 6 noch diese Dekade erscheinen, wäre das ein sehr guter Zeitpunkt für eine Runderneuerung der Außendarstellung und des Marketings.

Ggf. sinnvolle Ziele / Maßnahmen :

1. Zurückeroberung der Universitäten, ggf. mit Workshops seitens der Perl-Community zur Entlastung des Lehrpersonals.
Preisfrage: Wer macht's? / Wer bezahlt's?

2. Auf Stärken setzen: Kommunikation der Vorteile durch:
- CPAN,
- die extrem mächtigen RegEx-Features,
- Performance
- Umgang mit Text und Sprache

3. Konzentration auf Zielgruppen, die mit diesen Vorteilen viel anfangen können:
- Bioinformatik-Bereich
- Sprachwissenschaftler (schwierig, da m.E. im Mittel eher technophob)
- ...

4. Den Aufwind für Unix-artige Betriebssysteme nutzen: MacOS, Linux (Ubuntu ist ja fast Mac ;-) ): Auf den Systemen ist ja überall schon Perl verfügbar - nur ist sich der durchschnittliche Mac-User dessen m.E. nicht bewusst.
Da müsste man mal schauen, wie einem Mac-User der Mehrwert von Perl am besten kommunizierbar ist.

Die Universitäten sind sicherlich ein wichtiger Ansatzpunkt. Diese sind da aber, soweit ich das sehe, sehr zurückhaltend. Bei Perl 6 mag sich das vielleicht/hoffentlich ändern, aber wer weiß wie lange das noch dauert.

Wahrscheinlich wäre es hilfreich, die vielen Community-Sites besser zu ordnen (unter http://www.perl.org/ sieht es ja schon etwas besser als aus früher, wenn ich mich recht erinnere) und ihnen auch an diversen Stellen ein moderneres Design zu verpassen etc.

Und dann ist es für viele Einsteiger wichtig, eine komfortable und systemkonforme Entwicklungsumgebung zu haben. vim und emacs sind eben nicht jedermanns Sache, vertreiben den einen oder anderen und ein Syntaxcheck während der Eingabe ist sehr viel Wert. Mit Eclipse und dem E-P-I-C Perl Plugin sowie mit Komodo gibt es da zwar was, aber zum einen ist das nur relativ wenig bekannt und zum anderen auch noch nicht wirklich ideal.


Das allerwichtigste ist aber wohl auch, dass Perl wieder in die öffentliche Wahrnehmung kommt. Wenn zum Beispiel auf heise online in einem Artikel (indirekt) steht, dass Perl 5 keine Objektorientierung habe, wenn ein Artikel zu 5.10 erst mehrere Tage nach dem Release kommt, wenn nie über neue Features berichtet wird, wenn nicht über den Release von neuen Versionen bekannter Projekte berichtet wird ... Nun, dann sagt das durchaus auch was über die Wahrnehmung von Perl aus. Bei PHP beispielsweise wird über jeden Furz-Release berichtet, über Beta-Versionen und Release-Kandidaten.
(BTW: Ein ähnliches Problem gibt es beispielsweise auch im Vergleich zwischen FreeBSD und Linux.)

Hier ist also eine Öffentlichkeitsarbeit gefragt. Es geht nicht nur um heise online, aber wenn schon quasi im Pflichtblatt nichts kommt, wo denn sonst?

Der Vergleich ist ganz interessant - aber wenn ich mich frage, warum ich weiterhin PHP benutze, obwohl mir die Vorteile von zB Python durchaus klar sind, dann fallen mir direkt zwei Argumente ein: 1. Community 2. Hosting

Das hängt auch wieder zusammen, aber die Community ist der wichtigere Punkt: Es gibt zahlreiche Beispiele (auch schlechte, auch die sind aber lehrreich), Berichte, Erfahrungen (auch beobachtete, kommentierte, quasi-programmier-soziologische) und dann wiederum auch viele technische Lösungen, und dann wiederum zahlreiche Programmierer, auch gute.
In Summe ist das einfach viel "soziale Power" auf Seiten PHP - und eine Sprachen-Entscheidung ist eben immer auch eine soziale (/organisatorische) Entscheidung und meist nicht eine der Art "Welche Sprache würdest du auf eine einsame Insel mitnehmen?"

Das alles wollte der Autor des Vergleichs aber offenbar nicht hören, weshalb er diesen - wichtigen - Aspekt einfach bei seinen Kriterien weggelassen hat...

Zu E.Doerr: Ich fange mal mit dem zweiten Punkt, dem Hosting, an. Im Professionellen Umfeld ist es weniger relevant, ob man für 1,99 Euro Hosting bekommt, und ab dem Dedizierten Server kriegt man alles unter. Das ist also nur bei Low-Budget-Arbeiten ein tatsächlich relevantes Kriterium. Und virtuelle Server kriegt man auch schon für relativ wenig Geld.

Zur Community: Ja, das ist ein Punkt, den der Autor der Studie/Umfrage durchaus hätte bedenken können, auch wenn dies in allen anderen Punkten mit hineinspielt. Bei den Kommentaren spielt dies auch immer wieder eine große Rolle.

BTW: Die Community ist auch eine der großen Stärken von Perl. Etwas dem CPAN vergleichbares hat keine andere Sprache zu bieten.

Bei PHP kommt hinzu, dass sich in der Community auch besonders viele Anfänger tummeln, die gerade mal die Lösung hören wollen ohne zu verstehen warum. Und da die Sprache so manche Mängel und Altlasten hat -- zig verschiedene Funktionen für die gleiche Aufgabe -- kann man da auch hin und wieder den falschen Tipp bekommen ...

Bzgl. Community dürfte nach meiner Vermutung vor allem .NET abfallen, evtl. auch Java. Als kommerzielle Produkte (insbesondere .NET) setzen sie eher auf Support durch den Hersteller als durch die Community.

Hi,
das ist eine komplett falsche Aussage. XING laeuft auf RoR und nicht mit Perl und das auch schon vor 2008.

Nein, Susan, das ist falsch. XING wurde von der epublica GmbH in Perl entwickelt und läuft auch weiterhin mit Perl.
Damit wir hier nicht nur Behauptungen haben: In der aktuellen Ausgabe des Perl-Magazins $foo steht ein Artikel über CGI::IDS, von dessen Autor Hinnerk Altenburg. Er arbeitet bei XING (bzw. bis zur Übernahme der Entwickler durch XING bei epublica).
Im Artikel heißt es:


Schon während der frühen Phase der Entwicklung haben wir den Einsatz im Livebetrieb auf der Perl-getriebenen Community-Webseite XING.com getestet.

Richtig ist allerdings auch, dass einige Teile von XING mit Ruby on Rails entwickelt wurden.

Was ist das denn für ein MIST?
Der Artikel ist komplett fail, höchstens 10% stimmen!
Weg damit!

...schade eigentlich, das es PyPerl nicht mehr wirklich gibt.

Zwar würde die Perl Welt damit u.a. den CPAN für Python-Entwickler (indirekt) weitgehend zugänglich machen, diese aber auch zur Beschäftigung mit Perl verleiten.

Python selbst erhält ja einige Aufmerksamkeit durch die Aktivitäten von Google, aber auch an Unis usw. werden für Nichtinformatiker immer häufiger Pythonkurse angeboten.

Allerdings wär es schön, wenn stattdessen / parallel gleich Perl Kurse angeboten würden ß). Perl wurde oft schlechtgeredet von Leuten, die nie eine Zeile Perl geschrieben haben und es ev. noch für einen "Vorläufer von PHP" halten.

Ich persönlich hoffe auf Perl 6 - insbesondere in der Außenwirkung und freue mich - wie auch immer - dabei zu sein.


cheerioh,


Niels.
Syndicat

Jetzt kommentieren

Aktuelle Kommentare

  • Niels Dettenbach: ...schade eigentlich, das es PyPerl nicht mehr wirklich gibt. Zwar weiter lesen
  • Alvar Freude: Kannte ich noch nicht, danke für den Hinweis; allerdings ist weiter lesen
  • Ben Sieverts: Ich vermisse noch folgendes Buch auf der List: Effective Perl weiter lesen
  • Alex: Ich schlage einfach mal ganz unverschämt bei diesem Beitrag die weiter lesen
  • Marcel: Oke, danke für den Tipp. Schade natürlich. Wird euer Buch weiter lesen
  • Alvar: Nein, leider ist das noch nicht fertig. :-( Es gibt weiter lesen
  • Marcel : Hallo! gibt es dein Buch zu Perl6 schon? Wo kann weiter lesen
  • air max 2009: Nimm ein Paradigma deiner Wahl (z.b. MVC) und lerne Applikationscode weiter lesen
  • vTasker: Was ist das denn für ein MIST? Der Artikel ist weiter lesen
  • Virenschutz-Test: Das ist ja lustig hihi. Der Admin ist wohl nicht weiter lesen

Über diese Seite

Diese Seite enthält einen einen einzelnen Eintrag von Alvar Freude vom 19.02.08 15:31.

Movable Type Akismet Plugin und Proxies ist der vorherige Eintrag in diesem Blog.

Packaging Tool für umfangreiche Abhängigkeiten ist der nächste Eintrag in diesem Blog.

Aktuelle Einträge finden Sie auf der Startseite, alle Einträge in den Archiven.