PERL. TIE Principles of Programming Languages. Ryhmä 4: Joonas Lång & Jasmin Laitamäki

Samankaltaiset tiedostot
ELM GROUP 04. Teemu Laakso Henrik Talarmo

Luento 5. Timo Savola. 28. huhtikuuta 2006

TIE Principles of Programming Languages. Seminaariesityksen essee. Ryhmä 18: Heidi Vulli, Joni Heikkilä

Ohjelmoinnin perusteet Y Python

TIE PRINCIPLES OF PROGRAMMING LANGUAGES Eiffel-ohjelmointikieli

Ohjelmoinnin perusteet Y Python

Python-ohjelmointi Harjoitus 2

TIE Principles of Programming Languages CEYLON

Ohjelmointitaito (ict1td002, 12 op) Kevät Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen

Ohjelmoinnin perusteet Y Python

Chapel. TIE Ryhmä 91. Joonas Eloranta Lari Valtonen

Groovy. Niko Jäntti Jesper Haapalinna Group 31

Java-kielen perusteet

Ctl160 Tekstikorpusten tietojenkäsittely Kolmas luento,

Ruby. Tampere University of Technology Department of Pervasive Computing TIE Principles of Programming Languages

Pythonin alkeet Syksy 2010 Pythonin perusteet: Ohjelmointi, skriptaus ja Python

AS C-ohjelmoinnin peruskurssi 2013: C-kieli käytännössä ja erot Pythoniin

Alkuarvot ja tyyppimuunnokset (1/5) Alkuarvot ja tyyppimuunnokset (2/5) Alkuarvot ja tyyppimuunnokset (3/5)

Tutoriaaliläsnäoloista

Java-kielen perusteet

Ohjelmoinnin peruskurssien laaja oppimäärä

tään painetussa ja käsin kirjoitetussa materiaalissa usein pienillä kreikkalaisilla

815338A Ohjelmointikielten periaatteet Harjoitus 2 vastaukset

Ohjelmoinnin perusteet Y Python

15. Ohjelmoinnin tekniikkaa 15.1

Tieto- ja tallennusrakenteet

Perinteiset tietokoneohjelmat alkavat pääohjelmasta, c:ssä main(), jossa edetään rivi riviltä ja käsky käskyltä.

Ohjelmointitaito (ict1td002, 12 op) Kevät Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen

Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 4: Ohjelmointi, skriptaus ja Python

Ohjelmoinnin perusteet Y Python

13. Loogiset operaatiot 13.1

Datatähti 2019 alku. task type time limit memory limit. A Kolikot standard 1.00 s 512 MB. B Leimasin standard 1.00 s 512 MB

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

ITKP102 Ohjelmointi 1 (6 op)

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin peruskurssi Y1

Harjoitustyö: virtuaalikone

815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset

815338A Ohjelmointikielten periaatteet Harjoitus 6 Vastaukset

Ohjelmoinnin peruskurssien laaja oppimäärä

4. Lausekielinen ohjelmointi 4.1

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Ohjelmassa henkilön etunimi ja sukunimi luetaan kahteen muuttujaan seuraavasti:

5. HelloWorld-ohjelma 5.1

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1

815338A Ohjelmointikielten periaatteet Harjoitus 7 Vastaukset

Erlang. Miika Heinonen ja Lassi Uosukainen (Group 92) TIE Principles of Programming Languages Seminaariessee. Yleistä

Approbatur 3, demo 1, ratkaisut A sanoo: Vähintään yksi meistä on retku. Tehtävänä on päätellä, mitä tyyppiä A ja B ovat.

Pythonin Kertaus. Cse-a1130. Tietotekniikka Sovelluksissa. Versio 0.01b

Ohjelmointikieli TIE Principles of Programming Languages Syksy 2017 Ryhmä 19

Ohjelmoinnin perusteet Y Python

Korpusten käsittely clt131, P Luento 5

Koka. Ryhmä 11. Juuso Tapaninen, Akseli Karvinen. 1. Taustoja 2. Kielen filosofia ja paradigmat 3. Kielen syntaksia ja vertailua JavaScriptiin Lähteet

Concurrency - Rinnakkaisuus. Group: 9 Joni Laine Juho Vähätalo

Ohjelmoinnin peruskurssien laaja oppimäärä

15. Ohjelmoinnin tekniikkaa 15.1

Ohjelmoinnin peruskurssien laaja oppimäärä

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

IDL - proseduurit. ATK tähtitieteessä. IDL - proseduurit

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1

