Die Zukunft von Perl

Perl scheint etwas aus der Mode gekommen zu sein. Die Entwicklung der Skriptsprache steht jedoch keineswegs still: Sowohl an dem aktuellen Perl 5 als auch an dem neuen Perl 6 wird stetig gearbeitet.

In Pocket speichern vorlesen Druckansicht
Lesezeit: 13 Min.
Von
  • Susanne Schmidt
Inhaltsverzeichnis

Perls aktueller Ruf ist vergleichbar mit ein paar umgehängten Mammutfellen der frühen Bronzezeit: Egal, wie praktisch und kuschelig warm diese Mode auch gewesen sein mag, wirklich hip sieht Perl zurzeit nicht aus und auf einer Ruby-Party ist damit definitiv kein Blumentopf zu gewinnen. Auch aus den Schlagzeilen ist Perl weitgehend verschwunden, obwohl weiterhin viele Firmen Perl still und heimlich einsetzen und weiter pflegen und nicht im Traum daran denken, ihr System zu tauschen.

Larry Wall erfand Perl seinerzeit als "glue language for Unix", wie er es selbst ausdrückt. Mit der Zeit wurde Perl jedoch auf nahezu alle Betriebssysteme portiert und mehr und mehr zu einer universellen Programmiersprache fortentwickelt: Vor einem Jahrzehnt stand das P in LAMP noch für in Perl 5 geschriebene CGI-Skripte. Diese Veränderungen haben der Sprache neben einigen Kuriositäten eine Syntax beschert, die "The Register" dazu veranlasste, sie als die Sprache zu bezeichnen, in der man nur mit Satzzeichen programmieren kann. Allerdings steckt auch eine unglaublich flexible – wenn auch vielleicht nicht wunderschöne – Programmiersprache darin.

Der Perl-Entwickler Piers Cawley spricht in seinem aktuellen Artikel Healthcheck: Perl von zwei Seelen, die in der Brust von Perl schlagen: Da ist der schnelle Einweg-Einzeiler zur Systemadministration (was Perl mit einigen handlichen Kommandozeilen-Optionen wie beispielsweise -n fördert), und dann gibt es da das "gehobenere" Perl, das man verwendet, um Code zu schreiben, der hinterher auch wartbar bleibt.

Cawley glaubt, dass es genau diese gespaltene Persönlichkeit von Perl ist, die die Programmierer vor der Sprache zurückschrecken lässt. Die meisten sehen nur das Zeilenrauschen der Einzeiler-Fraktion, die Spielchen des Obfuscated Perl Contest (den es allerdings für viele Sprachen gibt), oder aber den grausamen CGI-Code, der während der Dotcom-Blase fabriziert wurde.

Dabei, so Cawley, gibt es noch eine andere Facette von Perl: Das Perl, mit dem seit Jahr und Tag die Internet Movie Database läuft, mit dem heise online betrieben wird, Slashdot dem Leser-Ansturm standhält und die BBC Nachrichten liefert. Das Perl, in dem ISPs ihre Domain-Robots schreiben oder das Perl, das Tag für Tag und Jahr für Jahr Logfiles parst. Es gibt die Perl-Community, die es Anfängern und Einsteigern wirklich erlaubt, Anfänger und Einsteiger zu sein und eigene Erfahrungen zu sammeln, und es gibt eine Perl-Kultur, die reihenweise Workshops und Konferenzen und Cafehaus-Treffen veranstaltet und in der der Wegwerf-Einzeiler genauso erlaubt und gewollt ist wie das gehobenere, bessere Perl.

In den letzten Jahren ist es leider auch um spannende Perlbücher – einst an jeder Ecke schon an Kleinkinder vertickt und von jedem Verlag publiziert – stiller geworden. Exzellente und herausragend gut geschriebene Bücher sind eine der Stärken der Perl-Kultur und der Perl-Szene. Mark Jason Dominus' "Higher Order Perl" (jetzt auch online zum Herunterladen bei http://hop.perl.plover.com/book/) gibt beispielsweise inspirierende Einblicke in die funktionalen Fähigkeiten von Perl. Viele Perl-Bücher wie Damian Conways Handbuch zu OO-Perl sind genauso ein Muss wie "Extending and Embedding Perl" von Jenness/Cozens. Jeffrey Friedls grossartiges Handbuch über Reguläre Ausdrücke ("Mastering Regular Expressions" – inzwischen in der 3. Auflage) war seinerzeit die optimale Ergänzung zu der Vorreiterrolle, die Perl beim Vorantreiben von Regex-Features in viele Programmiersprachen eingenommen hat.

Auch "perldoc" und "perldoc -f" gehören zu den wirklich handlichen Dingen von Perl und alles, was in den mitgelieferten Manpages von Perl steht, lässt an Umfang und Beispielcode beinahe nichts zu wünschen übrig. Es sieht bisher nicht so aus, als würde diese Kultur, ebensowenig wie das Comprehensive Perl Archive Network CPAN, mit Perl 6 über Bord geworfen werden.

