aloitus meta aloitus opiskelusta regexpit motivointia...

27
Aloitus Meta Opiskelusta Regexpit Motivointia Synopsis Aloitus TIEA241 Automaatit ja kieliopit, syksy 2016 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 9. lokakuuta 2016

Upload: trandang

Post on 25-Aug-2018

219 views

Category:

Documents


0 download

TRANSCRIPT

Aloitus

Meta

Opiskelusta

Regexpit

Motivointia

Synopsis

AloitusTIEA241 Automaatit ja kieliopit, syksy 2016

Antti-Juhani Kaijanaho

TIETOTEKNIIKAN LAITOS

9. lokakuuta 2016

Aloitus

Meta

Opiskelusta

Regexpit

Motivointia

Synopsis

Sisällys

Meta

Opiskelusta

Regexpit

Motivointia

Synopsis

Aloitus

Meta

Opiskelusta

Regexpit

Motivointia

Synopsis

Opettajat

Vastuuopettaja (luennot, ohjaukset, tehtäväpalaute)

I Antti-Juhani Kaijanaho, [email protected] yliopistonopettaja, filosofian tohtori

I väitöskirja Evidence-based programming languagedesign: a philosophical and methodologicalexploration (2015)

I Debian-kehittäjä 1999–2014I teen samalla yliopistopedagogisia opintoja, jotka

saattavat osin vaikuttaa kurssin kulkuun

Tuntiopettaja (ohjaukset, tehtäväpalaute)

I Pyry Kotilainen, [email protected]

Aloitus

Meta

Opiskelusta

Regexpit

Motivointia

Synopsis

Kirjallisuutta

I Luentojen pohjana:I Michael Sipser: Introduction to the Theory of

Computation. Second Edition, International Edition.Thompson 2006.

I John E. Hopcroft, Rajeev Motwani, Jeffrey D. Ullman:Introduction to Automata Theory, Languages, andComputation. Third Edition, Pearson InternationalEdition. Addison–Wesley, 2007.

I Alfred V. Aho, Monica S. Lam, Ravi Sethi, Jeffrey D.Ullman: Compilers – Principles, Techniques, & Tools.Second Edition. Addison–Wesley, 2007.

I Täydentävää lukemistaI Pekka Orponen: Laskennan teoria. Luentomoniste.http://users.ics.tkk.fi/orponen/lectures/lte.pdf

I Scott Aaronson: Quantum Computing SinceDemocritus. Cambridge University Press, 2013.Luvut 1–4.

Aloitus

Meta

Opiskelusta

Regexpit

Motivointia

Synopsis

Neuvoja opintoihin

I tee joka päivä ainakin vähänI uskalla mennä epämukavuusalueelleI “en osaa” ei ole syy keskeyttää; se on syy jatkaa

opiskelemistaI pyydä apua tarvittaessa,

(mm.) siitä meille maksetaan

Aloitus

Meta

Opiskelusta

Regexpit

Motivointia

Synopsis

Esitietovaatimuksista

Odotan, että kykenet omatoimisestiI oppimaan uusien ohjelmien ja teknisten työkalujen

käytönI laatimaan yksinkertaisia toimivia tietokoneohjelmiaI käyttämään ohjelmointikielten peruskirjastoissa

tarjottavia perustietorakenteita (merkkijonot,taulukot, joukot, mapit)

Kurssilla opiskelua helpottaa, jos kykenetI lukemaan logiikan ja joukko-opin kaavojaI laatimaan yksinkertaisia matemaattisia todistuksia

jollakin matematiikan alalla

Aloitus

Meta

Opiskelusta

Regexpit

Motivointia

Synopsis

Cognitive apprenticeshipsuom. (virheellisesti) kisällioppiminen

I kurssilla osin käytössäI ensimmäistä kertaa → antakaa palautetta!

I opetusmetodit

metodi englanniksi tällä kurssilla

mallinnus modeling luennoilla (osan aikaa)valmennus coaching ohjaukset ja Slackapupyörät scaffolding harjoitustehtävien rakenne (osin),

ohjaukset ja Slackitsenäistäminen fading harjoitustehtävien rakenne (osin),

harjoitustyö, välikokeet, tentit

Aloitus

Meta

Opiskelusta

Regexpit

Motivointia

Synopsis

Kurssin käytännöt

Kurssin sivuillahttp://users.jyu.fi/~antkaij/opetus/auki/2016/

Aloitus

Meta

Opiskelusta

Regexpit

