Perl 6

Die Zukunft des Programmierens

Perl 6 Design

Perl 6 wurde nicht "einfach so" entworfen, sondern mit einigen Zielen im Hinterkopf

Einfachheit

Eine einfache Lösung ist immer einer komplizierten Lösung vorzuziehen. Dabei bezieht sich "einfach" immer auf die Position des Benutzers, nicht darauf, dass die Sprache einfach zu implementieren sein soll.

Über Perl 5 kennt man schon den verwandten Spruch "Simple Things Should be Easy, Hard Things Should be Possible", der auch weiterhin für Perl 6 gilt.

Huffman-Kodierung

Der Huffman-Code wird in der Informationsübertragung benutzt, um Daten zu komprimieren. Dabei bekommen häufig benutzte Zahlen eine kurze Code-Nummer, selten benutzte eine lange.

Analog dazu soll in Perl 6 jedes häufig benutzte Paradigma möglichst kurz sein, während selten benutzte (oder solche, von deren Benutzung man abrät) längere Namen bekommen. So ist zum Beispiel der Aufruf einer Methode mit dem Punkt . nur noch ein Zeichen lang (zwei in Perl 5), der nicht allzu häufig benutzte Name des aktuell ausgeführten Scripts, der in Perl 5 noch $0 heißt, ist jetzt in der längeren Variable $*PROGRAM_NAME verfügbar.

Erweiterbarkeit

Die Erfahrung hat gezeigt, dass noch keine bisherige Programmiersprache optimal war - weder von der Syntax noch von der Semantik her.

Daher ist Perl 6 so entworfen, dass die Sprache leicht änder- und erweiterbar ist, in allen Aspekten (Syntax, Objektmodell, Typensystem etc.).

Desweiteren wird darauf geachtet, dass der Programmier sagen muss, mit welcher Version von Perl er arbeitet, damit das Programm auch dann noch funktionieren wird, wenn inkompatible Änderungen an der Sprache vorgenommen werden (die dann natürlich eine andere Version darstellen).

Prominenz und Timtowtdi

In natürlichen Sprachen kann man häufig die Satzstellung verändern, um einen bestimmten Aspekt eines Satzes zu betonen. Die gleiche Ausdrucksstärke bietet auch Perl 6 - durch die Wahl einer von mehreren möglichen Lösungen werden dem Programmierer stilistische Gestaltungsmöglichkeiten gegeben.

in Perl heißt dieses Prinzip "Timtowtdi", gesprochen "Timtaudi", und steht für "There is more than one way to do it", oder auf Deutsch "Viele Wege führen zum Ziel".

Als Beispiel kann man in Perl 6 zu weiten teilen Objektorientiert programmieren, aber auch prozedural oder sogar funktional - je nach dem, was einem lieber ist.

Anders als in Perl 5 wurde aber stärker darauf geachtet, dem Programmierer einen Standardweg als Lösung anzubieten.

Kontextsensitivität

In natürlichen Sprachen haben viele Worte mehrere Bedeutungen, und ihr Kontext entscheidet darüber, welche Bedeutung wir als die "richtige" ansehen.

Perl hat dieses Konzept auch: Die Operatoren, oder allgemeiner die Verben, setzen ihre Objekte in einen bestimmten Kontext, und die Objekte haben in den verschiedenen Kontexten verschiedene definierte Verhaltensweisen. Ein Beispiel ist das Array, das im numerischen Kontext die Anzahl der Elemente zurückgibt.

"Do What I Mean", DWIM

Wer Deutsch als Muttersprache hat, kann intuitiv beurteilen, ob ein deutscher Satz korrekt geformt ist, selbst wenn er keine grammatikalischen Regeln zitieren kann, die dieser Satz eventuell verletzt.

Diesem Vorbild entsprechend ist auch Perl 6 so entwickelt worden, dass das Verhalten eines Konstrukts so häufig wie möglich dem entspricht, was der Leser intuitiv erwartet.

Ähnliches und Unterschiedliches

Dinge, die ähnlich sind, sollten auch ähnliche Strukturen haben. So sieht die Vererbung von Grammatiken genauso aus, wie die Vererbung von Klassen.

Dinge, die unterschiedlich sind, sollten auch unterschiedlich aussehen. In Perl 5 wurde z.B. eval für zwei Zwecke verwendet: zum einen um Strings als Programmcode zu interpretieren und auszuführen, und zum anderen um Exceptions abzufangen. Da dies völlig unterschiedliche Zwecke sind, sehen sie in Perl 6 auch anders aus (die zweite Bedeutung wird in Perl 6 mit try { ... } erreicht).

Features ausleihen

So wie natürliche Sprachen Wörter aus anderen Sprachen leihen, und manchmal auch grammatikalische Konstrukte und Redewendungen (wie z.B. "Sinn machen", das dem Englischen "to make sense" entliehen ist), so sind sich auch die Designer von Perl nicht zu schade, sich Features von anderen Programmiersprachen abzuschauen, und sie in Perl zu integrieren.

Perl gets your Job done

Ungeachtet aller Prinzipien ist Perl immer noch vor allem dazu da, Probleme zu lösen - und wird es auch immer bleiben.

Deshalb ist das wichtigste am Sprachdesign von Perl 6, dass es dem Programmierer möglichst viele Sorgen abnimmt, und dass sich der Programmierer möglichst wenig Gedanken um Trivialitäten machen muss.