Februar 2008 Archive

Vor ein paar Tagen wurde eine neue Version des DBI-Treibers für PostgreSQL freigegeben: 2.1.3 ist die aktuelle DBD::Pg-Version auf dem CPAN.

Im Vergleich zur Version sind laut Changelog nur ein paar Kleinigkeiten dazu gekommen. 2.0 kam vor rund zwei Wochen und bringt einige neue Features mit:

  • Echte Unterstützung für Arrays in PostgreSQL
  • Unterstützung für asynchrone Queries
  • Anpassungen an neuere Postgres-Versionen und Unterstützung neuer Features
  • Diverse Bugfixes

Insbesondere die Unterstützung für Arrays sowie für asynchrone Queries finde ich sehr interessant.

Mit der Array-Unterstützung ist es nun möglich, beim schreibenden Queries auf ein Array-Feld einfach eine Array-Referenz zu übergeben und direkt an die Datenbank weiterzuleiten ohne dieses manuell in einen String zu wandeln. Umgekehrt erhält man auf Perl-Seite beim Lesen eine Array-Referenz anstatt eines flachen Strings.

Mit asynchronen Queries ist es möglich, weiter Perl-Code auszuführen während ein SQL-Query läuft. Damit kann dann nicht nur parallel weitergerechnet werden, der Query kann zur Laufzeit bei Bedarf auch abgebrochen werden. Das ist natürlich insbesondere bei mehreren Prozessoren oder Kernen interessant: Während der eine Kern die nächsten Daten aus der Datenbank holt, kann der andere die letzten Daten aufbereiten. In der DBD-Pg-Dokumentation sind ein paar praktische Beispiele enthalten.

Wer bisher noch kein PostgreSQL einsetzt sollte es sich mal anschauen. Mit der aktuellen Version 8.3 kamen nochmals sehr viele Features hinzu, PostgreSQL ist standardkonform, sicher, kann weit mehr als das häufig eingesetzte MySQL und ist sehr schnell. Bei einem (einfachen) Performance-Test (siehe Seite 19ff) vor rund einem Jahr war es selbst bei sehr einfachen Queries rund 50% schneller als MySQL. Bei Gelegenheit werde ich mal messen, wie sich DBD::Pg 2 gegenüber 1.49 verhält …

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 Plat_Forms Wettbewerb sowie Datenmaterial zu der anschließenden Umfrage zu Web-Programmiersprachen (Ruby, Python, Perl, PHP, Java und .NET ) veröffentlicht. Unter anderem wurden die sehr interessanten Freitexteingaben der Umfrageteilnehmer in einem PDF sowie die Rohdaten der Umfrage als CSV veröffentlicht. Damit stehen nun nochmals Details zu der schon letztens hier zusammengefassten Ergebnisse der Umfrage vor.

  • Die Source-Codes aller neun Lösungen (drei Java, drei Perl und drei PHP) vom Plat_Forms-Wettbewerb
  • Datenmaterial zur Umfrage (PDF mit den Freitexteingaben, CSV-Datei mit den Umfragedaten)
  • Liste aller Publikationen der Software Engineering Research Group

 

Bei einer groben Durchsicht durch die Freitexteingaben sind einige interessante Entdeckungen zu machen. So werden als besondere Stärken von Perl – wie zu erwarten war – häufig das CPAN, die Test-Bibliotheken, der Sprach-Reichtum und die Web-Entwicklungs-Frameworks erwähnt. Wie auch schon bei der Gesamtauswerung der Umfrage schneidet Perl auch hier überdurchschnittlich gut ab Manche Argumente dagegen muten aber eher skurril an: zwei mehrfach aufgetretene Argumente für PHP waren: „das kann ich besser“ oder Entwickler sind billiger.

Deutlich ist insgesamt, dass unter dem Strich doch mehr Umfrageteilnehmer die primäre Sprache besser bewerten als die sekundäre – was natürlich auch zu erwarten war, denn in der primären Sprache haben die meisten Entwickler eben doch mehr Erfahrung.

 Bei Gelegenheit werde ich die nächsten Tage vielleicht mal eine ausführlichere Zusammenfassung schreiben.

Gerade bei den Perl-Nachrichten gelesen:

Best Practical hat ein neues Packaging Tool für Perl veröffentlicht: Shipwright.

Mit diesem Tool können Anwendungen mit riesigen Abhängigkeiten schnell installiert werden, da sich die Installation auf eine Kommandozeile reduziert.

