Forth

A Programozás Wiki wikiből

A Forth egy struktúrált, imperatív, verem-alapú programozási nyelv. A Forth nagy előnye rettentően kis memóriaigénye, és rendkívül nagy végrehajtási sebessége, amelyet a gépi feldolgozáshoz igen közeli szerkezeteinek köszönhet, amiért cserébe azonban rettentően olvashatatlan szintaktikával és programszerkezettel kell fizetnünk. A Forth gyakorlatilag az egyetlen magasszintű programozási nyelv, amely utasításainak feldolgozására közvetlenül alkalmas processzorokat gyártottak.

A Forth-ban - szemben a legtöbb más programozási nyelvvel, amelyben csak egy ilyen található - két verem (stack) is létezik: egy az adatoknak, egy pedig az hívások követésére. A nyelv mindössze néhány alaputasítást tartalmaz, a magasabb szintű szerkezeteket pedig magának a programozónak kell kialakítani ezekre építkezve.

Kezdetben csillagvizsgálók távcsöveinek, műholdak vezérlése használták, később a beágyazott rendszerek kedvelt fejlesztőnyelvévé vált.

Példa:

." Hello, World" ( Ez az utasítás kiír egy üdvözletet )
: SziaVilág ." Hello, World" ; ( Egy saját szót definiálunk )
SziaVilág ( meghívjuk )

( Most egy olyan szót definiálunk, ami ezt többször is kiírja )
: SokszorSzia ( egy számot vár paraméterként )
  1 DO
     SziaVilág CR
  LOOP
;

5 SokszorSzia ( Kipróbáljuk )

A FORTH-rendszerben a végrehajtás egysége a szó: ez névvel ellátott és önállüan végrehajtható programegységet jelent. A szavak neve tetszőleges ASCII-jelsorozat lehet (kivéve a szóközt), 1-31 hosszban. A rendszer a felhasználói a szóközök mentén felbontja, és az egyes részeket először szóként, azután számként próbálja értelmezni. A szavakhoz tartozó programot végrehajtja, a számokat egy veremre helyezi, ezt a vermet a szavak futásuk során írják és olvassák.

Néhány a legfontosabb szavak közül (zárójelben a verem állapota a művelet előtt és után:

.    a verem tetején lévő szám kiírása ( n ___ )
+    a verem tetején lévő két szám összeadása ( n m ___ n+m )
:    szódefináló szó
;    kilépés a szódefinícióból
WORD egy rész olvasása az inputból ( végjel ___ )
(    megjegyzés kezdete, a megjegyzés vége a ')'
."   sring kiírás, a string vége a " -- csak fordítási módban

Az utóbbi példa azt mutatja, hogy egyes szavak maguk is olvassák a felhasználói inputot