34 éves lett a Perl!

Címkék
a "replacement" for awk and sed
[  Perl is kind of designed to make awk and sed semi-obsolete.  This posting
   will include the first 10 patches after the main source.  The following
   description is lifted from Larry's manpage. --r$  ]

   Perl is a interpreted language optimized for scanning arbitrary text
   files, extracting information from those text files, and printing
   reports based on that information.  It's also a good language for many
   system management tasks.  The language is intended to be practical
   (easy to use, efficient, complete) rather than beautiful (tiny,
   elegant, minimal).  It combines (in the author's opinion, anyway) some
   of the best features of C, sed, awk, and sh, so people familiar with
   those languages should have little difficulty with it.  (Language
   historians will also note some vestiges of csh, Pascal, and even
   BASIC-PLUS.) Expression syntax corresponds quite closely to C
   expression syntax.  If you have a problem that would ordinarily use sed
   or awk or sh, but it exceeds their capabilities or must run a little
   faster, and you don't want to write the silly thing in C, then perl may
   be for you.  There are also translators to turn your sed and awk
   scripts into perl scripts.

Eredeti bejelentés itt.

Használom!
24% (125 szavazat)
Nem használom.
76% (398 szavazat)
Összes szavazat: 523

Hozzászólások

designed to make awk and sed semi-obsolete

Na. Akkor marcsak egy ugyanilyen szavazas kell az awk-rol :] 

(x) Nem használom.

De kellett volna egy olyan is, hogy "már nem".

Kicsit kötözködnék a szavazással. Mit jelent az, hogy használom?

Alapvetően nem tudok Perl-ben programozni, viszont pár gép monitorozására jelenleg Munin van belőve, ami ugye Perl-ben íródott.

^[a-zA-Z0-9]+(\.?[\*\+\-\_\=\^\$\#\!\~\?a-zA-Z0-9])*\.?\@([a-zA-Z0-9]+[a-zA-Z0-9\-]*[a-zA-Z0-9]+)(\.[a-zA-Z0-9]+[a-zA-Z0-9\-]*[a-zA-Z0-9]+)*\.(?:([a-zA-Z0-9]+)|([a-zA-Z0-9]+[a-zA-Z0-9\-]*[a-zA-Z0-9]+))$
Szerkesztve: 2021. 12. 20., h – 12:42

20 éve nekem nagyon jól jött nekem.
Mára részemről az új fejlesztéseknél kiszorította a Python.

Esetleg egy részben újragondolt Perl még visszatérhet.
És tényleg újragondolják!

https://docs.raku.org/language/5to6-nutshell
https://en.wikipedia.org/wiki/Raku_(programming_language)

$ apt-cache search ^perl$
perl - Larry Wall's Practical Extraction and Report Language

$ apt-cache search ^perl6$
perl6 - Raku Compiler

Hát, ez csak egy bejelentés hogy "igen, csinálunk egy új ágat".

Work on Perl 7 is already underway, but it’s not going to be a huge change in code or syntax. It’s Perl 5 with modern defaults and it sets the stage for bigger changes later.

Változás egyelőre nem lesz, csak előkészület egy majdani nagyobb változáshoz. Hogy az mikor lesz, arról még nem láttam időtervet sem.
Ezáltal még semmi nem tölthető le belőle, nem látható a disztribúciók devel ágában sem. Szóval még csak ígéret. Aztán majd meglátjuk, hogy mi lesz belőle X év múlva.

Vesd össze a Perl6/Raku-val, amely egy ideje a Perl5 mellett már pár éve velünk van: https://packages.debian.org/search?keywords=perl6

Megnéztem ennek a Rakunak a referenciáit, csupa ismeretlen helyen használják.

Eleve az gyanús, hogy át kellett nevezni a nyelvet: ez arra utal, hogy az “igazzy” perl-esek annyira nem kaptak rá erre a rendszerre (anno a Python3-ra se, de ott a különbségek se akkorák, meg kihisztizték).

És ilyenkor felmerül bennem a kérdés: Mi a f.szomat írnék ebben a rakuban? 
 

perl-ben persze, ott van a CPAN-on a minden IS, meg a webmin meg jónéhány sysadmin cucc talán mai napig ebben van, ahogy néhány nagyvállalati reporting tool is, vagy egyéb webes vállalati cuccok cron-os karbantartó jobjai. Néha hozzájuk kell nyúlni, új modult létrehozni stb, vagy épp lehetne bármiben, de a CPAN-on pont van egy modul ami megoldja a feladat 80%-át. De mi a fenének kezdenék neki valaminek pont ebben a nyelvben?

A helyzet bonyolultabb.
Egyrész mint írtam, ott van ősidők óta a Perl és néhány éve a Perl6 (= Raku) is jelen van a linux disztribúciókban, csak eddig én sem figyeltem rá.

Másrészt van egy Larry Wall nevű ember, aki a Perl megalkotója. Őt jegyzik a Raku megalkotójának is. Tehát nem valami 3. fél általi kalózkodás, hanem úgy néz ki, egyenesen a Perl atyjától van a változás szele.
Egyébként láttunk már inkompatibilis együttélést. Méghozzá Python2 és Python3 néven. Félő hogy ez az anomália a Perl5 és Perl6 ág együttélésénél még erőteljesebb lesz. A Raku név mögött sejtek egy ilyen szakítást is, ezzel próbálva elkerülni a Perl5 - Perl6 anomáliát.

2006 környékén írogattam benne ezt-azt, mikor egy intranetes perl-cgi-s projektbe kellett dolgozni, de sose volt szimpatikus nyelv. Persze minden linuxos és BSD-s rendszeremen fent van, mert sok minden használja, sok csomag, szoftver, git-es projekt épít rá. Általános feladatokra valóban a Python szorította ki, webre meg a PHP.

Azt viszont nem jelenteném ki, hogy az awk/set-et akár csak semi-obsolete sátusztba kényszerítette volna, azok sokkal minimalistább, svájci bicskább toolok, egyszerűbb, alapabb feladatokra valók inkább, ilyen shell scriptekből egy soros részekben hívva. Lehet azokat is önálló, Turing-képes nyelvként használni, pl. a redditen volt most egy projekt, ami egy awk-ban írt fájlmenedszer volt, meg most olvastam egy terminálos sakk játékról, amit sed-ben írtak, de ezek inkább csak poén szintjén mennek, nem erre való az említett két eszköz.

“I didn’t start using Linux so I could have friends.” (Luke Smith, 2019) 🐧

Volt egy Perl kod amit at kellett irnom Pythonba. A guglirol megtanultam, hogy mi micsoda (mondjuk adta magat) es a vegen jol mukodott a dolog.

Ennek megorulven elem tettek ket masik kodnak nevezett izet, hogy nosza, ezeket is forditsam le, mert ezt nem progeamozo irta, hanem egy drogos majom. Elso korbem karomkodtam, masodik korben gugliztam (uj tragarsagok utan) aztan lassan, megcsinaltam az elsot.

A harmadiknal inkabb felajanlottam, hogy megirom zold mezosen, mert addigra mar ertettem, hogy mi lenne nagyjabol a cel, es toredek ido alatt sikerult elerni.

Szoval a Perl kodokkal nem vagyok nagy baratsagban, olvasom ha kell, de irni meg sosem irtam. :-)

olyan szarokat hasznalok, amik hasznaljak.

Szerkesztve: 2021. 12. 20., h – 13:25

Egyszer egy munkahelyen a zseniális rendszergazdát előléptették főnöknek, csak Perlhez értett, és abban implementált egy elég nagy rendszert, majd ebben nekem kellett továbbfejlesztést csinálni.
Megcsináltam, mert mindent meg tudok csinálni, de aztán felmondtam - mert ez a nyelv egy f.shalmaz, amatőr script kiddie szint.

Elhatároztam, hogy ha egy jövőbeli interjún elhangzik az hogy "Perl" akkor felállok és kimegyek.

Amint megcsináltad az aktuálisan kitűzött feladatot, már adják is a következőt üresjárat nélkül. Azt is végigcsinálnád, meg a következőt meg az azt következőt, így egészen nyugdíjig? Akkor szerinted mikor van az optimális ideje a felmondásnak? Eleve ha nem kölcsönössel engednek el, vagy károkozás miatt azonnali elbocsájtással, akkor 30-60 napig még ott dolgozol (felmondási idődet töltöd), aminek csak a kb. a feléről köteles munkavégzés alól felmenteni a munkáltató.

Egy munkahelyet is pont ugy kell otthagyni, mint egy WC-t: kitakaritva, ahogy te is szeretned talalni.

 

Kicsi orszagban elunk. Barmi specifikusabb dolog van, rogton <10 ember ert hozza az egesz orszagban. A hir pedig terjed.

 

Btw, nekem olyan is volt egy ilyesmi cegnel (retegtermek), hogy felmondasomkor akartak alairatni velem, hogy 9 evig nem dolgozok abban az iparagban:)

Saying a programming language is good because it works on all platforms is like saying anal sex is good because it works on all genders....

"felmondasomkor akartak alairatni velem, hogy 9 evig nem dolgozok abban az iparagban:)" - Ha fizetik az adott időszakra eső jövedelmedet, akkor természetesen aláírod. Bár az ilyen korlátozó kitételeket a munkaszerződés megkötésekor vagy idő közbeni módosítással kellene rendezni (és ha a dolgozó nem fogadja el a módosított munkaszerződést, akkor még a régi szerint zajlik a felmondása...)

Írja alá a halál, 9 év után elég jó lehet visszamenni az elavult tudásoddal az iparba, miközben a kieső jövedelmed pótlása az infláció miatt a kilencedik év végére havi két vekni kenyeret és egy doboz sört ér kb. Már ha addigra nem húzol el egy tengerpartra bikinis csajokat masszírozni, ami önmagában nem egy rossz elfoglaltság, de erre egyrészt elég kicsi az esély, másrészt jobb érzés önszántadból menni ilyen helyekre, nem azért mert egyszer valami HR-esnél aláírtál valamit.

Általában 6-12 hónapos kikötések szoktak lenni, nekem is volt már. Ha lelépsz/kirúgnak, a munkáltató eldöntheti, hogy egy összegben kifizet 6 havi béredet céges autó használattal, és akkor nem mész a konkurenciához, vagy nem ad semmit, de akkor nincs korlátozás. Az egész cégnél egyetlen emberről tudok, ahol fizettek, de ott volt értelme is a cég szempontjából.

Kevés hupper dolgozik idehaza olyan beosztásban hogy személyesen mesélhessen róla hány évig nem engedte az előző munkaadója ugyanazon a területen konkurrenciánál elhelyezkedni, cserébe meg megkapta kb az arra eső fizetése nagy részét.

Eddig csak ilyen msft és tsai felsővezetők (pl. a Win8-as fiaskó után Sinofsky és tsai-ra emlékszem), idehaza meg kb. ilyen Telecom vezérek jutnak eszembe. Egyik se tipikus hup olvasó.

De a mindenre is rávehető hülye magyar melóstól elvárják, hogy önként még a felmondása előtt (persze, mert ha ő mond fel önszántából akkor még csak végkielégítést/lelépési pénzt se kell neki kifizetni, hiába ott szopta a fszt előtte 5-10 évig, tiszta haszon a cégvezetésnek) takarítsa ki a más szarát a wc-ben MOSOLLYAL pofáján, és utána adja be a kulcsot.

Nem, maga a gyengén típusos nyelv egy katasztrófa.

Ennél a cégnél derítettem ki, hogy az adatbázis lekérdezés azért hal meg évek óta csendben, mert egy változó tíousa nem is adattábla, hanem error message.
WTF???
el volt ütve egy karakter, ha jól emlékszem, egy dollárjel hiányzott vagy ilyesmi.
Na ilyen komolytalan sz.rokkal nem foglalkozom többet.

(x) Nem használom.

Egy ideig használtam, távolról tisztelem is és követem is valamennyire, de mindig azok közé az eszközök közé tartozott ami nem az én logikám mentén működik, ezért valahogy mindig extra energiákat igényel megérteni. A kétezres évek elején a php-ba menekültem boldogan a perl-es cgi oldalaktól, a 2010-es években pedig a python felé, rendszeradminisztrációs területen. Azóta is python, ha sciptelni kell.

Nem használom, soha nem is használtam. Mondjuk az awkot és a sedet viszont igen..

15 éve Perl-ben tanultam meg programozni, nagyon sokáig használtam bioinformatikai célokra, aztán kiszorította az R, majd a Python. Perverz módon szerettem a Perl körmönfont szintaxisát, de visszatekintve elég fájdalmas volt azzal a sok kapcsoszárójellel és dollárjellel bohóckodni. A sok speciális változótól most is libabőrös leszek. :D 

Két embertípus létezik. Aki szép kódot ír Perlben és nem zavarja a Python szintaxisa sem és aki nem képes a Python szabályait elfogadni és emellett igénytelen gány kódot ír Perlben, mert a Perl nagyon liberális.

Két független dologról beszélsz. Én például -úgy gondolom, de a perltidy sem igazán piszkál bele- szép kódot írok perl-ben (formázás, kommentek, egységes, "beszédes" elnevezések...), de a python "a whitespace a kód része" elvét nem igazán tudom elfogadni. Mondjuk azt, hogy számomra kevésbé vonzó a whitespace-ek "számolása", mint az explicit blokkhatárolók alkalmazása.

A világ azon részét, ahol Perl-ezni kell meghagyom másoknak. Tök jól megvagyok nélküle :-)

