Perl

Perl
programmeringsspråk
ForfatterLarry Wall
Opprinnelsesdato1987
Siste versjon5.36.0 (28. mai 2022)
Brukgenerelle formål
Paradigmermulti-paradigme: funksjonell , imperativ , objektorientert , reflekterende , prosedyremessig
Skrivingdynamisk
Vanlige utvidelser.pl .pm .t
Påvirket avC ++ , C , sed , Awk , BASIC , Lisp og Unix shell
Det påvirketPerl 6 , PHP
Referanseimplementering
Gjennomføringtolk
OperativsystemMultiplattform
TillatelseGNU General Public License eller Artistic License [1]
Nettstedwww.perl.org/ og dev.perl.org/perl5/

Perl er et høyt nivå , dynamisk, prosedyremessig og tolket programmeringsspråk opprettet i 1987 av Larry Wall . Perl har et unikt sett med funksjoner som er arvet fra C , Unix scripting shell ( sh ), Awk , sed , og i varierende grad fra mange andre programmeringsspråk, inkludert noen funksjonelle språk.

Beskrivelse

Selv om det er godt kjent som et CGI -utviklingsspråk , ble Perl opprinnelig opprettet som et hjelpemiddel for systemingeniører , som et tekst- og filmanipulasjonsspråk. Faktisk kalles det også P ractical Extraction and R eport Language [ 2 ] , men dette er et omvendt akronym . Derfor skal du ifølge selve Perl-dokumentasjonen aldri referere til det som "PERL", men som "Perl" eller "perl" avhengig av om du mener språket som sådan eller en spesifikk implementering henholdsvis [3] .

Det har utviklet seg over tid, også takket være et kraftig system av moduler, på et mer generelt språk, inkludert bildebehandling, databasespørring, nettverkskommunikasjonsprosesser og kan brukes i alle de områdene der det strengt tatt ikke krever ytelsen til et språk kompilert på et lavere nivå, og tilbyr i tillegg mye raskere utviklingstider. Den brukes derfor også til prototyping av programmer som skal implementeres på andre språk.

Språket var ment å være praktisk; den ble aldri designet for å være kompakt, elegant eller minimal, faktisk er mottoet oppsummert i forkortelsen TMTOWTDI (There is More Than One Way To Do It), som på italiensk veldig indikativt betyr "det er mer enn én måte å gjøre det på" ". [4] Larry Wall sa at Perls mål er "å gjøre ting enkle, enkle og vanskelige ting mulige" (" Gjør de enkle tingene enkle og de vanskelige tingene mulig." ). [5]

Perl støtter både prosessuelle og objektorienterte paradigmer , har kraftige tekstbehandlingsfunksjoner og er utstyrt med en av de største samlingene av moduler produsert av det store brukerfellesskapet.

Funksjoner

Hvis Perl ved første øyekast ser ut til å være i stor grad avledet fra C, har den faktisk fått denne likheten formidlet av shell-skriptspråk. Perl er et utskrevet prosedyrespråk med variabler, uttrykk, tildelinger, avgrensede blokker, kontrollstrukturer og subrutiner. Sistnevnte kan forstås som funksjoner og Perl har en rekke kvaliteter formidlet av funksjonelle språk.

Variabler har et prefiks ($ for skalarvariabler, @ for array ,% for hash) kalt et segl , og hvis dette delvis har bestemt den syntaktiske rikdommen til Perl, tillater det interpolering av variabler i strenger. I likhet med Unix-skall kommer Perl med mange standardfunksjoner for vanlige oppgaver som sortering og tilgang til operativsystemet. (Faktisk bare 279 i hovedkjernen av perl, mot over 3000 i PHP ).

Perl tok assosiative vektorer (kjent som 'hash') fra awk og regulære uttrykk fra sed. Disse forenkler og forenkler i stor grad analyse- og prosesseringsoppgavene for tekst og data.

