Forth (програмски језик)
Форт (програмски језик) | |
---|---|
Појавио се | 1970. |
Дизајнер(и) | Charles H. Moore |
Систем типова | typeless |
Имплементације | SwiftForth (Forth, Inc.) Gforth (Free software) VFX Forth (MicroProcessor Engineering) |
Утицаји | Burroughs large systems, Lisp, APL |
Утицао на | Factor, RPL, REBOL |
Форт (енгл. 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 + * .
Референце
[уреди | уреди извор]- ^ What is Forth?
- ^ „The Evolution of Forth[[Категорија:Ботовски наслови]]”. Архивирано из оригинала 12. 08. 2009. г. Приступљено 12. 12. 2009. Сукоб URL—викивеза (помоћ)
Додатна литература
[уреди | уреди извор]- Biancuzzi, Federico; Warden, Shane (2009). „Chapter Four [A conversation with Chuck Moore]”. Masterminds of Programming, Conversations with the Creators of Major Programming Languages. O'REILLY. ISBN 978-0-596-51517-1.
- Brodie, Leo (2007). Hendrix, Marcel, ур. Starting Forth. Marlin Ouverson (Web изд.). FORTH, Inc. Приступљено 29. 09. 2007.
- Brodie, Leo (2004). Paysan, Bernd, ур. Thinking Forth. ISBN 978-0-9764587-0-8. Архивирано из оригинала (PDF Online book) 16. 12. 2005. г. Приступљено 15. 09. 2008.
- Conklin, Edward K.; Rather, Elizabeth D.; et al. (08. 09. 2007). Forth Programmer's Handbook (paperback) (3rd изд.). BookSurge Publishing. стр. 274. ISBN 978-1-4196-7549-2.
- Rather, Elizabeth D. Forth Application Techniques (spiral bound). Forth Inc. стр. 158. ISBN 978-0-9662156-1-8.
- Pelc, Stephen F. (2005). Programming Forth. MicroProcessor Engineering Ltd. стр. 188. Архивирано из оригинала (spiral bound) 11. 01. 2008. г.
- Kelly, Mahlon G.; Spies, Nicholas (1986). FORTH: A Text and Reference. Prentice-Hall. ISBN 978-0-13-326331-2.
- Koopman, Jr, Philip J. (1989). Stack Computers: The New Wave (hardcover). Ellis Horwood Limited. ISBN 978-0-7458-0418-7.
- Pountain, Dick (1987). Object-oriented Forth: Implementation of Data Structures. Harcourt Brace Jovanovich. ISBN 978-0-12-563570-7.
- Payne, William (19. 12. 1990). Embedded Controller Forth for the 8051 Family. Elsevier. стр. 528. ISBN 978-0-12-547570-9.
- Winfield, Alan (1983). The Complete Forth. John Wiley. ISBN 978-0471882350.
- Baglioni, Gio Federico (1983). Forth per VIC20 e CBM64. Jackson. ISBN 978-88-7056-141-8.
Спољашње везе
[уреди | уреди извор]- Forth Interest Group (FIG)
- A Beginner's Guide to Forth Приручник за програмски језик Форт
- Starting FORTH Књига о програмском језику Форт
- Thinking Forth Project Књига о програмском језику Форт
- Интервју са Чарлсом Муром о програмском језику Форт