Ahogy várható volt, itt is megy a Perl-ekedés, hogy jó nyelv-e vagy sem. :D #rosszszóviccek

Szerkesztve: 2021. 12. 21., k – 20:08

Amikor egyetemre jártam, hatalmas hypeja volt a nyelvnek, 2002-2003 kornyeke. Kabe ugy jott le nekem, hogyha nem tanulom meg akkor egy senki vagyok a szakmaban. Az egyik eloadason a fazon mondta hogy ne tanuljuk az awk-t,  helyette tanuljuk a perl-t!

Evekkel kesobb megvettem Barta Zoltan - Alkalmazasfejlesztes Perlben c. konyvet, hogy legalabb a nyelvtant ismerjem (addigra mar ismertem Pascalt, C-t, C++-t, Javat, LaTeX-t, bash-t, ...) Nem tudom a 30. oldalig eljutottam-e, illetve hogy a konyv volt gyalazatosan megirva, vagy en vagyok hulye, de en akkor rovid ido alatt eldontottem, hogy en ezt nem tudom megtanulni.

Azt hiszem mar igy halok meg :)

(x) Használom, sőt, imádom :)

Egy egészségügyi intézmény részére üzemeltetünk ügyviteli rendszert, mely Perl-ben van írva. Elég sok területet lefed, az értékesítés, szerződéskötés, biológiai minták, pénzügyi konstrukció beállítása és az ehhez kapcsolódó rengeteg apró ügyfél és szolgáltató oldali cécót. Lassan 7 éve fut, azóta eddig összesen 1 óra 9 percnyi előre meghirdetett üzemszünetünk volt. Hetente átlagosan 2-3 alkalommal tolunk ki frissítést az éles rendszerre, miközben több GIT ágban zajlanak különböző fejlesztések, amiket az intézmény munkatársai demo szervereken tesztelnek... blabla... folytathatnám még, de ez a topic most a Perl-ről szól, és az eddigiekkel csak azt akartam érzékeltetni, hogy a Perl nem csak akkor állja meg a helyét, ha logokat kell elemezni, egysorosokat, spam szűrőt vagy deb csomag mahinálót kell írni.