Motivointia

Synopsis

Tehtävien tulkinnastaHarjoitustehtävät, tenttikysymykset ym.

I Joskus tehtävät saattavat olla moniselitteisiä.I Seuraavanlaiset tulkinnat eivät todennäköisesti ole

oikeita:I tulkinta tekee tehtävästä liian helponI tulkinnan johdosta tehtävän tekemisessä ei tarvita

opiskeltavana tai tentittävänä olevia tietoja tai taitojaI Jos joudut valitsemaan useasta tulkinnasta etkä ole

varma, mikä niistä on oikein:I Jos mahdollista, kysy opettajalta.

I välikokeessa tai tentissä ei sallittuaI Valitse jokin tulkinta ja selosta se vastauksessasi.

Aloitus

Meta

Opiskelusta

Regexpit

Motivointia

Synopsis

Regexpit

I engl. regular expressionI käytössä myös lyhenteet regex ja REI suomeksi periaatteessa säännöllinen lauseke

I suomennosta ei tavallisesti käytetäI tällä kurssilla tarkoittaa erästä tiettyä regexpien

varianttia, johon palataan myöhemmin

I tapa kuvata merkkijonon tunnistus- tai hakutehtäviäI toteutus löytyy useimmista ohjelmointikielistä tai

niiden vakiokirjastoistaI tarkka syntaksi ja ilmaisuvoima vaihtelee

Aloitus

Meta

Opiskelusta

Regexpit

Motivointia

Synopsis

Regexpien keskeiset käytännön variantit

I basic POSIX regular expressions (POSIX BRE)I mm. grep, POSIX-kirjastotI suosittelen välttämään

I extened POSIX regular expressions (POSIX ERE)I mm. egrep, POSIX-kirjastot

I Perl 5 regular expressions (perlre)I useimmat muut toteutukset, mm. JavaScript, JavaI pieniä eroja toki toteutusten välillä

Aloitus

Meta

Opiskelusta

Regexpit

Motivointia

Synopsis

Regexpien perusominaisuuksia2

I Jokainen regexp on merkkijono, joka luokitteleekaikki merkkijonot kahteen luokkaan:

I merkkijonot, joka täsmää regexpiin (engl. match)1

I kaikki muut merkkijonotI Regexpiä ja testattavaa merkkijonoa verrataan

vasemmalta oikealle.I Pääsääntönä jokainen regexpin merkki täsmää

itseensä: esimerkiksi regexp kissa täsmää vain jaainoastaan merkkijonoon kissa.

I Kaikki poikkeukset johtuvat regexpissä olevastaerikoismerkistä. Muiden muasssa:

I Piste . täsmää mihin tahansa yhteen merkkiin:k.ssa täsmää mm. merkkijonoihin kassa, kissa jak9ssa.

I Kenoviivan \ ja sitä seuraavan erikoismerkinyhdistelmä täsmää kyseiseen erikoismerkkiin: esim.k\.ssa täsmää vain ja ainoastaan merkkijonoonk.ssa.

1Usein sama asia sanotaan niin, että regexp täsmää merkkijonoon.2Yhteisiä kaikille varianteille.

Aloitus

Meta

Opiskelusta

Regexpit

Motivointia

Synopsis

Merkkiluokat I3

I Hakasululla [ alkaa ja hakasululla ] päättyy ns.merkkiluokka (engl. bracketed character classs).

I Molemmat hakasulut ovat erikoismerkkejä.

I Pääsääntö: merkkiluokka täsmää mihin tahansa sensisällä lueteltuun merkkiin. Esimerkiksi k[ai]ssatäsmää vain ja ainoastaan merkkijonoihin kassa jakissa

I Useimmat erikoismerkit voidaan luetellamerkkiluokassa sellaisenaan

3Siltä osin kuin yhteistä kaikille varianteille.

Aloitus

Meta

Opiskelusta

Regexpit

Motivointia

Synopsis

Merkkiluokat II4

I Poikkeus: jos merkkiluokan sisältö alkaasirkumfleksillä ^, luokka täsmää mihin tahansamerkkiin, joka ei ole lueteltu merkkiluokan sisälläsirkumfleksin jälkeen: esimerkiksi k[^ai]ssatäsmää mm. merkkijonoihin kessa ja k8ssa.

