SlideShare a Scribd company logo
1 of 12
Download to read offline
IDZ DO
         PRZYK£ADOWY ROZDZIA£

                           SPIS TRE CI   Perl 6. Podstawy
           KATALOG KSI¥¯EK               Autorzy: Allison Randal,
                                         Dan Sugalski, Leopold Totsch
                      KATALOG ONLINE     T³umaczenie: Rafa³ Szpoton
                                         ISBN: 83-7361-299-8
       ZAMÓW DRUKOWANY KATALOG           Tytu³ orygina³u: Perl 6 Essentials
                                         Format: B5, stron: 216

              TWÓJ KOSZYK
                    DODAJ DO KOSZYKA     Ksi¹¿ka „Perl 6. Podstawy” jest krótkim przegl¹dem projektu Perl 6, bêd¹cego
                                         powszechnie oczekiwan¹, zupe³nie now¹ wersj¹ jêzyka programowania Perl. Projekt
                                         ten znajduje siê wci¹¿ w fazie rozwoju i jest efektem wysi³ku ca³ej spo³eczno ci Perla,
         CENNIK I INFORMACJE             maj¹cym na celu utrzymanie go po ród jêzyków programowania XXI wieku.
                                         Wiele osób wci¹¿ zaanga¿owanych jest w rozwój Perla 5; w tym samym czasie g³ówna
                   ZAMÓW INFORMACJE      grupa programistów Perla rozpoczê³a pracê nad jêzykiem Perl 6, now¹, napisan¹
                     O NOWO CIACH        zupe³nie od podstaw wersj¹ jêzyka. Chocia¿ w wersji tej wci¹¿ utrzymana zostanie
                                         filozofia Perla oraz jego powszechnie znana sk³adnia, to jednak wszystkie inne
                       ZAMÓW CENNIK      elementy jêzyka s¹ ponownie analizowane i tworzone od podstaw.
                                         Ksi¹¿ka „Perl 6. Podstawy” to przegl¹d bie¿¹cego stanu rozwoju jêzyka Perl dla
                                         wszystkich dotychczasowych jego u¿ytkowników, jak równie¿ dla pocz¹tkuj¹cych
                 CZYTELNIA               programistów, którzy swoje pierwsze programistyczne do wiadczenia wi¹¿¹ z Perlem.
                                         Napisana przez cz³onków g³ównego zespo³u programistów jêzyka ksi¹¿ka prezentuje
          FRAGMENTY KSI¥¯EK ONLINE       wyja nienie ró¿nych etapów projektu, stanowi¹c jednocze nie materia³ referencyjny
                                         dla programistów, którzy s¹ zainteresowani planowanymi zmianami, jak równie¿ dla
                                         tych, którzy chcieliby przy³¹czyæ siê do projektu. Ksi¹¿ka ta z pewno ci¹ zaspokoi ich
                                         ciekawo æ i uka¿e, w jaki sposób zmiany wprowadzone do jêzyka uczyni¹ z Perla
                                         jeszcze potê¿niejsze i ³atwiejsze do stosowania narzêdzie. „Perl 6. Podstawy” stanowi
                                         pierwsz¹ ksi¹¿kê oferuj¹c¹ mo¿liwo æ wejrzenia w kolejn¹ g³ówn¹ wersjê jêzyka Perl.
                                         Stanowi ona niezbêdn¹ lekturê dla wszystkich osób zainteresowanych przysz³o ci¹
                                         tego doskona³ego narzêdzia.



Wydawnictwo Helion
ul. Chopina 6
44-100 Gliwice
tel. (32)230-98-63
e-mail: helion@helion.pl
5RKU VTG EK


Przedmowa........................................................................................................................ 5

Rozdział 1. Przegląd projektu .......................................................................................9
       Narodziny języka Perl 6 .........................................................................................................................9
       Początek…...............................................................................................................................................10
       Trwająca misja........................................................................................................................................12

Rozdział 2. Rozwój projektu.......................................................................................17
       Rozwój języka.........................................................................................................................................17
       Rozwój maszyny Parrot........................................................................................................................19

Rozdział 3. Filozofia projektu.....................................................................................25
       Czynniki lingwistyczne oraz poznawcze ..........................................................................................25
       Problemy architektury ..........................................................................................................................32

Rozdział 4. Składnia .....................................................................................................35
       Zmienne...................................................................................................................................................36
       Operatory ................................................................................................................................................43
       Struktury określające przepływ kontroli ...........................................................................................59
       Procedury................................................................................................................................................66
       Klasy oraz obiekty .................................................................................................................................71
       Gramatyki oraz reguły..........................................................................................................................74
4                                                                                                                                                 Spis treści


Rozdział 5. Struktury wewnętrzne .............................................................................83
       Reguły projektu struktur wewnętrznych...........................................................................................83
       Architektura maszyny wirtualnej Parrot ...........................................................................................84
       Interpreter ...............................................................................................................................................89
       Operacje wejścia-wyjścia, zdarzenia, sygnały oraz wątki...............................................................95
       Obiekty ..................................................................................................................................................101
       Funkcje zaawansowane ......................................................................................................................104
       Konkluzja ..............................................................................................................................................108

Rozdział 6. Język symboliczny maszyny Parrot ...................................................109
       Przygotowanie do pracy.....................................................................................................................109
       Podstawy...............................................................................................................................................111
       Praca z obiektami PMC.......................................................................................................................127
       Przepływ sterowania...........................................................................................................................131
       Stosy oraz ramki rejestrów.................................................................................................................134
       Zmienne leksykalne oraz globalne ...................................................................................................137
       Procedury..............................................................................................................................................141
       Tworzenie testów.................................................................................................................................149
       Krótki podręcznik PASM ...................................................................................................................151

Rozdział 7. Pośredni kompilator kodu....................................................................175
       Przygotowanie do pracy.....................................................................................................................175
       Przygotowanie do pracy.....................................................................................................................176
       Przepływ sterowania...........................................................................................................................186
       Procedury..............................................................................................................................................189
       Parametry wiersza poleceń kompilatora IMCC .............................................................................194
       Krótki podręcznik IMCC ....................................................................................................................197

Skorowidz...................................................................................................................... 205
Filozofia projektu

                                               Dzisiejsza praktyka jest często niczym więcej
                                         niż tylko zaakceptowaną postacią wczorajszej teorii
                                                                      — Kenneth Pike
                                                             „Wprowadzenie do Tagemiki”

U podstaw każdego języka leży zestaw podstawowych idei nadających mu kierunek
rozwoju oraz określających jego przeznaczenie. Osoby pragnące zrozumieć wybory do-
konywane przez projektantów języka (dlaczego wybierają tę właściwość, a nie inną lub
określony sposób jej wyrażenia), powinny najlepiej rozpocząć od prześledzenia rozu-
mowania leżącego u podstaw tych wyborów.

Na język Perl 6 oddziałuje unikatowy zestaw czynników. Sam język jest głęboko zako-
rzeniony w systemie Unix, oraz jego systemach pochodnych, co wywiera szczególny
wpływ na jego przydatność oraz praktyczne zastosowania. Stanowi on efekt akademic-
kiej rywalizacji na polu nauk informatycznych oraz inżynierii programowania, co budzi
chęć rozwiązywania problemów we właściwy sposób, a nie za pomocą środków doraź-
nych. Sam język jest głęboko przesiąknięty tradycjami lingwistyki oraz antropologii,
w związku z tym jako cel stawia się wygodną adaptację do postaci używanej przez
człowieka. Właśnie te czynniki oraz jeszcze wiele innych definiują kształt języka Perl
oraz kierunek jego rozwoju.


Czynniki lingwistyczne oraz poznawcze
Perl jest językiem ludzkim. Istnieje jednak wiele znaczących różnic pomiędzy Perlem
a językami naturalnymi w rodzaju języka angielskiego, francuskiego, niemieckiego itd.
Po pierwsze, został on skonstruowany w sposób sztuczny, a nie naturalny. Jego podsta-
wowe zastosowanie, czyli określenie zestawu instrukcji, którymi kierować się będzie ma-
szyna, odzwierciedla jedynie ograniczony zakres czynności występujących w życiu ludz-
kim. Niemniej jednak Perl jest językiem, którego ludzie używają do porozumiewania się.
26                                                         Rozdział 3. Filozofia projektu


Wiele tych samych procesów umysłowych, które prowadzą do formułowania myśli w sło-
wie oraz piśmie jest powielanych w postaci prowadzącej do utworzenia kodu. Proces
nauki używania Perla jest bardzo podobny do nauki używania drugiego języka. Istotne
są również procesy umysłowe związane z czytaniem. Chociaż podstawowym adresatem
kodu napisanego w języku Perl jest maszyna, bardzo często to ludzie muszą odczytać
kod podczas jego tworzenia, przeglądania oraz utrzymywania.

Na wiele decyzji podejmowanych podczas projektowania Perla duży wpływ miały zało-
żenia języków naturalnych. Poniżej zostanie przedstawionych kilka najważniejszych, to
znaczy tych, które powracają wciąż podczas projektowania oraz tych, które wywarły
największy wpływ podczas całego procesu.


Teoria złożoności (teoria łóżka wodnego)
Naturalną tendencją występującą w językach ludzkich jest utrzymywanie stałej ogólnej
złożoności, gdy weźmiemy pod uwagę zarówno dwa różne języki, jak i zmiany danego
języka wraz z upływem czasu. Podobnie jak w przypadku łóżka wodnego, jeżeli zmniej-
szona zostanie złożoność w jednej części języka, automatycznie zwiększy się ona w in-
nym miejscu. Język z obszernym systemem dźwięków (fonologią) mógłby mieć prostszą
składnię. Język mający ograniczony zestaw dźwięków mógłby mieć bardziej złożony
sposób tworzenia słów z mniejszych elementów (morfologię). Żaden język nie jest skom-
plikowany w równym stopniu pod każdym z wymienionych względów, ponieważ był-
by zupełnie nieprzydatny. Podobnie — żaden język nie jest całkowicie prosty, ponieważ
zbyt mała liczba rozróżnień i możliwych do utworzenia kombinacji uczyniłaby go nie-
przydatnym w praktyce.