Auch wenn Perl 6 noch nicht offiziell erschienen ist, hat Perl 5 nicht stillgestanden. Von der Weiterentwicklung des Unicode-Supports bis zur Implementierung einiger Features von Perl 6 wie das Zuckerguss-print "say", das gleich einen Zeilenumbruch anhängt, oder dem Switch-Statement "given - when" wird auch Perl 5 weiter verbessert und auch verschnellert. Dabei ist Perl nie eine langsame Scriptsprache gewesen. Dass Perl ein Geschwindigkeitsproblem hätte, ist das letzte Mal durch Red Hats Paketfehler in die Schlagzeilen geraten, weil das Distributionspaket einen "bless"-Fehler enthielt und damit auf nicht gerade selten eingesetzten Red-Hat-Systemen gewaltig lahmte.

Was auch immer man von eher esoterischen Regex-Features halten mag, Textprocessing ist seit jeher eine Stärke von Perl. Somit ist es mehr als legitim, genau dort Verbesserungen und Ergänzungen vorzunehmen. (Die Regular Expressions von Perl 6 sind im Übrigen sogar noch üppiger und umfangreicher und dazu noch mit "Grammatiken" veredelt.) Kurz vor Weihnachten sind außerdem über 20 Jahre Perl-Sourcecode in GIT gewandert und haben das alte Versionierungssystem abgelöst. Auch Perl für Windows hat einige Verbesserungen und Fortschritte gesehen.

Der Luxus, den CPAN bietet, ist es denn auch, was viele Leute weiterhin an Perl schätzen, weil damit der Erweiterbarkeit der Sprache kaum Grenzen gesetzt sind. Lästerzungen, die ihre Hausaufgaben nicht gemacht haben, bemängeln gern, dass Perl selbst für das Web heute nicht mehr Sprache der Wahl sei – weil CGI.pm so hoffnungslos veraltet erscheint. Dass in zunehmend unsicheren Web-Zeiten der Perl-Schalter "-T" eine sehr bequeme Sache zur Selbstdisziplinierung in der Webprogrammierung ist oder dass es inzwischen diverse Perl-Frameworks im MVC-Stil, mit RoR-Geschmack, in klein, groß, mit Dependencies und ohne gibt, scheinen einige Kritiker geflissentlich zu ignorieren. (Und so umfangreich muss Otto Normalunternehmers Webpräsenz erstmal werden, dass ihm nicht mehr reicht, was der Internet Movie Database genügt.)

Weiter: Perl 6, Der Papagei und das Kamel

Jenseits vom mehr als üppigem Datenbank-Support dank DBI und seinen verfügbaren Backends gibt es mit Catalyst, Mojolicious, Jifty oder WebGUI einiges zur Auswahl. Noch viel mehr findet man im Internet unter dem Stichwort Perl 5 Web-Frameworks. "There is more than one way to do it" war und ist immer Perls Motto und hat eine ganze Kultur geprägt, die man entweder liebt – oder aber hasst und zu Python wechselt.

Perl 5 wird außerdem gerne vorgeworfen, dass es keine richtige Objektorientierung beherrscht, was man von einer modernen, state-of-the-art Programmiersprache heute erwartet. Der bless-Hash-Referenz-Pfeil-Stil gehört auch nicht zu meinen Favoriten in Perl. Wer aber OOP in Perl will, kann heute einfach "Moose" installieren und damit wesentlich flauschiger objektorientiertes Perl schreiben. Wer es gar nicht abwarten kann: Perl 6 kann richtiges, ehrliches OOP für echte Männer mit "class" und "method" und Accessoren und allem, was das Herz begehrt. Der "." wird auch nicht mehr zum Zusammenfügen von Zeichenketten verwendet, sondern zum Methodenaufruf am Objekt. Als Bindeglied zwischen Zeichenketten dient in Perl 6 die Tilde, die bereits vom Match-Operator ~= bekannt ist.

Böse Zungen lästern gern über die Beinahe-Dekade, die "das neue, bessere, schönere Perl" jetzt in der Mache ist, und nicht ganz zu Unrecht bemägeln Kritiker, dass es seit der Ankündigung von Perl 6 im Jahr 2000 bis heute kein handliches Distributionspaket "Perl6" gibt. Für das Erscheinen von Perl 6 gibt es aber längst mehr als nur Silberstreifen am Horizont. Die Perl Foundation hat eine Spende von 200.000 US-Dollar erhalten und Patrick Michaud arbeitet wie ein Uhrwerk an Rakudo – dem Perl 6, das auf der Parrot Virtual Machine basiert.

Perl 6 ist zunächst eine Referenz – jeder kann hingehen und sich sein eigenes Perl 6 implementieren, was auch genau so passiert ist. Es gibt ein eigenständiges Perl 6 "Pugs" als Standalone-Interpreter von Audrey Tang, die frühzeitig Pugs in Haskell implementiert hatte, und das Rakudo-Perl 6, inzwischen in einem eigenständigen Git-Repository zu finden. Pugs war einige Zeit der Vorreiter in der Implementierung von Perl 6. Zur Zeit wartet Tang aber auf eine neue Haskell-Version und will dann mit der Entwicklung weitermachen. Herunterladen und benutzen kann man Pugs aber weiterhin.

