• AmigaE - krótki opis języka

24.06.2005 22:35, autor artykułu: Marcin Juszkiewicz
odsłon: 7971, powiększ obrazki, wersja do wydruku,

Od samego początku moich przygód z komputerem pasjonowało mnie programowanie. Najpierw był BASIC, potem Pascal, a wreszcie nadszedł czas na jakiś sensowny język - wybrałem AmigaE.

AmigaE jest językiem strukturalnym, a od wersji 3.0 także obiektowym. Powstał jako swego rodzaju połączenie zalet wielu innych języków programowania: Pascala, Moduli-2, C, Ady, Lispa i innych. Autor (Wouter van Oortmerssen) postarał się jednak, aby wyszedł z tego język prosty, mający bardzo duże możliwości, a jednocześnie małe wymagania sprzętowe. Do poprawnej pracy wystarczy już Amiga 500 z 1MB pamięci operacyjnej i systemem 1.2, chociaż do poważnej pracy potrzebny będzie minimum system 2.04. Już na minimalnej konfiguracji bije na głowę wszystkie inne języki prędkością kompilacji programu - ponad 20000 linii na minutę.

Programy wynikowe charakteryzują się małymi rozmiarami - przykładowo program fontreq z pakietu Rom Kernel Manual po kompilacji ma 1632 bajty, a skompilowany kompilatorem z pakietu SAS/C 6.58 ma 8924 bajty. Jeśli już jesteśmy przy przykładach, należy zwrócić uwagę na to, że w pakiecie AmigaE otrzymujemy ponad 1.7MB różnego rodzaju plików źródłowych, a w nich przepisane z C słynne Rom Kernal Manuals (co prawda nie w całości, ale z żadnym innym kompilatorem nie są one dołączane), źródła EDBG - doskonałego debuggera i wiele, wiele innych. Taka ilość przykładów ma swoje zalety - jeśli nie wiemy jak wywołać jakąś funkcję którejś biblioteki, to możemy dowolnym searcherem przeszukać przykładowe kody źródłowe w trakcie czytania opisu tejże funkcji w autodocach.

Kompilator jest zintegrowany z assemblerem i linkerem, przez co możemy skompilować program zawierający instrukcje assemblera, bez użycia żadnych zewnętrznych narzędzi. Wstawki assemblerowe nie wymagają żadnego specjalnego zaznaczania, jak to jest w wielu innych językach i mogą korzystać ze zmiennych programu bez żadnych ograniczeń. Na upartego możnaby cały program napisać w assemblerze, a kompilator i tak by to skompilował.

W pakiecie mamy także debugger o potężnych możliwościach. Otwiera on własny ekran (chociaż można wymusić na nim ekran Workbencha), a na nim okno z kodem źródłowym programu i oknem CON:, w którym będą wypisywane wszystkie teksty programu. Możemy w każdym momencie wybrać dowolne zmienne, które będą pokazywane w oddzielnym oknie, a ich zawartość odświeżana przy każdej zmianie - zresztą sami też możemy modyfikować ich zawartość. Dużą zaletą EDBG jest dodanie doń obsługi Explorera, który jest w pakiecie AmigaE 3.3a (a także w oddzielnym archiwum na Aminecie). Umożliwia to przejrzenie zawartości poszczególnych pól struktur, używanych przez sprawdzany program. O przydatności tego narzędzia bardzo łatwo jest się przekonać, śledząc dowolny program używający funkcji systemowych.

Programy źródłowe w AmigaE charakteryzują się większą czytelnością, niż przykłady w C, gdyż nie trzeba stosować tylu nawiasów i średników (o tych zawsze zapominam). Jednak coś za coś - składnia języka wymaga odpowiedniego nazywania zmiennych, stałych i funkcji. I tak identyfikator zmiennej może składać się z małych i dużych liter, cyfr i znaku podkreślenia "_", litery małe i duże są rozróżniane, a od dwóch pierwszych zależy interpretacja danego słowa. Jeśli pierwsza litera jest mała, to jest to identyfikator zmiennej, etykieta lub obiekt.

Dwóch dużych liter używa się w:
- słowach kluczowych języka np. IF/ELSE/ENDIF, PROC/ENDPROC,
- definicjach stałych np. TRUE, NIL, MAX_LENGTH,
- mnemonikach assemblera np. MOVE, LEA.

Pierwszą dużą, a drugą małą stosuje się w:
- funkcjach AmigaE np. WriteF(), Raise(),
- funkcjach systemowych np. EasyRequestArgs()

Zasady te odnoszą się do wszystkich funkcji systemowych. I tak funkcja WBenchToFront() zmienia się na WbenchToFront(). Należy o tym, pamiętać przy pisaniu własnych programów.

W każdym programie może zdarzyć się sytuacja, że należy w jakiś sposób zareagować na błędy, np. niemożność otwarcia żądanej biblioteki. Tu także mamy znaczne ułatwienia. Już na początku programu możemy zdefiniować sobie reakcje na różne rodzaje błędów np.

