Perl

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare
Notă despre dezambiguizare.svg Dezambiguizare - Dacă sunteți în căutarea altor semnificații, consultați Perl (dezambiguizare) .
Perl
limbaj de programare
Autor Larry Wall
Data de origine 1987
Ultima versiune 5.34.0 (20 mai 2021)
Utilizare scop general
Paradigme multi-paradigmă: funcțională , imperativă , orientată spre obiect , reflexivă , procedurală
Tastare dinamic
Extensii comune .pl .pm .t
Influențată de C ++ , C , sed , Awk , BASIC , Lisp și shell Unix
A influențat Perl 6 , PHP
Implementare referință
Implementare interpret
Sistem de operare Multiplatform
Licență Licență publică generală GNU sau licență artistică [1]
Site-ul web www.perl.org/ și dev.perl.org/perl5/
Codul și executarea unui program demonstrativ simplu (numit „ Hello world ”) scris în limbajul Perl

Perl este un limbaj de programare de nivel înalt , dinamic, procedural și interpretat creat în 1987 de Larry Wall . Perl are un set unic de caracteristici moștenite de la C , shell scripting Unix ( sh ), Awk , sed și , în diferite grade, de la multe alte limbaje de programare, inclusiv unele limbaje funcționale.

Descriere

Deși bine cunoscut ca limbaj de dezvoltare CGI , Perl a fost creat inițial ca un ajutor pentru inginerii de sisteme , ca limbaj de manipulare a textului și a fișierelor. De fapt , este numit P ractical E xtraction și R eport L anguage [2] , dar acest lucru este un acronim invers . Prin urmare, conform documentației Perl în sine, nu ar trebui să vă referiți niciodată la aceasta ca „PERL”, ci ca „Perl” sau „perl”, în funcție de faptul dacă doriți să spuneți limba ca atare sau respectiv o implementare specifică [3] .

A evoluat de-a lungul timpului, de asemenea, datorită unui sistem puternic de module, într-un limbaj mai general, incluzând procesarea imaginilor, interogarea bazelor de date, procesele de comunicare în rețea și poate fi utilizat în toate acele domenii în care nu necesită strict performanța unui limbaj compilat la un nivel inferior, oferind în plus timpi de dezvoltare mult mai rapizi. Prin urmare, este utilizat și pentru prototiparea programelor care urmează să fie implementate în alte limbi.

Limbajul trebuia să fie practic; nu a fost niciodată menit să fie compact, elegant sau minimal, de fapt, deviza sa este rezumată în acronimul TMTOWTDI (Există mai mult de o modalitate de a o face), care în italiană înseamnă foarte indicativ „există mai multe modalități de a o face ". [4] Larry Wall a spus că scopul lui Perl este „de a face lucrurile ușoare, ușoare și dificile, posibile” („ Face lucrurile ușoare ușoare și lucrurile dificile posibile” ). [5]

Perl acceptă atât paradigme procedurale, cât și orientate spre obiecte , are funcții puternice de procesare a textului și este echipat cu una dintre cele mai mari colecții de module produse de marea sa comunitate de utilizatori.

Caracteristici

Dacă la prima vedere Perl pare a fi în mare parte derivat din C, a primit într-adevăr această similitudine mediată de limbajele de scriptare shell. Perl este un limbaj procedural netipat cu variabile, expresii, atribuții, blocuri delimitate, structuri de control și subrutine. Aceasta din urmă poate fi înțeleasă ca funcții, iar Perl are numeroase calități mediate de limbaje funcționale.

Variabilele au un prefix ($ pentru variabilele scalare, @ pentru matrice ,% pentru hash) numit sigiliu și dacă acest lucru a determinat parțial bogăția sintactică a Perl, permite interpolare variabilelor în șiruri. Ca și shell-urile Unix, Perl vine cu multe funcții standard pentru sarcini obișnuite, cum ar fi sortarea și accesarea sistemului de operare. (De fapt, doar 279 în nucleul principal al perl, comparativ cu peste 3000 în PHP ).

Perl a luat vectori asociativi (cunoscuți ca „hash”) din expresii awk și regulate din sed. Acestea simplifică și facilitează foarte mult analizarea și procesarea sarcinilor de text și date.

Mai mult, există posibilitatea de a integra codul scris în C într-un program Perl, precum și invers (adăugați sau rescrieți părți în C / C ++ în aplicații sau pachete Perl sau introduceți un Perl încorporat în programele C). De fapt, cu modulele Inline :: există mai multe limbi în care funcțiile unei surse Perl pot fi definite.

