TIEA241 Automaatit ja kieliopit, kevät 2011 (IV) Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 14. maaliskuuta 2011
Sisällys
Sisällys
Kurssin käytännöt Kurssin sivuilla http://users.jyu.fi/~antkaij/opetus/auki/2011/
Kirjallisuutta Luentojen pohjana: Michael Sipser: Introduction to the Theory of Computation. Second Edition, International Edition. Thompson 2006. John E. Hopcroft, Rajeev Motwani, Jeffrey D. Ullman: Introduction to Automata Theory, Languages, and Computation. Third Edition, Pearson International Edition. Addison Wesley, 2007. Täydentävää lukemista Alfred V. Aho, Monica S. Lam, Ravi Sethi, Jeffrey D. Ullman: Compilers Principles, Techniques, & Tools. Second Edition. Addison Wesley, 2007. Pekka Orponen: Laskennan teoria. Luentomoniste. http://users.ics.tkk.fi/orponen/ lectures/lte.pdf
Huomio opetustauosta Olen Englannissa 9. 14.4.2011, jolloin luentoja ja demoja ei pidetä. Rehtorin määräämä pääsiäistauko opetuksessa on 18. 25.4., jolloin luentoja ja demoja ei pidetä. Tarkoitus on, että annan tuplademot torstaina 7.4. demotilaisuutta 27.4. varten.
Tapahtui Facebookissa viikonloppuna Kun olin kertonut aloittavani tämän kurssin maanantaina... Vesa Kaihlavirta Yksi tärkeimmistä kursseista. Pistä ne punnertamaan :P Antti-Juhani Kaijanaho Vesa, saako tuon kommentin näyttää opiskelijoille? Ja jos saa, niin kerkeäisitkö vielä vähän avaamaan miksi pidät tuota yhtenä tärkeimmistä kursseista. Vesa Kaihlavirta No jos luulet, että siitä on jotain hyötyä, niin siitä vain :) Vesa Kaihlavirta Se antaa hyvää ja Ihan Oikeasti sovellettavaa pohjaa ohjelmistosuunnitelussa tapahtuvalle formalisoinnille. (Meinasin tähän lisätä, että "Ei siis mitään oliosuunnittelun, UML:n ja muun sellaisen sonnan kaltaista vaan jotain Oikeaa." mutta ehkä se meni liian pitkälle) Lisäksi regexpien osaaminen on käytännöllisesti katsoen taikuutta tietämättömien näkökulmasta.
Sisällys
Kurssin alkupään asiat tekstihakujen toteuttaminen verkkoprotokollien suunnittelu suomen kielen morfologinen analyysi (esim. oikolukua varten) tietokoneohjelmien leksikaalinen analyysi ohjainlaitteiden suunnittelu ohjelmien oikeellisuustarkastelu
Kurssin keskivaiheen asiat suomen kielen syntaktinen analyysi tietokoneohjelmien syntaktinen analyysi kääntäjät!
Kurssin loppupään asiat tietotekniikan rajojen tunnistaminen
Luentotehtävä Pohdi vierustoverisi kanssa Miten selvität, reagoiko annettu ohjelma johonkin annettuun ärsykkeeseen äärellisessä ajassa? Miten ohjeistaisit jonkun toisen tekemään tämän?
Sisällys
?! Kurssin aihepiirin teoria tuli ensin, sovellukset vasta sitten.
Matematiikan kriisi 1874 Cantor todisti, että äärettömyydet eivät ole samanlaisia ja aloitti näin joukko-opin tutkimusohjelman 1897 Burali-Forti esitti joukko-oppiparadoksinsa 1899 Cantor esitti joukko-oppiparadoksinsa 1901 Russell esitti joukko-oppiparadoksinsa
Matematiikka alkaa toipua 1908 Zermelo esitti joukko-oppiaksioomansa 1910 3 Russell ja Whitehead julkaisevat Principia Mathematican, joka oli ensimmäinen yritys rakentaa koko matematiikka pohjalta alkaen 1922 Fraenkel ja Skolem (toisistaan riippumatta) laajentavat Zermelon aksiomatisointia laajennus tunnetaan nimellä Zermelon Fraenkelin (ZF) joukko-oppi
Matematiikka kriisiytyy taas 1900 Hilbert esitti 23 ongelmaansa, joista toinen oli matematiikan ristiriidattomuuden osoittaminen 1931 Kurt Gödel julkaisee kuuluisan epätäydellisyyslauseensa Principia Mathematica (ja muut vastaavat) ei kykene todistamaan omaa ristiriidattomuuttaan tulkitaan usein Hilbertin toisen ongelman (epä)ratkaisuksi ks. MATS150 Logiikan jatkokurssi
Uudesta kriisistä tietojenkäsittelyteoria 1928 Hilbert esitti ongelman, joka tunnetaan nimellä Entscheidungsproblem (ratkeavuusongelma) Onko olemassa algoritmi, joka kykenee sanomaan mistä tahansa hyvin määritellystä matemaattisesta väitteestä, onko se tosi vai ei? 1936 Alonzo Church käyttää luomaansa λ-laskentoa ratkaisemaan Hilbertin ratkeavuusongelman: algoritmia ei ole λ-laskennolle muodostui myöhemmin merkittävä rooli ohjelmointikielten teoriassa (ks. TIES542 Ohjelmointikielten periaatteet) 1936 Alan Turing (Churchista riippumatta) käyttää luomaansa Turingin konetta ratkaisemaan Hilbertin ratkeavuusongelman: algoritmia ei ole teemme olennaisesti saman kurssin loppupuolella
Kehitys kehittyy 1951 Stephen Cole Kleene [kleini:] tutkii neuroverkkoja ja määrittelee äärellisen automaatin ja säännöllisen lausekkeen käsitteet sekä todistaa niiden perusominaisuudet 1956 Noam Chomsky tutkii englannin kielen kieliopin esitysmuotoja ja määrittelee kontekstittomien kielioppien käsitteen 1959 John Backus ja Peter Naur käyttävät kontekstittomia kielioppeja ohjelmointikielten (Fortran, Algol) syntaksin määrittelyyn 1968 Ken Thompson käyttää säännöllisiä lausekkeita tekstieditorin hakutoiminnossa 1 1 Dennis Ritchie: An incomplete history of the QED Text Editor, http://cm.bell-labs.com/cm/cs/who/dmr/qed.html
Historiallista? Kurssin keskeiset teoreettiset ideat ovat siis peräisin vuosilta 1936 1956. Tutkimusalana automaattien ja kielioppien teoria oli vilkas vielä 1980-luvulla mutta kurssin asiat ovat stabiloituneet kauan sitten. Silti tämä kaikki on edelleen hyvin relevanttia 2010-luvun ohjelmistoammattilaisille!... kuten tulemme huomaamaan.
Sisällys
Yksinkertaisia automaatteja on/off-kytkin kioskiautomaatti ydinvoimalan hätäpysäytysjärjestelmä
Yksinkertaisia kielenkuvauksia throws? catch E vakio E + E E E E E E/E (E)
Ratkeamattomia ongelmia Seuraaville tehtäville (muiden muassa) ei ole algoritmia: Täsmällisesti esitetyn matemaattisen väittämän tunnistaminen todeksi tai epätodeksi. (Hilbertin Entschedungsproblem) Tietokoneohjelman ja sille annetun syötteen tunnistaminen sellaiseksi, että ohjelma pysähtyy kyseisellä syötteellä taikka sellaiseksi, että se jää ikuiseen silmukkaan kyseisellä syötteellä. (Pysähtymisongelma)