Tajemnice ATARI

FORTH


A jednak FORTH!

    Długo zastanawiałem się nad tym, czy miłośnicy komputerów w Polsce są Jeszcze zainteresowani programowaniem. Mam nadzieję. że po wielu latach bezkarnego pi ractwa została Jednak spora liczba amatorów programowania. Uwzględniając panujące nam miłościwie prawodawstwo, wszyscy programiści powinni byli wymrzeć jak dinozaury. Jeżeli tak się nie stało, nie jest to na pewno zasługą naszych polityków. Tym wytrwałym, którzy nie dali się ponieść bieżącym prądom i nie założyli pirackiej meliny, chciałbym zaproponować jedno z naJ bardziej efektywnych narzędzi programowania jakie znam. Narzędziem tym jest język PORTH. Nie jest on zbyt popularny w naszym kraju. Domyślam się, z czego to wynika i spróbuję tego dociec w dalszej części artykułu. W tym momencie mogę tylko stwierdzić że przelotna znajomość z Panem FORTHem trwa krótko, gdy jednak poznamy go lepiej, staje się naszym najlepszym przyjacielem na wiele lat. Możliwości, jakie daje nam FORTH, są zbliżone do języka maszynowego, a sam zapis jest bardziej przejrzysty. FORTH nie jest właściwie językiem, lecz systemem programowania.

Dlaczego system?

   Każdy początkujący programista pragnie, aby dano mu do ręki gotowe narzędzie programowania. Ucząc się stopniowo poszczególnych instrukcji, nabiera umiejętności w posługiwaniu się wybranym językiem. Po pewnym czasie poznaje język dokładnie i dostrzega jego ograniczenia. Nie chodzi tu tylko o szybkość działania, lecz także o możliwość realizacji dowolnego algorytmu. Pamiętam, że miałem trudności w Atari-Basic, chcąc umieścić dane obrazu wewnątrz programu. To struktura języka stwarzała trudności w realizacji jakże prostego zadania. Ostatecznie udało mi się to osiągnąć bardzo okrężną drogą. Wykonując dowolną pracę (programowanie wbrew pozorom to też praca), stajemy przed wyborem: czy ważniejsze jest narzędzie, czy metoda realizacji zamierzonego celu. Złe narzędzie zmusi nas do straty wielu godzin na opracowanie metody. Każdy z czytelników zgodzi się chyba z tym, że należy dobrać efektywne narzędzie, aby ułatwić sobie zadanie. Rzecz jednak w tym, że uniwersalnych narzędzi nie ma. Co by się jednak stało, gdyby nie używać gotowego narzędzia, lecz jedynie odpowiednie jego elementy, takie klocki LEGO, które można składać na różne sposoby. Ułatwiłoby to znakomicie naszą pracę. Zamiast szukać narzędzia do realizacji naszego celu, po prostu sami je tworzymy. Dostosowujemy jego możliwości do naszego sposobu myślenia (ergonomia), a nie odwrotnie. Daje to znakomite efekty przy realizacji nawet bardzo skomplikowanych zadań. Właśnie na takiej filozofii został opracowany system FORTH.

Części systemu

   W ramach systemu FORTH znajdziemy zawsze ASEMBLER oraz EDYTOR. EDYTOR służy nam do wprowadzania dowolnego tekstu z klawiatury i zapamiętaniu go w takiej formie w pamięci zewnętrznej. ASEMBLER to także element FORTHa, umożliwia tworzenie programu bezpośrednio w języku asemblera i łączenie go z programem głównym. Korzystanie z ASEMBLERA jest bardzo proste i odbywa się w ramach systemu FORTH. Odczuwamy to tak, jakbyśmy tworzyli program w jednym zintegrowanym FORTHo-ASEMBLERze. Myślę, że ta zaleta zachęci wielu zaawansowanych programistów do poznania systemu FORTH. Doświadczony programista wie dobrze, jakie znaczenie ma łatwość stosowania asemblera w językach wyższego rzędu.

   Szczególnie jednak polecałbym ten język wszystkim początkującym adeptom programowania. FORTH posiada wszystkie zalety języka BASIC (jak bezpośredni dostęp do każdej stworzonej procedury), nie dziedzicząc jego wad. Każdy najmniejszy fragment programu możemy przetestować prawie natychmiast po wprowadzeniu do komputera. Wszystkie nazwy zmiennych, procedur, itp., są kodowane w programie i dostępne w każdej chwili dla programisty. Ma to oczywiście tę wadę, że wydłuża program o długość zastosowanych nazw, mimo to FORTH jest najbardziej pamieciooszczędnym językiem jaki udało się stworzyć. Wynika to z metody kompilacji oraz zastosowanego sposobu zapisu. Przykładem oszczędności w gospodarowaniu pamięcią może być porównanie instrukcji wywołania podprogramu w języku FORTH i Asemblerze 6502. W pierwszym przypadku zajmuje ona 2 bajty, w drugim 3, a trzeba wiedzieć, że FORTH składa się praktycznie z samych wywołań podprogramów.

