Forth (programski jezik)
Fort (engl. Forth) je programski jezik zasnovan na steku. Takođe, to je i naziv za interaktivno okruženje koje omogućava razvoj i izvršavanje programa pisanih u Fortu. Fort se lako proširuje. Koristi obrnutu poljsku notaciju. Ne poseduje proveru tipova podataka. Pogodan je za kontrolu procesa koji se odvijaju u realnom vremenu kao što je, na primer, upravljanje teleskopima, što mu je jedna od prvobitnih namena.[1]
Fort (programski jezik) | |
---|---|
Pojavio se | 1970. |
Dizajner(i) | Charles H. Moore |
Sistem tipova | typeless |
Implementacije | SwiftForth (Forth, Inc.) Gforth (Free software) VFX Forth (MicroProcessor Engineering) |
Uticaji | Burroughs large systems, Lisp, APL |
Uticao na | Factor, RPL, REBOL |
Tvorac programskog jezika Fort je Čarls Mur.[2]
Zdravo svete
urediZa ispis poruke „Zdravo svete!", u interaktivnom načinu rada, može da posluži sledeći kod:
." Здраво свете!"
Ispis možemo da „ulepšamo“ izdvajajući ga u poseban red na sledeći način:
CR ." Здраво свете!" CR
Možemo da definišemo novu reč Поздрав
koja će da uradi isto:
: Поздрав CR ." Здраво свете!" CR ;
Sintaksa
urediFort ima jednostavnu sintaksu. Bilo kakva grupa reči, koje su među sobom razdvojene prazninom, može da predstavlja program. Na primer: Sipaj~vodu dodaj~povrće kuvaj posoli posluži~toplo mogao bi da bude ispravan Fort program.
Reči mogu da sadrže sve raspoložive znakove. Na primer, sledeće reči su uobičajene u programskom jeziku Fort: ." + #S DROP @ ROT. *
Reči
urediPisanje programa, u programskom jeziku Fort, najčešće se sastoji iz pisanja kratih potprograma koji se povezuju u veće celine. Svaki potprogram se pridružuje jednoj reči. Ovakav par (reč, potprogram) obično se jednostavno zove: reč.
Stek
urediKod većine programskih jezika kod kojih postoji mogućnost rekurzivnog pozivanja procedura ili funkcija generiše se stek tokom izvršavanja programa. U programskim jezicima kao što su Modula-2 ili C programer ne manipuliše direktno ovim stekom. On služi da bi se sačuvale povratne adrese kod poziva procedura ili funkcija, kao i za čuvanje nekih drugih privremenih podataka kao što su lokalne promenljive i stvarni parametri (ili njihove reference) predati pri pozivu. Fort takođe poseduje stek na kome čuva povratne adrese potprograma ali poseduje još jedan stek. Programer direktno pristupa ovom drugom steku. Koristi ga obično da bi predao parametre, sačuvao povratnu vrednost, ili za smeštanje privremenih podataka. Zato se ovaj stek ponekad zove parametarski stek ili stek podataka, ali najčešće samo stek. Prvi pomenuti stek sa povratnim adresama obično se naziva povratni stek (engl. return stack ili engl. linkage stack).
Primeri rada sa stekom
urediProgramirajući u Fortu programer gotovo da ne može da izbegne da direktno ne koristi parametarski stek. Ako u Fortu napišemo:
3 47 -2 8
izvršenje ovoga koda dovešće do toga da na steku imamo četiri broja: 3, 47, -2 i 8. Prvo će na vrh steka da bude postavljen broj 3, zatim 47, koji će trojku da potisne ispod sebe. Potom -2 dolazi na vrh i na kraju 8. Po izvršenju, sadržaj steka može da se predstavi sledećom tabelom:
pozicija | sadržaj | dodatni opis |
---|---|---|
0 | 8 | <-- vrh steka |
1 | -2 | <-- odmah ispod vrha |
2 | 47 | |
3 | 3 |
Fort reč drop
uklanja broj sa vrha steka. Po izvršenju:
drop
stek izgleda ovako:
pozicija | sadržaj | dodatni opis |
---|---|---|
0 | -2 | <-- vrh steka |
1 | 47 | <-- odmah ispod vrha |
2 | 3 |
Ako želimo da zamenimo broj na vrhu steka sa onim odmah ispod njega možemo da upotrebimo Fort reč swap
:
swap
dobijamo sledeće stanje na steku:
pozicija | sadržaj | dodatni opis |
---|---|---|
0 | 47 | <-- vrh steka |
1 | -2 | <-- odmah ispod vrha |
2 | 3 |
Možemo da upotrebimo Fort reč .
(tačka) da ispišemo broj sa vrha steka. Ova reč u istom redu ispisuje broj (i ok
). Zatim broj uklanja sa steka:
. 47 ok
Potom stek izgleda ovako:
pozicija | sadržaj | dodatni opis |
---|---|---|
0 | -2 | <-- vrh steka |
1 | 3 | <-- odmah ispod vrha |
Račun
urediJedan broj reči koje su standardno definisane u programskom jeziku Fort vezane su za račun. To je u prvom redu račun sa celim brojevima.
Ako u Fortu napišete:
3 5 + .
interpretator će da odgovori (u istom redu):
8 ok
Izrazi vezani za račun u Fortu se formiraju korišćenjem obrnute poljske notacije, odnosno u postfiks zapisu. Za razliku od, u matemetici uobičajenog, ifiksnog zapisa ovde se prvo navode operandi pa tek zatim operator.
Ako bi hteli da u Fortu nađemo razliku brojeva sedam i četiri možemo da napišemo sledeće:
7 4 - .
Izvršenje ovog koda dovodi do toga da se prvo na stek postave brojevi 7 i 4. Potom se vrši njihovo oduzimanje. Brojevi 7 i 4 se uklanjaju sa steka i mesto njih se na vrh steka upisuje rezultat (broj 3). Na kraju, reč tačka ispisuje broj sa vrha steka i uklanja ga (sa steka).
Prevođenje složenijih izraza u Fort notaciju može da predstavlja problem početnicima. Na primer vrednost sledećeg matematičkog izraza: (7 - 2)•(4 + 2) može da se izračuna na sledeći način:
7 2 - 4 2 + * .
Reference
uredi- ^ What is Forth?
- ^ „The Evolution of Forth[[Kategorija:Botovski naslovi]]”. Arhivirano iz originala 12. 08. 2009. g. Pristupljeno 12. 12. 2009. Sukob URL—vikiveza (pomoć)
Dodatna literatura
uredi- 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, ur. Starting Forth. Marlin Ouverson (Web izd.). FORTH, Inc. Pristupljeno 29. 09. 2007.
- Brodie, Leo (2004). Paysan, Bernd, ur. Thinking Forth. ISBN 978-0-9764587-0-8. Arhivirano iz originala (PDF Online book) 16. 12. 2005. g. Pristupljeno 15. 09. 2008.
- Conklin, Edward K.; Rather, Elizabeth D.; et al. (08. 09. 2007). Forth Programmer's Handbook (paperback) (3rd izd.). BookSurge Publishing. str. 274. ISBN 978-1-4196-7549-2.
- Rather, Elizabeth D. Forth Application Techniques (spiral bound). Forth Inc. str. 158. ISBN 978-0-9662156-1-8.
- Pelc, Stephen F. (2005). Programming Forth. MicroProcessor Engineering Ltd. str. 188. Arhivirano iz originala (spiral bound) 11. 01. 2008. g.
- 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. str. 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.
Spoljašnje veze
uredi- Forth Interest Group (FIG)
- A Beginner's Guide to Forth Priručnik za programski jezik Fort
- Starting FORTH Knjiga o programskom jeziku Fort
- Thinking Forth Project Knjiga o programskom jeziku Fort
- Intervju sa Čarlsom Murom o programskom jeziku Fort