Ta sama zasada funkcjonuje w przypadku języków komputerowych. Wymagają one za-
chowania stałej równowagi pomiędzy złożonością a prostotą. Ograniczenie możliwych
operatorów do małego ich zestawu prowadzi do zwiększenia liczby metod oraz podpro-
cedur definiowanych przez użytkownika. Nie jest to aż tak złe, lecz zachęca do tworze-
nia kodu, który będzie rozwlekły oraz trudny do odczytania. Z drugiej strony, język,
który definiuje zbyt wiele operatorów, zachęca do tworzenia kodu zawierającego skom-
plikowane wiersze i jest tym samym równie trudny do odczytania. Doskonała równo-
waga leży gdzieś pośrodku.


Reguła prostoty
Ogólnie mówiąc, preferowane są proste rozwiązania. Prosta składnia jest łatwiejsza do
nauki, zapamiętania, wykorzystania w praktyce oraz odczytania. Niemniej jednak reguła
ta znajduje się w ścisłym związku z teorią łóżka wodnego. Jednym z niebezpieczeństw,
któremu należy zapobiec jest uproszczenie w złym obszarze. Kolejnym jest błędne
uproszczenie oraz nadmierne uproszczenie. Niektóre problemy są złożone i wymagają
złożonego rozwiązania. Gramatyki języka Perl6 nie są proste. Są one złożone na pozio-
mie języka, w sposób pozwalający na stosowanie prostszych rozwiązań na poziomie
użytkownika.
Czynniki lingwistyczne oraz poznawcze                                                27


Reguła możliwości przystosowania
Wraz z upływem czasu języki naturalne rozrastają się i zmieniają. Odpowiadają w ten
sposób na zmiany występujące w środowisku oraz na nacisk wewnętrzny ze strony po-
sługujących się nimi ludzi. Pojawia się nowe słownictwo, używane do zaspokojenia no-
wych potrzeb komunikacyjnych. Stare określenia nie są używane, ludzie powoli je za-
pominają, zaś w ich miejsce pojawiają się nowe, bardziej odpowiednie. Wraz z upływem
czasu złożone części systemu mają tendencję do upraszczania się oraz rozbijania na
mniejsze. To właśnie proces zmian utrzymuje język w postaci aktywnej oraz odpowied-
niej dla ludzi go wykorzystujących. Nie zmieniają się jedynie martwe języki.

Plan rozwoju języka Perl 6 jawnie określa plany przyszłych zmian języka. Nikt nie wie-
rzy w to, że Perl 6.0.0 będzie językiem doskonałym. Jednocześnie jednak nikt nie chce
kolejnego procesu zmian tak dramatycznego, jak podczas przejścia do wersji 6 języka
Perl. Dlatego też Perl 6 będzie językiem elastycznym i na tyle zdolnym do adaptacji, aby
wraz z upływem czasu umożliwiał stopniowe zmiany. Postanowienie to miało wpływ
na wiele decyzji podejmowanych podczas projektowania, włącznie z uproszczeniem mo-
dyfikacji sposobu parsowania (analizy składniowej) języka, ograniczeniem rozróżniania
pomiędzy operacjami podstawowymi języka a operacjami zdefiniowanymi przez użyt-
kownika, jak również ułatwieniem definiowania nowych operatorów.


Reguła ważności
W językach naturalnych określone struktury oraz konstrukcje stylistyczne służą do zwró-
cenia uwagi na ważne elementy. Może być to akcent, np. w zdaniu „Pies ukradł mój port-
fel” (pies, a nie człowiek) lub użycie dodatkowego czasownika, np. w zdaniu „To był
pies, który ukradł mój portfel”, a nawet zmiana kolejności wyrazów „Mój portfel został
skradziony przez psa” (mój portfel, a nie but itp.) lub dowolna liczba innych zabiegów.

Perl został zaprojektowany ze swoim własnym zestawem konstrukcji służących do za-
znaczenia ważności, z których niektóre zawarte są w samym języku, a niektóre umożli-
wiają użytkownikom zaakcentowanie ważności w tworzonym przez nich kodzie. Bloki
nazwane (NAMED) wykorzystują duże litery w celu zwrócenia uwagi, że znajdują się na
zewnątrz normalnego przepływu sterowania w programie. Perl 5 posiada dodatkową
składnię dla instrukcji kontrolujących wykonywanie programu, w rodzaju if oraz for,
powodującą przesunięcie ich na koniec, co daje funkcjonowanie w charakterze modyfi-
katorów instrukcji (ponieważ analiza wiersza w kodzie w języku Perl odbywa się od
strony lewej do prawej, to właśnie lewa strona jest zawsze ważniejsza). Taka elastycz-
ność została utrzymana w języku Perl 6, a do listy zostały dodane nowe struktury.

Zachowanie równowagi podczas tworzenia projektu polega na podjęciu decyzji, które
właściwości zasługują na zaznaczenie jako ważne, a w którym miejscu składnia może
być mało uniwersalna, tak aby język był bardziej wyrazisty.
28                                                          Rozdział 3. Filozofia projektu


Reguła końcowej wagi
Języki naturalne umieszczają duże elementy złożone na końcu zdań. I chociaż konstrukcje
postaci „Dałem Marii książkę” oraz „Dałem książkę Marii” są tak samo wygodne w uży-
ciu, to jednak zdanie „Dałem książę o historii rozwoju w Indonezji produktów opartych
na orzeszkach ziemnych Marii” jest znacznie mniej wygodne niż jego odpowiednik.
Dotyczy to głównie problemu z analizą takiego zdania przez mózg człowieka. Znacznie
prostsze jest jednorazowe zinterpretowanie głównych bloków zdania niż rozpoczęcie od
kilku pierwszych, przeanalizowanie długiego łańcucha mniej ważnych informacji, by
w końcu powrócić do struktury zdania nadrzędnego. Pamięć ludzka jest ograniczona.

Reguła ta jest jednym z powodów, dla których modyfikatory wyrażeń regularnych zo-
stały w Perlu 6 przesunięte na początek. Znacznie prostsze jest odczytanie reguły gra-
matycznej, kiedy od samego początku wiadomo, na przykład, że „na tę regułę nie ma
wpływu wielkość liter”. (Ułatwia to również znacznie rozkład składniowy dokonywany
przez komputer, co jest prawie równie istotne).

Reguła ta jest również przyczyną, dla której pojawił się pomysł zmiany kolejności in-
strukcji grep na:
     grep @array { potencjalnie długi i skomplikowany blok };

Jednakże tego rodzaju zmiana wywołuje takie wątpliwości w społeczności, że może nig-
dy nie zostać wprowadzona.


Reguła kontekstu
Podczas interpretacji znaczenia języki naturalne wykorzystują kontekst. Znaczenia okre-
śleń „gorący” oraz „gorący dzień”, „gorący utwór”, „gorący pomysł” oraz „gorąca dys-
kusja” są całkiem różne. Niejawne znaczenie określenia „jest mokro” zmienia się w za-
leżności od tego, czy stanowi ono odpowiedź na pytanie „Czy powinienem zabrać płaszcz?”
czy też „Dlaczego pies biega po kuchni?”. To właśnie otaczający kontekst pozwala na
rozróżnienie tych znaczeń. Kontekst pojawia się również w innych dziedzinach. Obraz
przedstawiający abstrakcyjną pomarańczową sferę zostanie zinterpretowany odmiennie
w zależności od tego, czy inne elementy na obrazie przedstawiają banany, klownów czy
piłkarzy. Umysł ludzki stara się zrozumieć otaczający świat i używa w tym celu wszyst-
kich dostępnych podpowiedzi.

Perl od zawsze był językiem kontekstowym. Używa on kontekstu na szereg różnych
sposobów. Najbardziej oczywistym jest wykorzystanie kontekstowe skalarów oraz list
— w tym przypadku zmienna może zwrócić różne wartości w zależności od tego, w któ-
rym miejscu została użyta oraz w jaki sposób. W Perlu 6 zostało to jeszcze rozszerzone
o kontekstowe użycie łańcuchów znakowych, wartości logicznych, numerycznych oraz
innych. Innym przypadkiem wykorzystania kontekstu jest użycie wartości domyślnych
$_ w instrukcji print, chomp, when lub dopasowaniach.
Czynniki lingwistyczne oraz poznawcze                                                29


Właściwości zależne od kontekstu utrudniają utworzenie interpretera dokonującego ich
analizy, lecz są prostsze dla ludzi, którzy używają ich codziennie. Pasują one bowiem do
sposobu, w jaki ludzie myślą naturalnie, a jest to jednym z założeń języka Perl.


Reguła ZCMM
W językach naturalnych występuje pojęcie „rodowitej intuicji rozmówcy”. Ktoś, kto bie-
gle posługuje się językiem, będzie w stanie stwierdzić czy zdanie jest poprawne, nawet
jeśli nie potrafi on racjonalnie wyjaśnić odpowiednich reguł. (Ma to niewielki wpływ na
trudność, na jaką natrafiają nauczyciele języka angielskiego, próbując wymusić stosowa-
nie przez studentów „poprawnej” gramatyki. Zasady formalnego języka pisanego różnią
się znacznie od tych dla języka mówionego).

Dane właściwości języka powinny dawać w sposób oczywisty efekty oczekiwane przez
użytkownika. Właśnie ta idea „ZCMM”, to znaczy „Zrób Co Mam na Myśli” stanowi
głównie kwestię intuicji. Na oczekiwania użytkownika mają wpływ jego doświadczenia,
znajomość języka oraz podłoże kulturowe. Oznacza to, że intuicja jest specyficzna dla
danego człowieka. Osoba posługująca się językiem angielskim nie będzie oczekiwać tych
samych rezultatów, co osoba posługująca się językiem holenderskim, zaś programista ję-
zyka Ada nie będzie oczekiwać tych samych efektów, co programista języka Cobol.