Extended fig FORTH

   Chciałbym bliżej zapoznać czytelników z impementacją o tej nazwie na małe Atart. Język FORTH istnieje także na inne komputery, w tym 16 bitowe, co zapewnia programiście łatwe przejście na maszyny wyższej klasy. Język ten bardzo przystępnie przedstawił Jan Ruszczyc w swojej książce pt. "Poznajemy FORTH". Wszystkich czytelników zachęcam gorąco do poznania tej publikacji. Jako praktyk, używający systemu fig-FORTH dłuższy czas, chciałbym przedstawić metody programowania, liczne usprawnienia języka, jego obsługi oraz ciekawe procedury i ich wykorzystanie. Może uda mi się przedstawić kasetową wersję FORTHa, opracowaną przeze mnie. Tu już słyszę głosy czytelników: przecież my mamy ten język na kasecie i to w kilku wersjach! Mogę tylko stwierdzić, że wersje te zrobiły więcej szkody niż przyniosły pożytku. Raczej wcześniej niż później każdy entuzjasta FORTHa posiadający magnetofon zauważy, że mimo szczerych chęci poniesie klęskę na samym początku swojej twórczości. Czy może być inaczej. Jeżeli nie mamy możliwości zapisu wersji źródłowej na kasetę? W ten sposób na podstawie zdekompletowanej wersji powstaje zła opinia o języku. Aby uzyskać możliwość współpracy z magnetofonem, należy stworzyć odpowiedni system operacyjny zarządzający zapisem na taśmie. Należy jednak pamiętać, że nic nie zastąpi pracy ze stacją dysków.

   Drugim elementem skutecznie zniechęcającym do programowania w tym języku (także ze stacją dysków) jest wręcz fatalny standardowy EDYTOR. Na dysku zawierającym Extended fig FORTH znajdują się aż dwa edytory: jeden gorszy od drugiego. Aby zapewnić pełen komfort pracy, napisałem swój własny EDYTOR. Był to jeden z pierwszych programów napisanych przeze mnie w języku FORTH, co potwierdza fakt, że nie wymaga to od programisty szczególnych umiejętności. EDYTOR ten chciałbym zaproponować czytelnikom (do wklepania) w kolejnych numerach TA. Dopiero wtedy z czystym sumieniem będę mógł przedstawić możliwości praktycznego wykorzystania języka.

FORTH - podstawy

   Pierwszą instrukcją, jaką chciałbym opisać, jest VLIST. Tu muszę poświęcić parę słów nazewnictwu w języku FORTH. Zamiast nazwy "procedura", znanej z innych języków, stosujemy określenie "słowo". Słowami będziemy nazywali wszystkie podstawowe instrukcje języka oraz te, stworzone przez użytkownika. Zamiast nazwy "program" stosujemy określenie "Słownik". Słownik to obszar pamięci zajmowany przez wszystkie słowa. Do wyświetlenia wszystkich nazw, znajdujących się w słowniku, służy słowo

VLIST

   Sprawdzimy jego działanie w praktyce. Po załadowaniu języka FORTH, na ekranie pojawi się nazwa implementacji, np. fig-FORTH 1.1. Teraz możemy wywołać nasze słowo, pisząc jego nazwę na ekranie i zatwierdzając oczywiście klawiszem RETURN. To co zobaczymy, jest podstawowym słownikiem języka FORTH, dostępnym dla programisty. Nie należy się przerażać mnogością słów, bo w większości wypadków (do napisania przeciętnego programu) wystarczy znajomość kilkudziesięciu. Najważniejszym i najczęściej stosowanym słowem (znakiem) jest spacja. Odgrywa ona ogromną rolę podczas pisania programu źródłowego. Spacja odziela jedno słowo od drugiego i z tego powodu nie może być stosowana wewnątrz nazwy słowa. Poznajmy teraz dwa bardzo ważne słowa języka FORTH, są to: : - dwukropek i ; - średnik. Oba służą do definiowania nowych słów i wprowadzania ich do słownika. Napiszmy więc na ekranie naszego komputera następującą sekwencję:

: SLOWNIK VLIST ;

   Pamiętajmy o spacjach w odpowiednich miejscach. Zatwierdzamy zapis klawiszem RETURN i co? Na ekranie nic się nie stało, tylko pojawił się napis OK, potwierdzający że wszystko się udało. Wywołujemy jeszcze raz znane nam słowo VLIST i widzimy na samym szczycie słownika nowe słowo - "SLOWNIK". To nasze działanie spowodowało wprowadzenie do słownika słowa o tej nazwie. Dwukropek poinformował system, że występujący po nim napis będzie nazwą nowo tworzonego słowa. Po nazwie nastąpił ciąg słów istniejących już w słowniku, w naszym przypadku tylko słowo VLIST. Całość zamknął średnik, oznaczający koniec definicji słowa. Co będzie wykonywało nasze nowe słowo łatwo się domyślić, ale sprawdźcie sami. Na tym przykładzie widać, jak prosto możemy tworzyć nowe słowa. Jeżeli ktoś ma ochotę, może zastąpić wszystkie podstawowe słowa języka FORTH polskimi odpowiednikami, tworząc w ten sposób polską wersję języka.

   Jeżeli zainteresował czytelników ten artykuł, prosiłbym o listy z uwagami i oczekiwaniami dotyczącymi dalszych odcinków, odkrywających tajemnice Pana FORTHa.

Roland Pantoła

Powrót na start | Powrót do spisu treści | Powrót na stronę główną

Pixel 2001