Obwohl ich eigentlich kein großer Fan der Magazine aus dem Hause heise bin, kann ich den Artikel Ruf doch mal auf von Moritz Lenz in der aktuellen iX (04/2009) sehr empfehlen. Der Artikel beschreibt die Neuerungen in Perl 6. Ab dieser Version unterstützt Perl endlich auch Parameterlisten für Funktionen (hallelujah!):
# vor Perl 6
sub mysub {
my $foo = shift;
my $bar = shift;
my $foobar = shift;
# ...
}
# Perl 6
sub mysub(Num $foo where { $foo > 0 }, $bar, $foobar) {
# ...
}
Wie im Beispiel zu sehen ist, können Parameter sogar auf bestimmte Typen (wie hier Num) begrenzt und direkt in der Signatur validiert werden (im Beispiel auf eine positive Zahl). Wirklich sehr löblich.
Aber Perl wäre nicht Perl, wenn es nicht wieder etwas Freakiges zu bieten hätte: Aus der Quantenmechanik wurde das Konzept der sogenannten Quantum Superpositions (zu deutsch Superpositionsprinzip) übernommen. Einfach gesagt sagt dieses aus, dass Wellen gleichzeitig mehrere Zustände besitzen können, bis diese in einem definierten Zustand kollabieren. Dieses Prinzip nennt sich in Perl 6 Junctions und erklärt sich am besten durch ein kleines Beispiel:
if ($x == any(2,3,5,7)) {
say "Sorry, but $x is a prime number."
}
Mich erinnert das ganze stark an SQL (WHERE x IN (2,3,5,7)) und ich frage mich, warum erst 2009 jemand auf die Idee kommt, ein solches Sprachkonstrukt in eine gängige Programmier-/Scriptsprache einzubauen. Man könnte jetzt vielleicht meinen, dass das ganze nicht der große Wurf ist, aber wenn man sich das folgende (leicht abgewandelte) Beispiel aus der iX anschaut, dann bemerkt man, wie mächtig diese Funktionalität ist:
sub isprime(Int $n) {
not any(2..$n-1) * any(2..$n-1) == $n;
}
Die Funktion isprime prüft, ob es sich bei $n um eine Primzahl handelt. Und anstatt einen komplizierten Algorithmus abzubilden, wird schlichtweg die offizielle Definition einer Primzahl implementiert:
Eine Zahl ist dann prim, wenn sie nicht das Produkt zweiter Zahlen größer oder gleich 2 ist.
Eine wirklich elegante und leicht verständliche Implementierung (aber vermutlich nicht wirklich performant).
Fazit:
- iX holen und Artikel lesen (in den folgenden zwei Ausgaben wird jeweils noch eine Fortsetzung des Artikels abgedruckt)
- Perl 6 installieren und Spass haben

Letzte Kommentare