We love Perl!
• tech • 817 słów • 4 minuty czytania
Perl, czyli “Practical Extraction and Report Language”, często też bywa rozwijany do “Pathologically Eclectic Rubbish Lister”. Ciężko jednoznacznie stwierdzić, które rozwinięcie nazwy jest bliższe rzeczywistości, ponieważ oba zostały zatwierdzone przez jego twórcę Larrego Walla.
Zastanawiające może być to, dlaczego ludzie tak nie lubią i nienawidzą Perla? Do tego często niektorzy go wszystkim odradzają, szczególnie początkującym, na rzecz Pythona, który w ostatnich czasach zwiększył swoją popularność, chociaż nie jest on wcale takim młodym językiem.
Na PerlMonks pojawił się ciekawy temat What was the bait (project, problem or opportunity) that hooked you on Perl?, czyli jak się uzależniliśmy od Perla i daliśmy się złapać ;) To chyba ten temat i kilka innych notek na różnych blogach programistów Perla sprowokowało mnie do napisania tego wpisu. Swój udział miała także frustracja po natknięciu się na kolejne miejsca w sieci, gdzie ludzie gardzą Perlem, odradzają go innym, a jednocześnie wychwalają wielkiego Pythona…
Mi się zawsze wydawało, że każdy pisze w tym co lubi. Nie każdy jest taki sam i nie wszystko musi się wszystkim podobać. Każdy ma wolność wyboru. Skoro ktoś zainteresował się Perlem, to czemu od razu wszyscy go atakują, wyśmiewają i namawiają do przejścia na Pythona. Niech ma swoją szanse! Nie spodoba mu się Perl to znajdzie sobie coś bardziej odpowiedniego lub zmieni swoje zainteresowania ;)
Sam osobiście nie przepadam zbytnio za Pythonem, Nie lubię go, mimo iż na studiach starają się mnie do tego “zmusić”. I pomimo tego, że za nim nie przepadam, nie namawiam programistów tego języka do jakichkolwiek zmian. Ja wolę podążać swoimi ścieżkami perlowymi, a oni powinni swoimi… po co komu jakieś kolejne święte wojny…
W Perlu jest wiele możliwości, skrzyżowań i drogowskazów, które prowadzą do celu:
Najważniejsze jest to, że droga ta jest prosta i możliwa do przebycia:
Perl is designed to make the easy jobs easy, without making the hard jobs impossible.
Ze świadomością, że cel na pewno zostanie osiągnięty:
Perl is a language for getting your job done.
Za to kocham Perla ;)
Rzeczy proste pozostają prostymi, a trudne da się rozwiązać na wiele różnych sposobów.
Perl jest prosty, łatwy i wydajny (kosztem elegancji). Nie narzuca żadnych z góry ustalonych reguł i ograniczeń, na siłę forsowanych przez twórców języka. Mam pełną wolność wyboru w jakim stylu i jak chcę napisać swój kod.
Zaraz pewnie odezwą się głosy pragmatyków i perfekcjonistów - przez to, że każdym może pisać w swoim stylu, bez żadnych ograniczeń, Perl jest językiem “write-only” - możliwym do pisania programów niemożliwych do odczytania.
To prawda, brak reguł jest bronią obusieczną, ale w każdym języku można pisać zagmatwany kod, który ciężko się czyta, analizuje, i jest trudny do utrzymania. Ale to też świadczy o jego sile. Doświadczony perlowiec poradzi sobie z kodem innego perlowca. A świat zewnętrzny? Kogo to obchodzi.
Yes, sometimes Perl looks like line noise to the uninitiated, but to the seasoned Perl programmer, it looks like checksummed line noise with a mission in life.
Marilyn w poście How Perl Became My #1 podaje kilka powodów dla których kocha Perla. Wspomina tam o magicznych zmiennych i symbolach. To właśnie dzięki nim Perl posiada tę magiczną otoczkę i dzięki nim kod Perla staje się prostszy i zwięzły - w łatwiejszy i szybszy sposób można dokładnie wyrazić w nim swoje myśli i osiągnąć cel.
Ta magiczność, ten niezrozumiały na pierwszy rzut oka ciąg przypadkowych znaków będący fragmentem kodu, mnie przyciągał do Perla. Tak bardzo mnie to pociągnęło, że sam zacząłem używać tego języka i dałem się złapać. Za dużo kodu i wiele skryptów może jeszcze w nim nie napisałem, ale wystarczyło to by się w nim zakochać.
Perl to nie tylko kolejny język programowania, to także wielka społeczność skupiona wokół Perla i CPAN.
CPAN jest wielkim zbiorem różnych zasobów, ale to także wielka społeczność developerów i użytkowników Perla. Repozytorium to zawiera niezliczone ilości zasobów, modułów, które nie tylko dają nam dostęp i klucze do “innych wymiarów”, nowych funkcjonalności, ale także mogą rozszerzać sam język, i to wszystko open source. Jest to najbardziej użytecznym miejscem dla każdego programisty Perla. Zawiera obecnie blisko 16 000 modułów prawie 7500 autorów.
Czy inne języki skryptowe mogą poszczycić się podobnymi osiągnięciami i zasobami?
Społeczność perlowa to swoisty fenomen, o którym można byłoby pisać książki. Sam Larry mówi o niej w ten sposób:
Często myślę o kulturze Perla jak o niepodzielnej całości, ale w rzeczywistości istnieje wiele naturalnych subkultur, nie wspominając o wszystkich subsubkulturach, superkulturach i wszelkich innych ich kombinacjach. Wszystkie wymieniają się metodami i atrybutami. Może to być przytłaczające i właśnie na mnie tak to oddziałuje.
Perl nigdy nie umrze, dobrze się trzyma już ponad 20 lat, a zbliżająca się wersja 6 tego języka oraz nowy styl “modern perl” na nowo umocnią jego pozycje.
Nadal uważasz, że pisanie w Perlu nie należy do łatwych i przyjemnych rzeczy, a programiści go używający są nad wyraz ludźmi z lekko zaburzoną psychiką? To w takim wypadku, czemu programiści Perla są najszczęśliwszymi ludzmi?
Komentarze (7)
Patrząc na Twoje potworki w c++ to się nie dziwie że perl Ci nie straszny :P
Potworki?
To tylko nowoczesny C++ z szczypta wzorców, a Perl jest prosty i przyjemny, tylko ludzie się nie znają ;)
Zawsze gdy zależy mi na wyniku to używam Perla. W Pythonie też pisałem, ale wolę tego nie powtarzać - kod w C++ powstałby przynajmniej kilka razy szybciej. Miałem błąd na błędzie, a GC sprzątał mi potrzebne dane ;-). Perl może i wygląda czasami dziwnie (np. model “obiektowy”), ale przynajmniej ma logiczne zachowania. W Pythonie choćby słówko “super” zachowuje przynajmniej nieintuicyjnie.
OOP będzie przyjemniejsze w Perl6, już teraz można się tym pobawić na Rakudo lub pod 5tką pisać w stylu modern perl - moduł
Moose
i przyjaciele ;)Niepotrzebnie się tak pienisz na Pythona :-) To bardzo miły i bardzo logiczny język, wielu programistów Perla przyznaje się do inspiracji Pythonem.
To chyba właśnie najbardziej boli niektórych - że Perl nie widzi problemów z sięganiem po wypróbowane przez innych metody. “Pożycza” skąd się da, rozszerzając swoje możliwości i nie wstydzi się tego. Wspomniany Moose to de facto implementacja CLOS-u, podprowadzonego z LISPa. Nawiasem mówiąc LISP jako pierwszy wprowadził pojęcie funkcji oraz instrukcję warunkową
if
, jakieś 50 lat temu :-)To tak w kwestii martwych i przestarzałych języków…
Aż tak się nie pienie na Pythona, znam podstawy i mi akurat nie podchodzi, ale szanuje wybory innych.
Ogólnie co mnie drażni to wszelkie FUD’y jakie powstają wokół Perla. O dziwo większość nich pochodzi od Pythonowców, “którzy wiecznie poszukują uzasadnienia, że Python jest lepszy od Perla” i nie tylko ;)
Obecnie przymierzam się do Perla i wydaje mi się,że będzie dość duża linia oporu przy nauce jak to zawsze na początku,ale chcę poznać ten język.A co do Pythona i tych wszystkich sporów wokół języków skryptowych to uważam kwestia upodobań tylko i wyłącznie.Sam kiedyś się zad tym zastanawiałem niepotrzebnie marnując czas…Spróbuj,a się przekonasz,bo tak jest we wszystkim:)