Perl este de obicei gândit ca un limbaj interpretat , ceea ce înseamnă că, pentru a fi executat, este interpretat în momentul executării. În realitate, primul lucru pe care îl face interpretul este să transforme codul sursă în bytecode , un pic ca Java; pe bytecode creează un grafic intermediar pe care aplică optimizări, iar acest grafic trebuie interpretat. Această abordare permite limitarea încetinirii tipice limbajelor interpretate. Versiunea Perl 6 [6] , în curs de dezvoltare de câțiva ani, împarte executorul codului de octet (sau mașină virtuală) de limbă în așa fel încât să permită utilizarea acestuia și de compilatorii altor limbi, inclusiv Tcl , Python , Java etc.

Mașina virtuală rezultată va fi o nouă bază pentru dezvoltarea limbilor libere și va permite niveluri foarte ridicate de optimizare și independență față de dezvoltarea limbilor suprapuse. Deși Perl 6 nu este încă lansat, unele idei sunt difuzate în versiunea stabilă a Perl 5.8 și multe altele vor avea un meci în Perl 5.10. Un prototip de Perl 6, numit Pugs, a fost dezvoltat la Haskell și are loc o fertilizare reciprocă interesantă între cele două comunități (Perl și Haskell).

Încă o dată s-a evidențiat modul în care Perl este un limbaj „sociabil”, care, prin urmare, tinde să interacționeze cu alte limbi și medii de dezvoltare, fie ele: dialecte shell, alte limbi interpretate, limbaje specializate (cum ar fi SQL) sau cele mai comune limbi compilate. Acesta este motivul pentru care Perl are succes în integrarea diferitelor sisteme.

Perl s-a născut într-un mediu Unix și a fost distribuit simultan cu două licențe liberale, GPL și Artistic License , este disponibil și pentru sistemele de operare Microsoft Windows și MacOS înainte de versiunea Mac OS X (care aparține familiei Unix). Cea mai populară implementare pentru Windows este distribuită de o companie, ActiveState, care pe de o parte oferă module specifice pentru sistemul de operare Windows sub licență gratuită, pe de altă parte vinde medii de dezvoltare integrate, atât pentru Perl, cât și pentru alte limbi. sursă precum Python și Tcl .

Deși Perl a fost una dintre marile inovații în domeniul programării, judecata asupra sa de către comunitatea de programare este variată:

  • pe de o parte, este judecat negativ datorită faptului că facilitează scrierea de programe care sunt greu de citit și, prin urmare, complică întreținerea acestora (până la punctul în care numele limbii a fost reinterpretat ca fiind o listă de gunoi ecologic din punct de vedere ecologic );
  • pe de altă parte, este apreciat pentru ușurința de a scrie programe puternice, dar simple, pentru libertatea semantică pe care o lasă programatorului până la punctul în care „nu există un singur mod de a face lucrurile” este unul dintre idiomurile asociate cu Perl.

Wall - care prin instruire este lingvist - consideră această libertate semantică o virtute, deoarece este mai asemănătoare cu limbajul uman. Un alt aspect pozitiv care atrage programatorii este disponibilitatea largă a modulelor distribuite cu licențe open source, aproape întotdeauna la fel ca Perl. Modulele sunt de obicei bine documentate, deoarece limbajul în sine oferă Pod-ului, o modalitate de a include documentația în cod, asigurându-se astfel că documentația este împreună cu modulul. Comunitatea a creat un anumit site, numit CPAN , care organizează modulele considerate deosebit de valide pe subiecte. Modulele în sine nu sunt stocate pe acel site, ci rămân pe site-urile alese de autorii lor. În sfârșit, ca limbaj interpretat și, prin urmare, întotdeauna distribuit cu cod sursă vizibil, acesta favorizează practica liberală.

Alte caracteristici importante ale Perl sunt:

  • variabile implicite care sunt definite pentru multe funcții și operatori încorporati perl
  • sensibilitatea contextului în sarcini, unde Perl știe ce să returneze pe baza valorii din stânga
  • expresii regulate , care permit căutarea și înlocuirea șirurilor de text descrise cu caractere speciale
  • închideri
  • posibilitatea de a aplica diferite paradigme de programare, cum ar fi funcționale sau orientate pe obiecte.

Unele caracteristici ale Perl, inclusiv sintaxa, permit o sinteză rar posibilă cu alte limbaje și imposibilă cu limbaje precum Java, iar sursele pot fi, prin urmare, foarte dense în sens, atât de mult încât să fie criptice pentru cei care nu cunoaște rudimentele. Pe de altă parte, pe Internet există atât de multă documentație despre Perl încât este posibil să abordăm rapid limba și cu texte de referință adecvate să începem calea învățării.

