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.