Sztuczka zastosowana w projekcie polega na wykorzystaniu intuicji programisty, a nie
walce z nią. Jasno zdefiniowany zestaw reguł nigdy nie dorówna potędze właściwości,
która „po prostu wydaje się być poprawna”.

Perl 6 przeznaczony jest dla programistów języka Perl. To, co może wydawać się po-
prawne dla jednego programisty Perla może nie wydawać się poprawne dla innego,
dlatego nie istnieje właściwość, która mogłaby zadowolić wszystkich. Jednakże w więk-
szości przypadków możliwe jest dogodzenie większości osób.

Ogólnie mówią, Perl adresowany jest do osób używających języka angielskiego. Wyko-
rzystuje on na przykład słowa w rodzaju „given”, co osobom znającym ten język ułatwia
zrozumienie działania kodu. Oczywiście nie wszyscy programiści używający tego języka
programowania znają język angielski. W niektórych przypadkach użyty język jest uprosz-
czony w celu zadowolenia szerszej grupy adresatów. W przypadku reguł gramatycz-
nych oryginalne modyfikatory mają postać 1st, 2nd, 3rd, 4th itp. ponieważ są one najbar-
dziej naturalne dla osób posługujących się językiem angielskim od urodzenia. Mają one
jednak również postać alternatywną 1th, 2th, Nth itp., ponieważ zakończenia używane
w języku angielskim w przypadku liczb są chaotyczne oraz niezbyt przyjazne dla osób
dopiero uczących się tego języka


Reguła ponownego wykorzystania
Języki ludzkie mają tendencję do zawierania ograniczonego zestawu struktur oraz po-
wtórnego ich wykorzystywania w różnych kontekstach. Języki programowania również
stosują zestaw zwykłych konwencji składniowych. Język, który w celu ograniczenia pętli
30                                                                  Rozdział 3. Filozofia projektu


wykorzystywałby nawias {...}, lecz do ograniczenia instrukcji if używałby pary słów
kluczowych (na przykład if ... then ... end if), byłby strasznie denerwujący.
Istnienie zbyt wielu reguł utrudniałoby odnalezienie wzorca.

Jeżeli w czasie tworzenia projektu istnieje określona składnia służąca do wyrażenia jed-
nej właściwości, to w celu wyrażenia związanej z nią innej właściwości często znacznie
lepszym wyjściem jest użycie ponownie tej samej składni od wynajdowania czegoś zu-
pełnie nowego. Nadaje to językowi ogólną spójność i ułatwia zapamiętanie nowych wła-
ściwości. Właśnie z tego powodu gramatyki mają postać klas1. Mogłyby one używać
dowolnej składni, lecz klasy wyrażają wiele właściwości wymaganych przez gramatyki,
np. dziedziczenie oraz ideę tworzenia egzemplarza.


Reguła rozróżnienia
Mózg człowieka znacznie łatwiej dostrzega duże różnice niż małe. Na przykład znacznie
prostsze do rozróżnienia są słowa „kot” oraz „pies” niż słowa „bieg” i „brzeg”. Zazwy-
czaj odpowiednich wskazówek dostarcza kontekst, jeżeli jednak „kot” określany byłby
jako „kies”, musielibyśmy bez końca poprawiać osoby, które źle nas usłyszały („Nie,
powiedziałem, że Kowalscy mają nowego psa, a nie ksa”.).

Głównym problemem podczas projektowania języka jest utworzenie widocznych wska-
zówek, dających subtelne kontrasty. Język powinien unikać tworzenia zbyt wielu róż-
nych rzeczy podobnych do siebie. Zbytnie przeciążenie zmniejsza przejrzystość i zwięk-
sza prawdopodobieństwo pomyłki. Stanowi to część uzasadnienia powodu rozbicia dwóch
znaczeń konstrukcji eval na try oraz eval, dwóch znaczeń konstrukcji for na for
oraz loop, jak również dwóch znaczeń sub na sub oraz method.

Reguły rozróżnienia oraz ponownego wykorzystania konstrukcji są w stałym związku.
Jeżeli zbyt wiele właściwości będzie ponownie wykorzystywanych oraz przeciążonych,
język stanie się niejasny. Zbyt wiele czasu będzie trzeba poświęcić na domyślanie się
dokładnego znaczenia. Jeżeli jednak zbyt wiele właściwości będzie całkowicie różnych
od siebie, język straci swoją spójność. Ponownie jest to problem wypracowania konsensusu.


Język nie może być oddzielony od kultury
Język naturalny bez społeczności osób posługujących się nim jest językiem martwym.
Może być przedmiotem studiów z pobudek czysto akademickich, lecz jeżeli nikt nie po-
dejmie wysiłku jego zachowania, prędzej czy później zaniknie zupełnie. Język nadaje
społeczności poczucie tożsamości, gdy społeczność uznaje go za odpowiedni i przeka-
zuje kolejnym pokoleniom. Kultura społeczności nadaje kształt językowi i wyznacza mu
cel istnienia.



1
    Więcej informacji szczegółowych dotyczących gramatyk znajduje się w podrozdziale rozdziału 4.,
    zatytułowanym „Gramatyki oraz reguły”.
Czynniki lingwistyczne oraz poznawcze                                                  31


Również języki komputerowe są zależne od społeczności ich używających. Możesz mie-
rzyć jej wielkość liczbą firm oferujących wsparcie dla danego języka, wierszami kodu
znajdującymi się w użyciu, czy też zainteresowaniem użytkowników, jednak wszystko
sprowadza się do jednej kwestii: nieużywany język programowania staje się martwy.
Ostatnim znakiem śmierci języka jest sytuacja, gdy nie istnieje żaden jego kompilator lub
interpreter, który mógłby działać na istniejącym sprzęcie oraz w istniejących systemach
operacyjnych.

Na etapie projektowania oznacza to, że samo dopasowanie właściwości języka do siebie
nie jest wystarczające. Ważna jest również tradycja społeczności oraz jej oczekiwania, zaś
niektóre zmiany mają swoją cenę kulturową.


Reguła wolności
W językach naturalnych zawsze istnieje więcej niż jeden sposób wyrażenia idei. Autor
lub rozmówca ma wolność wyboru najlepszego określenia i ponosi za nie odpowiedzial-
ność. Powinien wybrać taki sposób wyrażenia idei, aby był on logiczny dla adresatów.

Perl zawsze oparty był na założeniu, że programiści powinni mieć wolność wyboru spo-
sobu, w jaki utworzą swój kod. Udostępnia on łatwy dostęp do potężnych właściwości
i pozostawia użytkownikom możliwość ich mądrego wykorzystania. Określa raczej zwy-
czaje oraz konwencje, a nie prawa.

Tego rodzaju reguła ma pod kilkoma względami wpływ na projekt. Jeżeli dana właści-
wość jest korzystna dla całego języka, nie powinna być odrzucona jedynie dlatego, że ktoś
mógłby użyć jej w głupi sposób. Z drugiej strony, nie jesteśmy za tworzeniem niektórych
skomplikowanych właściwości, jeżeli miałyby być one bardzo rzadko wykorzystywane.

Innym elementem wyzwania projektowego jest utworzenie narzędzi, które będą mieć
wiele zastosowań. Nikt nie chce książki kucharskiej, którą czyta się jak powieść Stephena
Kinga, nikt również nie chciałby w jednym wierszu umieszczać struktury definicji klasy.
Język musi być na tyle elastyczny, aby dawać wolność.


Reguła zapożyczeń
Zapożyczenia są w językach naturalnych bardzo powszechne. W momencie gdy nowa
technologia (jedzenie, ubrania itp.) jest importowana z innej kultury, całkiem naturalne
jest zaadoptowanie również jej oryginalnej nazwy. Zapożyczane słowa są stopniowo ad-
aptowane do nowego języka. W języku angielskim na przykład nikt nie wymawia słów
w rodzaju „tortilla”, „lasagna” lub „champagne” dokładnie w ten sam sposób, co w ję-
zykach, z których te słowa pochodzą. Zostały one zmienione tak, aby pasowały do wy-
mowy języka angielskiego.

Język Perl zawiera właściwości zapożyczone i tak samo będzie w przypadku języka Perl 6.
Nie ma nic wstydliwego w przyznaniu się, że inny język wykonał wspaniałe zadanie,
implementując określoną właściwość. Znacznie lepsze jest otwarte zapożyczenie dobrej
32                                                           Rozdział 3. Filozofia projektu


właściwości niż udawanie, że jest ona oryginalna. Perl nie musi być inny tylko z tego
powodu, że jest inny. Większość właściwości jednak nie zostanie zaadoptowana bez ja-
kichkolwiek zmian. Każdy język posiada swoje własne konwencje oraz składnię, a wiele
z nich nie jest ze sobą zgodnych. Dlatego też właściwości są zapożyczane w Perlu przy
użyciu odpowiednich konstrukcji języka służących do ich wyrażenia.


Problemy architektury
Drugi zestaw reguł dotyczy ogólnej architektury języka Perl 6. Reguły te są powiązane
z przeszłością, teraźniejszością oraz przyszłością języka i definiują podstawowe przezna-
czenie Perla. Żadna z reguł nie istnieje samodzielnie. Każda z nich dotyczy pozostałych.


Perl powinien zostać Perlem
Wszyscy zgodzą się, że Perl 6 powinien zostać Perlem. Pojawia się jednak pytanie, co tak
naprawdę to oznacza? Nie oznacza to, że Perl 6 będzie posiadać dokładnie tę samą
składnię. Nie oznacza również, że będzie on mieć te same właściwości. Gdyby tak było,
Perl 6 byłby po prostu wersją 5 tego języka. Dlatego też istota tego pytania dotyczy kwe-
stii, które definiują język jako „Perl”.

