Helmi kieli Push- ja pop-toiminnot. Uusi ohjelmointikieli: syy sen esiintymiseen

Tänään kutsumme sinut tutustumaan yhteen Technosphere-kurssista, joka on omistettu ohjelmointiin Perlissä. Tämä kurssi on avoin - kaikki M.V. Moskovan valtionyliopiston opiskelijat tai jatko-opiskelijat voivat ilmoittautua siihen. Lomonosov. Teknosfäärissä on myös useita muita, ilmoittautuminen avautuu 1. syyskuuta. Tällä lukukaudella sinulla on miellyttävä lisäys: he vahvistuvat metodologinen materiaali, joka sisältää tarpeeksi tietoa, jotta voit muistaa minkä tahansa luennon materiaalin ja tarvittaessa tutkia sitä syvemmin.

Perl-ohjelmointikurssin tavoitteena on oppia kielen ominaisuudet (sen vahvuudet ja heikkoja puolia), opettele kirjoittamaan ohjelmistotuotteita tällä kielellä, opi navigoimaan nopeasti jonkun toisen koodissa. Leikkauksen alla ovat kaikki luennot videomuodossa ja Lyhyt kuvaus heille.

Luento 1. Johdanto

Perl-kielen luomisen historia. Suorituskyvyn vertailu. Esimerkkejä projekteista. Dokumentaatio (perldoc). Ympäristön järjestäminen. Skriptien suorittaminen (perlrun). Poista moduuli. Data::Kipparimoduuli. DDP moduuli. Perl-skriptien virheenkorjaus (perldebug).

Luento 2. Syntaksi ja data

Perussyntaksi (ehdot, silmukat, ohjausfunktiot, postfix-merkintä). Muuttujat (perustyypit, viitteet, interpolointi). Funktiot (ilmoitus, argumentit, konteksti, prototyypit, sisäänrakennetut funktiot, grep/map/sort, eval). Operaattorit (suoritusjärjestys, erikoisoperaattorit, numerot ja merkkijonot).

Luento 3. Modulaarisuus ja uudelleenkäyttö

Sisältää. Vaihelohkot. Paketti. Viedä. Versiot. Pragmaattiset moduulit. Ei. Symblo-pöydät. CPAN.

Luento 4. Säännölliset lausekkeet ja Unicode

Unicode-tuki (määritelmät, merkkijonot ja oktetit, muunnokset, UTF8-lippu, I/O). Säännölliset lausekkeet (vastaavuus, haku ja korvaaminen, translitterointi, merkkiluokat, muuntajat, ryhmät, haut, sieppaukset, kvantisoijat, Unicoden kanssa työskentely, virheenkorjaus).

Luento 5. Viestintä ulkomaailmaan

Työskentely tiedostojen kanssa. Perl IO -taustaohjelma. Prosessien vuorovaikutus. Työskentely pistorasioiden kanssa. Serialisointi (tietojen muuntaminen muotoon binäärinäkymä, JSON, CBOR, MSGPACK, tallennettava, XML). Jäsennetään syöttöparametreja.

Luento 6. OOP

menetelmät. Esimerkkejä. Perintö. Menetelmän ratkaisujärjestys. Yksityiskohdat. Hirven kaltainen.

Luento 7. Työskentely tietokantojen kanssa

SQL. DBI. Kytkeä. SQL-injektiot. Valmista, toteuta. Fetchrow. Fetchall_arrayref. Fetchall_hashref. Valitse rivi. Valitse kaikki. Virheet. Tapahtumat. Viimeinen_lisäystunnus. DBIx::luokka. Tiedostot. Tulos, tulos. Hae. Etsi, sinkku. Kreivi. Suhteet. Liittyä seuraan. Esihaku. Päivitä, poista. Monelta_monelle. Varastointi. DBIx::Class::Schema::Loader. SQL::Kääntäjä. Välimuistissa.

Luento 8. Web-sovellukset sisältä

HTTP-protokolla. CGI, mod_perl, FastCGI, PSGI. Web-kehykset. Suojausmekanismit sovelluksissa.

Luento 9. Asynkroninen tapahtumaohjelmointi

Käyttöjärjestelmän toiminta (rinnakkais ja näennäisen rinnakkaisuus, prosessin tilan ja kontekstin vaihto, monitehtäväaste, järjestelmäpuhelu I/O-toimintojen estäminen). Käsitellään N rinnakkaista yhteyttä (accept + fork, C10k, estävät I/O-toiminnot, tapahtumasilmukka). AnyEvent (sulkemiset, toiminnot viivästetyillä tuloksilla, AnyEvent-käyttöliittymä, Guard). Coro.

Luento 10. Pearlin nopeuttaminen. Laajenna "C"

XS-moduulien sukupolvi. Makroprosessori. Tietotyypit sisältä. Työskentely pinon kanssa. Tyyppikartat. Perlin upottaminen (perlembed).

Luento 11-12. Testaus. Suorituskykyanalyysi

Toiminnallinen testaus. Suorituskyvyn testaus. Stressitestaus. Käytettävyyden testaus. Käyttöliittymän testaus. Turvallisuustestaus. Lokalisoinnin testaus. Yhteensopivuustestaus. Profilointi. Vertailuarvot. Vuotojen löytäminen Pure Perlistä. Vuotojen löytäminen XS:stä.

Tilaa youtube-kanavamme Technostream Mail.Ru! Sieltä löydät kaikki koulutusprojektiemme luennot, mestarikurssit ja lähetykset.

Perl- tulkittu kieli, joka on sovitettu käsittelemään mielivaltaisia ​​tekstitiedostoja, poimimaan niistä tarvittavat tiedot ja lähettämään viestejä. Se on kätevä myös erilaisten järjestelmäohjelmien kirjoittamiseen. Tämä kieli on helppokäyttöinen, tehokas, mutta on vaikea sanoa, että se on tyylikäs ja kompakti.

