Forth (programozási nyelv)

programozási nyelv

A Forth egy láncolt kódú, imperatív, interpretált programozási nyelv, melyet Charles Moore kezdett el fejleszteni az 1960-as évek elején, a Kitt Peak obszervatórium teleszkópja irányítási problémáinak megoldása kapcsán.

Előnyei szerkesztés

  • Kis memóriaigény
  • Gyors működés
  • Interaktívan is használható
  • Viszonylag könnyen implementálható
  • Van objektumorientált változata[1]

Hátrányai szerkesztés

  • Szokatlan szintaxis

Működése szerkesztés

Két verem (stack) használatos a FORTH-ban. Az egyiket az adatok tárolására, a másikat az utasítás végrehajtáshoz használjuk. Az aritmetikai kifejezéseket RPN szintaxissal (Reverse Polish Notation, jelentése: fordított lengyel jelölés) adjuk meg, melynek lényege, hogy az adatokat belevetjük a verembe, meghívjuk a szükséges műveletet, majd az eredményt az adatverem tetején találjuk. Zárójelezés és precedencia szerinti átrendezés nincs, a műveleti sorrendről kizárólag a veremben elfoglalt pozíció dönt. Ez az eljárás hasonlatos ahhoz, ahogyan egy klasszikus HP gyártmányú mérnöki számológép működik.

A standard parancskészlet minden szokásos elemet tartalmaz, így feltételes szerkezetet (IF-ELSE-THEN), ciklust (DO-LOOP), aritmetikai és logikai funkciókat, de létezik például grafikai képességekkel kiegészített változat is.

Programozás során, a primitíveknek nevezett alap parancskészlet felhasználásával saját utasításszavakat hozunk létre, amelyek a sikeres bevitelt követően gépi kód formátumra fordított alakban bekerülnek a FORTH szótárába. Maga a szótár utasításszavak listája. A fordítás és a szintaktikai ellenőrzés a bevitelt követően azonnal megtörténik. A felhasználónak van lehetősége új primitívek beillesztésére is.

Amikor kiadunk egy parancsot, akkor ezt a FORTH megkeresi a szótárban. Mód van arra is, hogy akár több szótárat is használjunk. Ami nincs a szótárban, az szám (vagy szintaktikai hiba). A FORTH erőssége, hogy olyan szavakat is létre tudunk hozni, amelyek fordítási időben hajtódnak végre, sőt, olyan utasításszó is alkotható, amely rendelkezik mind a fordítási idő alatt végrehajtandó, mind a futási idejű teendőkről is. A FORTH megvalósítások jelentős mennyiségű, előre elkészített szótári elemmel rendelkeznek. Ezek egy része akár FORTH-ban is íródhat.

Példa szerkesztés

2 3 *
.

Példánkban először a 2 majd a 3 kerül be az adatverembe. Ezután a * parancs elvégzi az egész számok összeszorzást. Az eredményt a . utasítás írja ki. Ezután üres lesz az adatverem (mert a kiírás levette a legfelső elemet).

Új utasításszó létrehozása szerkesztés

: NEGYZET DUP * ;

Felhasznált elemek jelentése:

  • : új utasításszó bevitelének kezdete
  • NEGYZET választott szótári név (kb. szubrutin neve)
  • DUP az adatverem legfelső elemét duplikáló utasítás
  • * az adatveremben lévő 2 legfelső értéket összeszorozza, majd az eredményt visszateszi
  • ; új utasításszó bevitelének vége

Ezután ha kiadjuk a NEGYZET parancsot, akkor az adatverem legfelső eleme a négyzetére változik.

A nyelv hagyományai szerint az utasítások működését (hatását az adatveremre) megjegyzésként (azaz zárójelek között), az alábbi formában szokás dokumentálni: ( bemenő adatok --- kimenő adatok )

Például a 'DUP', a 'SWAP' és a 'NEGYZET' szavak leírása:

DUP ( n --- n n )
SWAP ( n1 n2 --- n2 n1 )
NEGYZET ( n --- n*n )

A szabványosítás főbb állomásai szerkesztés

A FORTH nyelv számos szabványosítási fázison esett át. Ezeket a FIG(Forth Interest Group) gondozza www.forth.org.

  • 77-Standard (1977)
  • 79-Standard (1979) Ez volt a klasszikus FIG-FORTH változatok alapja.
  • 83-Standard (1983)
  • ANS-FORTH X3.215-1994 ftp.uu.net[halott link]
  • ISO-FORTH ISO/IEC 15145:1997 www.iso.org

Megvalósítások szerkesztés

A 70-es és 80-as években írt, számos zárt forráskódú, történelmi megvalósítás közül ma csak kevés érhető el. Mára gyakorlatilag az összes jelentősebb mikroprocesszor típusra implementálták, 8, 16 és 32 bites környezetben is létezik. Különféle operációs rendszereken elérhető. Egykoron a CP/M és DOS változatok voltak népszerűek, manapság a Windows és Linux implementációk használatosak:

Jegyzetek szerkesztés

  1. Object-oriented Forth (angol nyelven) (html). Gforth Manual. The Free Software Foundation, 2003

Források szerkesztés

További információk szerkesztés

Magyar nyelvű információk és szakirodalom szerkesztés

Kapcsolódó szócikkek szerkesztés

  • RTX2010 mikroprocesszor, amely a Forth utasítások végrehajtását hardveresen támogatja