Kirjautuminen

Haku

Tehtävät

Keskustelu: Yleinen keskustelu: Kääntäjän tekemisen alkeet

Pekka Karjalainen [03.10.2006 13:42:35]

#

Abdulaziz Ghuloum on kirjoittanut mielenkiintoisen oppaan.

http://www.cs.indiana.edu/~aghuloum/

Se on ensimmäisen linkin takana oleva PDF. Käännän tähän sen esipuheen alun englannista suomeksi.

"Kääntäjiä pidetään maagisina esineinä, joita ohjelmointivelhot valmistavat suurella työllä, mutta joita tavallinen kuolevainen ei voi ymmärtää. Tämä julkaisu yrittää kumota tämän myytin. Me rakennamme yksinkertaisen kielen yksinkertaisen kääntäjään askel askeleelta. Kääntäjän ymmärtämä kieli alkaa minimaalisena ja kasvaa sitä myötä, kun meidän tietomme kääntäjien tekemisestä kasvaa. Lopullinen kieli on melkein Scheme."

"Vaikka kirjoitamme kääntäjän Scheme-kielellä, opas vaatii vain minimaalisen Schemen tuntemuksen. - - Kääntäjämme kohde on Intel-386-arkkitehtuuri. - - Kääntäjän tulostus on assembly-koodia gas'ille, GNU-assemblerille, joka on vapaasti saatavissa useimmille käyttöjärjestelmille."

Tämä pitää joskus lukea kunnolla läpi! Kuten voi arvata, se vaatii jonkin verran perustietoa myös assembly-tason toiminnasta, mutta hyvä C-taitokin kuulemma riittää.

Kääntäjät ovat vaikeamman puoleisia asioita, mutta eivät mitenkään mahdottomia ymmärtää. Tämän oppaan lähestymistapa vaikuttaa käytännölliseltä ja toimivalta. Suosittelen kaikille, joilla on jotenkuten perustiedot asioista hallussa. Siellä on viite sopivaan Scheme-oppaaseen, jos se kieli itse on outo.

Ensimmäinen kääntäjän versio yksinkertaisesti kääntää kokonaislukuja ne tulostaviksi ohjelmiksi. Siitä on hyvä lähteä :-)

Droppen [04.10.2006 01:59:38]

#

iha kiintosa juttu, mutta kuka ny haluis uutta ohjelmontikieltä tekee? mielummin parantaa c++ kieltä, standardit kunniaan! STL wtf!

FooBat [04.10.2006 02:35:35]

#

Näköjään myös aikoinaan scheme-kurssilla (aikoinaan TKK:n tietotekniikan opiskelijoiden ensimmäinen ohjelmointikurssi) ollut SICP-kirja on netissä ilmaiseksi saatavilla. Se käsittelee myös osittain tulkkien ja kääntäjien tekoa schemellä, mutta on kuitenkin yleinen ohjelmointia opettava opus ja vieläpä erittäin hyvä sellainen. Jos scheme ei ole tuttu voi aloittaa vaikka tästä:
http://mitpress.mit.edu/sicp/full-text/book/book.html

On ihan hyödyllistä opetella tekemään itse jonkinlainen tulkki tai kääntäjä. Yllättävän usein tulee tilanteita, joissa joutuu tekemään yksinkertaisen parserin tai pienen tulkin. Lisäksi, kun tietää mitä kaikkea kääntäjät osaavat ja eivät osaa, tulee itse kirjoitettua paljon parempia ja tarpeen vaatiessa paremmin optimoituja ohjelmia. Kääntäjien tekemisen opetteleminen opettaa siis hyvin myös ohjelmointia.

arcatan [04.10.2006 08:00:36]

#

Asiaan etäisesti liittyen, tässä on opas Scheme-tulkin koodaamiseen Haskellilla. Ihan mielenkiintoiselta vaikuttaa, en tosin ole vielä kerennyt lukemaan sitä kokonaan läpi. Luultavasti hyödyllisempi ennemmin Haskellista kuin Schemestä kiinnostuneille.

http://halogen.note.amherst.edu/~jdtang/scheme_in_48/tutorial/overview.html

Pekka Karjalainen [04.10.2006 12:21:44]

#

Kiitoksia lisäyksistä. Ovat asiaa. Voisin vielä mainita vanhan kirjan, jossa on teoreettisempi lähestymistapa. Se on kuitenkin aika hyvä.

http://p-cos.blogspot.com/2006/09/freely-downloadable-books-by-niklaus.html

Tämä on linkki blogiin, jossa on linkkejä Niklaus Wirthin (Pascal, Oberon, etc.) kirjoihin. Taitavat olla PDF-muodossa kaikki. Hänen kirjansa kääntäjistä on myös jotain, jonka haluan lukea tarkemmin joskus. EN halua tehdä omaa kieltä, mutta kuten FooBat jo sanoi, ymmärrys on tärkeää.

Ja niin, eivät kaikki aina voi tai halua käyttää C++:aa, vaikka se erinomainen kieli olisikin. :-)

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta