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ä :-)
iha kiintosa juttu, mutta kuka ny haluis uutta ohjelmontikieltä tekee? mielummin parantaa c++ kieltä, standardit kunniaan! STL wtf!
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.
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/
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. :-)
Aihe on jo aika vanha, joten et voi enää vastata siihen.