I Poikkeus: kahden merkin välissä oleva yhdysviiva -tarkoittaa, että merkkiluokka sisältää kyseiset merkitsekä kaikki kyseisten merkkien välissä (yleensäUnicode-järjestyksessä) olevat merkit: esimerkiksip[0-9] täsmää vain ja ainoastaan merkkijonoihinp0, p1, p2, p3, p4, p5, p6, p7, p8 ja p9.

4Siltä osin kuin yhteistä kaikille varianteille.

Aloitus

Meta

Opiskelusta

Regexpit

Motivointia

Synopsis

Valinta ja toisto5

I Pystyviiva | tarkoittaa vaihtoehtoisuutta: esim.kissa|koira|lintu täsmää vain ja ainoastaanmerkkijonoihin kissa, koira ja lintu.

I Merkin toistomäärät voidaan ilmaista kirjoittamallamerkin perään:

I aaltosulkeisiin tietty toistomäärä: a{3} on sama kuinaaa

I aaltosulkeisiin pilkulla erotetut ala- ja yläraja:a{2,4} on sama kuin aa|aaa|aaaa

I toisen tai molemmat rajat voi jättää tyhjäksi (alarajanoletus on 0, ylärajan oletus on ääretön)

I plussa + tarkoittaa samaa kuin {1,}I tähti * tarkoittaa samaa kuin {0,}I kysymysmerkki ? tarkoittaa samaa kuin {0,1}

5Yhteistä POSIX ERE:ille ja Perl-regexpeille. POSIX BRE:ssä on erisyntaksi.

Aloitus

Meta

Opiskelusta

Regexpit

Motivointia

Synopsis

Ryhmittely6

I Pystyviiva vaikuttaa sekä vasemmalle että oikealleniin pitkälle kuin mahdollista.

I Kysymysmerkki, tähti ja plussa vaikuttavatvasemmalle niin lyhyesti kuin mahdollista.

I Kaarisulkeita ( ja ) käytetään ryhmittelyyn: esim.k(issa|oira)|lintu tarkoittaa samaa kuinkissa|koira|lintu.

6Yhteistä POSIX ERE:ille ja Perl-regexpeille. POSIX BRE:ssä on erisyntaksi.

Aloitus

Meta

Opiskelusta

Regexpit

Motivointia

Synopsis

Takaisinviittaukset7

I Kaarisuljeryhmiin voi viitata myöhemminregexpissä.

I Ryhmät numeroidaan vasemmalta oikealle avaaviensulkeiden järjestyksessä.

I Kenoviiva, jonka perässä on muistipaikan numero,on takaisinviittaus.

I Regexp, jossa on takaisinviittaus, täsmää vain josviitatun kaarisuljeryhmän sisältämä aliregexptäsmäsi samansisältöiseen alimerkkijonoon kuintakaisinviittaus.

I Esimerkiksi (a+)b\1 täsmää merkkijonoihin aba,aabaa ja aaabaaa mutta ei esimerkiksimerkkijonoon abaa.

7Vain Perl-regexpit ja sitä matkivat regexp-variantit

Aloitus

Meta

Opiskelusta

Regexpit

Motivointia

Synopsis

Merkkijonon osan tunnistus8

I Monasti kiinnostaa, löytyykö merkkijonostaosamerkkijono, johon regexp täsmää.

I esim. grep ja egrep tulostavat kaikki rivit, joiltalöytyy regexpiin täsmäävä osamerkkijono.

I Jos regexp alkaa sirkumfleksillä ^, osamerkkijonoaetsitään vain merkkijonon (tai rivin) alusta.

I Jos regexp päättyy dollarimerkkiin $,osamerkkijonoa etsitään vain merkkijonon (tai rivin)lopusta.

I Haasteita tulee, jos halutaan tietää, mikäosamerkkijono täsmäsi. Sivuutetaan tämä tälläkurssilla.

8Yhteistä kaikille varianteille.

Aloitus

Meta

Opiskelusta

Regexpit

Motivointia

Synopsis

Tämän kurssin ongelma

I tärkeää asiaaI alan keskeistä teoriaaI runsaasti sovelluksia

I tosin yleensä piilotettu kirjastojen ja apuohjelmiensisään

I tilaisuus tutustua alan perinteiseentutkimusotteeseen

I olemme yliopistossaI tärkeys vaikea nähdä opiskelijan roolissa

I havaittu joka vuosi!I itsekin tajusin kurssin tärkeyden vasta

valmistumisen jälkeen

Aloitus

Meta

Opiskelusta

Regexpit

Motivointia

Synopsis

Yksi näkökulma