RAISE ERR_NO_MEM IF New() = NIL

spowoduje przejście do procedury obsługi błędów z typem błędu ustawionym na stałą ERR_NO_MEM, jeśli gdziekolwiek w programie nie uzyskamy wymaganej ilości pamięci od systemu. Oczywiście nie musimy tego definiować na początku programu. Przykładowo otwarcie biblioteki u mnie wygląda następująco:

IF (aslbase := OpenLibrary('asl.library',38))=NIL THEN Raise(ERR_NO_ASL)

czyli jeśli nie uda się otworzyć asl.library 38+, to wywołaj błąd ERR_NO_ASL.

Przy pisaniu programów używających systemu potrzebne są "includy". W AmigaE ich rolę pełnią moduły, które są już wstępnie skompilowane co powoduje ową dużą szybkość kompilacji. Od wersji 3.2a w pakiecie są moduły do systemu 3.1 (v40) oraz wiele innych, bardzo przydatnych w codziennej pracy. Z wersją 3.3a dołączone są klasy AFC (Amiga Foundation Classes), dzięki którym nie musimy martwić się o wiele rzeczy np. odczyt tooltypów z ikony - moduł afc/tooltype, czy też tworzenie i używanie dowolnych list - afc/stringnode. Szczególną uwagę należy też zwrócić na moduły z katalogu tools/ - można tam znaleźć naprawdę dużo ciekawych funkcji.

Pisząc o modułach należy wspomnieć o pakiecie EasyGUI, służącym do tworzenia GUI niezależnego od rozdzielczości ekranu, gdyż dopasowuje się ono do czcionki ekranowej (lub innej dowolnej podanej przez programistę). Umożliwia to stworzenie GUI do programu w bardzo krótkim czasie i w bardzo prosty sposób. W dodatku, w przeciwieństwie do standardowego używania biblioteki gadtools.library (a na niej bazuje EasyGUI), nie musimy się martwić o układanie gadżetów równo jeden obok drugiego, gdyż zrobi to za nas program. Tak samo jest z tworzeniem shortcutów - wystarczy w definicji gadżetu podać jaki klawisz ma odpowiadać wywołaniu podpiętej pod gadżet funkcji. Oczywiście nie jesteśmy ograniczeni tylko do standardowych gadżetów, możemy stosować gadżety BOOPSI, powstało też wiele różnych pluginów umożliwiających dodanie takich gadżetów, jak processbar, przyciski z obrazkami zamiast tekstu, czy też umożliwiającymi tworzenie zakładek.

Od wersji 3.2 można tworzyć własne biblioteki systemowe. Co daje ta możliwość to już chyba każdy może sam ocenić. Często używane funkcje można zdefiniować sobie w zewnętrznej bibliotece i używać jej zamiast linkować wszystkie w kodzie programu. Przy jednym programie nie miałoby to zbytnio znaczenia, ale wyobraźmy sobie, że ten sam program byłby uruchomiony dwa razy - z funkcjami w bibliotece zajmowałby mniej miejsca w pamięci operacyjnej.

Przy pierwszej próbie kompilacji dowolnego większego programu (np. używającego EasyGUI) możemy zauważyć, że wersja demo kompilatora ma ograniczenie wielkości programu wynikowego do 12kB (tyle podaje autor). Nie pomogą też tutaj różne pirackie wersje kompilatora, gdyż crackerzy ograniczają się do usunięcia ograniczenia wielkości programu wynikowego, lecz i tak zostaje niemożność kompilacji w trybie LARGE, czyli powyżej 32kB, a tego wymaga EasyGUI. Jeszcze niedawno z pomocą przychodziło AIRI, w którym można było zarejestrować AmigaE za równowartość 25DM (rejestracja bezpośrednio u autora kosztowała 60DM), jednak jakiś czas temu Wouter van Oortmerssen zarzucił rozwój kompilatora i udostępnił kod źródłowy oraz pełną kopię wszystkim.

Jeśli masz dostęp do Internetu i znasz w miarę dobrze angielski, polecam zapisanie się na listę dyskusyjną dotyczącą języka AmigaE - spotkasz tam wielu ludzi używających tego języka na codzień (w tym także jego twórców), którzy zawsze ci pomogą dobrą radą i kawałkiem źródła. Aby się zapisać należy wysłać list na adres listserv@intercom.it z treścią subscribe amigae-list adres_e-mail.

Artykuł opublikowany za zgodą autora.

 głosów: 2   
dodaj komentarz
Na stronie www.PPA.pl, podobnie jak na wielu innych stronach internetowych, wykorzystywane są tzw. cookies (ciasteczka). Służą ona m.in. do tego, aby zalogować się na swoje konto, czy brać udział w ankietach. Ze względu na nowe regulacje prawne jesteśmy zobowiązani do poinformowania Cię o tym w wyraźniejszy niż dotychczas sposób. Dalsze korzystanie z naszej strony bez zmiany ustawień przeglądarki internetowej będzie oznaczać, że zgadzasz się na ich wykorzystywanie.
OK, rozumiem