Perl luotiin vuonna 1986 Unix-tietokoneiden verkon järjestelmäresurssien hallintaan ja konfigurointiin. Siinä yhdistyvät C:n, shellin, sed:n ja awkin parhaat ominaisuudet, joten niille tutuille Perlin oppiminen ei ole vaikeaa. Syntaksi Perl-lausekkeet lähellä syntaksia C. Toisin kuin useimmat OSUNIXPerl-apuohjelmat, käsiteltävän tiedon määrälle ei ole rajoituksia, ja jos resursseja on tarpeeksi, koko tiedosto käsitellään yhtenä rivinä. Rekursio voi olla mielivaltainen syvyys. Vaikka Perl on suunniteltu tekstitiedostojen skannaukseen, se voi myös käsitellä binääritietoja ja luoda .dbm-tiedostoja, jotka ovat samanlaisia ​​kuin assosiatiiviset taulukot. Perl antaa sinun käyttää säännöllisiä lausekkeita, luoda objekteja, lisätä Perl-koodin osia ohjelmaan Powerissa tai C++:ssa ja myös käyttää tietokantoja.

Perl-kieli luotiin parantamaan tekstiasiakirjojen käsittelyn tehokkuutta. Se on suuntautunut merkkijonojen käsittelyyn. Tällä hetkellä kieli on yleistynyt työkaluna suoritettavien WWW-palvelinmoduulien luomiseen. Olemassa olevat laajennuspaketit tarjoavat pääsyn SQL-palvelimiin suoraan Perl-ohjelmasta. Näin voit käyttää sitä kaikkien ongelmien ratkaisemiseen, joita syntyy, kun tarjotaan WWW-käyttöä tietokantoihin. Perl on tehokas myös käsiteltäessä mielivaltaisia ​​tietorakenteita: olemassa olevia raportteja, listoja, kortteja sähköisessä muodossa.

Vaikka CGI-sovelluksia voidaan kirjoittaa melkein millä tahansa kielellä, Perl- ja CGI-ohjelmoinnista on tullut synonyymejä monille ohjelmoijille. Kuten Hassan Shroeder, Sunin ensimmäinen webmaster, sanoi: "Perl on Internetin elinehto, ja tähän on monia hyviä syitä."

Perl on helppo oppia: sen syntaksi muistuttaa muita kieliä (esim. C), koska se on "paljon anteeksiantava" - jos tapahtuu virhe, näkyviin tulee yksityiskohtainen viesti, joka auttaa paikallistamaan ongelman nopeasti.

Perl edistää nopeaa kehitystä, koska se on tulkittu kieli; Lähdekoodia ei tarvitse kääntää ennen ajoa.

Perl on saatavilla monilla alustoilla pienin muutoksin.

Perl sisältää erittäin tehokkaita merkkijonojen käsittelytoimintoja, jotka tukevat kieleen sisäänrakennettua säännöllisten lausekkeiden hakua ja korvaamista.

Perl käsittelee binaaridataa yhtä helposti kuin tekstiä.

Perl ei vaadi selkeää eroa tyyppien välillä: luvut, merkkijonot ja boolen lausekkeet ovat tavallisia skalaareja.

Perl on vuorovaikutuksessa ulkoisten sovellusten kanssa erittäin helposti ja tarjoaa alkuperäiset toiminnot tiedostojärjestelmien kanssa työskentelyyn.

Perlille on tarjolla monia vapaasti saatavilla olevia moduuleja CPANista, dynaamisen grafiikan luomiseen tarkoitetuista moduuleista Internet-palvelimiin ja tietokantojen hallintajärjestelmiin. Katso lisätietoja CPAN:sta liitteestä B.

Perl on todella nopea: kun se lukee lähdetiedoston, se kokoaa sen välittömästi matalan tason koodiksi, jonka se sitten suorittaa. Yleensä kääntämistä ja suorittamista Perlissä ei pidetä erillisinä vaiheina, koska ne suoritetaan yhdessä: Perl käynnistyy, lukee lähdetiedoston, kääntää sen, suorittaa sen ja sitten poistuu. Tämä prosessi toistetaan joka kerta, kun Perl-komentosarja suoritetaan, mukaan lukien CGI-komentosarjat. Koska Perl on niin tehokas, tämä prosessi on riittävän nopea käsittelemään kaikki pyynnöt vähemmän kuin kiireisillä palvelimilla. Huomaa kuitenkin, että Windows-järjestelmissä tämä on paljon vähemmän tehokasta, koska on tarpeen luoda uusia prosesseja.

PHP:n keksi Rasmus Lerdorf vuoden 1994 lopulla. Ensimmäinen versio julkaistiin vuonna 1995 nimellä "Personal Home Page Toolkit", jonka jälkeen se suunniteltiin uudelleen ja nimettiin PHP/FI Version 2:ksi (FI - lomakkeenkäsittelymoduuli). Myös mSQL-tietokantojen tuki on lisätty. Siitä hetkestä lähtien vapaaehtoiset alkoivat osallistua kehittämiseen.

PHP:n käyttötilastot ovat likimääräisiä, mutta Netcraftin tekemän tutkimuksen mukaan vuoden 2001 alussa PHP:tä käytettiin yli 5 300 000 sivustolla maailmanlaajuisesti. Vertailun vuoksi: IIS-palvelimia oli tällä hetkellä suunnilleen sama (5 miljoonaa). PHP-tulkin kehitys toteutettiin organisoidun ryhmäprosessin muodossa, ja Zend.com kehitti tulkin ytimen. PHP:tä levitetään kuitenkin vapaasti: sen uusin versio on ladattavissa PHP.net:stä. PHP-moduulit toimitetaan Apache-palvelimen mukana ja Linux-järjestelmäsarjoissa.

Alunperin lyhenne RNR tarkoitti Esiprosessori / Koti Sivut - kotisivun esiprosessori. Tämä on kieli HTML-sivuille upotetuille ja palvelimella suoritetuille skripteille. Suurimmaksi osaksi sen syntaksi on lainattu kielistä, kuten C, Perl, Java, ja samalla lisätään paljon ominaisuuksia, joita näistä kielistä puuttuu. Yksinkertaisesti sanottuna PHP-syntaksi on älykäs vaihtoehto sekä C:n ankaruudelle että Perlin "rajattomuudelle".