Kaksi kolmasosaa kurssin sisällöstä vastaa mm.seuraavaan kysymykseen:

Miten regexp-moottorin voisi toteuttaa?

Loput kurssista vastaa seuraavaan kysymykseen?

Mitä on klassinen tietojenkäsittelytiede?9

9Nykyään puhutaan yleisemmin tietojenkäsittelyteoriasta,engl. theoretical computer science

Aloitus

Meta

Opiskelusta

Regexpit

Motivointia

Synopsis

Kolme laskennan mallia

I kuvitteellisia (abstrakteja) koneita eli automaattejaI lukevat syötteenI vastaavat kyllä tai ei

I merkkijonotulostus ym. mahdollista muttasivuutetaan tällä kurssilla

I interaktiivisuus sivuutetaan tällä kurssilla

I erona käytettävissä oleva muisti

Aloitus

Meta

Opiskelusta

Regexpit

Motivointia

Synopsis

Automaatit10

I äärelliset automaatitI etukäteen rajattu muistin kapasiteetti

I pinoautomaatitI äärellinen muistiI lisäksi LIFO-periaatteella toimiva rajoittamaton

pinomuistiI Turingin koneet / RA-koneet

I äärellinen muistiI lisäksi rajoittamaton nauhamuisti / hajasaantimuisti

10Korjattu 9.10.2016 klo 8:40. Korjaus merkitty punaisella.

Aloitus

Meta

Opiskelusta

Regexpit

Motivointia

Synopsis

Äärelliset automaatit

I tehokas merkkijonohaku, josI haku kohdistetaan isoon valmistelemattomaan

aineistoonI hakuehto on monimutkaisempi kuin pelkkä sana tai

fraasi

I regexpit (takaisinviittauksia lukuunottamatta)käännettävissä äärellisiksi automaateiksi

I verkkoprotokollien mallinnukseenI Ks. esim. RFC 3501, sivu 15

I pelin NPC:iden toiminnan ohjelmointi11

I variantteja käytössä mm. suomen kielenoikeinkirjoituksen tarkistimissa

11Ks. esim. Alexander Nareyek: AI in Computer Games. Queue1 (10), 59–65, 2004.

Aloitus

Meta

Opiskelusta

Regexpit

Motivointia

Synopsis

Turingin koneet

I vanhin laskennan matemaattinen malli (1936)I käsin laskennan matemaattinen malliI laadittu ratkaisemaan ns. Entscheidungproblem,

ratkeavuusongelmaI Mitä menetelmää noudattamalla ihminen voi

ratkaista minkä tahansa matemaattisen ongelman?I Turing vastasi: haluttua menetelmää ei ole.

I Turingin teesi: mikä tahansa käsin laskettavalukuteoreettinen funktio voidaan laskea jollakinTuringin koneella

I ei matemaattisesti todistettavissaI Kaikki lukuteoreettiset funktiot, jotka voidaan laskea

tietokoneella, voidaan laskea Turingin koneella.I ei matemaattisesti todistettavissaI yleisesti hyväksytty tietotekniikan perusolettamus!

Aloitus

Meta

Opiskelusta

Regexpit

Motivointia

Synopsis

Kieliopit

I Noam Chomsky esitteli 1950-luvulla ns.lauserakennekieliopit

I kielioppi on joukko uudelleenkirjoitussääntöjä, jokatuottaa merkkijonoja

I säännöille esitetyt rajoitteet muodostavat kielioppienhierarkian (Chomskyn hierarkia):

I tyypin 0 kieliopit eli yleiset kieliopitI tyypin 1 kieliopit eli kontekstiset kieliopitI tyypin 2 kieliopit eli kontekstittomat kieliopitI tyypin 3 kieliopit eli säännölliset kieliopit

Aloitus

Meta

Opiskelusta

Regexpit

Motivointia

Synopsis

Kontekstittomat kieliopit

I Käytetään yleisesti ohjelmointikielten syntaksinkuvaamiseen

I BNF, EBNF, ratakiskot jne ovat tapoja kirjoittaakontekstiton kielioppi

Aloitus

Meta

Opiskelusta

Regexpit

Motivointia

Synopsis

Automaatit ja kieliopit

Voidaan osoittaa ekvivalenssit:

Kielioppityyppi Automaattityyppi

yleinen kielioppi (tyyppi 0) Turingin konekontekstiton kielioppi (tyyppi 2) pinoautomaattisäännollinen kielioppi (tyyppi 3) äärellinen automaatti