Videre er det mulighet for å integrere kode skrevet i C i et Perl-program så vel som omvendt (legge til eller omskrive deler i C / C ++ i Perl-applikasjoner eller -pakker, eller sette inn en innebygd Perl i C-programmer). Faktisk med Inline-modulene :: er det flere språk der funksjonene til en Perl-kilde kan defineres.

Perl blir ofte sett på som et tolket språk , noe som betyr at for å bli henrettet blir det tolket på henrettelsestidspunktet. I virkeligheten er det første tolken gjør å transformere kildekoden til bytekode , litt som Java; på bytekoden lager den en mellomgraf som den bruker optimaliseringer på, og det er denne grafen som skal tolkes. Denne tilnærmingen gjør det mulig å begrense langsomheten som er typisk for tolkede språk. Versjonen av Perl 6 [6] , under utvikling i noen år, deler eksekveren av bytekoden (eller den virtuelle maskinen) fra språket på en slik måte at den også tillater bruk av kompilatorer av andre språk, inkludert Tcl , Python , Java osv.

Den resulterende virtuelle maskinen vil være et nytt grunnlag for utvikling av gratis språk og vil tillate svært høye nivåer av optimalisering og uavhengighet fra utviklingen av de overliggende språkene. Selv om Perl 6 ikke er utgitt ennå, er noen ideer lekket inn i den stabile versjonen av Perl 5.8 og mange andre vil ha en match i Perl 5.10. En prototype av Perl 6, kalt Pugs, er utviklet i Haskell og en interessant gjensidig befruktning finner sted mellom de to samfunnene (Perl og Haskell).

Nok en gang har det blitt fremhevet hvordan Perl er et "sosialt" språk, som derfor har en tendens til å samhandle med andre språk og utviklingsmiljøer, det være seg: skalldialekter, andre tolkede språk, spesialiserte språk (som SQL) eller de vanligste kompilerte språkene. Dette er grunnen til at Perl lykkes med å integrere ulike systemer.

Perl ble født i et Unix -miljø og distribuert samtidig med to liberale lisenser, GPL og Artistic License , den er også tilgjengelig for Microsoft Windows- og MacOS -operativsystemer før Mac OS X-versjonen (som tilhører Unix-familien). Den mest utbredte implementeringen for Windows distribueres av et selskap, ActiveState, som på den ene siden tilbyr spesifikke moduler for Windows -operativsystemet under en fri lisens , på den andre siden selger integrerte utviklingsmiljøer, både for Perl og for andre språk. kilde som Python og Tcl .

Selv om Perl var en av de store innovasjonene innen programmering, er dommen fra programmeringsfellesskapet variert:

Wall – som av utdanning er språkforsker – anser denne semantiske friheten som en dyd, da den ligner mer på menneskelig språk. Et annet positivt aspekt som tiltrekker programmerere er den brede tilgjengeligheten av moduler distribuert med åpen kildekode-lisenser, nesten alltid det samme som Perl. Moduler vanligvis godt dokumentert, ettersom språket i seg selv tilbyr Pod, en måte å inkludere dokumentasjonen i koden, og dermed sikre at dokumentasjonen er sammen med modulen. Fellesskapet har opprettet et spesielt nettsted, kalt CPAN , som organiserer modulene som anses som spesielt gyldige etter emne. Modulene i seg selv lagres ikke på dette nettstedet, men forblir på nettstedene som er valgt av forfatterne deres. Til slutt, som et tolket språk og derfor alltid distribuert med synlig kildekode, favoriserer det liberal praksis.

Andre viktige funksjoner i Perl er:

Noen funksjoner i Perl, inkludert syntaksen, tillater en syntese som sjelden er mulig med andre språk og umulig med språk som Java, og kildene kan derfor være svært tette i betydning, så mye at de er kryptiske for de som ikke gjør det kjenner til rudimentene. På den annen side er det på Internett så mye dokumentasjon på Perl at det er mulig å raskt nærme seg språket og med passende referansetekster starte læringsveien.