Zachowanie przeznaczenia

Perl zachowa oryginalne przeznaczenie zamierzone przez jego twórcę. Larry pragnął
utworzyć język, który mógłby wykonać postawione mu zadanie, lecz nie upierał się
przy swoim podejściu. Język musi być wystarczająco potężny do wykonania złożonych
zadań, lecz wciąż lekki i uniwersalny. Jak stwierdził to Larry, „Perl ułatwia rzeczy pro-
ste i umożliwia wykonanie rzeczy trudnych”. Podstawowa filozofia dotycząca projektu
Perla pozostała niezmienna. W Perlu 6 proste rzeczy są nieco prostsze, zaś rzeczy trudne
są łatwiejsze do wykonania.

Znajomość

Perl 6 będzie znajomy dla użytkowników języka Perl 5. Podstawowa składnia jest wciąż
taka sama. Została tylko nieco wyczyszczona i jest bardziej spójna. Podstawowy zestaw
właściwości jest wciąż ten sam. Język dodaje kilka nowych i potężnych właściwości, któ-
re najprawdopodobniej zmienią sposób programowania przy ich użyciu, lecz nie będą
one wymagane.

Nauka języka Perl 6 będzie raczej przypominać poznawanie odmiany australijskiej ję-
zyka angielskiego przez obywateli Stanów Zjednoczonych niż poznawanie języka ja-
pońskiego przez obywateli Wielkiej Brytanii. Oczywiście istnieją pewne zmiany w za-
kresie słownictwa i akcent jest nieco inny, lecz bez żadnych wątpliwości jest to wciąż
język angielski.
Problemy architektury                                                                  33


Możliwość przetłumaczenia

Będzie istnieć możliwość automatycznego przetłumaczenia kodu z języka Perl 5 do Perl 6.
W dłuższej perspektywie nie jest to aż tak istotne jak tworzenie kodu w języku Perl 6,
lecz podczas fazy przejścia z jednej wersji języka do drugiej możliwość automatycznego
tłumaczenia będzie ważna. Pozwoli ona programistom na rozpoczęcie pracy z językiem
zanim zrozumieją każdy subtelny niuans wszystkich zmian. Perl zawsze spełniał zało-
żenie polegające na preferowaniu nauki tego, co jest potrzebne w danej chwili i uczeniu
się stopniowo pozostałych rzeczy.


Ważne nowe cechy
Perl 6 będzie zawierać wiele nowych właściwości, takich jak wyjątki, delegacje zadań,
podział na wiele metod, kontynuacje, współprogramy. Udowodniły one swoją przydat-
ność w innych językach, gdyż mają olbrzymią moc w przypadku rozwiązywania okre-
ślonych problemów. Zwiększają również stabilność oraz uniwersalność języka.

Wiele z nich jest tradycyjnie trudnych do zrozumienia. Perl stosuje to samo podejście co
zawsze: udostępnia potężne narzędzia, ułatwia ich stosowanie oraz pozostawia użyt-
kownikowi decyzję czy i kiedy je wykorzystać. Większość użytkowników w chwili wy-
korzystywania metody assuming prawdopodobnie nie będzie nawet wiedzieć, że uży-
wa aliasów parametryzowanych.

Tego rodzaju właściwości stanowią ważny element przygotowywania Perla na przyszłość.
Kto wie, jakie paradygmaty mogą powstać w przyszłości, przy wykorzystaniu połącze-
nia tych zaawansowanych właściwości, udostępnionych w postaci przyjaznej dla prze-
ciętnego programisty. Nie musi to być rewolucja, lecz z pewnością będzie to ewolucja.


Przydatność długoterminowa
Perl 6 nie jest wersją języka, która ma przetrwać kilka lat, a następnie zostać odrzucona.
Ma on w założeniu przetrwać 20 lat i dłużej. Właśnie ta długoterminowa wizja języka
wpływa na jego kształt i proces jego tworzenia. Nie jesteśmy zainteresowani implemen-
towaniem kilku ekscytujących sztuczek. Pragniemy silnych zależnych narzędzi, dyspo-
nujących dużą przestrzenią do rozwoju. I nie jesteśmy przerażeni perspektywą poświę-
cenia nieco większej ilości dodatkowego czasu teraz, aby utworzyć je poprawnie. Nie
oznacza to, że Perl 6.0 będzie idealny w porównaniu z innymi jego wersjami. Stanowi to
jedynie kolejny krok w jego rozwoju.

More Related Content

Viewers also liked

Brennan ann dłonie pełne światła1
Brennan ann   dłonie pełne światła1Brennan ann   dłonie pełne światła1
Brennan ann dłonie pełne światła1Bogi1969
 
Handel spożywczy w polsce w latach 2010 2020
Handel spożywczy w polsce w latach 2010 2020Handel spożywczy w polsce w latach 2010 2020
Handel spożywczy w polsce w latach 2010 2020Aleksandra Kruzel
 
Wskazniki i rezultaty
Wskazniki i rezultatyWskazniki i rezultaty
Wskazniki i rezultatyUM Łódzkie
 
Krajowy program operacyjny efs 2014 2020
Krajowy program operacyjny efs 2014 2020Krajowy program operacyjny efs 2014 2020
Krajowy program operacyjny efs 2014 2020Fundacja "Merkury"
 
Przetwarzanie biomasy szymon szufa
Przetwarzanie biomasy   szymon szufaPrzetwarzanie biomasy   szymon szufa
Przetwarzanie biomasy szymon szufaProAkademia
 

Viewers also liked (7)

Pierszwa pomoc 25.08
Pierszwa pomoc 25.08Pierszwa pomoc 25.08
Pierszwa pomoc 25.08
 
MySQL
MySQLMySQL
MySQL
 
Brennan ann dłonie pełne światła1
Brennan ann   dłonie pełne światła1Brennan ann   dłonie pełne światła1
Brennan ann dłonie pełne światła1
 
Handel spożywczy w polsce w latach 2010 2020
Handel spożywczy w polsce w latach 2010 2020Handel spożywczy w polsce w latach 2010 2020
Handel spożywczy w polsce w latach 2010 2020
 
Wskazniki i rezultaty
Wskazniki i rezultatyWskazniki i rezultaty
Wskazniki i rezultaty
 
Krajowy program operacyjny efs 2014 2020
Krajowy program operacyjny efs 2014 2020Krajowy program operacyjny efs 2014 2020
Krajowy program operacyjny efs 2014 2020
 
Przetwarzanie biomasy szymon szufa
Przetwarzanie biomasy   szymon szufaPrzetwarzanie biomasy   szymon szufa
Przetwarzanie biomasy szymon szufa
 

Similar to Perl 6. Podstawy

Similar to Perl 6. Podstawy (20)

Perl. Od podstaw
Perl. Od podstawPerl. Od podstaw
Perl. Od podstaw
 
Perl. Ćwiczenia
Perl. ĆwiczeniaPerl. Ćwiczenia
Perl. Ćwiczenia
 
Perl. Receptury. Wydanie II
Perl. Receptury. Wydanie IIPerl. Receptury. Wydanie II
Perl. Receptury. Wydanie II
 
Algorytmy w Perlu
Algorytmy w PerluAlgorytmy w Perlu
Algorytmy w Perlu
 
ABC Delphi 7
ABC Delphi 7ABC Delphi 7
ABC Delphi 7
 
Java. Kompendium programisty
Java. Kompendium programistyJava. Kompendium programisty
Java. Kompendium programisty
 
Perl
PerlPerl
Perl
 
Oracle8. Programowanie w języku PL/SQL
Oracle8. Programowanie w języku PL/SQLOracle8. Programowanie w języku PL/SQL
Oracle8. Programowanie w języku PL/SQL
 
Delphi. Szybki start
Delphi. Szybki startDelphi. Szybki start
Delphi. Szybki start
 
ABC Delphi 6
ABC Delphi 6ABC Delphi 6
ABC Delphi 6
 
Perl. Zaawansowane programowanie
Perl. Zaawansowane programowaniePerl. Zaawansowane programowanie
Perl. Zaawansowane programowanie
 
PHP5. Profesjonalne tworzenie oprogramowania
PHP5. Profesjonalne tworzenie oprogramowaniaPHP5. Profesjonalne tworzenie oprogramowania
PHP5. Profesjonalne tworzenie oprogramowania
 
Wyrażenia regularne. Leksykon kieszonkowy
Wyrażenia regularne. Leksykon kieszonkowyWyrażenia regularne. Leksykon kieszonkowy
Wyrażenia regularne. Leksykon kieszonkowy
 
Turbo Pascal. Ćwiczenia praktyczne. Wydanie II
Turbo Pascal. Ćwiczenia praktyczne. Wydanie IITurbo Pascal. Ćwiczenia praktyczne. Wydanie II
Turbo Pascal. Ćwiczenia praktyczne. Wydanie II
 
Oracle9i. Programowanie w języku PL/SQL
Oracle9i. Programowanie w języku PL/SQLOracle9i. Programowanie w języku PL/SQL
Oracle9i. Programowanie w języku PL/SQL
 
PHP. Programowanie
PHP. ProgramowaniePHP. Programowanie
PHP. Programowanie
 
Delphi 2005. Ćwiczenia praktyczne
Delphi 2005. Ćwiczenia praktyczneDelphi 2005. Ćwiczenia praktyczne
Delphi 2005. Ćwiczenia praktyczne
 
Prolog. Programowanie
Prolog. ProgramowanieProlog. Programowanie
Prolog. Programowanie
 
Java. Rozmówki
Java. RozmówkiJava. Rozmówki
Java. Rozmówki
 
Perl. Zaawansowane programowanie. Wydanie II
Perl. Zaawansowane programowanie. Wydanie IIPerl. Zaawansowane programowanie. Wydanie II
Perl. Zaawansowane programowanie. Wydanie II
 