ATK tähtitieteessä. Osa 3 - IDL proseduurit ja rakenteet. 18. syyskuuta 2014

// Tulostetaan double-tyyppiseen muuttujaan "hinta" tallennettu // kertalipun hinta ja vaihdetaan riviä. System.out.printf("%.1f euros.

Sisällys. 3. Pseudokoodi. Johdanto. Johdanto. Johdanto ja esimerkki. Pseudokoodi lauseina. Kommentointi ja sisentäminen.

Ohjelmoinnin perusteet Y Python

Palautetta viime luennosta

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

TIEA241 Automaatit ja kieliopit, kevät 2011 (IV) Antti-Juhani Kaijanaho. 19. tammikuuta 2012

Ohjelmoinnin perusteet Y Python

11. Javan valintarakenteet 11.1

Ohjelmassa muuttujalla on nimi ja arvo. Kääntäjä ja linkkeri varaavat muistilohkon, jonne muuttujan arvo talletetaan.

Tietojen syöttäminen ohjelmalle. Tietojen syöttäminen ohjelmalle Scanner-luokan avulla

Pong-peli, vaihe Koordinaatistosta. Muilla kielillä: English Suomi. Tämä on Pong-pelin tutoriaalin osa 2/7. Tämän vaiheen aikana

Taulukot. Jukka Harju, Jukka Juslin

Ohjausjärjestelmien jatkokurssi. Visual Basic vinkkejä ohjelmointiin

Korpusten käsittely clt131, P Luento 4

Algoritmit 1. Luento 3 Ti Timo Männikkö

Ohjelmoinnin perusteet Y Python

7/20: Paketti kasassa ensimmäistä kertaa

T Sovellusohjelmat Matlab osa 4: Skriptit, funktiot ja kontrollirakenteet

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin peruskurssi Y1

7. Näytölle tulostaminen 7.1

Algebralliset tietotyypit ym. TIEA341 Funktio ohjelmointi 1 Syksy 2005

Työ tehdään itsenäisesti yhden hengen ryhmissä. Ideoita voi vaihtaa koodia ei.

Olio-ohjelmointi Syntaksikokoelma

Common Lisp Object System

Harjoitus 5 (viikko 48)

4. Lausekielinen ohjelmointi 4.1

Luento 4. Timo Savola. 21. huhtikuuta 2006

Harjoitus 2 (viikko 45)

Zeon PDF Driver Trial

Transkriptio:

PERL TIE-20306 Principles of Programming Languages Ryhmä 4: Joonas Lång & Jasmin Laitamäki

1. Johdanto Perl on ohjelmointikielten perhe, johon kuuluu Perl 5 ja Perl 6. Kielet ovat kuitenkin erilliset ohjelmointikielet omine kehitysryhmineen. Perl 6 on kehitetty Perl 5 jälkeen, mutta sillä ei ole ollut merkittävää vaikutusta Perl 5:n kehitykseen (1). Tästä lähtien Perl tarkoittaa Perl 5:sta. Perl on tulkattava ohjelmointikieli, jonka on kehittänyt Larry Wall (2). Alun perin Perl kehitettiin erityisesti tekstin manipulointia varten. Se optimoitiin skannaamaan mielivaltaisia tekstitiedostoja, keräämään informaatiota niistä sekä tulostamaan raportteja tämän tiedon pohjalta. Perlistä tuli nopeasti hyvä kieli järjestelmien hallintaan. Vuosien mittaan Perl on kielenä kasvanut hyvin monikäyttöiseksi. Kieltä käytetään nykyään niin yksirivisten, kuin täysimittaistenkin ohjelmien kehittämiseen. (3) Perl on ohjelmointikielenä enemmän käytännöllinen ja tehokas, kuin kaunis (4). Perlin tärkeimpiä ominaisuuksia ovat sen helppokäyttöisyys, ja tuki sekä proseduraaliseen, funktionaaliseen että olio-suuntautuneeseen ohjelmointiin. Lisäksi sillä on vahva sisäänrakennettu tuki tekstin käsittelyyn. (3) 2. Historia Vuonna 1987 Larry Wall alkoi kehittää Perl-ohjelmointikieltä, ja jo saman vuoden joulukuussa julkaistiin kielen ensimmäinen versio 1.0. Kielestä julkaistiin muutaman seuraavan vuoden aikana myös versiot 2 ja 3. Perlin suosio kasvoi nopeasti tämän muutaman vuoden aikana. Aluksi Perlin ainoa dokumentaatio oli yksi manuaalisivu. Vuonna 1991 julkaistiin kuitenkin kirja nimeltä Programming Perl. Samalla versionumero kasvoi neloseen. Vuonna 1994 julkaistu Perl 5 sisälsi paljon uusia ominaisuuksia, mm. lähes täysin uudelleen kirjoitettu tulkki, viittaukset, oliot ja moduulit. Perl 6:n kehitys alkoi vuonna 2000. Suunnittelussa lähdettiin Perl 5:sta liikkeelle, mutta käytännössä koko kieli ja tulkki kirjoitettiin uudelleen. (2) 3. Ominaisuudet 3.1. Muuttujien tyypit ja niiden näkyvyys Perl sisältää kolme erilaista sisäänrakennettua tietotyyppiä: skalaarit(scalars), taulukot(arrays) ja hajautustaulut(hashes). Muuttujan nimen edessä oleva merkki kuvaa muuttujan sisältämää tietotyyppiä. Jos ohjelman alussa on rivi use strict;, täytyy ohjelmoijan kirjoittaa muuttujan nimen eteen sana my. Jos ohjelman alussa ei ole kyseistä riviä, eikä ohjelmoija käytä sanaa my muuttujan nimen edessä, tulee muuttujasta globaalimuuttuja. skalaari Skalaari esittää yksittäistä arvoa, joka voi olla tekstiä, kokonaisluku tai liukuluku. Muuttujan nimen eteen kirjoitetaan tällöin $-merkki. Myös alkioiden, jotka saadaan taulukosta tai hajautustaulusta,