Miért Perl? - kérdezik sokszor. Miért szopatjuk magunkat egy 34 éves ősrégi elavult kövülettel, amikor halomra válogathatunk a legújabb technológiák közül? Hát igen... Valahol megértem a kérdezőt, hisz fogalma sincs, hogy mi a Perl, és manapság olyan világot élünk, hogy minden, ami 34 éves, az ódivatú, ócska és szar. És akkor rengeteg instrukciót kapok, hogy manapság miben kéne rendszert írni, mi a divatos és mit kéne követnem, stb, stb... de valahogy olyan jól érezzük magunkat, hogy egy megtanult, megszokott módon, nap mint nap Perl-ben kell megfogalmaznunk a gép számára, hogy az ügyfél milyen újdonságokat szeretne. Bőven okoz meglepetést az ügyfél, nem kellenek meglepetések a géptől :) Viszont a hosszútávú berendezkedés nagyon is kell a mi munkánkhoz. Ezt pedig maximálisan megkapjuk a Perl-től!

A Perl nem csak egy nyelv, hanem egy szemlélet, egy gondolkodásmód. Ezt ugye Larry bácsi találta ki 34 évvel ezelőtt, aki programozóként az akkori informatikai problémáját nyelvész szemlélettel oldotta meg. A konferencián úgy fogalmazott, hogy túl sok volt neki a C, kevés volt a BASH és ennek halmazába akart kerülni, ezt próbálta áthidalni új nyelvi elemek megalkotásával, amihez készített egy interpretert. Maga a nyelv anno olyan mély nyelvi gyökereket kapott, amik ma is meghatározóak, stabilak és tele vannak lehetőséggel. Pont ezt hánytorgatják fel leginkább, hogy undorító kódot lehet benne írni. Sajnos, nem sajnos, így igaz, Perl-ben szinte bármilyen fogalmazási, ábrázolási módszerrel megoldható egy adott informatikai probléma. Nincs kapaszkodó, nincsenek korlátok, szabályok, nincs kikövezett ösvény, aminek mentén haladhat, illetve haladnia kellene a fejlesztőnek. Teljes szabadság van, ha úgy tetszik liberalizmus vagy akárminek is nevezhetjük. Egy zeneszerző egy üres kottával. Na igen. Egy oldalcsípővel is lehet kalapálni... De ez a szabadelvű tulajdonság, gondolkodás nem csak az ocsmány kódoknak ad táptalajt, hanem az alkotó elmének ad hihetetlen eszközkészletet. Ha részleteibe menően konkrét elképzeléseid vannak, hogy ma, holnap, holnapután mit és hogyan akarsz csinálni, netán ezek az elképzelések szembe mennek a manapság elfogadott dolgokkal, akkor a Perl a barátod és a szerszámos táskád :) 