More from Wydawnictwo Helion

Tworzenie filmów w Windows XP. Projekty
Tworzenie filmów w Windows XP. ProjektyTworzenie filmów w Windows XP. Projekty
Tworzenie filmów w Windows XP. ProjektyWydawnictwo Helion
 
Blog, więcej niż internetowy pamiętnik
Blog, więcej niż internetowy pamiętnikBlog, więcej niż internetowy pamiętnik
Blog, więcej niż internetowy pamiętnikWydawnictwo Helion
 
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczne
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktycznePozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczne
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczneWydawnictwo Helion
 
E-wizerunek. Internet jako narzędzie kreowania image'u w biznesie
E-wizerunek. Internet jako narzędzie kreowania image'u w biznesieE-wizerunek. Internet jako narzędzie kreowania image'u w biznesie
E-wizerunek. Internet jako narzędzie kreowania image'u w biznesieWydawnictwo Helion
 
Microsoft Visual C++ 2008. Tworzenie aplikacji dla Windows
Microsoft Visual C++ 2008. Tworzenie aplikacji dla WindowsMicrosoft Visual C++ 2008. Tworzenie aplikacji dla Windows
Microsoft Visual C++ 2008. Tworzenie aplikacji dla WindowsWydawnictwo Helion
 
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie II
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie IICo potrafi Twój iPhone? Podręcznik użytkownika. Wydanie II
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie IIWydawnictwo Helion
 
Makrofotografia. Magia szczegółu
Makrofotografia. Magia szczegółuMakrofotografia. Magia szczegółu
Makrofotografia. Magia szczegółuWydawnictwo Helion
 
Java. Efektywne programowanie. Wydanie II
Java. Efektywne programowanie. Wydanie IIJava. Efektywne programowanie. Wydanie II
Java. Efektywne programowanie. Wydanie IIWydawnictwo Helion
 
Ajax, JavaScript i PHP. Intensywny trening
Ajax, JavaScript i PHP. Intensywny treningAjax, JavaScript i PHP. Intensywny trening
Ajax, JavaScript i PHP. Intensywny treningWydawnictwo Helion
 
PowerPoint 2007 PL. Seria praktyk
PowerPoint 2007 PL. Seria praktykPowerPoint 2007 PL. Seria praktyk
PowerPoint 2007 PL. Seria praktykWydawnictwo Helion
 
Serwisy społecznościowe. Budowa, administracja i moderacja
Serwisy społecznościowe. Budowa, administracja i moderacjaSerwisy społecznościowe. Budowa, administracja i moderacja
Serwisy społecznościowe. Budowa, administracja i moderacjaWydawnictwo Helion
 

More from Wydawnictwo Helion (20)

Tworzenie filmów w Windows XP. Projekty
Tworzenie filmów w Windows XP. ProjektyTworzenie filmów w Windows XP. Projekty
Tworzenie filmów w Windows XP. Projekty
 
Blog, więcej niż internetowy pamiętnik
Blog, więcej niż internetowy pamiętnikBlog, więcej niż internetowy pamiętnik
Blog, więcej niż internetowy pamiętnik
 
Access w biurze i nie tylko
Access w biurze i nie tylkoAccess w biurze i nie tylko
Access w biurze i nie tylko
 
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczne
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktycznePozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczne
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczne
 
E-wizerunek. Internet jako narzędzie kreowania image'u w biznesie
E-wizerunek. Internet jako narzędzie kreowania image'u w biznesieE-wizerunek. Internet jako narzędzie kreowania image'u w biznesie
E-wizerunek. Internet jako narzędzie kreowania image'u w biznesie
 
Microsoft Visual C++ 2008. Tworzenie aplikacji dla Windows
Microsoft Visual C++ 2008. Tworzenie aplikacji dla WindowsMicrosoft Visual C++ 2008. Tworzenie aplikacji dla Windows
Microsoft Visual C++ 2008. Tworzenie aplikacji dla Windows
 
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie II
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie IICo potrafi Twój iPhone? Podręcznik użytkownika. Wydanie II
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie II
 
Makrofotografia. Magia szczegółu
Makrofotografia. Magia szczegółuMakrofotografia. Magia szczegółu
Makrofotografia. Magia szczegółu
 
Windows PowerShell. Podstawy
Windows PowerShell. PodstawyWindows PowerShell. Podstawy
Windows PowerShell. Podstawy
 
Java. Efektywne programowanie. Wydanie II
Java. Efektywne programowanie. Wydanie IIJava. Efektywne programowanie. Wydanie II
Java. Efektywne programowanie. Wydanie II
 
JavaScript. Pierwsze starcie
JavaScript. Pierwsze starcieJavaScript. Pierwsze starcie
JavaScript. Pierwsze starcie
 
Ajax, JavaScript i PHP. Intensywny trening
Ajax, JavaScript i PHP. Intensywny treningAjax, JavaScript i PHP. Intensywny trening
Ajax, JavaScript i PHP. Intensywny trening
 
PowerPoint 2007 PL. Seria praktyk
PowerPoint 2007 PL. Seria praktykPowerPoint 2007 PL. Seria praktyk
PowerPoint 2007 PL. Seria praktyk
 
Excel 2007 PL. Seria praktyk
Excel 2007 PL. Seria praktykExcel 2007 PL. Seria praktyk
Excel 2007 PL. Seria praktyk
 
Access 2007 PL. Seria praktyk
Access 2007 PL. Seria praktykAccess 2007 PL. Seria praktyk
Access 2007 PL. Seria praktyk
 
Word 2007 PL. Seria praktyk
Word 2007 PL. Seria praktykWord 2007 PL. Seria praktyk
Word 2007 PL. Seria praktyk
 
Serwisy społecznościowe. Budowa, administracja i moderacja
Serwisy społecznościowe. Budowa, administracja i moderacjaSerwisy społecznościowe. Budowa, administracja i moderacja
Serwisy społecznościowe. Budowa, administracja i moderacja
 
AutoCAD 2008 i 2008 PL
AutoCAD 2008 i 2008 PLAutoCAD 2008 i 2008 PL
AutoCAD 2008 i 2008 PL
 
Bazy danych. Pierwsze starcie
Bazy danych. Pierwsze starcieBazy danych. Pierwsze starcie
Bazy danych. Pierwsze starcie
 
Inventor. Pierwsze kroki
Inventor. Pierwsze krokiInventor. Pierwsze kroki
Inventor. Pierwsze kroki
 

