aloitus meta aloitus opiskelusta regexpit motivointia...
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