eteen kirjoitetaan $-merkki. Ohjelmoijan ei tarvitse itse kertoa minkä tyylistä dataa skalaari-muuttuja sisältää. Esimerkki skalaari-muuttujista: my $animal = camel ; my $answer = 42; taulukko Taulukko sisältää listan arvoja, skalaareja. Perl-kielessä taulukon indeksointi alkaa nollasta. Taulukkomuuttujaa luodessa muuttujan nimen eteen kirjoitetaan @-merkki. Ohjelmoijan ei tarvitse tarkemmin kertoa mitä dataa taulukko sisältää. Esimerkki taulukko-muuttujista: my @animals = ( camel, dog, cat ); my @numbers = (23, 42, 69); my @mixed = ( camel, 42, 1.23); hajautustaulu Hajautustaulu sisältää joukon avain-arvo -pareja. Hajautustaulu-muuttujan nimen eteen kirjoitetaan %- merkki. (4) Esimerkki hajautustaulu-muuttujasta: my %fruit_color = ( apple, red, banana, yellow ); tai vaihtoehtoisesti my %fruit_color = ( apple => red, banana => yellow, ); Alustamattoman muuttujan numeerinen arvo on 0 ja merkkijono. Totuusarvoille ei ole olemassa omaa muuttujatyyppiä ja ehdoissa epätotuus päätellään sen mukaan, onko muuttuja alustamaton, 0, 0, tai tyhjä taulukko. Muut arvot luetaan todeksi. 3.2. Tyypitys ja muistin hallinta Perlissä on dynaaminen tyypitys. Kieli hoitaa automaattisesti datan tyypityksen sekä muistin hallinnan. Tulkki tietää objektin tarvitseman muistin määrän sekä sen tyypin, näin se varaa ja vapauttaa muistia tarvittaessa. Tyyppimuunnokset, jotka ovat laillisia tehdään suorituksen aikana automaattisesti, kun taas laittomat aiheuttavat käännösvirheen. Perlissä ei voi aiheuttaa muistivuotoa, sekoittaa sisäisen datan esitystä tai kaataa tulkkia. (2)

