Forth (ohjelmointikieli)
Forth | |
---|---|
Tyypitys | tyypitön |
Julkaistu | 1970-luku |
Kehittäjä | Charles H. Moore |
Merkittävimmät toteutukset | gforth, 4th, RetroForth |
Vaikutteet | Lisp, APL |
Vaikuttanut | PostScript, RPL, Factor (ohjelmointikieli), 8th (ohjelmointikieli) |
Murteet | ColorForth |
Käyttöjärjestelmä | alustariippumaton |
Verkkosivu | https://forth-standard.org |
Forth on tietokoneiden ohjelmointikieli ja interaktiivinen ohjelmointiympäristö, jonka kehitti alun perin Charles H. Moore 1970-luvun alkupuolella.[1]
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
[muokkaa | muokkaa wikitekstiä]Moore kehitti kielen vastajulkaistulla IBM 1130-minitietokoneella.[1] Moore käytti Fortrania ensimmäisen Forthin toteutukseen.[1]
Kieli on vaikuttanut RPL-kieleen, jonka Hewlett-Packard kehitti laskimiinsa 1980-luvulla.[2]
Esimerkkejä
[muokkaa | muokkaa wikitekstiä]Yhteenlasku
[muokkaa | muokkaa wikitekstiä]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
[muokkaa | muokkaa wikitekstiä]: 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
[muokkaa | muokkaa wikitekstiä]Kuuluisa Hello World -ohjelma toteutettaisiin Forthilla seuraavasti:
: HELLO ( -- ) ." Hello World!" ; HELLO
Lähteet
[muokkaa | muokkaa wikitekstiä]- ↑ a b c Naomi Hamilton: The A-Z of Programming Languages: Forth 27.6.2008. Computerworld. Arkistoitu 11.6.2019. Viitattu 27.5.2019. (englanniksi)
- ↑ RPL hpmuseum.org. Viitattu 20.6.2022. (englanniksi)
Aiheesta muualla
[muokkaa | muokkaa wikitekstiä]- Forth Interest Group (englanniksi)
- The evolution of Forth doi:10.1145/155360.155369 (englanniksi)
- concatenative.org Wiki