De nieuwe versie van Practical Extraction and Report Language, ofwel de programmeertaal Perl, wordt door zijn ontwikkelgemeenschap volledig opnieuw opgebouwd. De exacte datum waarop Perl 6 wordt uitgebracht is nog niet bekend, maar ligt waarschijnlijk ergens medio 2005.
Perl is gratis, verkrijgbaar onder een combinatie van de ‘artistieke licentie’ en de GPL. Het draait op de meeste besturingssystemen, behalve Unix en daarop gebaseerde omgevingen als Linux. Het wordt gebruikt in bedrijfskritische projecten in de publieke en private sectoren en ook vaak om webapplicaties in te bouwen.
Herziening
De ‘interpreter’ van versie 5 (het programma dat de broncode vertaalt en uitvoert) zit zo ingewikkeld in elkaar dat het moeilijk te onderhouden valt. Reden voor auteur Larry Wall (die de eerste versie van Perl op 18 december 1987 uitbracht) om de programmeertaal drastisch te herzien. Hij riep daarbij de hulp in van de Perl-gemeenschap. “Perl 5 was mijn herschrijving van Perl. Ik wil dat Perl 6 de herschrijving wordt van de gemeenschap.”
Perl 6 is een complete herziening van de binnenkant van Perl en een revisie van de syntax. De expressies van de programmeertaal zijn de afgelopen jaren zo ontwikkeld dat ze langer en gecompliceerder werden. “Perls huidige expressie-syntax is gegroeid tot het punt waarop het niet eens meer in het hoofd van de programmeur past”, zegt Damian Conway, een belangrijke Perl-ontwikkelaar en professor aan de Monash-universiteit in Australië. Het ontwikkelteam heeft de oude syntax geschrapt en is vanaf nul begonnen met het ontwikkelen van een nieuwe, schonere syntax en krachtiger semantiek.
Parrot
Interoperabiliteit met andere programmeertalen moet kenmerkend worden voor Perl 6. De versie gaat draaien op een nieuwe interpreter, genaamd Parrot, die speciaal ontworpen is om een groot scala aan talen te ondersteunen. Het maakt makkelijke uitwisseling van data en het delen van types en functies mogelijk. Parrot voorziet in een ‘software-cpu’, met op register gebaseerde architectuur in plaats van de meer algemene op ‘stacks’ gebaseerde virtual machine-architectuur. Het belangrijkste aan Parrot is dat het deels los staat van Perl 6.
“Hoewel Parrot is ontwikkeld om Perl zo snel mogelijk te draaien, is het niet ontworpen om alleen Perl te draaien”, aldus Conway. De nieuwe virtual machine is beduidend sneller dan de interpreter in versie 5, maar dat mag geen verrassing zijn gezien de volledige herziening en het herontwerp. Daarnaast is Parrot voorzien van een ‘just-in-time’-compiler, waarmee het ook op andere platformen draait.
Oud en nieuw
“We vonden het belangrijk dat Perl 6 op zichzelf zou staan, als een taal die makkelijk te leren en te gebruiken is. Dat was belangrijker dan dat iedere subtiele nuance uit versie 5 ook in versie 6 zou werken”, zegt Allison Randal, lid van het Perl 6-ontwikkelteam en president van de Perl Foundation. Bestaande Perl 5-scripts hoeven niet te worden ‘opgewaardeerd’, omdat in een simpel aan te roepen compatibiliteitsmodule wordt voorzien in de nieuwe versie.
“Wanneer Perl 6 code van de vorige versie ontdekt in een programma, zal het eenvoudig overgaan op de Perl 5-interpreter die bovenop Parrot draait”, zegt Randal. “Perl 6 zal dan de oude code aan de nieuwe code linken door de Parrot-compatibiliteitslaag.”
Overgang
De toegenomen snelheid, de uitwisselbaarheid tussen talen, kortere code en nieuwe onderdelen zullen ontwikkelaars motiveren om over te stappen op Perl 6, maar waarschijnlijk gebeurt dit niet massaal. “We hebben er hard aan gewerkt om er zeker van te zijn dat niemand zijn code hoeft aan te passen, totdat zij daar zelf voor kiezen”, benadrukt Conway.
Door de betere inbedding en beveiligingskenmerken zal Parrot zijn weg vinden naar grotere systemen, denkt hij. Hetgeen betekent dat ook Perl daar terug te vinden is. De programmeertaal zal echter vooral een taal blijven voor de harde kern ontwikkelfans die het in de loop der jaren achter zich heeft weten te scharen en die verantwoordelijk zijn voor de populariteit.< BR>
Voor meer informatie:
Parrot: http://www.parrotcode.org
Perl 6: http://dev.perl.org/perl6/