Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: smonty 27. 04. 2014, 12:28:14

Název: Perl v roce 2014 a v budoucnu
Přispěvatel: smonty 27. 04. 2014, 12:28:14
Zdravíčko :)
před nějakou dobou jsem tu založil vlákno týkající se použití Perlu na automatickou administraci Linuxu... Tentokrát bych to chtěl víc zobecnit a zeptat se jestli vůbec na něco používáte Perl? Není náhodou perl mrtvý / vytlačený Pythonem? Má smysl se Perl učit?
Název: Re:Perl v roce 2014 a v budoucnu...
Přispěvatel: Karel 27. 04. 2014, 12:41:10
Cs,
mrtvi neni, minimalne ho potrebujes aby si rozumel starsim scriptum, a co se vytlacovani tyka, neco se lepe pise v pythonu, neco v bashi a neco zas v perlu. Obecne nelze rict ze neco je lepsi.
Název: Re:Perl v roce 2014 a v budoucnu...
Přispěvatel: smonty 27. 04. 2014, 13:02:09
Jo, rozumět starším skriptům asi jo. Ale jaká je udržitelnost takových věcí? I co se bashe týče? Ve smyslu nějakého týmového vývoje? Jak pak vypadá takový Perlový týmový vývoj? Co se bavím s lidma co dělají něco v perlu tak jsem se nesetkal s nikým kdo by právě v týmu dělal, a tudíš neřeší nějaké OOP, balíčky (tím nemyslím že by nepoužívali CPAN)...

Teda, né že bych byl nějaký odborník na to co dělá např. RedHat, ale tuším že hodně věcí se tam tlačí v pythonu/ruby - na skripty, na testy, na vývoj jako takový?

Máte někdo zkušenosti s Perlem 5 VS. Perlem 6?
Název: Re:Perl v roce 2014 a v budoucnu...
Přispěvatel: eMko 27. 04. 2014, 18:07:31
Ahoj,

v Brně jsou tři mně známé firmy používající Perl, IS4U je jedna z nich. Je to největší hráč na česko-slovenském trhu s informačními systémy pro vysoké školy + pokud vím plánovali ještě expanzi jinam (m.j. do pobaltí). Velká část toho systému je napsaná v Perlu 5.

Perl 5 mrtvý rozhodně není a nevím o nikom, kdo by ve firmě nasazoval Perl 6. (Pravda, že na primární byznys se dostávají technologie právě přes nějaký "proof of concept" nebo malý projekt o kterých se moc nemluví a samozřejmě nemám patent na rozum světa - je možné, že se do toho někdo pustil.) Každopádně jsi-li v Brně a hledáš-li práci, zkus zjistit jestli některá z těch firem nenabírá - Perlistů je málo a dobrých ještě méně (a lepší je spoléhat na osobní návštěvu - občas vezmou někoho i když nemají oficiálně otevřenou pozici). A spíš počítej s tím, že se používá Perl verze 5. Rakudo je stále označována jako verze pro "early adopters". Já mít firmu, tak bych do toho nešel.

Jinak na poli skriptů pro nějakou automatizaci úloh na unixu/linuxu si troufnu tvrdit, že Perl rozhodně není dominantní jazyk a Python je rozšířenější. V práci i na AIXových a HP-UXových serverech vidím buď bash+python nebo nic. Na windows nevím o nikom, kdo by používal Perl - znám dost těch, co používají PowerShell nebo Python.
Název: Re:Perl v roce 2014 a v budoucnu...
Přispěvatel: backup 27. 04. 2014, 18:36:11
my jsme se ve firme rozhodli pro perl v roce 1997. Duvodem pro to byla tenkrat kniha Advanced Perl Programming autora Sriram Srinivasan. V te je vlastne popsano k cemu se perl hodi a jak ho pouzivat. Tenkrat neexistovala zadna podobna publikace pro jine scriptovaci jazyky a moznosti popsane v te knize nam to rozhodnuti usnadnily.