RHP on varustettu melkein täysi setti toiminnallisuus, josta (ennen PHP:n tuloa) web-ohjelmoija saattoi vain haaveilla. Hänen kohde- voit luoda dynaamisesti luotuja verkkosivuja mahdollisimman nopeasti. Voimme perustellusti sanoa, että PHP:n oppiminen ja käyttö on hyödyllistä sekä aloittelijoille että ammattiohjelmoijille.

PHP:n pääkilpailijat ovat JSP (Java Server Pages ja Java Scriptlets), ASP (Active Server Pages), Perl, SSI (Server Side Includes), Cold Fusion Server Pages -teknologiat.

Harkitsemme näiden teknologioiden luontaisia ​​haittoja. JSP- melko vaikea kieli oppia ja käyttää. A.S.P., joka perustuu VBScript (Visual Basic) -syntaksiin, sillä on vain muutama tusina omaa toimintoaan ja siksi sen on pakko käyttää COM-objekteja; Lisäksi se on keskittynyt yksinomaan Windows-käyttöön. Perl- kieli on hämmentävää, ja sen vapaudet vaikeuttavat sen ymmärtämistä. SSI Voit luoda HTML-sivun useista tiedostoista. CF- kaupallinen tuote, mikä on sen suurin haitta.

Perusihmisarvoa RNR:

    vapaa; parannetaan jatkuvasti; toimii UNIX- ja Windows-alustoilla;

    mahdollistaa työskentelyn useimpien DBMS-järjestelmien kanssa;

    on laaja valikoima toimintoja (yli 3 tuhatta);

    mahdollistaa olio-ohjelmoinnin;

    osaa käyttää HTTP-protokollat, FTP, SHAR, SNMP, NNTP, POPZ, verkkopistokkeet ja muut;

    voit suorittaa kaikki edellä mainitut kilpailijansa toiminnot ja jopa työskennellä grafiikkatiedostojen kanssa. Voit myös ajaa PHP-skriptejä tulkittuina tiedostoina ja kääntää suoritettavia sovelluksia (mukaan lukien tuetut GUI GTK).

Jos huomaat, että PHP ei voi tehdä jotain (tai ei toimi haluamallasi tavalla), kukaan ei estä sinua tekemästä haluamiasi muutoksia PHP:n lähdekoodiin (kirjoitettu C:llä). PHP on ohjelmistotuote on avoimen lähdekoodin, ja siihen on aina tervetullutta tehdä parannuksia ja lisäyksiä luomalla omia laajennusmoduuleja.

Tämä ohjelmointimaailman tärkeä tapahtuma sattui vuonna 1986, kun tavalliselta vaikuttava kaveri Larry Wall ilmoitti huolellisen työn jälkeen maailmalle kehittäneensä Perl-ohjelmointikielen. Polku tähän merkittävään tapahtumaan osoittautui vaikeaksi ja hankalaksi, mutta tulos oli sen arvoinen. Miten, kuka ja miksi kehitti uuden ohjelmointikielen? Tässä on vastaukset kaikkiin näihin kysymyksiin.

Tausta

Sysäyksenä tälle löydölle oli hänen osallistuessaan UNIX-projektiin. Työ oli vaikeaa, koska se oli tarpeen luoda suojattu verkko useilla tasoilla, jolloin on mahdollista yhdistää useiden huomattavien etäisyyksien päässä toisistaan ​​olevien tietokoneiden työskentely. Koko prosessi saatiin päätökseen onnistuneesti, mutta raporttien piti olla erittäin työläs, ei vain valtavan tiedostomäärän, vaan myös niiden välillä.

Wall päätti käyttää awk-suodatinta työhön, mutta odottamaton este syntyi: valtavan määrän tiedostojen avaamista tai sulkemista oli mahdotonta hallita - ironista kyllä ​​- niiden sisältämien tietojen perusteella näiden tiedostojen sijainnista.

Aluksi Larry, ratkaistakseen odottamattoman ongelman, päätti kirjoittaa erityisen järjestelmän apuohjelma. Se näytti olevan tie ulos nykyisestä tilanteesta. Mutta ennen sitä hän oli jo koonnut useita apuohjelmia tämän ongelman ratkaisemiseksi, joista valitettavasti ei tullut ratkaisua UNIX-standardeille.

Siksi häntä työssään auttanut lahjakas järjestelmänvalvoja, koulutukseltaan kielitieteilijä, otti riskin ja loi Perl-ohjelmointikielen, jotta sitä olisi mahdollista käsitellä samanaikaisesti. tekstitiedostoja, löytää ratkaisuja järjestelmäongelmiin, luoda ymmärrettävämpiä raportteja. Ja samalla sen pitäisi olla matalan tason ohjelmointia, joka olisi saatavilla C-kielellä. Siksi Perl-tulkki kirjoitettiin siihen.

Uusi ohjelmointikieli: syy sen esiintymiseen

Larryn mukaan laiskuus auttoi häntä luomaan uuden kielen. Mutta juuri tämä laiskuus mahdollisti tärkeän ongelman ratkaisemisen: kuinka välttää suuren määrän ohjelmien kääntäminen eri kieliä, jotka olivat olennainen osa työkaluja UNIX. Tämä menettely oli liian työläs.

Muut arvostivat uuden kielen ansioita, koska se yhdisti harmonisesti tiedostojen käsittelyn ja järjestelmän hallinta. Ja nämä ovat juuri ne kaksi tarpeellista tosiasiaa, joita tarvitaan UNIX-järjestelmän ohjelmoinnissa.

On huomattava, että Perl-ohjelmointikielellä on pieni ero muista vastaavista kielistä: se ilmestyi siksi, että sille oli tarvetta, eikä käyttäjien hämmästyttämiseksi tai toisen kauniin työkalun keksimiseksi, jolla ei ole erityistä roolia.

Päinvastoin, kun Larry esitteli käyttäjilleen keksintönsä mm järjestelmänvalvojat se loi todellisen sensaation, koska nyt ei tarvinnut käyttää paljon aikaa useiden ohjelmointikielten ymmärtämiseen, ja ongelmat tulivat helposti ratkaistuiksi käyttämällä yhtä kieltä symbolitaulukon avulla.

