Perl 6 - Die Zukunft des Programmierens
Wilkommen auf perl-6.de, der deutschsprachigen Resource für Perl6-Programmierer.
Was ist Perl 6?
Perl 6 ist die sechste Version der bekannten und verbreiteten Programmiersprache Perl, und zur Zeit noch in der Entwicklung.
Perl 6 hat viele tolle Features (oder wird sie haben, wenn es fertig ist):
- Regexes und Grammatiken, die mächtigen Nachfolger von Regular Expressions, erlauben das automatische Parsen mit kontextfreien Sprachen.
- Ein ausgefeiltes Objektmodell mit Mehrfachvererbung, Rollen, Darstellungspolymorphie und vielem mehr
- Einfache Interaktion mit anderen Programmiersprachen
- Einfache Handhabung von Unicode-Strings auf Grapheme-Ebene.
- Junctions, also Überlagerung verschiedener Werte in einer Variablen.
- Einfach zu lernen, da man auch mit einer Teilmenge der Sprache schon sehr weit kommt.
- Viele Möglichkeiten, Code gleichzeitig auszuführen: STM (Software Transactional Memory), Threads, Events und Autoparallelisierung
Status
Die Offizielle Spezifikation für Perl 6, im Jargon "Synopsis" genannt, ist bereits für den Hauptteil der Sprache recht vollständig, einige Features wie Threading sind noch nicht spezifiziert.
Larry Wall sagte zu dem Fortschritt der Spezifikation "we're done with the first 80%, and well into the second 80%" ("Wir sind mit den ersten 80% fertig, und sind bei den zweiten 80% gut dabei").
Perl 6 ist eine Sprachspezifikation, und hoffentlich wird es mehrere Compiler oder Interpreter dafür geben. Innerhalb der Perl-Community gilt Parrot als erfolgsversprechendes Konzept um Perl 6 zu implementieren. Parrot ist eine virtuelle Maschine, die für dynamische Programmiersprachen wie Perl 6 entworfen wurde. Darauf aufbauend soll ein Compiler namens Rakudo Perl 6 nach Parrot Bytecode compilieren. Rakudo wird sehr aktiv entwickelt, und hat eine gesunde Community.
Pugsist ein in Haskell geschriebenen Perl 6-Compiler, der die am weitesten fortgeschrittene Perl 6-Implementierung ist, jedoch liegt die Entwicklung im Moment brach.
Es gibt noch keinen Release-Termin für Perl 6, nur einen Running Gag unter den Entwicklern: Perl 6 kommt an Weihnachten heraus, denn wenn es erstmal fertig ist, ist jeder Tag Weihnachten.
Wenn man doch einmal eine ernst gemeinte Auskunft bekommt, lautet die meistens "vermutlich irgendwann nächstes Jahr ... oder später", also 2010 oder 2011. Von Rakudo wird es im April 2010 "nützliches und benutzbares" Release geben, das allerdings noch nicht die vollständige Spezifikation umsetzt.
Beispiel
Das folgende kleine Programm liest eine Datei (hier: sich selbst) ein und überprüft, ob die Klammern in diesem Programm balanciert sind, also ob sie korrekt verschachtelt sind.
use v6; my $fn = $*PROGRAM_NAME; my $file = open($fn) err die "Can't read file '$fn': $!"; my %braces = '(' => ')', '{' => '}', '[' => ']'; my @stack; for $file.lines -> $line { for $line.comb(/ <[()\[\]{}]> /) -> $match { if %braces{$match} { # öffnende Klammer gefunden push @stack, ~$match; } else { # schliessende Klammer gefunden my $expected = %braces{@stack.pop}; if $expected ne $match { die qq{File "$fn" is not balanced: expected "$expected"}, qq{got "$match"}; } } } } $file.close; if @stack { say "File $fn is not balanced, more opening braces than closing ones"; } else { say "File $fn is balanced"; }
Über den Autor
Moritz Lenz studiert Physik mit Nebenfach Informatik in Würzburg, ist Perl 6-Entwickler (v.a. Testcases, Rakudo-Entwicklung und Infrastruktur wie IRC logs und evalbot) und liebt Perls Möglichkeit, mit möglichst wenigen Einschränkungen programmieren zu können.