Perl pouzivane ve frameworku pro tvorbu ERP-systemu sitych na miru zakaznikovi. Ten framework neni samozrejme napsany v perlu, jen blazen by to tak delal. Perl muze v nejakem vetsim celku (treba preve v nejakem frameworku) hrat pouze podpurnou roli (zrovna tak jako kazdy jiny scriptovaci jazyk). My to tedy pouzivame na vystupy, (formulare, prehledy),  jednorazove transfery dat a pod. Vsechny ty az 17 let stare programy jsou dnes zrovna tak citelne jako prvni den, i proto, ze jsem se zamerne vyhli ruznym ficurkam a kudrnatemu kodu.

Perl (nebo i jiny scriptovaci jazyk) je vhodny tehdy, kdyz ten script dostane nejakou ulohu a provede ji. Je to jeden proces, ktery se nastaruje, a po chvilce se opet ukonci - a nezbyde po nem nic v pameti, procesnim prostoru.  Navic je to dobre jednotlive testovatelne, vyvolat perl program s parametry z radky ma stejne chovani, jako pozdeji uvitr toho framevorku pres nejaky exec, system call.

Videl jsem ale i nekolik velkych projektu napsanych v perlu - to je skutecne silene a pro nekoho zvenku necitelne a neopravitelne. Ale podobne jsem videl i u pythonu. Scriptovaci jyzyk je urcen pro jednotlive male ulohy - tak jsem si to pred temi 17 lety precetli a vzali kjsme si to k srdci. Perl nas zatim nezklamal.
Název: Re:Perl v roce 2014 a v budoucnu
Přispěvatel: smonty 27. 04. 2014, 20:52:52
velmi velmi zajímavé... díky za odpovědi.

Ještě jsem chtěl zabrousit do oblasti zpracování textu. A to jsem si říkal že mi to tu někdo omlátí o hlavu. Partie ve které je Perl údajně nejlepší. Není to náhodou jedno že je v tom nejlepší? když dnes existují knihovny na cokoli a stejně jak bych to udělal v Perlu tak to udělám třeba v Javě? (uvažujme prosím princip otázky, nikoli např. výkon a podobná témata) protože pokud bych to dělal v nějakém dominantním jazyku tak se najde spousta lidí kteří moho nahradit stávající vývojáře, a existuje mnoho dalších výhod které Perl write-only ztrácí?
Název: Re:Perl v roce 2014 a v budoucnu...
Přispěvatel: smonty 27. 04. 2014, 21:03:33
Každopádně jsi-li v Brně a hledáš-li práci, zkus zjistit jestli některá z těch firem nenabírá - Perlistů je málo a dobrých ještě méně (a lepší je spoléhat na osobní návštěvu - občas vezmou někoho i když nemají oficiálně otevřenou pozici).