Erikoisuudet

Venäjäksi käännetty lyhenne Perl kuulostaa "käytännölliseltä kieleltä tietojen poimimiseen ja raporttien luomiseen".

He päättivät tehdä kamelin tämän tyyppisen kielen symboliksi, luultavasti ottaen huomioon, että koska tämä eläin on jalo, sitkeä ja kykenee kantamaan raskaan kuorman monta päivää valittamatta, sama työ muistuttaa uuden kielen kuormaa, joka on myös vakavaa.

On monia syitä, miksi monet käyttäjät arvostivat uutta kieltä välittömästi. Jokainen UNIX-järjestelmää käyttävä tietää, että tässä olevat asetukset menevät läpi erikoistiedostoja- tavalliset tekstit, ja muutokset tehdään komentojen suorittamisen jälkeen. Ne on kirjoitettu erityisellä kuorikielellä, ja niiden suoritus tapahtuu komentorivi.

UNIX-järjestelmän avulla voit luoda mukautettuja komentoja hyödyntämällä ja tallentamalla tulkkauskomentoja. Ne säilyvät tekstitiedostoissa ja suoritetaan tarvittaessa muodossa standardi setti käyttöjärjestelmän komennot - vain komentorivin kautta.

Käyttäjän komennot joita kutsutaan muuten skripteiksi. UNIX-järjestelmässä operatiivisen järjestelmänvalvojan on kirjoitettava suuri määrä komentosarjoja, jotka puolestaan ​​​​prosessoivat myöhempiä komentosarjoja, eli tekstitiedostoja erikoisohjelmien avulla:

  • Awk. Ohjelma mahdollistaa vertailun näihin näytteisiin ja toimii raporttigeneraattorina.
  • Sed. Toimii tekstitiedostojen eräeditorina.

Ohjelmat lukevat merkkijonoja yksitellen suodattimina syöttötiedostot. Sitten he suorittavat merkkijonoon liittyvät toiminnot, jotka määritetään ohjelman komennoilla. Tässä tapauksessa merkkiketju valitaan tiettyjen kuvioiden mukaan, korvataan niiden mukaan vahvistetut säännöt, uusia tiedostoja luodaan.

Mahtavia mahdollisuuksia

Uusi kieli Perl-ohjelmointi on avannut erittäin runsaasti mahdollisuuksia tapauksissa, joissa on tarpeen käsitellä tekstiä ja vakaita lausekkeita. Perlissä on laaja valikoima apumoduuleja.

Ajan myötä tämä ainutlaatuinen kieli on laajentanut rajojaan ja sitä käytetään nyt laajalti web-kehityksessä ja peleissä, kun tarvitaan verkko-ohjelmointia tai graafista käyttöliittymää.

Kieli on saanut kiinni ja sitä rakastetaan helppokäyttöisyydestään, ja se on nyt tunnustettu dynaamisimmaksi ohjelmointikieleksi. Se tukee useita paradigmoja, mukaan lukien tyylejä - toiminnallisia, menettelyllisiä ja muita, siinä on muistinhallinta ja tuki tekstinkäsittelylle.

Ei ole turhaa, että yksi L. Wallin mottoista sanoo, että yksinkertaiset asiat voivat pysyä yksinkertaisina, mutta monimutkaiset asiat on tehtävä.

Kielen hallitseminen on helppoa, kun ymmärrät tehtävälausekkeet, koodilohkot, ohjausrakenteet ja toiminnot.

Yhtäläisyyksiä muiden kielten kanssa

Larry lainasi paljon muista ohjelmointikielistä. Esimerkiksi:

  • UNIX-kuoret. Muuttujat on merkitty alkumerkeillä, ne ilmaisevat selvästi muuttujan tyypin ja auttavat näiden muuttujien interpoloinnissa merkkijonoihin. Sisäänrakennetut toiminnot tarjoavat instrumentoinnin, ja tätä käytetään kuoren ohjelmoimiseen.
  • Matriisit Lispistä.
  • Perlin säännöllisten lausekkeiden käyttäminen awk:sta, lainaten samalla häneltä assosiatiivisia aiheita.
  • alkaen sed.

Mutta uusi kieli selviytyi omista tehtävistään paljon nopeammin, ja siksi he alkoivat käyttää sitä paitsi järjestelmän hallintaongelmien ratkaisemiseen.

Wall sai G. Spenceriltä paketin, joka auttoi häntä hallitsemaan Perlin säännöllisiä lausekkeita ja muokkaamaan sitä aivotuoksulleen sopivaksi. Monet kehitetyistä ominaisuuksista eivät johdu yksinomaan Larrysta. Kollegat ja ystävät yrittivät yhtä innokkaasti tuoda innovaationsa kehitettävän ainutlaatuisen ohjelmaan. Ja kun kieli ilmestyi Internetiin, muodostui kokonainen yhteisö samanmielisiä ihmisiä, jotka myös auttoivat parantamaan sitä. Siitä lähtien työhön on tilastojen mukaan osallistunut yli 10 000 ohjelmoijaa.

Kieltä kuitenkin kehitetään edelleen kehittämällä paketteja, joita käytetään menestyksekkäästi uusien kielen sovellusten toteuttamiseen tietoon liittyvien teknologioiden kehittämiseen.

Kehityksen vaiheet

Pienet mutta merkittävät matkan vaiheet voidaan korostaa taulukossa.

Julkaistut versiot

Luomisen aika

perl 1. Ei sisältänyt monia ominaisuuksia. Tämä oli helpoin tapa etsiä tiedostoja kuvioiden avulla. Mutta siellä oli tiedostokuvauksia, muotoja ja skalaarimuuttujia.

1988 Tammikuu.

perl 2. Vielä parantumaton säännöllinen lausekemekanismi on ilmestynyt.

1988 kesäkuuta.

perl 3. Kehittäjät ovat saavuttaneet kyvyn käsitellä binääritietovirtoja.

1989 Lokakuu.