Språket og tolken er utviklet av en gruppe på rundt hundre utviklere, ledet av Wall, som tar de endelige avgjørelsene om hva som skal inkluderes i koden. Utviklerne opprettet Perl Institute for å lette utviklingen av Perl og forbedre dets synlighet og organisere konferanser. Wall jobber selv for O'Reilly, et forlag som aktivt støtter Open Source-bevegelsen.

Perl er en del av standardverktøyene til Unix-operativsystemer. Oppdateringen kan gjøres både fra Internett og gjennom distribusjoner av gratis operativsystemer, som GNU / Linux , BSD , etc. Windows-versjoner kan også lastes ned fra Internett . Noen Perl-manualer kommer med en CD-ROM inkludert versjoner for forskjellige operativsystemer og alle moduler inkludert i CPAN.

Perl-fellesskapet blir ofte angrepet for fraværet av en IDE som de som er til stede for Java, som gjør det enkelt for nybegynnere å nærme seg språket. I virkeligheten gjør den uttrykksfulle rikdommen til Perl det vanskelig å lage en IDE som fremhever konstruksjonsfeil i setningene, og gitt de mange standardverdiene til de grunnleggende funksjonene ville det være ekstremt vanskelig å automatisk forstå hva programmereren ønsker å oppnå, der det er en feil eller kanskje ikke. Imidlertid inneholder Eclipse en utvidelse for Perl og kanskje vil andre koderedigerere følge.

Eksempelprogrammer

Les standardinndata i CSV -format og skriv ut de 2 innledende feltene

#! / usr / bin / perl #med felt kan du gjøre hva du vil mens ( <> ) { my @field = split /, / ; skriv ut "$ felt [0], $ felt [1] \ n" ; }

I dette eksemplet er det en rekke standarder som ikke kan forstås uten en forklaring:

  • <> er et synonym for <ARGV> som igjen er en iterator på en spesiell filhåndtak som refererer til filene som er spesifisert på kommandolinjen, hvis noen, eller til STDIN på annen måte og indikerer handlingen for å trekke ut en linje fra den filhåndtaket . Denne linjen, uten ytterligere instruksjoner, settes inn i $ _ som er en forhåndsdefinert variabel som mange operatører og funksjoner fungerer på som standard.
  • split tar et mønster (regulært uttrykk) og med mindre annet er spesifisert, virker det på variabelen $ _, bryter det på punktene der mønsteret samsvarer, og returnerer de gjenværende brikkene.

Det samme programmet kan skrives om i følgende form:

#! / usr / bin / perl while ( <> ) { my ( $ field1 , $ field2 ) = delt /, / ; skriv ut "$ felt1, $ felt2 \ n" ; }

I dette andre tilfellet legger vi merke til hvordan det er mulig å skrive det samme programmet på en annen måte. Det er mange andre skrifter av dette samme korte programmet.

Merk: min erklæring er ikke strengt nødvendig med mindre du bruker den strenge pragmatiske modulen , men sistnevnte anbefales av de aller fleste perl-programmerere, sammen med advarsler , da den begrenser programmererens frihet på måter som forhindrer feil. vanlig programmeringspraksis, som tvinger frem mer disiplinerte programmeringspraksis som er pålagt som standard på andre språk.

Merknader

  1. ^ Perl Licensing , på dev.perl.org . Hentet 18. juni 2012 .
  2. ^ Hva er Perl ? - Definisjon fra Techopedia , i Techopedia.com . Hentet 26. september 2017 .
  3. ^ Perlfaq1 - perldoc.perl.org , på perldoc.perl.org . Hentet 26. september 2017 .
  4. ^ Urban Dictionary: TMTOWTDI , på Urban Dictionary . Hentet 26. september 2017 .
  5. ^ Larry Wall, Randal L. Schwartz og Tom Christiansen, Programmering Perl , 2. utg., Sebastopol, O'Reilly, 1999 , ISBN 9781565924628 , OCLC 43840699 .  
  6. ^ Perl 6 , på perl6.org . Hentet 6. august 2015 .

Bibliografi

Relaterte elementer

Andre prosjekter

Eksterne lenker