Mám do školy něco dělat v Perlu a vypadá to tak že si přiblížím monitor, zvětším písmo a obrním nervy. Mám kamaráda co si perl dává na vysoké úrovni a měl jsem nějakou dobu opravdu touhu a chuť do toho proniknout.... Ale to se fakt nedá. Neznám jazyk kde abych byl něčeho minimálně schopen tak toho musím vědět tolik jako v Perlu. Nevím, nechápu to... je to psycho. Programuju v tom céčkovým stylem... ale i tak mi z toho jde hlava kolem :(
Název: Re:Perl v roce 2014 a v budoucnu
Přispěvatel: wamba 27. 04. 2014, 23:23:35
Ještě jsem chtěl zabrousit do oblasti zpracování textu. A to jsem si říkal že mi to tu někdo omlátí o hlavu. Partie ve které je Perl údajně nejlepší. Není to náhodou jedno že je v tom nejlepší? když dnes existují knihovny na cokoli a stejně jak bych to udělal v Perlu tak to udělám třeba v Javě? (uvažujme prosím princip otázky, nikoli např. výkon a podobná témata) protože pokud bych to dělal v nějakém dominantním jazyku tak se najde spousta lidí kteří moho nahradit stávající vývojáře, a existuje mnoho dalších výhod které Perl write-only ztrácí?
No u mě se to, že Perl vyniká ve zpracování textu projevuje tak, že pak používám např. regulární výrazy a podobné věci, někdy i tam, kde by v jiných jazycích tě to ani nenapadlo,  (což neříkám, že musí být dobře :) ), navíc kde bych mohl ve scriptech použít sed,awk,grep,... nebo i ve Vim-u pro nahrazení, tak většinou použiji "one-line" Perl. Perl umožňuje psát kód nesrozumitelně, ale stejně tak i velmi přehledně a srozumitelně záleží na tobě, co si vybereš (nepopírám, že občas když něco píši, tak to rychle napíši "na divoko" s tím že to posléze přepíši a nato už nikdy nedojde a pak chvíli "luštím", co to vlastně dělá.   

Mám do školy něco dělat v Perlu a vypadá to tak že si přiblížím monitor, zvětším písmo a obrním nervy. Mám kamaráda co si perl dává na vysoké úrovni a měl jsem nějakou dobu opravdu touhu a chuť do toho proniknout.... Ale to se fakt nedá. Neznám jazyk kde abych byl něčeho minimálně schopen tak toho musím vědět tolik jako v Perlu. Nevím, nechápu to... je to psycho. Programuju v tom céčkovým stylem... ale i tak mi z toho jde hlava kolem :(
No naopak Perl je velmi variabilní a začít psát kód lze i s velmi málo znalostmi. Jsou třeba příkazy v Perl-u, které nepoužívám. Perl velmi dobře umožňuje růst společně s programátorem. "Céčkovským" stylem klidně programuj Perl to umožňuje. Abych citoval:
Citace
You can sometimes write faster programs in C, but you can always write programs faster in Perl.
 
Název: Re:Perl v roce 2014 a v budoucnu...
Přispěvatel: eMko 28. 04. 2014, 06:36:59
Neznám jazyk kde abych byl něčeho minimálně schopen tak toho musím vědět tolik jako v Perlu. Nevím, nechápu to... je to psycho.

Nikdy jsem si nevšiml, že by člověk píšící v Perlu potřeboval více znalostí než v C, Pythonu apod. Myslím, že to je jenom Tvým odporem k Perlu ... čemuž se nedivím (a což máme společné ;-) ). V práci jsem viděl pár starších skriptů po ne-zrovna-moc-dobrých programátorech a nebyl jsem schopen poznat, jestli skript je napsaný v Perlu nebo Brainfucku.

Perl je pověstný tím, že velice snadno může být tzv. write-only jazykem - co napíšeš, to už nikdy nepřečteš. Na druhou stranu tím, že jej navrhoval lingvista, má celkem slušné množství zajímavých konstrukcí, díky nimž umožňuje napsat velmi dobře čitelný kód - ale chce to trochu zkušeností a hlavně sebedisciplínu - místo napsání kódu rychle je potřeba se kousnout a napsat ho pořádně.

Pokud Ti Perl nevyhovuje, zkus Python, máš-li možnost volby. Nevím o moc běžných věcech, které by v Pythonu byly výrazně horší než v Perlu. Naopak pokud potřebuješ pracovat s objekty a psát objektový kód, v Pythonu na to nepotřebuješ požehnání (viz funkce bless http://perldoc.perl.org/functions/bless.html nebo pole @ISA) :-) . Jediné, co Ti na Pythonu bude asi chybět, je CPAN a perlmonks.

Případně ještě Groovy je relativně jednoduchý a pohodlný jazyk, i když s trochu živelným návrhem. Jeho největší výhoda je, že běží nad JVM, takže o knihovny není nouze. Jeho největší nevýhoda je, že běží nad JVM, takže za jeho doporučování či protěžování by mě někteří členové komunity na Rootu asi začali kamenovat.
Název: Re:Perl v roce 2014 a v budoucnu
Přispěvatel: jm 28. 04. 2014, 09:19:40
Zdravím,

mám jen pár poznámek:
1. Pro OO programování v P5 se dá využít systém Moose: http://search.cpan.org/~ether/Moose-2.1205/lib/Moose.pm (http://search.cpan.org/~ether/Moose-2.1205/lib/Moose.pm); bless a @isa se už používat nemusí.
2. Pro psaní hezkého kódu v Perlu existuje příručka "Perl Best Practices" od D. Conwaye, pro kontrolu kódu se dá využít program "perlcritic".
3. Perl jsem se naučil jako ne-programátor ve vysokém věku / asi ve 25 :) /, protože jsem ho jako lingvista potřeboval pro zpracování většího množství dat. Pokud můžu soudit, minimálně v téhle oblasti se pořád využívá. (A pokud je mi známo, tak ho používají třeba i biologové pro analýzu sekvencí DNA.)
4. Osobně se mi líbí (a netvrdím, že to jiné jazyky neumí) propojení regulárních výrazů s třídami (vlastnostmi) Unicodu http://perldoc.perl.org/perluniprops.html (http://perldoc.perl.org/perluniprops.html).

Přeju hezký den.
Název: Re:Perl v roce 2014 a v budoucnu
Přispěvatel: perl 28. 04. 2014, 15:44:42
Já vidím přednost PERLu v rychlosti tvroby kódu. Potřebuju-li nějakou jednoúčelovou utilitku, nebo "praktickou ukázku" jak bude nějaká budoucí aplikace fungovat, není podle mne nic rychlejšího.

Ukáže-li se, že je do budoucna potřeba to udělat pořádně (utilitka se má používat pravidelně, zákazník projeví zájem o aplikaci s ekvivalentní funkcionalitou, ... apod.), není problém to nabouchat v C/C++.

Takhle funguju už více jak 15 let a zatím spokojenost :-).
Název: Re:Perl v roce 2014 a v budoucnu
Přispěvatel: txt 28. 04. 2014, 22:26:20
Já vidím přednost PERLu v rychlosti tvroby kódu. Potřebuju-li nějakou jednoúčelovou utilitku, nebo "praktickou ukázku" jak bude nějaká budoucí aplikace fungovat, není podle mne nic rychlejšího.