perl 4. Ilmestyi suurelta osin julkaistun kirjan "Ohjelmointi Perl", mutta nimellä "Camel Book". Uusi kieli on dokumentoitu. Tämä ajanjakso käytiin läpi useita julkaisuja, ja lopulta asettui versioon 4.036. Oli jo vuosi 1993. Sitten alkoi työ seuraavan - V - version parissa.

1991 maaliskuuta.

perl 5. Lisätty tuki monimutkaisille tietotyypeille, objektimalli, joka sisältää arvona viittaukset, paketit ja sulkemisen. Postituslista luodaan, jotta työtä voidaan koordinoida eri alustojen välillä. Itse asiassa siitä tuli tärkein kehittämisen, siirtämisen ja ylläpidon foorumi. Moduulit ovat nyt tärkeä osa versiota, koska ne pystyivät laajentamaan kieltä, mutta muuttamatta tulkkia. Tämä pystyi vakauttamaan hänet, mutta laajensi hänen kielitaitoaan.

1994 Lokakuu.

Ainutlaatuinen Perl - ohjelmointikieli: plussat ja miinukset

Perl 5:tä kehitetään aktiivisesti ja sitä päivitetään nyt uusilla versioilla. Mutta kaikella kehityksellä on useita yhteisiä tekijöitä: automaattinen tietojen kirjoittaminen suoritetaan ja muistia ohjataan automaattisesti.

Tulkin ansiosta jokaisen ohjelmaobjektin tyypit, mutta myös muistivaatimukset ovat tiedossa, eikä sen ole vaikeaa varata muistia ja vapauttaa sitä viitteitä laskettaessa.

On huomattava, että Perl-ohjelmointi erottaa tulkin muista. Todiste tästä on ohjelman kääntäminen välitavukoodiksi, ja vasta sen jälkeen sitä aletaan suorittaa. Vertailun vuoksi: perinteinen toimii hieman eri tavalla - syötetty operaattori tulkitaan ja suoritetaan välittömästi, mikä on täynnä syntaksivirheitä työnkulun aikana. Perlin avulla voit havaita tämäntyyppiset virheet jo ostokoodiksi käännösvaiheessa.

Yhden tyyppisten tietojen kääntäminen toiseksi edellyttää automaattista prosessia, mutta jos minkä tahansa tyyppisten tietojen kääntäminen on mahdotonta, tämä voi johtaa kohtalokkaaseen virheeseen.

Version 5004 ansio on, että siinä on UNIVERSAL-paketti, joka antoi kielelle pääobjektin ja kaikki luokat johdettiin siitä - automaattisesti. Nyt on mahdollista pyytää moduuliversioita. Moduulien version pyytämisen tukemisesta on tullut todellisuutta. Tämän lisäksi perl alkoi tukea monia käyttöjärjestelmiä ja Microsoft Windows mukaan lukien.

Vuonna 1998 julkaistu versio 5.005 paransi merkittävästi säännöllisten lausekkeiden prosessorin laatua, paransi uusia koukkuja backendissä, mikä ratkaistiin tiettyjen moduulien avulla, ja laajensi käyttöjärjestelmien tukea.

Viimeisimmät päivitykset

Vuosi kaksituhatta antoi maailmalle uuden, 5.6-version Pearl-kielestä. Se näytti jo paljon vanhemmalta kuin ensimmäiset, siinä oli 64-bittiset järjestelmät, se pystyi tukemaan yli kahden Gt:n tiedostoja, sisälsi merkkijonoesityksen, ottaen huomioon Unicode-standardin sekä avainsanan - meidän. Tänä aikana versioiden nimeämisjärjestelmä muuttuu samanlaisemmaksi kuin muut avoimen lähdekoodin projektit.

Mielenkiintoinen tosiasia on tämä päätös: jos versio on kehitteillä, sille annetaan numero parittomilla numeroilla ja vakaa saa parillisen numeron.

Wall pyysi sitten seuraajiaan tekemään ehdotuksia kehittyneemmän version luomiseksi. Hänen kutsunsa kuultiin, ja tuloksena oli 361 asiakirjaa, jotka auttoivat kehittämään versiota VI. Käyttäjille esitettiin asiakirja, joka todennäköisimmin muistutti yhteenvetoa, ja tämä versio oli olemassa, mutta vain kielen kuvauksen muodossa. Useista asiakirjoista tuli tämän version spesifikaatio. Yritys käynnistää version VI tulkki vuonna 2006 keskeytettiin. Mutta vuodesta 2009 lähtien Rakudo Perl -nimellä tämä versio on elänyt ja sitä päivitetään säännöllisesti.

Perl 5:n kehitysprosessissa tapahtui merkittävä muutos Perl 5.11:n julkaisun myötä. Kehittäjäyhteisö on siirtynyt kuukausittaiseen julkaisujaksoon, ja julkaisupäivät on suunniteltu kolme kuukautta etukäteen.

Uusi versio

Versio 5.8 ilmestyi vuonna 2002. Se on kuuluisa siitä, että siitä lähtien sitä päivitettiin vuosittain vuoteen 2008 asti, se paransi merkittävästi Unicode-tukea, lisäsi monia toimintoja, mukaan lukien monisäikeinen tuki, alkuperäinen I/O-toteutus ja parannettu numeerinen tarkkuus. Ja taas ilmestyi uusia moduuleja.

Yleiskäyttöisen ohjelmointikielen luomisen 20-vuotispäivänä uusi versio numerolla "5.10.0" ei pettänyt käyttäjiä jälleen kerran. Uusia operaattoreita on ilmestynyt sekä "älykkäitä" osumia ja säännöllisiä lausekkeita on päivitetty.

Mitä viimeiset työvuodet ovat tuoneet mukanaan?

Joka vuosi uudet parannukset auttoivat tekemään Wallin keksimästä kielestä helpompaa, yksinkertaisempaa ja helpompaa. Vuotta 2010 leimaa se, että Perl-kielen syntaksi sai tuen paketille NAME VERSION, seuraavina vuosina säännöllisiä lausekkeita päivitettiin ja operaattorien tukea laajennettiin.

