lauantai 30. maaliskuuta 2013

How to start writing compilers without a Ph.D

Tässä seminaariesityksessä revival/fnuque esittelee, kuinka onnistuu ohjelmointikielen kääntäjän laatiminen ilman tohtorin hattua.

Allekirjoittaneelta jäi tietotekniikan opinnoissa valinnainen kääntäjätekniikka harmillisesti väliin ja luvassa pitäisi olla tunnissa C-kääntäjän tapaisen härvelin tekeminen alusta aloittaen. Teoria, optimoinnit ja kummallisuudethan tässä hauskan ja kiireen nimissä toki sivuutetaan. Tällä on mahdollisuudet olla viihdyttävä katsaus.

Tässäpä kehnosti valotettu kuva kääntäjäesityksestä.
Edesmenneen lehtori Ernvallin kursseja suorittaneena täytyy todeta, että asian voi ilmaista loisamminkin kuin tuolla Agoran omalla Stroustrupilla oli aikoinaan tapana. Lähestymistapa on tässäkin seminaarissa verrattain teoreettinen, varsinaiseen naapurinpoikameininkiin ei mennä. Lämmittävää on kuitenkin, että seminaarin GitHub-reposta löytyy C-toteutus esimerkissä käytetystä virtuaalikoneesta. Ei siis hullumpaa.

Esityksessä ajahetkellä 13 minuuttia eli alkuesittelyn ja kielen parsimisen jälkeen seurataankin jo stack pointerin liikettä. Eihän tätä tosiaan lennosta toteutettukaan vaan esitellään tarvittava koneisto. Kieleen saadaan myös operaattoripresedenssi, mikä puuttuu esimerkiksi MUMPS-kielestä. Tämä tarkoituksenmukainen Lua-ympäristö antaa kielen implementointiin vähän paremmat edellytykset kuin 60-luvun tykalut, joilla MUMPS-synnytettiin.

Eikä MUMPSilla kai enää tänä päivänä mitään isompaa tehtäisi. Korkeintaan joku Apotti-järjestelmä pääkaupunkiseudun terveydenhuoltoon.

Käännöspuun tranformaatioita pyöritellään aikamoista vauhtia, ehkä jonkinlaisesta tietojenkäsittelytieteen tutkinnosta voisi kuitenkin olla hyötyä, vaikka otsikossa vakuutetaankin, että ainakaan jatkotutkinto ei ole tarpeen. Mainittakoon, että seurueen käännöspuilla parhaiten kommunikoiva jäsen ei nyt ole seuraamassa.

Esitys päättyy while-looppien ja ehtolauseiden toteuttamiseen Lualla toteutettuun kääntäjään. Tuon Lua-värkin jatkokehittämisestä/särkemisestä saa yhden asian lisää asioihin joita voisi tänään koittaa.

https://github.com/revivalizer/compilertalk/

Ei kommentteja:

Lähetä kommentti