Ukáže-li se, že je do budoucna potřeba to udělat pořádně (utilitka se má používat pravidelně, zákazník projeví zájem o aplikaci s ekvivalentní funkcionalitou, ... apod.), není problém to nabouchat v C/C++.

Takhle funguju už více jak 15 let a zatím spokojenost :-).
Nabíledni je srovnání s Pythonem.
Název: Re:Perl v roce 2014 a v budoucnu
Přispěvatel: mikrom 28. 04. 2014, 23:14:21
Není to náhodou jedno že je v tom nejlepší? když dnes existují knihovny na cokoli a stejně jak bych to udělal v Perlu tak to udělám třeba v Javě?
Mam nejake skusenosti s Perlom, Pythonom, Ruby  a Javou a myslim ze to  neni jedno.
Napriklad na spracovane textu je produktivita v Perle oproti Jave neporovnatelne vyssia.
Na vyvoj v Jave potrebujes IDE, ktore podporuje autocomplete a upozornuje ta na chyby, inac by bol vyvoj pomaly. V Perle ti staci jednoduchy editor ako napr vim.
Pretoze java si vynucuje OOP budes musiet aj na riesenie maleho problemu napisat ovela viac kodu ako v Perle.
Perl ma neporovnatelne jednoduchsiu pracu s regularnymi vyrazmi - v Jave je to tazkopadnejsie. Okrem toho je rozdiel medzi programatormi v Perle a v Jave: Zatial co programatori v Perle povazuju regularne vyrazy za uplny zaklad, mnohi programatori v Jave ich nevedia vobec pouzivat, takze nimi navrhnute riesenie byva zlozitejsie ako riesenie programatora v Perle.
Dalsia vec je ntegracia do komplexnejsich shell skriptov. Podla mna je jednoducsie pouzit Perl script kde si vies hned pozriet zdrojak ako nejaky Java class.