Tavoite saavutettiin - ilmoittaa ajon aikana emuloitava versio, mikä tarkoittaa, että perl voidaan päivittää, mutta samalla ei menetetä käytettyjen komentosarjojen toimintakykyä, joka uhkaa olla yhteensopimaton uusi versio esitelty. Se tuli lisää ominaisuuksia, turvallisuus on lisääntynyt.

Toukokuun lopussa, aivan äskettäin, seuraava versio ilmestyi, kuten aina, paranneltu ja helpompi käyttää. Nykyään kuka tahansa voi testata sitä ja nähdä oman henkilökohtaisen kokemuksensa perusteella, että tämän ohjelmointikielen luomiseksi on tehty paljon työtä.

Tällä kielellä Perl-taulukot ei rajoitettu. Kielen avulla voit ratkaista ei-perinteisiä tehtäviä, jotka muutoin vaatisi useita ihmisiä, suorittaa hallinnollisia tehtäviä, käsitellä tekstitiedostoja laadukkaasti, eikä kaikkiin ongelmiin kulu paljon aikaa. Kehittämällä uusia ohjelmia, käyttämällä symbolitaulukkoa, käyttämällä tarvittavia operaattoreita, lopputulos on oikea ja nopea.

Tämä artikkeli osoitti jälleen kerran, että mikään ei ole mahdotonta alansa harrastajille. Joskus pienimmätkin ongelmat johtavat hyödyllisiä löytöjä, mikä voi tehdä elämästämme hieman helpompaa.

Ei liian kaunis, mutta erittäin kestävä eläin, joka pystyy tekemään kovaa työtä.

Kielen pääominaisuus on sen monipuoliset ominaisuudet tekstin kanssa työskentelyyn, mukaan lukien säännöllisillä lausekkeilla toteutetut ominaisuudet.

Perl on myös kuuluisa valtavasta lisämoduulivalikoimastaan ​​http://www.cpan.org (englanniksi)

Mielenkiintoisia Perl-tekstin tulostamista alkulukuja:

Perl-wle "(1 x $_) !~ /^(11+)\1+$/ && tulosta samalla ++ $_"

Toinen esimerkki, myös vaikuttava lyhyydessään, josta on myös käytännön hyötyä. Vain yksilölliset rivit tiedostosta tulostetaan.

Perl -ne "$s($_)++ || print" tiedosto

Näissä esimerkeissä Perl muistuttaa kieltä ensi silmäyksellä lyhyydessään ja käsittämättömyydessä.

Perl peri monia ominaisuuksia C-, shell-skripti- ja awk-kielistä.

Nykyään kehittäjien pääversio on Perl-kielen viides versio, mutta (joillakin web-palvelimilla) edellisessä neljännessä versiossa kirjoitettuja ohjelmia (skriptejä) käytetään edelleen (osittaisen taaksepäin yhteensopimattomuuden vuoksi). Itse asiassa kielitaso määräytyy tulkin toteutuksen mukaan.

Perl ei ole suinkaan ainoa kieli, joka tarjoaa monipuolisia tekstinkäsittelyominaisuuksia. Ohjelmointikielet REFAL, Icon ja Snoball antavat mahdollisuuden käyttää täydellisemmin "pattern matching" -ohjelmointimenetelmää, jonka erikoistapaus ovat säännölliset lausekkeet.

Siellä on myös täysi

Perl syntaksi

Perlin syntaksilla on paljon yhteistä C-, Awk- ja shell-kielten syntaksin kanssa.

Ensimmäinen linja lähdekoodi voi alkaa sanoilla "#!/Path/to/Perl[-kytkimet]" - joka kertoo järjestelmälle polun Perl-tulkkiin ohjelman suorittamiseksi UNIX-järjestelmissä ja niiden suorittamiseen web-palvelimella.

Esimerkkiohjelma

Tulosta 1, 0 x 100;

Tietotyypit

Perustietotyypit: skalaari, taulukko, hash-taulukko, funktio, tiedostokuvaaja. Erityyppiset muuttujat erottuvat muuttujan nimeä edeltävästä merkistä.

$foo ; # skalaari tai osoitin@foo ; # array %foo ; # hash table # toiminto FOO; # I/O-kahva

  • Skalaarimuuttujia käytetään yksittäisten arvojen tallentamiseen. Ne voivat sisältää numeroita, merkkijonoja ja viittauksia muihin objekteihin. Skalaarimuuttujan nimen edessä on oltava dollarimerkki "$". Skalaarimuuttujan tyyppi ei ole kiinteä (toisin kuin esimerkiksi C-kieli) ja se määräytyy dynaamisesti kontekstista riippuen. Esimerkiksi,

$x = 10 ; # numero $y = $x + 1 ; # käytä $x numerona...$z = $x. "merkkijono"; # ... ja nyt - merkkijonona$viite = \$x ; # $ref on osoitin $x$$ref = 0 ; # $x sisältää arvon 0

  • Taulukko on järjestetty luettelo skalaareista. Jokaisella taulukon elementillä on järjestysindeksi, jonka avulla siihen pääsee käsiksi. Elementtien numerointi alkaa nollasta, eli listan ensimmäisellä elementillä on indeksi 0. Ennen taulukkomuuttujan nimeä on laitettava @-merkki ja tiettyyn taulukkoelementtiin pääsemiseksi on suositeltavaa käytä "$"-merkkiä, koska tietty taulukon elementti on skalaari. Moniulotteiset taulukot voidaan mallintaa sijoittamalla linkkejä muihin luetteloihin.

@array = (1 ,2 ,3 ,4 ) ; # kirjoitti neljä elementtiä @arrayyn tulosta $array [ 2 ] ; # tulosta kolmas elementti tulosta @array [ 2 ] ; # tulostaa myös kolmannen elementin, mutta on suositeltavaa käyttää edellistä versiota tulosta @array [ 2 , 3 ] ; # tulosta kolmas ja neljäs elementti

  • Hajautustaulukko on assosiatiivinen taulukko, jonka avulla merkkijono (kutsutaan avaimeksi) voidaan liittää skalaariin (arvoon). Merkkijonoa kutsutaan avaimeksi, ja hash-taulukon skalaaria kutsutaan arvoksi. Listamuuttujan nimeä edeltää prosenttimerkki "%", ja tiettyyn taulukon elementtiin pääsemiseksi on suositeltavaa käyttää merkkiä "$".

