Forth - Google

Forth

Z Wikipedii

Skocz do: nawigacji, szukaj

Forth jest językiem programowania wysokiego poziomu, lecz równocześnie należy do kategorii języków tzw. bliskich sprzętowi, czasem (potocznie) używa się określenia asemblerowy język wysokiego poziomu.

Spis treści

[edytuj] Charakterystyka języka Forth

Do cech charakterystycznych tego języka należą:

  • natychmiastowa interpretacja wprowadzonych słów,
  • natychmiastowa kompilacja definicji nowych słów,
  • wykonywanie operacji za poÅ›rednictwem stosu,
  • zapis wyrażeÅ„ arytmetycznych w odwrotnej notacji polskiej.

Specyfika języka sprawia, że jest to język dla specjalistów, głównie z dziedziny automatyki. Jego główne zastosowania to systemy czasu rzeczywistego i sterowanie urządzeniami.

Twórcą języka jest Amerykanin Charles H. Moore, który stworzył pod koniec lat 60. pierwszą jego implementację.

Program napisany w języku Forth składa się z sekwencji słów rozdzielonych separatorami (jeden ze znaków: spacja, znak o kodzie zero #0, powrót karetki #13). Słowa pamiętane są w słowniku, w którym można tworzyć podsłowniki i dowolnie je rozszerzać (aż do granic możliwości systemu komputerowego). Nowo definiowane słowa są natychmiast kompilowane i gotowe do użycia.

Specyfika tego języka prowadzi do programowania od dołu do góry (od szczegółu do ogółu).

[edytuj] Interpreter i kompilator

W trakcie swojego działania interpreter języka może znajdować się w jednym ze stanów:

  • definiowania,
  • wykonywania.

Jeżeli system języka Forth znajduje się w stanie wykonywania, wprowadzane słowa są natychmiast interpretowane i wykonywane. Wśród słów języka Forth znajdują się słowa, tzw. kompilatory (w nomenklaturze języka Forth), standardowe (np. ":", "CONSTANT") lub zdefiniowane przez programistę, które powodują przejście systemu w stan definiowana. W tym stanie kolejne słowa są traktowane jako część definicji nowego – właśnie definiowanego – słowa, aż do napotkania słowa kończącego definicję (standardowo ";"). Taka definicja podlega kompilacji, a nowo zdefiniowane słowo umieszczone zostaje w słowniku.

[edytuj] Słowa

Słowa języka mogą należeć do kategorii:

  • operatorów biernych,
  • operatorów czynnych (które wykonywane sÄ… także wtedy, gdy interpreter znajduje siÄ™ w stanie definiowania, chyba że programista użyje sÅ‚owa, które spowoduje umieszczenie w polu nowej definicji adresu tego operatora zamiast jego wykonanie).

[edytuj] Kompilatory

[edytuj] Pojęcie kompilatora w Forth

Kompilatorem (w nomenklaturze języka Forth), nazywa się słowo, które powoduje przejście systemu Forth w stan definiowania, zinterpretowanie najbliższego słowa jako nazwy nowego operatora (słowa języka Forth) i w konsekwencji skompilowanie kolejnych słów zawartych w aktualnie przetwarzanej definicji według zadanych (zawartych w definicji kompilatora ) instrukcji oraz umieszczenie nowego słowa w słowniku (ewentualnie w podsłowniku).

W język Forth wbudowane są standardowe kompilatory , takie między innymi jak: ":" – podstawowy kompilator operatorów, "CONSTANT" – definiowanie stałych i inne. Programista ma także możliwość definiowania własnych kompilatorów .

 (POTEGA 3; a -- b)
 : POW DUP DUP * * ;
 5 POW
 

Zdefiniowano operator bierny POW – podniesienie do 3 potęgi, który zostaje skompilowany i umieszczony w słowniku. Po tej operacji może być używany tak jak słowa standardowe. Umieszczenie na stosie liczby 5 (w stanie wykonywania) i wykonanie operatora POW powoduje umieszczenie na stosie wyniku operacji (5*5*5).

[edytuj] Kompilatory standardowe

Język Forth posiada zdefiniowane kompilatory standardowe:

  • CONSTANT nazwa (a -- ) : definicja operatora (sÅ‚owa o wÅ‚aÅ›ciwoÅ›ciach staÅ‚ej) o nazwie jak najbliższe sÅ‚owo wejÅ›ciowe nazwa i wartoÅ›ci a pobranej ze stosu
  • VARIABLE nazwa (a -- ) : definicja operatora (sÅ‚owa o wÅ‚aÅ›ciwoÅ›ciach zmiennej) o nazwie jak najbliższe sÅ‚owo wejÅ›ciowe nazwa i wartoÅ›ci a pobranej ze stosu; wykonanie operatora powoduje umieszczenie adresu danej na stosie
  •  : nazwa sÅ‚owa_definiujÄ…ce ; ( -- ) : utworzenie operatorów, które można przez analogiÄ™ porównać do podprogramu w jÄ™zykach programowania ogólnego przeznaczenia
  • USER : podstawowy kopilator niskopoziomowy, wiele słów standarodwych jest utworzonych za pomocÄ… tego kompilatora
  • VOCABLUARY : utowrzenie sÅ‚ownika.

[edytuj] Definiowanie kompilatorów

Definicja nowego kompilatora ma postać:

 : nazwa
     <BUILDS
         słowa kompilujące
     DOES>
         słowa wykonawcze
 ;

[edytuj] Instrukcje strukturalne

[edytuj] Wprowadzenie

Język Forth posiada, jak większość języków programowania wysokiego poziomu, zestaw standardowych instrukcji strukturalnych umożliwiających programowanie złożonych problemów i algorytmów. Jednak znamienną cechą języka Forth jest jego rozszerzalność przejawiająca się między innymi możliwością definiowania własnych, nowych instrukcji strukturalnych.

[edytuj] Standardowe instrukcje strukturalne

 warunek IF 
   instrukcje wykonywane gdy warunek spełniony
 [ELSE
   instrukcje wykonywane gdy warunek nie spełniony]
 THEN | ENDIF

przy czym warunek jest po prostu ciągiem instrukcji języka Forth, a operator IF bada czy na stosie jest wartość różna od zera:

  • jeżeli tak to wykonywane sÄ… instrukcje wykonywane gdy warunek speÅ‚niony,
  • jeżeli nie to wykonywane sÄ… instrukcje wykonywane gdy warunek nie speÅ‚niony lub instrukcje po sÅ‚owie THEN (lub ENDIF co jest równoważne) jeżeli fraza ELSE zostaÅ‚a pominiÄ™ta.
 : SELECT KEY 10 =
     IF
         +
     ELSE
         *
     THEN ;
   2 3 SELECT
 przed_DO
     DO
         instrukcje
     LOOP | +LOOP
 po_LOOP

Operator DO ustala (na podstawie wartości ze stosu) dwa parametry iteracji: ograniczenie – warunek zakończenia, oraz wartość początkową. Dla słowa LOOP krok wynosi +1, dla +LOOP wartość kroku pobierana jest ze stosu, przy czym może to być wartość ujemna. Cykl wykonywany jest co najmniej jednokrotnie, gdyż sprawdzenie warunku wykonywane jest na końcu. Operator I udostępnia wartość zmiennej sterującej cyklem.

 : CIAG  
   10 2 DO
     I . 2 
   +LOOP ;
 (wyprowadzenie liczb 2 4 6 8)
  • instrukcja repetycyjna
 BEGIN
   przed_WHILE WHILE
   po_WHILE
 REPEAT

Po wykonaniu przed_WHILE operator WHILE sprawdza wartość na stosie, jeżeli jest to zero to kończy instrukcję REPEAT, jeżeli nie to wykonywane jest po_WHILE a operator REPEAT powoduje skok do BEGIN i powtórzenie cyklu.

 : WAINT_SP
   BEGIN
     KEY 32 = 0= WHILE
   REPEAT
 BEGIN
   instrukcje
 AGAIN

[edytuj] Definiowanie własnych instrukcji strukturalnych

Język ten umożliwia definiowanie własnych instrukcji strukturalnych przy pomocy operatorów skoków warunkowych i bezwarunkowych 0BRANCH i BRANCH.

[edytuj] Stosy w systemie języka Forth

System języka Forth posługuje się dwoma stosami:

  • stosem parametrów,
  • stosem powrotów.

[edytuj] Stos parametrów

Stos parametrów jest to podstawowy element systemu, również dla użytkownika, na którym wykonywane są operacje. Służy przede wszystkim do przekazywania argumentów operacji i przekazywania wyników operacji (podprogramów).

[edytuj] Stos powrotów

Stos powrotów w zasadzie pełni rolę stosu systemowego. Lista operacji podstawowych na stosie powrotów jest dość ograniczona. Do najważniejszych z nich należą:

  • >R (a -- ) : przeniesienie danej sÅ‚owowej a ze stosu parametrów na stos powrotów,
  • R> ( -- a) : umieszczenie danej sÅ‚owowej a na stosie parametrów ze stosu powrotów,
  • R ( -- a) : skopiowanie danej sÅ‚owowej a na stosie parametrów ze stosu powrotów,
  • RP! ( -- ) : usuniÄ™cie wszystkich danych ze stosu powrotów,
  • RP@ ( -- a) : umieszczenie na stosie parametrów adresu szczytu stosu powrotów,
  • R0 ( -- a) : umieszczenie na stosie parametrów adresu pustego stosu powrotów (poczÄ…tku).

Jak widać sÄ… to głównie operacje sterujÄ…ce, sÅ‚użące nastÄ™pujÄ…cym celom (dla których przeznaczony jest stos powrotów) :

  • przechowywanie Å›ladów wzajemnych wywoÅ‚aÅ„ operatorów (podprogramów),
  • przechowywanie parametrów instrukcji strukturalnych,
  • pomocniczy stos roboczy dla danych,
  • chwilowa pamięć podrÄ™czna dla użytkownika (programisty),
  • inne.

System języka Forth automatycznie wykorzystuje stos powrotów do przechowywania licznika interpretera IP sterującego wywoływaniem kolejnych słów (jako podprogramów).

[edytuj] Słownik

Słownik w języku Forth skupia w sobie wszystkich zdefiniowane i dostępne do użycia słowa. Jest on strukturą drzewiastą, podzieloną na podsłowniki, które mogą być podzielone na kolejne podsłowniki, przy czym główny słownik nosi nazwę FORTH i skupia podstawowe operacje w tym zdefiniowane w kodzie maszynowym. Dodatkowo zwykle definiowane są także:

  • EDITOR : sÅ‚owa dotyczÄ…ce edytora,
  • ASSEMBLER : umożliwiajÄ…cy programowanie hybrydowe.

Zawsze jeden słownik jest słownikiem bieżącym, od którego rozpoczyna się poszukiwanie definicji słowa. Bezpośrednio po uruchomieniu bieżącym jest słownik FORTH. Operacje słownikowe:

  • VOCABULARY nazwa IMMEDIATE : zdefiniowanie nowego sÅ‚ownika (w bieżącym sÅ‚owniku definiowania),
  • nazwa: ustalenie bieżącego sÅ‚ownika,
  • CONTEXT : zmienna przechowujÄ…ca odniesienie do bieżącego sÅ‚ownika,
  • nazwa DEFINITIONS : zmiana sÅ‚ownika definiowania,
  • CURRENT : zawiera odniesienie do bieżącego sÅ‚ownika definiowania.

Należy zauważyć, że przy takiej organizacji można definiować wielokrotnie to samo słowo w różnych słownikach w różny sposób, a to, która definicja zostanie użyta, zdeterminowane będzie kolejnością przeszukiwania słowników. Można to uznać za rodzaj przeciążania nazw.

[edytuj] Zobacz też


Segment pism dla rodziców zanotował wzrost sprzedaży
Wszystkie miesiÄ™czniki dla rodziców zanotowaÅ‚y w lutym br. wyższÄ… sprzedaż ogółem w porównaniu z lutym ub.r. – wynika z danych ZwiÄ…zku Kontroli Dystrybucji Prasy.
Zawitkowski nowym naczelnym "Dziewczyny"
Robert Zawitkowski będzie redaktorem naczelnym miesięcznika młodzieżowego "Dziewczyna" (Axel Springer Polska).
Minister skarbu chce kuratora dla Polskiego Radia
Minister skarbu państwa Aleksander Grad zwrócił się do sądu o ustanowienie kuratora Polskiego Radia. Chce w ten sposób przeciwdziałać paraliżowi we władzach spółki.
TVN24 wyrusza na Euro 2008 helikopterem
Komentatorami rozgrywek Euro 2008 w TVN24 będą Jan Tomaszewski i Olaf Lubaszenko. Do obsługi mistrzostw Europy w piłce nożnej stacja wykorzysta też śmigłowiec Błękitny 24, który poleci do Austrii.
Polsat News ruszy 1 czerwca i z brytyjskÄ… koncesjÄ…
KanaÅ‚ informacyjny Polsatu wystartuje 1 czerwca br. i bÄ™dzie nadawaÅ‚ z brytyjskÄ… koncesjÄ… – dowiedziaÅ‚ siÄ™ "Presserwis".
Linki: Strona g³ówna