Forth (ohjelmointikieli)

Forth on tietokoneiden ohjelmointikieli ja interaktiivinen ohjelmointiympäristö, jonka kehitti alun perin Charles H. Moore 1970-luvun alkupuolella.

Forth on rakenteeltaan hyvin yksinkertainen pinokeskeinen kieli, joka on ollut suosittu etenkin laitteistoresursseiltaan vaatimattomissa ja tehokasta ohjelmointia vaativissa sulautetuissa järjestelmissä. On valmistettu jopa mikroprosessoreita, jotka suorittavat Forth-tavukoodia konekielenään.

Historia 
Moore kehitti kielen vastajulkaistulla IBM 1130-minitietokoneella. Moore käytti Fortrania ensimmäisen Forthin toteutukseen.

Kieli on vaikuttanut RPL-kieleen, jonka Hewlett-Packard kehitti laskimiinsa 1980-luvulla.

Esimerkkejä

Yhteenlasku 

 5 7 + .

Sanat 5 ja 7 lisäävät asianomaiset luvut datapinoon. Sana + laskee yhteen datapinon kaksi päällimmäistä lukua ja jättää jäljelle summan eli tässä tapauksessa luvun 12. Sana . tulostaa pinon päällimmäisen luvun.

Pino on hyvin keskeisessä osassa Forth-ohjelmoinnissa, ja jopa ohjausrakenteet on toteutettu pinokeskeisesti. Tästä syystä Forth-ohjelmakoodin hahmottaminen vaatii jonkin verran harjoittelua.

Aliohjelma 

 : FLOOR5 ( n -- n' )   DUP 5 < IF DROP 5 ELSE 1 - THEN ;

Tämä ohjelmakoodi määrittelee uuden sanan eli aliohjelman nimeltä FLOOR5, joka ottaa syötteenä yhden alkion (n) pinon päältä ja jättää tulosteenaan pinon päälle yhden alkion (n').

Aliohjelma itse vertaa syötteenään saamaansa lukua lukuun 5. Jos luku on pienempi kuin 5, niin palautetaan 5, muutoin vähennetään siitä 1 ja palautetaan erotus. Ohjelman suoritus etenee seuraavasti:

DUP-sana tuplaa pinon päällimmäisen alkion. Jos pinon huipulla on esimerkiksi 8, on DUP-sanan suorituksen jälkeen huipulla kaksi 8:aa (8 8).

<-sana vertailee pinon kahta päällimmäistä lukua (esimerkissä 8 ja 5) toisiinsa ja jättää niiden tilalle totuusarvon, joka ilmaisee, onko ensimmäinen luku pienempi kuin toinen.

IF-sana jatkaa suoritusta pinon päällimmäisenä olevan totuusarvon mukaan. Jos arvo on tosi, suoritetaan koodi IF- ja ELSE-sanojen välistä, muussa tapauksessa ELSE- ja THEN-sanojen välistä.

DROP-sana poistaa pinon päällimmäisen alkion. Tässä tapauksessa sitä tarvitaan, jotta päällimmäisen alkion voisi korvata luvulla 5.

Sanat 1 - vähentävät pinon päällimmäisenä olevasta luvusta (eli syötteestä) luvun 1.

Sana ; lopettaa sanan määrittelyn, joka alkoi sanoilla FLOOR5 (n -- n' ).

Hello World 

Kuuluisa Hello World -ohjelma toteutettaisiin Forthilla seuraavasti:

  : HELLO ( -- )   ." Hello World!" ; HELLO

Lähteet

Aiheesta muualla 
 Forth Interest Group 
 The evolution of Forth  

Ohjelmointikielet