Perl 6

Die Zukunft des Programmierens

Perl 6 - Die Zukunft des Programmierens

Wilkommen auf perl-6.de, der deutschsprachigen Resource für Perl 6-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. Zur zweit werden zwei Perl 6 Compiler aktiv entwickelt: Rakudo und Niecza.

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.

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 ist Physiker und Programmierer, und ist aktiv and er Perl 6-Entwicklung beteiligt.