Sok évvel ezelőtt többször üvöltöztem a kocsmában, hogy a Perl-t méltatlanul elhanyagolják, nem beszélnek róla, nem reklámozzák és a fiatalok nem tudnak róla, bezzeg ez meg ez az új programozási nyelv, az meg az az új keretrendszer mekkora szar és a csapból is ez folyik... pfúúú teljesen ki voltam akadva, szívügyemnek kezeltem és tehetetlenül kántáltam a faszságomat... És most ennyi év után pont annak örülök, hogy nem a Perl lett a kedvenc nyelv. Nem lett népszerű, nem lett hype, nem Perl-ben akarták megírni a világ legújabb keretrendszereit, nem Perl kódokkal lett teleokádva a Stackoverflow és nem lett teleszemetelve a Perl platform, CPAN, Perlmonks, stb... Ez a manapság tapasztalható hisztéria teljesen elkerülte a Perl közösséget és a közösség megmaradhatott a maga nyugalmában, a megszokott lassú, de fokozatos fejlődésében. A mai napig bármikor belépek IRC-re, informatikai szakemberekkel találom szembe magam. Ha visszanézek több napnyi IRC logot, releváns szakmai tartalmat olvasok el rövid tömör formában némi iróniával és poénnal megfűszerezve. Ez a Perl közösség, amit anno Larry összehozott és a mai napig is működik, kicsit távol a világ zajától.

