Форт (програмски језик)

Из Википедије, слободне енциклопедије

Форт (енгл. Forth) је програмски језик заснован на стеку. Такође, то је и назив за интерактивно окружење које омогућава развој и извршавање програма писаних у Форту. Форт се лако проширује. Користи обрнуту пољску нотацију. Не поседује проверу типова података. Погодан је за контролу процеса који се одвијају у реалном времену као што је, на пример, управљање телескопима, што му је једна од првобитних намена.[1]

Творац програмског језика Форт је Чарлс Мур.[2]

Здраво свете[уреди]

За испис поруке „Здраво свете!", у интерактивном начину рада, може да послужи следећи код:

." Здраво свете!"

Испис можемо да „улепшамо“ издвајајући га у посебан ред на следећи начин:

CR ." Здраво свете!" CR

Можемо да дефинишемо нову реч Поздрав која ће да уради исто:

: Поздрав CR ." Здраво свете!" CR ;

Синтакса[уреди]

Форт има једноставну синтаксу. Било каква група речи, које су међу собом раздвојене празнином, може да представља програм. На пример:

Сипај~воду додај~поврће кувај посоли послужи~топло

могао би да буде исправан Форт програм.

Речи могу да садрже све расположиве знакове. На пример, следеће речи су уобичајене у програмском језику Форт: ." + #S DROP @ ROT. *

Речи[уреди]

Писање програма, у програмском језику Форт, најчешће се састоји из писања кратих потпрограма који се повезују у веће целине. Сваки потпрограм се придружује једној речи. Овакав пар (реч, потпрограм) обично се једноставно зове: реч.

Стек[уреди]

Код већине програмских језика код којих постоји могућност рекурзивног позивања процедура или функција генерише се стек током извршавања програма. У програмским језицима као што су Модула-2 или C програмер не манипулише директно овим стеком. Он служи да би се сачувале повратне адресе код позива процедура или функција, као и за чување неких других привремених података као што су локалне променљиве и стварни параметри (или њихове референце) предати при позиву. Форт такође поседује стек на коме чува повратне адресе потпрограма али поседује још један стек. Програмер директно приступа овом другом стеку. Користи га обично да би предао параметре, сачувао повратну вредност, или за смештање привремених података. Зато се овај стек понекад зове параметарски стек или стек података, али најчешће само стек. Први поменути стек са повратним адресама обично се назива повратни стек (енгл. return stack или енгл. linkage stack).

Примери рада са стеком[уреди]

Програмирајући у Форту програмер готово да не може да избегне да директно не користи параметарски стек. Ако у Форту напишемо:

3 47 -2 8

извршење овога кода довешће до тога да на стеку имамо четири броја: 3, 47, -2 и 8. Прво ће на врх стека да буде постављен број 3, затим 47, који ће тројку да потисне испод себе. Потом -2 долази на врх и на крају 8. По извршењу, садржај стека може да се представи следећом табелом:

позиција садржај додатни опис
0 8 <-- врх стека
1 -2 <-- одмах испод врха
2 47
3 3


Форт реч drop уклања број са врха стека. По извршењу:

drop

стек изгледа овако:

позиција садржај додатни опис
0 -2 <-- врх стека
1 47 <-- одмах испод врха
2 3

Ако желимо да заменимо број на врху стека са оним одмах испод њега можемо да употребимо Форт реч swap:

swap

добијамо следеће стање на стеку:

позиција садржај додатни опис
0 47 <-- врх стека
1 -2 <-- одмах испод врха
2 3

Можемо да употребимо Форт реч . (тачка) да испишемо број са врха стека. Ова реч у истом реду исписује број (и ok). Затим број уклања са стека:

. 47 ok

Потом стек изгледа овако:

позиција садржај додатни опис
0 -2 <-- врх стека
1 3 <-- одмах испод врха

Рачун[уреди]

Један број речи које су стандардно дефинисане у програмском језику Форт везане су за рачун. То је у првом реду рачун са целим бројевима.

Ако у Форту напишете:

3 5 + .

интерпретатор ће да одговори (у истом реду):

8  ok

Изрази везани за рачун у Форту се формирају коришћењем обрнуте пољске нотације, односно у постфикс запису. За разлику од, у матеметици уобичајеног, ификсног записа овде се прво наводе операнди па тек затим оператор.

Ако би хтели да у Форту нађемо разлику бројева седам и четири можемо да напишемо следеће:

7 4 - .

Извршење овог кода доводи до тога да се прво на стек поставе бројеви 7 и 4. Потом се врши њихово одузимање. Бројеви 7 и 4 се уклањају са стека и место њих се на врх стека уписује резултат (број 3). На крају, реч тачка исписује број са врха стека и уклања га (са стека).

Превођење сложенијих израза у Форт нотацију може да представља проблем почетницима. На пример вредност следећег математичког израза: (7 - 2)•(4 + 2) може да се израчуна на следећи начин:

7 2 - 4 2 + * .

Референце[уреди]

Спољашње везе[уреди]