Obidva jazyky maju svoje opodstatnenie. Myslim, ze na jednoduchsie a jednorazove veci je najlepsi Perl. Ak chces nieco vacsie a potreboval by si to robit v OOP tak skus Python, alebo Ruby. Vyhoda Ruby je ze regex ma velmi sikovne prebrate z Perlu a nie su tam problemy z odsadzovanim v zdrojovom kode ako v Pythone. Na rozsiahlesjise veci je dobra Java - hlavne sa da za nu fakturovat ovela viac CD.
 
Název: Re:Perl v roce 2014 a v budoucnu
Přispěvatel: txt 29. 04. 2014, 00:10:44
Obidva jazyky maju svoje opodstatnenie. Myslim, ze na jednoduchsie a jednorazove veci je najlepsi Perl. Ak chces nieco vacsie a potreboval by si to robit v OOP tak skus Python, alebo Ruby. Vyhoda Ruby je ze regex ma velmi sikovne prebrate z Perlu a nie su tam problemy z odsadzovanim v zdrojovom kode ako v Pythone. Na rozsiahlesjise veci je dobra Java - hlavne sa da za nu fakturovat ovela viac CD.
 
Na alespoň jednoduché IDE jsem si už zvykl a právě odsazování je pro mě podstatná výhoda. Odsazoval bych jakýkoliv kód a takhle nemusim psát žádné zbytečné složené závorky, beginy, endy. IDE se postará. Je to pouze dílčí aspekt, ale zrovna tohle nepovažuju za nevýhodu, ale naopak za výhodu Pythonu.
Název: Re:Perl v roce 2014 a v budoucnu
Přispěvatel: alfonz 29. 04. 2014, 06:55:40
Také se přidám k tomu, že Python a jeho odsazování je prostě geniální. Přehlednost kódu určitě roste, je možné zbavit se hodně velkého množství zbytečností a je to rychlejší.

K Perlu ano když začnu číst kód v Perlu, tak je to obvykle v pohodě a zhruba chápu co, které části dělají. Trvá to ale déle než např. v Pythonu.
K regulérním výrazům, obvykle je používám, jen když to vypadá, že to bez nich půjde špatně. V normálním zpracování textu, používám
raději funkce v pythonu jako jsou split(), join(), replace() apod... většina věcí s nima jde lépe a rychleji.
Název: Re:Perl v roce 2014 a v budoucnu
Přispěvatel: mc 29. 04. 2014, 11:24:01
Myslim, ze na jednoduchsie a jednorazove veci je najlepsi Perl. Ak chces nieco vacsie a potreboval by si to robit v OOP tak skus Python, alebo Ruby. Vyhoda Ruby je ze regex ma velmi sikovne prebrate z Perlu a nie su tam problemy z odsadzovanim v zdrojovom kode ako v Pythone. Na rozsiahlesjise veci je dobra Java - hlavne sa da za nu fakturovat ovela viac CD.

Výše jsem odcitoval část s kterou se nemohu ztotožnit. Perl je rozhodně velmi efektivní nástroj na malé věci (zde se shodujeme). Ale rozhodně nelze tvrdit, že není vhodný na velké věci. Mimochodem velké věci začínají často tvorbou malých věcí. Ono v praxi občas není na počátku zřejmé, že z nějaké malé věci se stane něco velkého a trvalého. Ano, při zvětšování malých věcí či integraci do většího celku je často vhodné je dost předělat, ale bývá to mnohem efektivnější než začínat na zelené louce v jiném jazyce.

Perl 5 je velmi efektivní jazyk. A je fascinující, když člověk vidí, že to co napsal před 15 lety dnes stále funguje (na moderních strojích a na moderních OS).

S Perl 5 můžete narazit ve chvíli, kdy nějaký kód "hodně počítá" a je často používán. Inkriminované části, kde je nutná vysoká rychlost, je vhodné přepsat do C jako knihovnu pro Perl.