A Perl Interpreter. A fordított nyelvek esetén sokszor szó esik arról, hogy a fordító milyen kódot készít, az hogy fog futni, mi van benne, mit és hogyan használ ki, milyen hatékony, stb. Az interpretált nyelvek esetén erről nem sokat hallok. Lehet, hogy én vagyok tájékozatlan és kérlek javítsatok ki, de feltűnt, hogy az interpretált nyelvek esetén semmi információt nem kapunk arról, hogy az adott nyelvben megfogalmazott utasításokat az interpreter hogyan és miként fogja futtatni. Mit optimalizál? Van -e copy-on-write? Tömbök iterálásánál, hash-ek keresésénél, sorba rendezésnél milyen algoritmust használ? Többszálú? Stb!? És akkor miért van az, hogy egy 10K elemű tömbön végzett művelet egy mai divatos platformon közel másfél giga ramot elvisz, amit a kis csumpi Perl-es scriptecskénk megold pár megabájtból? A fent említett biológiai ügyviteli rendszerünk 70 mega RAM-ot eszik meg (buffer+cache nélkül) ezt megszorozzuk 8 szállal és még így is fél giga per vas. Középiskolai informatikai tanártól kaptuk meg azt, hogy ez lehetetlen... pedig de!

A Perl 34 éves és naprakész! Kis történelem... Az 5.8-nál (kb. 2002-ben) volt egy stagnálás. Ekkor merült föl az első Perl6-os ötlet egy minden nyelvet átfogó interpreter (Parrot) és fordító (Pugs) gépről. El is indult a fejlesztése, még konkrét (nyomtatott, bekötött) könyvek is születtek, de érdemben semmi nem történt. Sok akkori fiatal fejlesztő azzal a kérdéssel hátrált meg, hogy "tanuljam a perl5-öt vagy várjak a perl6-ra?" - nem tudtunk jól válaszolni nekik.  Elvesztettük őket. Évek teltek el így és nem történt semmi, pedig Larry Wall sok jó dolgot megfogalmazott a leendő Perl6 számára. Eközben a kétezres évek közepén elég sok fontos dolog történt, mint pl. az Unicode térhódítása. Maga a Perl nem fejlődött, legalábbis nem tudtunk róla, de Larry közössége, a CPAN fejlesztők szorgalmasan dolgoztak és követték az Unicode szabványt meg mindent, ami akkoriban történt. Ezeket feltöltötték a CPAN-ra, hogy egymást közt tudják használni az aktuális munkáikhoz. 2007-ben pedig úgy döntöttek, hogy kiadnak egy új 5-ös Perl verziót, függetlenül attól, hogy a Perl6 már tervben van, készül, de senki nem tudja, hogy mikor lesz belőle valami. Ekkor jött 2004-ben az 5.8-as után 5 évre rá a Perl 5.10. Ez egy mérföldkő a modern Perl életében, na nem szoftverileg, hanem azért, mert itt indult be az a Perl fejlődési hullám, amit a mai napig tapasztalunk. A szoftveres mérföldkövek csak évekkel később jöttek. Maga a nyelv nem változott. Az idők folyamán soha semmi fő nyelvi elemet nem szedtek ki a nyelvből. Ha kisebb kompatibilitást sértő változtatást eszközöltek a nyelvben, akkor azokat jóval előre, több évre közölték. Sőt, a Perl nyelvi kompatibilitási képessége a legerősebb a világon (még a C-nél is jobb) ugyanis egy 1998-ban megírt perl script a mai legújabb Debian-on ugyanúgy lefut, mint anno akkor. 

Ebből az elmaradt Pugs/Parrot fejlesztésből, azaz a Perl6-ból lett a Raku, és az 5-ösből ezt a 6-ost átlépő verzió lenne a Perl 7, ami semmiben nem tér el a Perl 5.34-től, csak a default beállításokban változtat. Ez a Perl történelem eddigi legkeményebb kompatibilitást boncoló ugrása. Érdemes tanulmányozni! A Raku és a Perl két külön irány, ne keverjük össze. A Raku jövője nagyon kecsegtető, de még nem tudjuk mi lesz belőle. A Perl jövője (5.32, 5.34, v7) egy (ahogyan eddig is) stabilan hosszú távon kiszámítható rendszer, amire lehet alapozni.