Dabei ist es auch egal, ob die Abhängigkeiten CPAN-Module, sonstige Libraries oder Module in einem SVN/SVK-Repository sind.

 

Mir scheint, dass Best Practical Shipwright zum leichteren Verteilen ihres Web-Entwicklungs-Frameworks Jifty entwickelt haben, dass ja auch haufenweise Abhängigkeiten hat. Wenn es damit relativ einfach möglich wird solche großen Projekte sauber und zuverlässig zu verteilen, so dass auch Nicht-Perl-Freaks das schnell hinkriegen, dann ist das sicherlich sehr gut.

Leider ist die Dokumentation noch etwas mager, auch das Shipwright-Tutorial ist sehr knapp gehalten. Aber, und darum landet es in der Kategorie „Notizen“, ich werde mir das bei Gelegenheit mal näher anschauen.

Und gleich noch ein Update:
Best Practical berichtet von einem kleinen Test, demnach kann man umfangreiche Installationen mit einem Kommandozeilenaufruf erledigen. Die Installation erfolgt in ein temporäres Verzeichnis und die erstellte Binärdistribution lässt sich in einen beliebigen Ordner verschieben. (via Thomas Fahle)

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:

 

MT-Akismet, das Akismet-Plugin für Movable Type, unterstützt in Version 1.1 von Hause aus keinen Proxy für die nötigen Zugriffe zum Akismet-Server. Der folgende kleine Patch, angewandt auf extlib/MT/Akismet.pm, behebt das Problem:

--- orig-Akismet.pm	2008-02-17 23:57:41.000000000 +0100
+++ Akismet.pm	2008-02-18 00:05:00.000000000 +0100
@@ -58,6 +58,9 @@
     my $class = shift;
     return $AGENT if $AGENT;
     $AGENT = LWP::UserAgent->new;
+    if (my $proxy = MT::ConfigMgr->instance->HTTPProxy) {
+        $AGENT->proxy('http', $proxy);
+    }
     $AGENT->agent(join '/', $class, $class->VERSION);
     $AGENT->timeout(10);
     $AGENT;

Mit dem Patch  ließt das Plugin aus der passenden Konfigurations-Direktive HTTPProxy in mt-config.cgi die Angaben für den Proxy und setzt diese.

Den Patch habe ich auch an Timothy Appnel, den Autor des Plugins, geschickt, so dass er hoffentlich in der nächsten Version enthalten ist.

Akismet ist ein Online-Service zur Spam-Bekämpfung, das MT-Akismet ist das offizielle Plugin für Movable Type. Bis auf dieses Problem war die Installation ansonsten problemlos ;-)

Heute Morgen hat Marcus Holland-Moritz beim Perl-Workshop einen Überblick über die
mhx-xs.jpg XS-Programmierung, also die Einbindung von C/C++-Code und Shared Libraries, gegeben. Vielleicht sollte ich doch mal wieder meine C -Kenntnisse auskramen und irgendwas mit XS machen …

Es war auf jeden Fall ein lehrreicher Vortrag und ein guter Überblick über XS, ohne dass ich hier mal auf die Details eingehe. Wer nicht in Erlangen ist findet die Materialien auf Marcus' Webserver. Die Datei „xstut.tgp“ enthält die Präsentation, ist aber mit keinem handelsüblichen Programm als Präsentation darstellbar, lässt sich aber mit jedem beliebigen Texteditor lesen (POD-ähnlich).

Einen interessanten Nebeneffekt bezüglich der Performance von Strings, die in einer Schleife immer wieder vergrößert werden, hat er auch erklärt – dazu werde ich aber noch ein paar Tests machen und das demnächst hier besprechen.
Passend zum 10. Deutschen Perl-Workshop in Erlangen startet nun endlich mein Perl-Blog. In Zukunft werden hier Beiträge rund um Perl erscheinen, aber sicherlich auch mit dem einen oder anderen Ausflug in andere Welten wie SQL/PostgreSQL.

Das Blog läuft mit Movable Type (derzeit 4.1), das Design ist zwar noch ein Movable Type Standard-Layout, aber irgendwann werde ich das noch ein wenig aufboren (dynamiche Breiten, anständige Optik, Synatx-Highlighting und so weiter) …

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 dieses Archiv

Diese Seite enthält alle Einträge von Perl-Blog von neu nach alt.

März 2008 ist das nächste Archiv.

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