3.3. Säännölliset lausekkeet Muuttujien tarkkailuun ja tiettyjen arvojen etsimiseen niistä, Perl tarjoaa monimuotoisia ehtoja, joita yhdistelemällä on mahdollista toteuttaa monimutkaisempiakin hakuja. Näitä kutsutaan säännöllisiksi lausekkeiksi (regular expressions tai regexes ). Perinteisesti tämä voidaan toteuttaa vertailemalla muuttujaa =~ -merkillä ja kirjoittamalla sen oikealle puolelle kahden /-merkin väliin tarkkailuehdot. Esimerkiksi kirjoittamalla sana Essee ehdoksi, kääntyy tämä todeksi, jos tarkkailtava muuttuja pitää sisällään tämän tarkkailtavan sanan. Näitä ilmauksia voi yhdistää ehto- tai silmukkalauseisiin määrittämään suoritetaanko lause. "Tekstiä jossa on sana Essee mukana" =~ /Essee/; #Tosi Kauttaviivojen sisään voi lisätä monia eri merkkejä tarkentamaan ehtoa. Esimerkiksi kirjoittamalla \d kauttaviivojen väliin toteuttaa tosi arvon, jos vertailtava kohde on yksi numero arvo väliltä 0-9. "2016" =~ /\d\d\d\d/; #Tosi Jos etsitään tiettyä sanaa tekstin alusta, laitetaan ^-merkki ensimmäisen kauttaviivan jälkeen. "Tekstiä jossa on sana Essee mukana" =~ /^jossa/; #Epätosi Jos taas sanaa haetaan tekstin lopusta, käytetään $-merkkiä ennen viimeistä kauttaviivaa. "Tekstiä jossa on sana Essee mukana" =~ /mukana$/; #Tosi Ehtoja yhdistämällä voidaan toteuttaa monimutkaisempia lauseita esimerkiksi: "numero 556" =~ /[a-z]+\s+\d*/; #Tosi Lause kääntyy todeksi, jos tarkkailtava muuttuja koostuu pienellä kirjoitetusta sanasta, sanan jälkeen on vähintään yksi välilyönti, ja sitten mikä tahansa määrä numeroita. (7) 3.4. Muita ominaisuuksia Perl ohjelmien käskyt lopetetaan puolipilkkuun ja niiden sisältöä on mahdollista levittää monelle riville kuten C++:ssa. Poikkeuksena on kuitenkin tekstimuuttujat, joihin tallentuu myös rivinvaihto. Perl tarjoaa myös vapautta syntaksissaan antamalla ohjelmoijalle mahdollisuuden olla laiska ja jättää esimerkiksi sulkuja pois funktiokutsuista. Koodin kommentointi onnistuu #-merkillä. Virheiden käsittelyä varten Perl tarjoaa kätevän "or die"-käskyn, joka lisätään tarkkailtavan komennon jälkeen virhe tekstin kera. Jos tarkkailtava operaatio epäonnistuu, virhe teksti tulostetaan. Print "Tulostus onnistui" or die "Tulostus epäonnistui"; Ehto- ja silmukkalauseita on mahdollista toteuttaa kuten C++:ssa. if($arvo!= 0){ } Print "Ehto totta"; Perl tarjoaa myös mahdollisuuden kirjoittaa lauseita toisinpäin. Toteutettava käsky esitetään ensin, ja itse tarkasteltava ehto vasta sen jälkeen. (4) Print "Ehto totta" if $arvo!= 0; #molemmat toimivat

4. Suosio Perl on ollut myös suosittu web-ohjelmoijien työkalu 1990-luvun lopulta alkaen, ja siihen onkin kehitetty tätä tukevia kirjastoja (2). Kielen hyvät prosessi-, tiedosto- ja tekstin manipulointi ominaisuudet tekevät siitä suositun tehtävissä, joihin kuuluu esimerkiksi nopeaa prototyypitystä, järjestelmien hallintaa, ohjelmistotyökaluja, tietokantojen käyttöä, graafista ohjelmointia, verkkotyöskentelyä tai web-ohjelmointia (5). 5. Heikkoudet Koska ohjelmointitapoja on kielessä useita, ei kieli pakota ohjelmoijaa siistiin koodiin. Perl tarjoaa monia eri tapoja toteuttaa asioita ja tämän seurauksena toisen ohjelmoijan luomaa koodia voi olla vaikea tulkita, ja metsästää mahdollisia virheitä. (2) Lähdeluettelo 1. About Perl. [Online] https://www.perl.org/about.html. 2. Perl. [Online] https://fi.wikipedia.org/wiki/perl. 3. Wall, Larry. Perl Programming Documentation. [Online] http://perldoc.perl.org/perl.html. 4. Robert, Kirrily. Perl Programming Documentation. [Online] http://perldoc.perl.org/perlintro.html. 5. Christiansen, Tom and Torkington, Nathan. Perl Programming Documentation. [Online] 2010. http://perldoc.perl.org/perlfaq1.html. 6. Perl. [Online] https://en.wikipedia.org/wiki/perl. 7. Kvale, Mark. Perl Programming Documentation. [Online] http://perldoc.perl.org/perlrequick.html