Fyysisesti hash-taulukko on taulukko, jossa avaimet ovat parittomissa paikoissa ja arvot parillisissa paikoissa.

%hash = ( "kissa" => "kissanpentu" , "koira" => "pentu" , "lehmä" => "vasikka" ) ; tulosta $hash("kissa"); #Prints kitten print %hash ( "kissa" ); #tulostaa myös kissanpentua, mutta on suositeltavaa käyttää edellistä versiota tulosta liitos ("-" , avaimet %hash ) ; # Tulosta kaikki avaimet. Tulostaa kissa-koira-lehmä tulosta liitos ("-" , arvot %hash ); # Tulosta kaikki arvot. Tulostaa kissanpentu-pentu-vasikka tulosta liitos ("-" , %hash ) ; #Tulostetaan kissa-kissanpentu-lehmä-vasikka-koiranpentu

  • Funktio on fragmentti suoritettava koodi. Funktio palauttaa aina jonkin arvon tai UNDEF:n. Jos paluuarvoa ei ole erikseen määritetty return-käskyssä, palautetaan viimeisin arvioitu arvo.

Sub printTwo( print 2 ; ) sub three( 3 ; ) $s = \ print &$s ; #Tulostaa 3 $s = \ tulosta &$s ; #Print 21. "2" funktiokoodissa ja "1" printTwo-funktion palauttamana arvona tulosta & tulostaKaksi #sama asia

  • Jatkuva

Vakio edustaa muuttumatonta arvoa. Vakio ei ole sisäänrakennettu kielityyppi, ja sitä emuloidaan funktioiden avulla. Käyttö:

Käytä vakiota MY => 2 ; tulostaa MY;

*MY = \2 ; tulosta $MY ;

  • Tiedoston kuvaus

Edustaa osoitinta tiedostoon, laitteeseen tai PIPE:hen, joka on avoinna kirjoittamista, lukemista tai kirjoittamista ja lukemista varten.

Käyttö:

$s = ; #Lue yksi rivi STDIN-kuvauksesta (vakiosyöttö); skalaarikonteksti.@arvot = ; #Lue kaikki rivit jostain avoimesta ja siihen liittyvästä kuvauksesta FILE-tiedosto; luettelo kontekstissa. tulosta STDOUT $s ; #Tulosta STDOUT-muotoon (tavallinen tulostusvirta)

Säännölliset lausekkeet

Perlissä on vahva tuki säännöllisille lausekkeille. Tämä tekee Perlistä erittäin tehokkaan tekstinkäsittelyssä. Suurin osa työstä säännöllisten lausekkeiden kanssa tehdään käyttämällä operaattoreita =~ , m// ja s/// .

M//-operaattoria käytetään vastaavuuden tarkistamiseen. Yksinkertaisimmassa tapauksessa lausekkeen $x =~ m/abc/ tulos on tosi, jos ja vain jos merkkijono $x vastaa säännöllistä lauseketta abc . Esimerkiksi:

Etsiminen ja korvaaminen tehdään s///-operaattorilla. Rakenne $x =~ s/abc/def/; korvaa säännöllisen lausekkeen abc ensimmäisen esiintymän merkkijonolla def .

Esimerkki Merkitys
$x =~ s/abc/def/g; Kaikki alimerkkijonon "abc" esiintymät (joka osoittaa /g - globaali lippu) kohdassa $x korvataan sanalla "def".
$x =~ s/a(.(1,3))c/!$1!/; Ensimmäinen kirjain "a" $x:ssa, sitten mikä tahansa yhdestä kolmeen merkkiä, ja sitten kirjain "c" korvataan näillä merkeillä "a":n ja "c:n" välissä, ympärillä "!". Esimerkiksi "syntaktisesta" tulee "synt!cti!".
$x =~ s(^p(erl|ugs))("P" . lc $1)ieg; Tässä on esimerkki /e-muuntimen käytöstä, mikä osoittaa, että korvaavan rivin sijaan kirjoitetaan koodi, jonka tulosta tulee käyttää. Kaikki esiintymät "perl" tai "pugs" korvataan joka tapauksessa sanoilla "Perl" ja "Pugs".

Runous Perlissä

Voit jopa kirjoittaa runoutta Perlissä. Larry Wall mainitsi erään sellaisen runon, nimeltään "Black Pearl", aprillipäivän kirjeessä

ENNEN PÄÄ: sulje ovi, jokainen ikkuna ja poistu ; odota aikaa. avaa loitsukirja, opiskele, lue (skannaa, valitse, kerro meille) ; kirjoita se, tulosta heksadesimaali kukin kello, käännä sen pituus, kirjoita uudelleen; tappaa hämähäkkejä, pop niitä, pilkkoa, halkaista, tappaa ne. irrota kädet, vaihda, odota ja kuuntele (kuuntele, odota), lajittele lauma (sen jälkeen varoita "vuohia" ja tappaa "lampaat") ; tappaa heidät, hylätä vaivoja, siirtää moraalia, arvot sivuun, jokainen; kuole lammas! kuolla kääntääksesi hyväksymäsi järjestelmän (hylätä, kunnioittaa) ; seuraava askel, tapa seuraava uhri, jokainen uhraus, odota, tee rituaali uudelleen, kunnes "kaikki henget ovat tyytyväisiä" ; tee se ("kuten sanotaan") . tee se (*kaikkien***on***on***osallistua***kielletyihin**s *e*x*) . palauta viimeinen uhri; paketti elin; poistu kryptasta (aika , ajat & "puoli aikaa") & sulje se, valitse (nopeasti) ja varoita seuraavaa uhriasi; JÄLKISANAT: älä kerro kenellekään, odota, odota aikaa; odota ensi vuoteen, ensi vuosikymmeneen; nuku, nuku, kuole itse, kuole vihdoinkin

Toimittajat

