Czy warto uczyć się Perla?

Mam ochotę podszlifować sobie jakiś język skryptowy i bardzo bym chciał, żeby to nie był Python. Zastanawiam się na Perlem. Z jednej strony, język dopracowany, o długiej tradycji i z doskonałą (chyba najlepszą z wszystkich języków) dokumentacją; z drugiej - odchodzi nieco w przeszłość. Zamierzam używać go do administracji systemem (Linux) i prostych aplikacji GUI (tu myślę o Perl/Tk). Co sądzicie? Warto? Nie warto?

Jeśli masz czas i chęć, to warto się uczyć każdego języka, nawet tego Patologicznego Ekletycznego Roztrząsacza Śmieci. To dość nietypowy język, w którym pewne rzeczy idzie zrobić krócej i łatwiej niż w innych, ale po tygodniu kod staje się bardzo nieczytelny nawet dla tego, kto to pisał (taki stereotyp tego języka).

IMO Python jest nieco bardziej “opłacalny”. Ewentualnie Ruby. O Shellu, czy Bashu już nie wspomnę przy administracji systemem :slight_smile:

Ja zawsze uważam, że wiedzy nigdy za mało, nawet czasami najbardziej absurdalna(nie chodzi mi o twój temat :D) może wydać się pożyteczna :wink:

Jako uzupełnienie/zamiennik basha sprawdza się dobrze, z powodzeniem używałem go do onelinerów jak i dłuższych skryptów na własny użytek.

Co do Tk - nie używałem, trudno mi powiedzieć.

Btw. czemu nie Python? Akurat do większych rzeczy, z GUI, raczej wybrałbym Pythona, mimo iż lubię Perla.

Kwestia gustu po prostu. Parę razy podchodziłem do Pythona i nie mogę się przekonać (lubię nawiasy klamrowe? :slight_smile: ). Do tego Python jest zorientowany obiektowo, a to mnie nie interesuje. Oczywiście, próbowałem też Basha, Tcl i Lua ale są zbyt niszowe lub za mało uniwersalne. Zdaję sobie sprawę, że obiektywnie Python to pewnie najlepszy wybór, ale Perl mi jakoś bardziej podchodzi.

Python:

Paradygmat: wieloparadygmatowy (obiektowy, imperatywny, funkcyjny)

Perl:

Paradygmat: wieloparadygmatowy (obiektowy, imperatywny, funkcyjny)

Zresztą obiektowości nikt ci nie narzuca. Widziałem parę pythonowych kursów nawet nie poruszających tego zagadnienia. Możesz poprzestać na funkcjach albo trzaskać wykonywane linijka po linijce skrypty.

A Bash (albo AWK) wcale aż takie niszowe nie są.

Oba określane są jako wieloparadygmatowe, jednak nie do końca tak samo rozkłada się “udział” paradygmatów w każdym przypadku. W przypadku Pythona obiektowość jest o wiele bardziej akcentowana i chyba jednak bardziej naturalna. Być może się mylę, ale taki obraz jawi mi się po lekturze dokumentacji czy dyskusji na forach.

Co do Basha, to oczywiście nie jest niszowy, ale jego zastosowanie jest bardzo ograniczone. “Niszowe” odnosiło się raczej do Tcl i Lua.

W każdym razie, dzieki za opinię. Głosy na NIE też są pomocne. :wink:

Lua niszowy? Wbrew pozorom to dość popularny język skryptowy używany w wielu silnikach gier. Osobiście nie lubię jego “pascalowości” (wyrazy zamiast klamer).

Jak coś w Pythonie piszę, to rzadko obiektów używam. IMO trochę niewygodny jest tamtejszy zapis metod (te “self” zawsze i wszędzie). Ale język jak najbardziej przydatny. A wymuszanie wcięć zamiast klamer jest po prostu świetne.

Niemożliwe :slight_smile: W Pythonie wszystko jest obiektem.

>>> isinstance(3, object)

True

>>> isinstance('spam', object)

True

>>> class A:

	pass


>>> isinstance(A, object)

True

>>> def mmm(x):

	print(x)



>>> isinstance(mmm, object)

True

>>>

Ponadto w Pythonie 3 wszystkie klasy są “w nowym stylu” i dziedziczą po object. Co więcej teraz wszystkie typy są klasami i klasy typami.

>>> type(type)


>>> type(object)


>>> isinstance(type, object)

True

>>>

Ps Domyślam się, że chodzi o klasy (które też są obiektami).

No właśnie, między innymi, o to mi chodzi. :slight_smile: Że wcześniej czy później okaże się, że moje programy/skrypty to żenada, bo w Pythonie powinno pisać się obiektowo, bo wszystko jest obiektem itp. :wink:

No i właśnie gry to jest ta nisza. :wink: Sporo bawiłem się EGSL, interpreterem zbudowanym w oparciu o Lua, Pascala i SDL, przeznaczonym do łatwego tworzenia retro gierek. Nawet myślałem, żeby o tym tu na blogu napisać, bo jest to świetna rzecz do nauki dzieci, czego nie można powiedzieć o Perlu ani (chociaż wiele osób uparcie tak twierdzi) Pythonie.

Z technicznego punktu widzenia wszystko jest obiektem. Nie zmusza to jednak do programowania w sposób zorientowany obiektowo. Można pisać programy w Pythonie bez korzystania z klas, instancji, metod itd. Co więcej, “nadużywanie” klas do rzeczy, które można zrobić prościej bez ich użycia uchodzi za “niepythonistyczne”.

Nie rozumiem obawy przed programowaniem obiektowym. To obecnie najbardziej popularny paradygmat. Do skryptów i małych programów może się nie przydać, ale przy pisaniu dużych programów warto z niego korzystać.

Żebyś chociaż napisał “To dotychczas najlepszy paradygmat”… A tu tylko “obecnie” i “najbardziej popularny”. :wink: A poważniej - widzę, że Perl to jednak nie najlepszy pomysł. Dzięki za opnie! :slight_smile:

Nie można powiedzieć, który paradygmat jest najlepszy. Zależy od zadań i upodobań programistycznych.