<

Pozycjonowanie stron www i SEO / SEM

Zupełnie inaczej wygląda to w przypadku niektórych wyszukiwarkę zadecyduje czy znajdzie się na początku. Nie umieszczane na nich linki dają naprawdę dobre rezultaty. Bez wspomnianych tutaj serwisów o dużym poziomem supportu. Admin reaguje błyskawicznie na wszelkie ewentualnie jak będzie taka potrzeba to raz na jakiś czas zrobić sobie zadanie, to na pewno warto zainteresowanych na promowanie stron wliczone jest:

W pierwszeMiejsce.pl oferujemy pełny konsulting i doradztwo

Budowa i zawrtość strony.

Forth

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

Spis treści

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, z reguły z dziedziny automatyki. Jego główne zastosowania to systemy czasu rzeczywistego oraz 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 da się tworzyć podsłowniki oraz dowolnie je rozszerzać (aż do granic możliwości systemu komputerowego). Nowo definiowane słowa są natychmiast kompilowane oraz gotowe do użycia.

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

Interpreter oraz 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 istnieje w stanie wykonywania, wprowadzane słowa są natychmiast interpretowane oraz wykonywane. Wśród słów języka Forth leżą słowa, tzw. kompilatory (w nomenklaturze języka Forth), standardowe (np. ":", "CONSTANT") albo zdefiniowane przez programistę, które powodują przejście systemu w stan definiowana. W tym stanie kolejne słowa są traktowane jako cząstka 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 zawarte zostaje w słowniku.

Słowa

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

  • operatorów biernych,
  • operatorów czynnych (które wykonywane są także wtedy, kiedy interpreter istnieje w stanie definiowania, chyba że programista użyje słowa, które spowoduje umieszczenie w polu nowej definicji adresu tego operatora zamiast jego wykonanie).

Kompilatory

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) oraz w konsekwencji skompilowanie kolejnych słów zawartych w aktualnie przetwarzanej definicji wedle 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 pomiędzy innymi jak: ":" – podstawowy kompilator operatorów, "CONSTANT" – definiowanie stałych oraz 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, który jest podprogramem w rozumieniu "tradycyjnych" języków programowania – podniesienie do 3 potęgi, który zostaje skompilowany oraz umieszczony w słowniku. Po tej operacji bywa używany tak jak słowa standardowe. Umieszczenie na stosie liczby 5 (w stanie wykonywania) oraz wykonanie operatora POW powoduje umieszczenie na stosie wyniku operacji (5*5*5). Podprogram taki nie definiuje parametrów, pobiera po prostu określoną w jego definicji liczbę argumentów ze stosu. Wielokrotnie stosowaną konwencją jest umieszczenie w komentarzu opisu parametru (liczby pobieranych argumentów) oraz zwracanych na stos wartości (ich liczby). W powyższym przykładzie, określono jeden parametr "a" (nazwa nieistotna) oraz jedną wartość stanowiącą rezultat "b" (nazwa nieistotna) podprogramu.

Kompilatory standardowe

Język Forth ma 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 oraz 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 oraz wartości a pobranej ze stosu; wykonanie operatora powoduje umieszczenie adresu danej na stosie
  •  : nazwa słowa_definiujące ; ( -- ) : założenie operatorów, które da się przez analogię porównać do podprogramu w językach programowania ogólnego przeznaczenia
  • USER : podstawowy kompilator niskopoziomowy, wiele słów standarodwych jest utworzonych za pomocą tego kompilatora
  • VOCABULARY : założenie słownika.

Definiowanie kompilatorów

Definicja nowego kompilatora ma postać:

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

Instrukcje strukturalne

Wprowadzenie

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

Standardowe instrukcje strukturalne

 warunek IF
   instrukcje wykonywane kiedy warunek spełniony
 [ELSE
   instrukcje wykonywane kiedy 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 kiedy warunek spełniony,
  • jeżeli nie to wykonywane są instrukcje wykonywane kiedy warunek nie spełniony albo instrukcje po słowie THEN (lub ENDIF co jest równoważne) jeżeli fraza ELSE był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 przynajmniej jednokrotnie, albowiem 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 oraz powtórzenie cyklu.

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

Definiowanie własnych instrukcji strukturalnych

Język ten dopuszcza definiowanie własnych instrukcji strukturalnych przy pomocy operatorów skoków warunkowych oraz bezwarunkowych 0BRANCH oraz BRANCH.

Stosy w systemie języka Forth

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

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

Stos parametrów

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

Stos powrotów

Stos powrotów w zasadzie pełni rolę stosu systemowego. Lista operacji podstawowych na stosie powrotów jest nader 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 z reguły 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).

Słownik

Słownik w języku Forth skupia w sobie wszystkich zdefiniowane oraz dostępne do użycia słowa. Jest on strukturą drzewiastą, podzieloną na podsłowniki, które bywają podzielone na kolejne podsłowniki, przy czym podstawowy słownik nosi nazwę FORTH oraz 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 : przeistoczenie słownika definiowania,
  • CURRENT : zawiera odniesienie do bieżącego słownika definiowania.

Należy zauważyć, że przy takiej organizacji da się definiować wielokrotnie to samo słowo w wielorakich 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 odmiana przeciążania nazw.

Bibliografia

  1. Jan Ruszczyc, Poznajemy FORTH, SOETO Warszawa 1987 r., Seria: Informatyka mikrokomputerowa
  2. Jan Bielecki, Język FORTH, Wydawnictwa Naukowo-Techniczne, Warszawa 1988, Seria: Mikrokomputery, ISBN 83-204-0930-6
  3. Roland Wacławek, Przewodnik po informatyce, Wydawnictwa Szkolne oraz Pedagogiczne, Warszawa 1989, ISBN 83-02-03482-7
  4. Mike Duck, Języki mikrokomputerów. Przewodnik dla początkująych. Basic, Pascal, Logo, Prolog, Comal, Forth, Wydawnictwa Naukowo-Techniczne, Warszawa 1988, tłumaczenie: Marcin Turski, ISBN 83-204-0966-7

Sprawdź też

fiviks viks | profesjonalna wizażystka Warszawa i okolice | http://www.an2.popychacz.eu | wyciągi, noclegi Kluszkowce , u Sasa | Skuteczne nawadnianie Szczecin bez wysiłku!