Katso myös

  • Vertailu Perlin ominaisuudet muiden kielten kanssa, katso artikkeli Ohjelmointikielten vertailu
  • Papukaija

Linkit

  • www.perl.org - Perl-kielen virallinen verkkosivusto
  • www.cpan.org - Perl-kielen kirjastojen arkisto
  • www.activestate.com/Products/activeperl Perl-jakelu ActiveStatesta
  • perl6.ru - tietoa uudesta Perl 6 -versiosta
  • forum.vingrad.ru/Perl-forum.html - Venäjänkielinen foorumi Perlistä Vingradissa
  • ru_perl - venäjänkielinen yhteisö LiveJournalissa
  • kiev.pm - Perl-kehittäjien aktiivinen yhteisö
  • brainworker.ru - hakusivustot Perlistä
  • PERL-kielen kriittinen analyysi - yksityiskohtainen analyysi ja pääasiallinen kritiikki kielelliset keinot Perl staattisten kielten näkökulmasta. Hieman vanhentunut artikkeli.

Dokumentointi

  • perlintro - lyhyt johdanto ja Perl-arvostelu
  • perlsyn - Perl-syntaksi
  • perlre - säännölliset lausekkeet Perlissä
  • perlfaq - vastauksia Perlistä usein kysyttyihin kysymyksiin (katso myös venäjänkielinen käännös)

Video

  • YAPC::TV - videoita Perlin tapahtumista

koulutus

  • Perl 6 Tutorial - videotallenteet raporteista, jotka annettiin ukrainalaisessa työpajassa "Perl Mova" 23. helmikuuta 2008.

yhteisöt

Venäjällä

  • Moscow.pm (Moskova)
  • Vladivostok.pm (Vladivostok)
  • Kazan.pm (Kazan)
  • RostovOnDon.pm (Rostov-on-Don)
  • SPb.pm (Pietari)

Ukrainassa

  • Kiev.pm (Kiova)
  • Odessa.pm (Odessa)

Valko-Venäjällä

  • Minsk.pm (Minsk)

Kirjallisuus

  • Randal L. Schwartz, Brian D. Foy ja Tom Phoenix Perl: oppia syvemmälle. - O"Reilly, "Symboli", 2007. - ISBN 978-5-93286-093-9
  • Paul Whitehead Perl: Visuaalinen ohjelmointikurssi = Perl: Visuaalinen suunnitelmasi Perl-skriptien rakentamiseen. - M.: "Dialektiikka", 2001. - S. 280. - ISBN 0-7645-3478-5
  • Lincoln D. Stein Kehitys verkko-ohjelmat Perlissä: Per. englannista - M.: 2001. - 752 s. kuviineen, Williams Publishing House.

Perl-kielen loi vuonna 1987 kielitaustainen amerikkalainen ohjelmoija Larry Wall. Vuosi luomisen jälkeen, vuonna 1988, kieli lisäsi tuen säännöllisille lausekkeille ja vuonna 1989 binäärimuodossa esitettyjen tietovirtojen käsittelyyn. Työ Perl-kielen parissa jatkuu. SISÄÄN uusimmat versiot Perl esitteli tuen monimutkaisille tietotyypeille ja objektimallille.

Perl-kielen ominaisuudet.

Perlin rakenne on samanlainen kuin C-kielen. Jotkut Perl-kielen ominaisuudet on lainattu komentokielistä UNIX-kuoret– järjestelmät.

Kielen erottuva piirre on kyky kirjoittaa ohjelmia yhdeltä riviltä. Niitä käytetään suoraan komentotulkin kutsurivillä.

Edut.

Perl-kielen edut:

  • sisäänrakennetut työkalut monimutkaisten rakenteiden työskentelyyn;
  • vapaa syntaksi (sama ongelma voidaan ratkaista eri tavoilla);
  • monet valmiit kirjastot - moduulit;
  • tuki säännöllisten lausekkeiden kanssa työskentelemiseen;
  • yksinkertainen käsittely suuria määriä tiedot;
  • kyky ohjelmoida olio- tai "toiminnalliseen" tyyliin;
  • cross-platform.

Vikoja.

Joidenkin ongelmien ratkaisemiseksi jotkin Perl-kielen edut muuttuvat haitoksi. Suuri määrä Moduulit vaikeuttavat niiden löytämistä, mistä eivät pidä ohjelmoijat, jotka koko valikoimasta tarvitsevat vain pari erityistä.

Kieli säilyttää aiemmin suosittuja, mutta nyt vanhentuneita lähestymistapoja. Jotkut niistä voivat kuitenkin sopia hyvin tiettyihin ohjelmistotehtäviin.

Virtuaalinen verkkosivuston isännöinti suosituille sisällönhallintajärjestelmille:

Mihin sitä käytetään?

Järjestelmätuki Windowsille ja UNIXille.

Perl on suosittu kieli UNIX- ja Windows-järjestelmänvalvojien keskuudessa. Sen ominaisuuksien ansiosta et houkuttele muita ohjelmisto hallinnollisten ongelmien ratkaisemiseksi. Perlin avulla voit ohjata tietokoneita komentoriviltä, ​​ohjata ohjelmia toisen päälle ja muita toimintoja.

Sähköposti.

Perl on sopiva työkalu sähköpostin käsittelyn automatisointiin. Sen avulla voit määrittää viestien suodatuksen määritettyjen parametrien mukaan, järjestää postituksia ja ratkaista monia muita ongelmia.

CGU - komentosarjat.

CGU-skriptien käyttö johtuu tarpeesta käsitellä käyttäjän html-sivulle syöttämiä tietoja. Toimii palvelimella erikoisohjelma, joka luo vastauksen käyttäjälle tietojen syöttämisen jälkeen. Perl-kieli on saavuttanut suosiota tällä alueella vaadittujen toimintojen helpon toteuttamisen ansiosta.

Web-sivuston tuki.

Web-sivusto on HTML-sivujen muodossa olevien tekstitietojen arkisto. Perl-kieli on suunniteltu ottaen huomioon tarve käsitellä suuria tekstidatamääriä, ja siksi sitä käytetään laajasti tällä alueella.