Limbajul și interpretul sunt dezvoltate de un grup de aproximativ o sută de dezvoltatori, condus de Wall, care ia deciziile finale cu privire la ce să includă în cod. Dezvoltatorii au creat Institutul Perl pentru a facilita dezvoltarea Perl și pentru a îmbunătăți vizibilitatea acestuia și pentru a organiza conferințe. Wall însuși lucrează pentru O'Reilly, o editură care susține activ mișcarea Open Source.

Perl face parte din instrumentele standard ale sistemelor de operare Unix. Actualizarea acestuia se poate face atât de pe Internet, cât și prin distribuțiile de sisteme de operare gratuite, precum GNU / Linux , BSD etc. Versiunile Windows pot fi descărcate și de pe Internet . Unele manuale Perl vin cu un CD-Rom care include versiuni pentru diferite sisteme de operare și toate modulele incluse în CPAN.

Comunitatea Perl este adesea atacată pentru absența unui IDE, precum cei prezenți pentru Java, care facilitează abordarea limbajului pentru începători. În realitate, bogăția expresivă a lui Perl face dificilă crearea unui IDE care evidențiază erorile de construcție din enunțuri și, având în vedere numeroasele valori implicite ale funcțiilor de bază, ar fi extrem de dificil să înțelegem automat ceea ce dorește să realizeze programatorul, unde există o eroare. sau poate nu. Cu toate acestea, Eclipse conține o extensie pentru Perl și poate urmează și alți editori de cod.

Exemple de programe

Citiți intrarea standard în format CSV și imprimați cele 2 câmpuri inițiale

 #! / usr / bin / perl
#cu câmpurile poți face orice vrei
while ( <> ) {
    campul meu @ = divizat /, / ;
    tipăriți "$ câmp [0], $ câmp [1] \ n" ;
}

În acest exemplu există o serie de valori implicite care nu pot fi înțelese fără o explicație:

  • <> este un sinonim pentru <ARGV> care, la rândul său, este un iterator pe un handhand de fișiere special care se referă la fișierele specificate pe linia de comandă, dacă există, sau la STDIN altfel și indică acțiunea de a extrage o linie din acel handhand de fișiere. Această linie, fără alte instrucțiuni, este inserată în $ _ care este o variabilă predefinită pe care mulți operatori și funcții acționează în mod implicit.
  • split ia un model (expresie regulată) și, dacă nu se specifică altfel, acționează asupra variabilei $ _, rupându-l în punctele în care modelul se potrivește și returnând piesele rămase.

Același program ar putea fi rescris în următoarea formă:

 #! / usr / bin / perl
while ( <> ) {
   my ( $ câmp1 , $ câmp2 ) = split /, / ;
   tipăriți "$ câmp1, $ câmp2 \ n" ;
}

În acest al doilea caz observăm cum este posibil să scriem același program într-un alt mod. Există multe alte scripturi ale aceluiași program scurt.

Notă: declarația mea nu este strict necesară decât dacă utilizați modulul pragmatic strict , dar acesta din urmă este recomandat de marea majoritate a programatorilor perl, împreună cu avertismente , deoarece restricționează libertatea programatorului în moduri care previn greșelile. practici de programare comune, forțând practici de programare mai disciplinate care sunt impuse în mod implicit în alte limbi.

Notă

  1. ^ Licență Perl , la dev.perl.org . Adus la 18 iunie 2012.
  2. ^ (RO) Ce este Perl? - Definiție din Techopedia , în Techopedia.com . Adus la 26 septembrie 2017 .
  3. ^ (EN) perlfaq1 - perldoc.perl.org , pe perldoc.perl.org. Adus la 26 septembrie 2017 .
  4. ^ (RO) Urban Dictionary: TMTOWTDI , pe Urban Dictionary. Adus la 26 septembrie 2017 .
  5. ^ (EN) Larry Wall, Tom Christiansen și Randal L. Schwartz, Programming Perl, ed. A doua, Sebastopol, O'Reilly, 1999, ISBN 9781565924628 ,OCLC 43840699 .
  6. ^ Perl 6 , la perl6.org . Adus la 6 august 2015 .

Bibliografie

Elemente conexe

Alte proiecte

linkuri externe

Controlul autorității LCCN (EN) sh95010633 · GND (DE) 4307836-9 · BNF (FR) cb124906490 (dată) · BNE (ES) XX542605 (dată)
Informatică Portal IT : accesați intrările Wikipedia care se ocupă cu IT