WikiDer > Perle 6
Perle 6 | ||||
| Paradigma | Multiparadigma | |||
| erschien | in Entwicklung seit Juli 2000 | |||
| Entworfen von | Larry Wall | |||
| Typensystem | dynamisch und statisch | |||
| Beeinflusst von | Perl 5, Haskell, Smalltalk | |||
| Betriebssystem | Multiplattform | |||
| Lizenz | GNU General Public License, Künstlerische Lizenz | |||
| Webseite | http://dev.perl.org/perl6/ | |||
| ||||
Raku (Perle 6) ist eine Version von perl, die seit dem Jahr 2000 besteht. Perl 6 unterscheidet sich in einigen wichtigen Punkten von früheren Versionen von Perl und wird nicht kompatibel mit früheren Versionen (allerdings ist ein Perl 5-Kompatibilitätsmodus als Teil von Perl 6 angegeben[1]).
Es wird an einer Reihe von Implementierungen von Perl 6 gearbeitet, hauptsächlich Rakudo Perli und Möpse. Rakudo Perl basiert auf Papagei, Möpse ist geschrieben in Haskell.
Geschichte
Perl 6 wurde erstmals am 19. Juli 2000 angekündigt[2], gehalten in diesem Jahr Perl-Konferenz. Dann haben sie eine Serie gestartet Anfrage für Kommentarewo jeder Ideen einbringen kann.[3]Larry Wall (Schöpfer und Entwickler von Perl) hat alle Anfragen geprüft und dann einige geschrieben Apokalypsen (Niederländisch: Offenbarungen), von denen der erste am 2. April 2001 und der letzte am 13. April 2004 erschienen ist.[4]
Da diese Apokalypsen im Verlauf des Prozesses einem ständigen Wandel unterworfen waren, wurde eine Reihe von Synopsen (Niederländisch: Zusammenfassungen) wurde mit einer Zusammenfassung des Inhalts der Apokalypsen und ihrer nachfolgenden Änderungen veröffentlicht. Inzwischen ist die Synopsen in den Vordergrund treten und alle relevanten aktuellen Informationen zu den offiziellen Perl 6-Spezifikationen enthalten.[5]
Es gibt auch eine Serie Exegese (Niederländisch: Erklärungen), in dem Damian Conway (ein Perl-Entwickler) den Inhalt jeder Apokalypse erklärt und die praktischen Auswirkungen des Inhalts für den Programmierer skizziert.[6]
Gestartet im Jahr 2005 Audrey Tang Entwicklung von Möpsen. Pugs ist eine Implementierung der Perl 6-Spezifikation in Haskell. Abgesehen davon, dass Pugs zu diesem Zeitpunkt bereits verwendet werden kann, um Perl 6-Code zu interpretieren oder zu kompilieren, wird Pugs auch Bootstrapping verwendet werden. Dies bedeutet, dass Pugs verwendet wird, um einen Perl 6-Compiler in Perl 6 zu implementieren. Wenn das erledigt ist, kann Perl 6 auf eigenen Füßen stehen und sich selbst kompilieren (der Fachausdruck dafür ist selbst gehostet).
Papagei
Ein wichtiger Teil der Perl 6-Plattform ist Papagei, ein virtuelle Maschine. Diese virtuelle Maschine führt die gleiche Funktion aus wie die Java virtuelle Maschine, sondern ist auf die Ausführung dynamischer Programmiersprachen und insbesondere Perl 6 ausgerichtet.
Parrot ist eine virtuelle Maschine basierend auf registriert (im Gegensatz zur Java Virtual Machine und Microsofts .GERADECommon Language Runtime virtuelle Maschine, die beides hat stapelorientiert sein). Papageienfutter Byte-Code von der von einem anderen Programm produzierten; Zum Beispiel a Monteur der Parrot-Assembly-Code in Parrot-Bytecode übersetzt oder einen Compiler, der eine höhere Programmiersprache in Parrot-Bytecode kompiliert. Es gibt bereits mehrere Compiler, die Perl 6 in Parrot-Bytecode kompilieren.
Es wird gearbeitet[7] zu einigen Compilern, die andere Sprachen unterstützen, einschließlich Python und planen, in Parrot-Bytecode konvertieren. Auf diese Weise ist es möglich, Anwendungen in verschiedenen Sprachen zu entwickeln, die gleich laufen Laufzeitumgebung.
Änderungen
Spezifikation
Perl (bis Version 5) wurde nie basierend auf einer Spezifikation entwickelt: wie der Perl-Interpreter ein Programm ausführte a ist die spezifikation. Das heißt, der Quellcode gibt bei Zweifeln über das Verhalten von Perl die endgültige Antwort, während Perl 6 auf Basis einer expliziten Spezifikation entwickelt wurde (wie zum Beispiel bei Java der Fall ist). Das macht es einfacher, mehrere Implementierungen von Perl zu erstellen. Es bedeutet auch, dass Programmierer nicht auf Quellcode angewiesen sind, um herauszufinden, wie sich bestimmte Perl-Konstrukte verhalten (sollten).
Statische Eingabe
Perl 6 weiß statisches Tippen: Der Programmierer kann angeben, welche Art von Daten eine Variable enthalten kann (darf). Dies führt zu weniger Programmierfehlern, besser lesbaren Programmen und ermöglicht dem Compiler eine Reihe von Optimierungen. Aber im Gegensatz zu statisch typisierten Sprachen, wie z C und Java erlaubt Perl 6 dem Programmierer zu wählen, ob er statische und dynamische Typisierung mischen möchte.
Angabe von Unterprogrammparametern
Perl 6 unterstützt formale Parameter für Unterprogramme. In Perl 5 ist es nicht möglich, die Parameter anzugeben, mit denen eine Subroutine aufgerufen werden kann (die sog. Signatur eingeben) spezifizieren.[8]
Feste Symbole für Variablen
In Perl 5 ist das Symbol, das eine Variable darstellt ($, @, %, etc.) hängt davon ab, wie eine Variable verwendet wird. Zum Beispiel: das dritte Element einer Liste @ein, wird notiert als $a[2].In Perl 6 ist dies nicht mehr der Fall: das dritte Element von list @ein wird notiert als @a[2].
Objekt orientierte Programmierung
Perl 6 bietet die Möglichkeit, Klassen mit a . definiert werden Klasse Stichwort. Das Objektmodell von Klassen in Perl 6 bietet eine Reihe neuer Funktionen:[9]
Anstelle einer Pfeil ($objekt->$attr), Perl 6 verwendet a Punkt um Attribute von Objekten zu notieren ($object.$attr), wie es in vielen anderen Sprachen üblich ist.
Rollen
Rollen (Niederländisch: rollen) in Perl 6 sind ähnlich wie Schnittstellen in Java und mischt in Rubin. Sie sind eine Art abstrakte Klassen verwendet, um zusätzliches Klassenverhalten anzugeben. Der Unterschied zwischen Klassen (abstrakt oder konkret) und Rollen besteht darin, dass Klassen instanziiert werden können und Rollen nicht. In Perl 6 ist es sogar möglich, einem Objekt eine Rolle hinzuzufügen und damit zusätzliches Verhalten dieses Objekts festzulegen.
Reguläre Ausdrücke und Regeln
In Perl 6-Formen Regeln ein rahmen für Reguläre Ausdrücke, Musterabgleich und Parsing im Allgemeinen. Da die Mustervergleichsfunktionen von Perl über formale reguläre Ausdrücke hinausgehen, ist Perl 6 Regexes erwähnt. Dieses Regexes konstituieren Super-Set der regulären Ausdrücke von Perl 5.[10]
Es Regeln Framework von Perl 6 ermöglicht es dem Programmierer, Grammatiken zu spezifizieren und zu testen analysieren. Dies erweitert die Möglichkeiten von Perl, mit Textdaten zu arbeiten, erheblich. Die regulären Ausdrücke von Perl 5 ermöglichen es bereits, jede lexikalische Konstruktion zu erkennen, aber mit dem Regeln von Perl 6 ist es auch möglich, grammatikalische Konstruktionen in Perl selbst anzugeben und zu verwenden.
Syntax
Eine Reihe von Perl 5-Notationen wurden in Perl 6 angepasst. Zum Beispiel die Klammern in Kontrollstrukturen (wie Schleifen und bedingte Anweisungen) nicht mehr erforderlich:
wennist wahr(){zum@array{drucken$_;}}Das Komma-Operator ist in Perl 6 a Listenkonstruktor, wodurch die Notwendigkeit von Klammern um Listen entfällt:
@aufführen=1,2,3,4;Faule Bewertung
Perl 6 stellt vor faule Bewertung (Faule Bewertung) von Listen. Faule Bewertung ist einigen bekannt funktionale Programmiersprachen (wie Haskell) und bedeutet, dass Ausdrücke erst dann ausgewertet werden, wenn ihr Ergebnis benötigt wird. Dadurch ist es beispielsweise möglich, mit unendlichen Listen zu arbeiten.
Das folgende Perl 6-Fragment verweist auf die Variable @aufführen füge die (unendliche) Liste aller positiven ganzen Zahlen hinzu und drucke ihr drittes Element. Obwohl diese Liste endlos ist, hängt das Programm nicht, danke faule Bewertung.
@aufführen=0..Die Info;drucken@aufführen[2];Und mehr
Einige andere neue Funktionen in Perl 6:
- Die Verwendung von Kreuzungen. Kreuzungen sein Überlagerungen von mehreren Werten, die sich wie ein einzelner Wert verhalten.[11]
- Makros. Makros in Perl 6 sind Unterroutinen, die zum Zeitpunkt ihrer Analyse ausgeführt werden, d. h. zur Kompilierzeit.[12]
- Ausnahmebehandlung mit a
versuchen { ... } FANGEN { ... }Konstruktion.[13]
Siehe auch
Externe Links
Quellen, Anmerkungen und/oder Verweise
|