Perl 6. Podstawy

  • 1. IDZ DO PRZYK£ADOWY ROZDZIA£ SPIS TRE CI Perl 6. Podstawy KATALOG KSI¥¯EK Autorzy: Allison Randal, Dan Sugalski, Leopold Totsch KATALOG ONLINE T³umaczenie: Rafa³ Szpoton ISBN: 83-7361-299-8 ZAMÓW DRUKOWANY KATALOG Tytu³ orygina³u: Perl 6 Essentials Format: B5, stron: 216 TWÓJ KOSZYK DODAJ DO KOSZYKA Ksi¹¿ka „Perl 6. Podstawy” jest krótkim przegl¹dem projektu Perl 6, bêd¹cego powszechnie oczekiwan¹, zupe³nie now¹ wersj¹ jêzyka programowania Perl. Projekt ten znajduje siê wci¹¿ w fazie rozwoju i jest efektem wysi³ku ca³ej spo³eczno ci Perla, CENNIK I INFORMACJE maj¹cym na celu utrzymanie go po ród jêzyków programowania XXI wieku. Wiele osób wci¹¿ zaanga¿owanych jest w rozwój Perla 5; w tym samym czasie g³ówna ZAMÓW INFORMACJE grupa programistów Perla rozpoczê³a pracê nad jêzykiem Perl 6, now¹, napisan¹ O NOWO CIACH zupe³nie od podstaw wersj¹ jêzyka. Chocia¿ w wersji tej wci¹¿ utrzymana zostanie filozofia Perla oraz jego powszechnie znana sk³adnia, to jednak wszystkie inne ZAMÓW CENNIK elementy jêzyka s¹ ponownie analizowane i tworzone od podstaw. Ksi¹¿ka „Perl 6. Podstawy” to przegl¹d bie¿¹cego stanu rozwoju jêzyka Perl dla wszystkich dotychczasowych jego u¿ytkowników, jak równie¿ dla pocz¹tkuj¹cych CZYTELNIA programistów, którzy swoje pierwsze programistyczne do wiadczenia wi¹¿¹ z Perlem. Napisana przez cz³onków g³ównego zespo³u programistów jêzyka ksi¹¿ka prezentuje FRAGMENTY KSI¥¯EK ONLINE wyja nienie ró¿nych etapów projektu, stanowi¹c jednocze nie materia³ referencyjny dla programistów, którzy s¹ zainteresowani planowanymi zmianami, jak równie¿ dla tych, którzy chcieliby przy³¹czyæ siê do projektu. Ksi¹¿ka ta z pewno ci¹ zaspokoi ich ciekawo æ i uka¿e, w jaki sposób zmiany wprowadzone do jêzyka uczyni¹ z Perla jeszcze potê¿niejsze i ³atwiejsze do stosowania narzêdzie. „Perl 6. Podstawy” stanowi pierwsz¹ ksi¹¿kê oferuj¹c¹ mo¿liwo æ wejrzenia w kolejn¹ g³ówn¹ wersjê jêzyka Perl. Stanowi ona niezbêdn¹ lekturê dla wszystkich osób zainteresowanych przysz³o ci¹ tego doskona³ego narzêdzia. Wydawnictwo Helion ul. Chopina 6 44-100 Gliwice tel. (32)230-98-63 e-mail: helion@helion.pl
  • 2. 5RKU VTG EK Przedmowa........................................................................................................................ 5 Rozdział 1. Przegląd projektu .......................................................................................9 Narodziny języka Perl 6 .........................................................................................................................9 Początek…...............................................................................................................................................10 Trwająca misja........................................................................................................................................12 Rozdział 2. Rozwój projektu.......................................................................................17 Rozwój języka.........................................................................................................................................17 Rozwój maszyny Parrot........................................................................................................................19 Rozdział 3. Filozofia projektu.....................................................................................25 Czynniki lingwistyczne oraz poznawcze ..........................................................................................25 Problemy architektury ..........................................................................................................................32 Rozdział 4. Składnia .....................................................................................................35 Zmienne...................................................................................................................................................36 Operatory ................................................................................................................................................43 Struktury określające przepływ kontroli ...........................................................................................59 Procedury................................................................................................................................................66 Klasy oraz obiekty .................................................................................................................................71 Gramatyki oraz reguły..........................................................................................................................74
  • 3. 4 Spis treści Rozdział 5. Struktury wewnętrzne .............................................................................83 Reguły projektu struktur wewnętrznych...........................................................................................83 Architektura maszyny wirtualnej Parrot ...........................................................................................84 Interpreter ...............................................................................................................................................89 Operacje wejścia-wyjścia, zdarzenia, sygnały oraz wątki...............................................................95 Obiekty ..................................................................................................................................................101 Funkcje zaawansowane ......................................................................................................................104 Konkluzja ..............................................................................................................................................108 Rozdział 6. Język symboliczny maszyny Parrot ...................................................109 Przygotowanie do pracy.....................................................................................................................109 Podstawy...............................................................................................................................................111 Praca z obiektami PMC.......................................................................................................................127 Przepływ sterowania...........................................................................................................................131 Stosy oraz ramki rejestrów.................................................................................................................134 Zmienne leksykalne oraz globalne ...................................................................................................137 Procedury..............................................................................................................................................141 Tworzenie testów.................................................................................................................................149 Krótki podręcznik PASM ...................................................................................................................151 Rozdział 7. Pośredni kompilator kodu....................................................................175 Przygotowanie do pracy.....................................................................................................................175 Przygotowanie do pracy.....................................................................................................................176 Przepływ sterowania...........................................................................................................................186 Procedury..............................................................................................................................................189 Parametry wiersza poleceń kompilatora IMCC .............................................................................194 Krótki podręcznik IMCC ....................................................................................................................197 Skorowidz...................................................................................................................... 205
  • 4. Filozofia projektu Dzisiejsza praktyka jest często niczym więcej niż tylko zaakceptowaną postacią wczorajszej teorii — Kenneth Pike „Wprowadzenie do Tagemiki” U podstaw każdego języka leży zestaw podstawowych idei nadających mu kierunek rozwoju oraz określających jego przeznaczenie. Osoby pragnące zrozumieć wybory do- konywane przez projektantów języka (dlaczego wybierają tę właściwość, a nie inną lub określony sposób jej wyrażenia), powinny najlepiej rozpocząć od prześledzenia rozu- mowania leżącego u podstaw tych wyborów. Na język Perl 6 oddziałuje unikatowy zestaw czynników. Sam język jest głęboko zako- rzeniony w systemie Unix, oraz jego systemach pochodnych, co wywiera szczególny wpływ na jego przydatność oraz praktyczne zastosowania. Stanowi on efekt akademic- kiej rywalizacji na polu nauk informatycznych oraz inżynierii programowania, co budzi chęć rozwiązywania problemów we właściwy sposób, a nie za pomocą środków doraź- nych. Sam język jest głęboko przesiąknięty tradycjami lingwistyki oraz antropologii, w związku z tym jako cel stawia się wygodną adaptację do postaci używanej przez człowieka. Właśnie te czynniki oraz jeszcze wiele innych definiują kształt języka Perl oraz kierunek jego rozwoju. Czynniki lingwistyczne oraz poznawcze Perl jest językiem ludzkim. Istnieje jednak wiele znaczących różnic pomiędzy Perlem a językami naturalnymi w rodzaju języka angielskiego, francuskiego, niemieckiego itd. Po pierwsze, został on skonstruowany w sposób sztuczny, a nie naturalny. Jego podsta- wowe zastosowanie, czyli określenie zestawu instrukcji, którymi kierować się będzie ma- szyna, odzwierciedla jedynie ograniczony zakres czynności występujących w życiu ludz- kim. Niemniej jednak Perl jest językiem, którego ludzie używają do porozumiewania się.
  • 5. 26 Rozdział 3. Filozofia projektu Wiele tych samych procesów umysłowych, które prowadzą do formułowania myśli w sło- wie oraz piśmie jest powielanych w postaci prowadzącej do utworzenia kodu. Proces nauki używania Perla jest bardzo podobny do nauki używania drugiego języka. Istotne są również procesy umysłowe związane z czytaniem. Chociaż podstawowym adresatem kodu napisanego w języku Perl jest maszyna, bardzo często to ludzie muszą odczytać kod podczas jego tworzenia, przeglądania oraz utrzymywania. Na wiele decyzji podejmowanych podczas projektowania Perla duży wpływ miały zało- żenia języków naturalnych. Poniżej zostanie przedstawionych kilka najważniejszych, to znaczy tych, które powracają wciąż podczas projektowania oraz tych, które wywarły największy wpływ podczas całego procesu. Teoria złożoności (teoria łóżka wodnego) Naturalną tendencją występującą w językach ludzkich jest utrzymywanie stałej ogólnej złożoności, gdy weźmiemy pod uwagę zarówno dwa różne języki, jak i zmiany danego języka wraz z upływem czasu. Podobnie jak w przypadku łóżka wodnego, jeżeli zmniej- szona zostanie złożoność w jednej części języka, automatycznie zwiększy się ona w in- nym miejscu. Język z obszernym systemem dźwięków (fonologią) mógłby mieć prostszą składnię. Język mający ograniczony zestaw dźwięków mógłby mieć bardziej złożony sposób tworzenia słów z mniejszych elementów (morfologię). Żaden język nie jest skom- plikowany w równym stopniu pod każdym z wymienionych względów, ponieważ był- by zupełnie nieprzydatny. Podobnie — żaden język nie jest całkowicie prosty, ponieważ zbyt mała liczba rozróżnień i możliwych do utworzenia kombinacji uczyniłaby go nie- przydatnym w praktyce. Ta sama zasada funkcjonuje w przypadku języków komputerowych. Wymagają one za- chowania stałej równowagi pomiędzy złożonością a prostotą. Ograniczenie możliwych operatorów do małego ich zestawu prowadzi do zwiększenia liczby metod oraz podpro- cedur definiowanych przez użytkownika. Nie jest to aż tak złe, lecz zachęca do tworze- nia kodu, który będzie rozwlekły oraz trudny do odczytania. Z drugiej strony, język, który definiuje zbyt wiele operatorów, zachęca do tworzenia kodu zawierającego skom- plikowane wiersze i jest tym samym równie trudny do odczytania. Doskonała równo- waga leży gdzieś pośrodku. Reguła prostoty Ogólnie mówiąc, preferowane są proste rozwiązania. Prosta składnia jest łatwiejsza do nauki, zapamiętania, wykorzystania w praktyce oraz odczytania. Niemniej jednak reguła ta znajduje się w ścisłym związku z teorią łóżka wodnego. Jednym z niebezpieczeństw, któremu należy zapobiec jest uproszczenie w złym obszarze. Kolejnym jest błędne uproszczenie oraz nadmierne uproszczenie. Niektóre problemy są złożone i wymagają złożonego rozwiązania. Gramatyki języka Perl6 nie są proste. Są one złożone na pozio- mie języka, w sposób pozwalający na stosowanie prostszych rozwiązań na poziomie użytkownika.
  • 6. Czynniki lingwistyczne oraz poznawcze 27 Reguła możliwości przystosowania Wraz z upływem czasu języki naturalne rozrastają się i zmieniają. Odpowiadają w ten sposób na zmiany występujące w środowisku oraz na nacisk wewnętrzny ze strony po- sługujących się nimi ludzi. Pojawia się nowe słownictwo, używane do zaspokojenia no- wych potrzeb komunikacyjnych. Stare określenia nie są używane, ludzie powoli je za- pominają, zaś w ich miejsce pojawiają się nowe, bardziej odpowiednie. Wraz z upływem czasu złożone części systemu mają tendencję do upraszczania się oraz rozbijania na mniejsze. To właśnie proces zmian utrzymuje język w postaci aktywnej oraz odpowied- niej dla ludzi go wykorzystujących. Nie zmieniają się jedynie martwe języki. Plan rozwoju języka Perl 6 jawnie określa plany przyszłych zmian języka. Nikt nie wie- rzy w to, że Perl 6.0.0 będzie językiem doskonałym. Jednocześnie jednak nikt nie chce kolejnego procesu zmian tak dramatycznego, jak podczas przejścia do wersji 6 języka Perl. Dlatego też Perl 6 będzie językiem elastycznym i na tyle zdolnym do adaptacji, aby wraz z upływem czasu umożliwiał stopniowe zmiany. Postanowienie to miało wpływ na wiele decyzji podejmowanych podczas projektowania, włącznie z uproszczeniem mo- dyfikacji sposobu parsowania (analizy składniowej) języka, ograniczeniem rozróżniania pomiędzy operacjami podstawowymi języka a operacjami zdefiniowanymi przez użyt- kownika, jak również ułatwieniem definiowania nowych operatorów. Reguła ważności W językach naturalnych określone struktury oraz konstrukcje stylistyczne służą do zwró- cenia uwagi na ważne elementy. Może być to akcent, np. w zdaniu „Pies ukradł mój port- fel” (pies, a nie człowiek) lub użycie dodatkowego czasownika, np. w zdaniu „To był pies, który ukradł mój portfel”, a nawet zmiana kolejności wyrazów „Mój portfel został skradziony przez psa” (mój portfel, a nie but itp.) lub dowolna liczba innych zabiegów. Perl został zaprojektowany ze swoim własnym zestawem konstrukcji służących do za- znaczenia ważności, z których niektóre zawarte są w samym języku, a niektóre umożli- wiają użytkownikom zaakcentowanie ważności w tworzonym przez nich kodzie. Bloki nazwane (NAMED) wykorzystują duże litery w celu zwrócenia uwagi, że znajdują się na zewnątrz normalnego przepływu sterowania w programie. Perl 5 posiada dodatkową składnię dla instrukcji kontrolujących wykonywanie programu, w rodzaju if oraz for, powodującą przesunięcie ich na koniec, co daje funkcjonowanie w charakterze modyfi- katorów instrukcji (ponieważ analiza wiersza w kodzie w języku Perl odbywa się od strony lewej do prawej, to właśnie lewa strona jest zawsze ważniejsza). Taka elastycz- ność została utrzymana w języku Perl 6, a do listy zostały dodane nowe struktury. Zachowanie równowagi podczas tworzenia projektu polega na podjęciu decyzji, które właściwości zasługują na zaznaczenie jako ważne, a w którym miejscu składnia może być mało uniwersalna, tak aby język był bardziej wyrazisty.
  • 7. 28 Rozdział 3. Filozofia projektu Reguła końcowej wagi Języki naturalne umieszczają duże elementy złożone na końcu zdań. I chociaż konstrukcje postaci „Dałem Marii książkę” oraz „Dałem książkę Marii” są tak samo wygodne w uży- ciu, to jednak zdanie „Dałem książę o historii rozwoju w Indonezji produktów opartych na orzeszkach ziemnych Marii” jest znacznie mniej wygodne niż jego odpowiednik. Dotyczy to głównie problemu z analizą takiego zdania przez mózg człowieka. Znacznie prostsze jest jednorazowe zinterpretowanie głównych bloków zdania niż rozpoczęcie od kilku pierwszych, przeanalizowanie długiego łańcucha mniej ważnych informacji, by w końcu powrócić do struktury zdania nadrzędnego. Pamięć ludzka jest ograniczona. Reguła ta jest jednym z powodów, dla których modyfikatory wyrażeń regularnych zo- stały w Perlu 6 przesunięte na początek. Znacznie prostsze jest odczytanie reguły gra- matycznej, kiedy od samego początku wiadomo, na przykład, że „na tę regułę nie ma wpływu wielkość liter”. (Ułatwia to również znacznie rozkład składniowy dokonywany przez komputer, co jest prawie równie istotne). Reguła ta jest również przyczyną, dla której pojawił się pomysł zmiany kolejności in- strukcji grep na: grep @array { potencjalnie długi i skomplikowany blok }; Jednakże tego rodzaju zmiana wywołuje takie wątpliwości w społeczności, że może nig- dy nie zostać wprowadzona. Reguła kontekstu Podczas interpretacji znaczenia języki naturalne wykorzystują kontekst. Znaczenia okre- śleń „gorący” oraz „gorący dzień”, „gorący utwór”, „gorący pomysł” oraz „gorąca dys- kusja” są całkiem różne. Niejawne znaczenie określenia „jest mokro” zmienia się w za- leżności od tego, czy stanowi ono odpowiedź na pytanie „Czy powinienem zabrać płaszcz?” czy też „Dlaczego pies biega po kuchni?”. To właśnie otaczający kontekst pozwala na rozróżnienie tych znaczeń. Kontekst pojawia się również w innych dziedzinach. Obraz przedstawiający abstrakcyjną pomarańczową sferę zostanie zinterpretowany odmiennie w zależności od tego, czy inne elementy na obrazie przedstawiają banany, klownów czy piłkarzy. Umysł ludzki stara się zrozumieć otaczający świat i używa w tym celu wszyst- kich dostępnych podpowiedzi. Perl od zawsze był językiem kontekstowym. Używa on kontekstu na szereg różnych sposobów. Najbardziej oczywistym jest wykorzystanie kontekstowe skalarów oraz list — w tym przypadku zmienna może zwrócić różne wartości w zależności od tego, w któ- rym miejscu została użyta oraz w jaki sposób. W Perlu 6 zostało to jeszcze rozszerzone o kontekstowe użycie łańcuchów znakowych, wartości logicznych, numerycznych oraz innych. Innym przypadkiem wykorzystania kontekstu jest użycie wartości domyślnych $_ w instrukcji print, chomp, when lub dopasowaniach.
  • 8. Czynniki lingwistyczne oraz poznawcze 29 Właściwości zależne od kontekstu utrudniają utworzenie interpretera dokonującego ich analizy, lecz są prostsze dla ludzi, którzy używają ich codziennie. Pasują one bowiem do sposobu, w jaki ludzie myślą naturalnie, a jest to jednym z założeń języka Perl. Reguła ZCMM W językach naturalnych występuje pojęcie „rodowitej intuicji rozmówcy”. Ktoś, kto bie- gle posługuje się językiem, będzie w stanie stwierdzić czy zdanie jest poprawne, nawet jeśli nie potrafi on racjonalnie wyjaśnić odpowiednich reguł. (Ma to niewielki wpływ na trudność, na jaką natrafiają nauczyciele języka angielskiego, próbując wymusić stosowa- nie przez studentów „poprawnej” gramatyki. Zasady formalnego języka pisanego różnią się znacznie od tych dla języka mówionego). Dane właściwości języka powinny dawać w sposób oczywisty efekty oczekiwane przez użytkownika. Właśnie ta idea „ZCMM”, to znaczy „Zrób Co Mam na Myśli” stanowi głównie kwestię intuicji. Na oczekiwania użytkownika mają wpływ jego doświadczenia, znajomość języka oraz podłoże kulturowe. Oznacza to, że intuicja jest specyficzna dla danego człowieka. Osoba posługująca się językiem angielskim nie będzie oczekiwać tych samych rezultatów, co osoba posługująca się językiem holenderskim, zaś programista ję- zyka Ada nie będzie oczekiwać tych samych efektów, co programista języka Cobol. Sztuczka zastosowana w projekcie polega na wykorzystaniu intuicji programisty, a nie walce z nią. Jasno zdefiniowany zestaw reguł nigdy nie dorówna potędze właściwości, która „po prostu wydaje się być poprawna”. Perl 6 przeznaczony jest dla programistów języka Perl. To, co może wydawać się po- prawne dla jednego programisty Perla może nie wydawać się poprawne dla innego, dlatego nie istnieje właściwość, która mogłaby zadowolić wszystkich. Jednakże w więk- szości przypadków możliwe jest dogodzenie większości osób. Ogólnie mówią, Perl adresowany jest do osób używających języka angielskiego. Wyko- rzystuje on na przykład słowa w rodzaju „given”, co osobom znającym ten język ułatwia zrozumienie działania kodu. Oczywiście nie wszyscy programiści używający tego języka programowania znają język angielski. W niektórych przypadkach użyty język jest uprosz- czony w celu zadowolenia szerszej grupy adresatów. W przypadku reguł gramatycz- nych oryginalne modyfikatory mają postać 1st, 2nd, 3rd, 4th itp. ponieważ są one najbar- dziej naturalne dla osób posługujących się językiem angielskim od urodzenia. Mają one jednak również postać alternatywną 1th, 2th, Nth itp., ponieważ zakończenia używane w języku angielskim w przypadku liczb są chaotyczne oraz niezbyt przyjazne dla osób dopiero uczących się tego języka Reguła ponownego wykorzystania Języki ludzkie mają tendencję do zawierania ograniczonego zestawu struktur oraz po- wtórnego ich wykorzystywania w różnych kontekstach. Języki programowania również stosują zestaw zwykłych konwencji składniowych. Język, który w celu ograniczenia pętli
  • 9. 30 Rozdział 3. Filozofia projektu wykorzystywałby nawias {...}, lecz do ograniczenia instrukcji if używałby pary słów kluczowych (na przykład if ... then ... end if), byłby strasznie denerwujący. Istnienie zbyt wielu reguł utrudniałoby odnalezienie wzorca. Jeżeli w czasie tworzenia projektu istnieje określona składnia służąca do wyrażenia jed- nej właściwości, to w celu wyrażenia związanej z nią innej właściwości często znacznie lepszym wyjściem jest użycie ponownie tej samej składni od wynajdowania czegoś zu- pełnie nowego. Nadaje to językowi ogólną spójność i ułatwia zapamiętanie nowych wła- ściwości. Właśnie z tego powodu gramatyki mają postać klas1. Mogłyby one używać dowolnej składni, lecz klasy wyrażają wiele właściwości wymaganych przez gramatyki, np. dziedziczenie oraz ideę tworzenia egzemplarza. Reguła rozróżnienia Mózg człowieka znacznie łatwiej dostrzega duże różnice niż małe. Na przykład znacznie prostsze do rozróżnienia są słowa „kot” oraz „pies” niż słowa „bieg” i „brzeg”. Zazwy- czaj odpowiednich wskazówek dostarcza kontekst, jeżeli jednak „kot” określany byłby jako „kies”, musielibyśmy bez końca poprawiać osoby, które źle nas usłyszały („Nie, powiedziałem, że Kowalscy mają nowego psa, a nie ksa”.). Głównym problemem podczas projektowania języka jest utworzenie widocznych wska- zówek, dających subtelne kontrasty. Język powinien unikać tworzenia zbyt wielu róż- nych rzeczy podobnych do siebie. Zbytnie przeciążenie zmniejsza przejrzystość i zwięk- sza prawdopodobieństwo pomyłki. Stanowi to część uzasadnienia powodu rozbicia dwóch znaczeń konstrukcji eval na try oraz eval, dwóch znaczeń konstrukcji for na for oraz loop, jak również dwóch znaczeń sub na sub oraz method. Reguły rozróżnienia oraz ponownego wykorzystania konstrukcji są w stałym związku. Jeżeli zbyt wiele właściwości będzie ponownie wykorzystywanych oraz przeciążonych, język stanie się niejasny. Zbyt wiele czasu będzie trzeba poświęcić na domyślanie się dokładnego znaczenia. Jeżeli jednak zbyt wiele właściwości będzie całkowicie różnych od siebie, język straci swoją spójność. Ponownie jest to problem wypracowania konsensusu. Język nie może być oddzielony od kultury Język naturalny bez społeczności osób posługujących się nim jest językiem martwym. Może być przedmiotem studiów z pobudek czysto akademickich, lecz jeżeli nikt nie po- dejmie wysiłku jego zachowania, prędzej czy później zaniknie zupełnie. Język nadaje społeczności poczucie tożsamości, gdy społeczność uznaje go za odpowiedni i przeka- zuje kolejnym pokoleniom. Kultura społeczności nadaje kształt językowi i wyznacza mu cel istnienia. 1 Więcej informacji szczegółowych dotyczących gramatyk znajduje się w podrozdziale rozdziału 4., zatytułowanym „Gramatyki oraz reguły”.
  • 10. Czynniki lingwistyczne oraz poznawcze 31 Również języki komputerowe są zależne od społeczności ich używających. Możesz mie- rzyć jej wielkość liczbą firm oferujących wsparcie dla danego języka, wierszami kodu znajdującymi się w użyciu, czy też zainteresowaniem użytkowników, jednak wszystko sprowadza się do jednej kwestii: nieużywany język programowania staje się martwy. Ostatnim znakiem śmierci języka jest sytuacja, gdy nie istnieje żaden jego kompilator lub interpreter, który mógłby działać na istniejącym sprzęcie oraz w istniejących systemach operacyjnych. Na etapie projektowania oznacza to, że samo dopasowanie właściwości języka do siebie nie jest wystarczające. Ważna jest również tradycja społeczności oraz jej oczekiwania, zaś niektóre zmiany mają swoją cenę kulturową. Reguła wolności W językach naturalnych zawsze istnieje więcej niż jeden sposób wyrażenia idei. Autor lub rozmówca ma wolność wyboru najlepszego określenia i ponosi za nie odpowiedzial- ność. Powinien wybrać taki sposób wyrażenia idei, aby był on logiczny dla adresatów. Perl zawsze oparty był na założeniu, że programiści powinni mieć wolność wyboru spo- sobu, w jaki utworzą swój kod. Udostępnia on łatwy dostęp do potężnych właściwości i pozostawia użytkownikom możliwość ich mądrego wykorzystania. Określa raczej zwy- czaje oraz konwencje, a nie prawa. Tego rodzaju reguła ma pod kilkoma względami wpływ na projekt. Jeżeli dana właści- wość jest korzystna dla całego języka, nie powinna być odrzucona jedynie dlatego, że ktoś mógłby użyć jej w głupi sposób. Z drugiej strony, nie jesteśmy za tworzeniem niektórych skomplikowanych właściwości, jeżeli miałyby być one bardzo rzadko wykorzystywane. Innym elementem wyzwania projektowego jest utworzenie narzędzi, które będą mieć wiele zastosowań. Nikt nie chce książki kucharskiej, którą czyta się jak powieść Stephena Kinga, nikt również nie chciałby w jednym wierszu umieszczać struktury definicji klasy. Język musi być na tyle elastyczny, aby dawać wolność. Reguła zapożyczeń Zapożyczenia są w językach naturalnych bardzo powszechne. W momencie gdy nowa technologia (jedzenie, ubrania itp.) jest importowana z innej kultury, całkiem naturalne jest zaadoptowanie również jej oryginalnej nazwy. Zapożyczane słowa są stopniowo ad- aptowane do nowego języka. W języku angielskim na przykład nikt nie wymawia słów w rodzaju „tortilla”, „lasagna” lub „champagne” dokładnie w ten sam sposób, co w ję- zykach, z których te słowa pochodzą. Zostały one zmienione tak, aby pasowały do wy- mowy języka angielskiego. Język Perl zawiera właściwości zapożyczone i tak samo będzie w przypadku języka Perl 6. Nie ma nic wstydliwego w przyznaniu się, że inny język wykonał wspaniałe zadanie, implementując określoną właściwość. Znacznie lepsze jest otwarte zapożyczenie dobrej
  • 11. 32 Rozdział 3. Filozofia projektu właściwości niż udawanie, że jest ona oryginalna. Perl nie musi być inny tylko z tego powodu, że jest inny. Większość właściwości jednak nie zostanie zaadoptowana bez ja- kichkolwiek zmian. Każdy język posiada swoje własne konwencje oraz składnię, a wiele z nich nie jest ze sobą zgodnych. Dlatego też właściwości są zapożyczane w Perlu przy użyciu odpowiednich konstrukcji języka służących do ich wyrażenia. Problemy architektury Drugi zestaw reguł dotyczy ogólnej architektury języka Perl 6. Reguły te są powiązane z przeszłością, teraźniejszością oraz przyszłością języka i definiują podstawowe przezna- czenie Perla. Żadna z reguł nie istnieje samodzielnie. Każda z nich dotyczy pozostałych. Perl powinien zostać Perlem Wszyscy zgodzą się, że Perl 6 powinien zostać Perlem. Pojawia się jednak pytanie, co tak naprawdę to oznacza? Nie oznacza to, że Perl 6 będzie posiadać dokładnie tę samą składnię. Nie oznacza również, że będzie on mieć te same właściwości. Gdyby tak było, Perl 6 byłby po prostu wersją 5 tego języka. Dlatego też istota tego pytania dotyczy kwe- stii, które definiują język jako „Perl”. Zachowanie przeznaczenia Perl zachowa oryginalne przeznaczenie zamierzone przez jego twórcę. Larry pragnął utworzyć język, który mógłby wykonać postawione mu zadanie, lecz nie upierał się przy swoim podejściu. Język musi być wystarczająco potężny do wykonania złożonych zadań, lecz wciąż lekki i uniwersalny. Jak stwierdził to Larry, „Perl ułatwia rzeczy pro- ste i umożliwia wykonanie rzeczy trudnych”. Podstawowa filozofia dotycząca projektu Perla pozostała niezmienna. W Perlu 6 proste rzeczy są nieco prostsze, zaś rzeczy trudne są łatwiejsze do wykonania. Znajomość Perl 6 będzie znajomy dla użytkowników języka Perl 5. Podstawowa składnia jest wciąż taka sama. Została tylko nieco wyczyszczona i jest bardziej spójna. Podstawowy zestaw właściwości jest wciąż ten sam. Język dodaje kilka nowych i potężnych właściwości, któ- re najprawdopodobniej zmienią sposób programowania przy ich użyciu, lecz nie będą one wymagane. Nauka języka Perl 6 będzie raczej przypominać poznawanie odmiany australijskiej ję- zyka angielskiego przez obywateli Stanów Zjednoczonych niż poznawanie języka ja- pońskiego przez obywateli Wielkiej Brytanii. Oczywiście istnieją pewne zmiany w za- kresie słownictwa i akcent jest nieco inny, lecz bez żadnych wątpliwości jest to wciąż język angielski.
  • 12. Problemy architektury 33 Możliwość przetłumaczenia Będzie istnieć możliwość automatycznego przetłumaczenia kodu z języka Perl 5 do Perl 6. W dłuższej perspektywie nie jest to aż tak istotne jak tworzenie kodu w języku Perl 6, lecz podczas fazy przejścia z jednej wersji języka do drugiej możliwość automatycznego tłumaczenia będzie ważna. Pozwoli ona programistom na rozpoczęcie pracy z językiem zanim zrozumieją każdy subtelny niuans wszystkich zmian. Perl zawsze spełniał zało- żenie polegające na preferowaniu nauki tego, co jest potrzebne w danej chwili i uczeniu się stopniowo pozostałych rzeczy. Ważne nowe cechy Perl 6 będzie zawierać wiele nowych właściwości, takich jak wyjątki, delegacje zadań, podział na wiele metod, kontynuacje, współprogramy. Udowodniły one swoją przydat- ność w innych językach, gdyż mają olbrzymią moc w przypadku rozwiązywania okre- ślonych problemów. Zwiększają również stabilność oraz uniwersalność języka. Wiele z nich jest tradycyjnie trudnych do zrozumienia. Perl stosuje to samo podejście co zawsze: udostępnia potężne narzędzia, ułatwia ich stosowanie oraz pozostawia użyt- kownikowi decyzję czy i kiedy je wykorzystać. Większość użytkowników w chwili wy- korzystywania metody assuming prawdopodobnie nie będzie nawet wiedzieć, że uży- wa aliasów parametryzowanych. Tego rodzaju właściwości stanowią ważny element przygotowywania Perla na przyszłość. Kto wie, jakie paradygmaty mogą powstać w przyszłości, przy wykorzystaniu połącze- nia tych zaawansowanych właściwości, udostępnionych w postaci przyjaznej dla prze- ciętnego programisty. Nie musi to być rewolucja, lecz z pewnością będzie to ewolucja. Przydatność długoterminowa Perl 6 nie jest wersją języka, która ma przetrwać kilka lat, a następnie zostać odrzucona. Ma on w założeniu przetrwać 20 lat i dłużej. Właśnie ta długoterminowa wizja języka wpływa na jego kształt i proces jego tworzenia. Nie jesteśmy zainteresowani implemen- towaniem kilku ekscytujących sztuczek. Pragniemy silnych zależnych narzędzi, dyspo- nujących dużą przestrzenią do rozwoju. I nie jesteśmy przerażeni perspektywą poświę- cenia nieco większej ilości dodatkowego czasu teraz, aby utworzyć je poprawnie. Nie oznacza to, że Perl 6.0 będzie idealny w porównaniu z innymi jego wersjami. Stanowi to jedynie kolejny krok w jego rozwoju.