Es mag auch bis zum ersten "richtigen" Perl 6 sicher noch bis Ende dieses Jahres, vielleicht sogar bis 2010 dauern, aber Parrot auf der anderen Seite wird zur Zeit pünktlich Mitte eines jeden Monats veröffentlicht und soll im März in der Version 1.0 erscheinen. Wer sich ein Rakudo-Perl bauen möchte: Parrot-Tarball herunterladen, perl Makefile.PL, make, make install und dann ins "languages" Verzeichnis wechseln. Dort zieht man sich das Rakudo aus dem Github (git clone git://github.com/rakudo/rakudo.git) hinein und baut sich ein Perl6 mit perl Configure.pl; make perl6. Das Binary kann man sich dann nach /usr/local/bin kopieren. Auch wenn bisher nur wenige Module vorhanden sind, kann man bereits eigene schreiben und SQLite benutzen. Zur Zeit enthält Rakudos @*INC nur ".", interpretiert aber Angaben in PERL6LIB und versteht natürlich auch das übliche

@*INC.push("/mein/Modulepfad/");

mit dem man sich schonmal SQLite und eigene Module ergänzen kann.

Vielen Leuten ist vermutlich nicht klar, was es mit dem Gewese um Perl 6 im Zusammenhang mit Parrot genau auf sich hat, scheint doch Parrot einfach irgendeine neue virtuelle Maschine zu sein, auf der man angeblich "irgendwann" mal alle möglichen interpretierten Sprachen laufen lassen kann. Der Kick an Parrot ist letztendlich (für Perlfreunde zumindest), dass Parrot mit "PIR" eine Art polierten Assembler für Normalsterbliche mitliefert, der es – im Vergleich zu dem traditionellen XS-Interface – extrem einfach und elegant macht, später alle möglichen Bibliotheken in Perl (und in allen anderen Parrot-unterstützten Sprachen) zu verpacken und zu verwenden.

Wer Genaueres lernen möchte, sollte sich das Beispiel des kleinen SQLite-Wrappers im Parrot-Verzeichnis genauer anschauen. Es liefert ein SQLite.pm mit, das auch in Perl 6 einfach mit "use SQLite;" geladen wird. Eine von Perls Schokoladenseiten war und ist CPAN und die riesige Menge sehr bequem und (meistens) sehr einfach zu installierender Perlmodule, die alles Denkbare in Wrapper verpacken und modularisieren. Diese Flexibilität von Perl wird mit Parrots PIR noch einfacher zu machen sein und hoffentlich viele Fans finden. Auf den ersten Blick jedenfalls erscheint ein Modul/Wrapper mit PIR wesentlich übersichtlicher als einiges an XS-Code.

"ABER WO IST PERL6?!" oder "Aber es gibt doch noch gar nichts über Perl 6" werden jetzt die Pessimisten einwerfen. Glücklicherweise ist vor ein paar Monaten eine Schar unermüdlicher Perl-Freunde angetreten und hat das November-Wiki –komplett in Perl 6 – geschrieben.

Eine Liste mit den Features, die in Perl 6 bereits funktionieren und mit denen, die noch nicht oder nur fehlerhaft klappen, findet sich bei der Perl Foundation. Die im Parrot-Tree vorhandene Beispielimplementation von SQLite sollte als Beispiel dienen, wie man bereits jetzt mit Parrot und Rakudo anfangen kann, die mehr als 20000 CPAN-Module zu aktualisieren. Wer Dokumentation zu der neuen Perl-Version braucht, dem hilft ein Blick in Moritz Lenz' Blog-Serie über Perl 6, die erfahrenen Perl-Leuten vermutlich für die ersten Projekte reichen dürfte.

O'Reillys Perl.com hat diverse kleinere Artikel über Perl 6 veröffentlicht, die man sich als Beispiel-Code heranziehen kann. Einige Kochbuch-artige Code-Schnipsel kann man auch im Github begutachten oder im Pugs-Repository.

Alle Leute, die Perl schon immer gehasst haben, werden Perl 6 wahrscheinlich auch nicht viel lieber mögen: Die Sigils und Twigils gibt es weiterhin und Perl bleibt definitiv sehr perliges Perl und wer kein OO machen möchte, kann wie gewohnt mit sub und ganz ohne Klassen und Methoden hantieren. Auch weiterhin gibt es nicht den allein seligmachenden Weg X zum Problem Y.

Wer mal wieder Perl-Atmosphäre schnuppern möchte, kann vom 25.02. bis zum 27.02 in Frankfurt am Main am deutschen Perl-Workshop teilnehmen, der 2009 zum 11. Mal stattfindet.

Siehe zu Perl 6 auch: (akl)