Forth
Wikipedia
Forth on tietokoneiden ohjelmointikieli ja interaktiivinen ohjelmointiympäristö, jonka kehitti alun perin Chuck 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.
[muokkaa] Esimerkkejä
[muokkaa] 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.
[muokkaa] 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 (aliohjelman syötteen) 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' ).
[muokkaa] Hello World
Kuuluisa Hello World -ohjelma toteutettaisiin Forthilla seuraavasti:
: HELLO ( -- ) ." Hello World!" ;
[muokkaa] Aiheesta muualla
- Forth Interest Group (englanniksi)
- JSForth - JavaScript-kielellä toteutettu selaimessa toimiva Forth-ohjelmointiympäristö. (englanniksi)