Programowanie pod AmigaOS 4

Na samym wstępie zaznaczam, że nie jestem programistą. Poniższy artykuł jest próbą uporządkowania zagadnienia i ma stanowić raczej zachętę do pogłębiania wiedzy. Taki punkt wyjścia – otwieram drzwi, dalej trzeba iść samemu. Lub podążać za nauczycielem, tylko że póki co nikt nie dał się namówić na napisanie szkółki dla początkujących. Na pewno dobrym pomysłem jest zgadanie się z kimś i wspólna nauka, nawet przez internet. Występuje wtedy czynnik wzajemnej motywacji, no i jest szansa że kolega pomoże, bo akurat wie coś do czego jeszcze nie doszliśmy. Ale do rzeczy.

W uproszczeniu języki programowania można podzielić na dwie grupy – interpretowane i kompilowane.
Interpretowane to np. Lua, Python czy JavaScript. Taki program jest zasadzie plikiem testowym, a jego działanie polega na wykonywaniu poleceń linia po linii. Często używa się określeń skrypt i język skryptowy.
Języki kompilowane to takie, których kod przekształcany jest do postaci binarnej.To znaczy kod pisany jest w wielu plikach, które od początku są grupowane w projekty; następnie dokonuje się scalenia plików źródłowych w jeden plik wykonywalny. W procesie kompilacji kod zostaje przekształcony na język maszynowy. Plik wynikowy jest w postaci binarnej i nazywany często binarką; jest niezrozumiały gdyby wczytać go np. do notatnika. Języki kompilowane to np. Pascal, C, C++.
Panuje powszechna opinia, że języki skryptowe są łatwiejsze do nauki, z kolei kompilowane dają programy szybciej działające (ale nie jest to regułą).

W AmigaOS są języki skryptowe – ARexx i Python. Używane są do automatyzacji czynności, czy tworzenia dodatkowych wtyczek do programów. Języki skryptowe mają tę zaletę, że nieraz można w nich zrobić coś o wiele prościej i szybciej niż gdyby chcieć napisać „normalnie” program.

ARexx jest amigową implementacją języka REXX stworzonego przez IBM. William S. Hawes jest człowiekiem, który dał go Amidze, było to w 1987 r. Z początku miał status shareware, do systemu został włączony razem z wersją 2.0 (1990 r.). W 1991 r. doszło do kłótni Hawesa z Commodore, chodziło o licencję. Skutek tego był taki, że ARexx przestał być rozwijany, a licencję posiada (od 1991 r.) Wishful Thinking Development Corporation. ARexx został napisany w assemblerze i nie został przepisany na PPC. Mimo tego ciągle jest chętnie używany.

Python wszedł do AmigaOS za sprawą Blendera – programu do grafiki 3D, który korzysta ze skryptów w Pythonie. Jest częścią systemu, podobnie jak ARexx. Python nie wyparł ARexxa. Właściwie poza Blenderem ma ograniczone zastosowanie (jak dla nas), choć ciekawostką jest możliwość tworzenia skryptów hybrydowych ARexx/Python. Opisał to na swojej stronie autor amigowego portu Blendera Andy Broad. Niestety nasz Python jest przestarzały, mamy wersję 2.5.6, czyli z gałęzi 2.x która nie jest rozwijana i ma tylko aktualizacje poprawkowe (obecny standard to 3.6.x).
Zarówno ARexxa jak i Pythona znajdziesz w katalogu System.

Jeżeli chodzi o języki kompilowane, to najczęściej używany jest u nas C. Chcąc pisać programy dla AmigaOS musisz mieć zainstalowane SDK. Aktualne znajdziesz na stronie Hyperionu, i nie jest wymagane mieć konto u nich by SDK pobrać:

hyperion-entertainment.biz/index.php/downloads

SDK (software development kit) składa się przede wszystkim z dokumentacji, bibliotek i plików źródłowych będących przykładami. Nawet jeśli nie jesteś programistą powinieneś mieć SDK, ponieważ niektóre porty programów i gier wymagają bibliotek .so stamtąd.

Na początek sprawdź czy działa ci prawidłowo.
Otwórz konsolę (prawa Amiga + E) i wpisz w okienko CLI. Otworzy się okno z AmigaDOS. W oknie wpisz:

gcc --version

Powinieneś otrzymać coś takiego jak na pierwszym zrzucie. Jak widać nie jest to świeżynka, ale działa. GCC (GNU Compiler Collection) to darmowe wieloplatformowe narzędzie do kompilacji programów, nie tylko w C.
Na początek spróbujmy coś skompilować. Najpierw trzeba mieć co, więc napiszemy tyci program, którego jedyną funkcją będzie wyświetlenie krótkiego tekstu. Otwórz notatnik i wpisz:

#include <stdio.h> 
int main(int argc, char **argv )
{ 
printf("udało się!\n"); return 0; 
}

Zwróć uwagę na formatowanie – po średnikach spacje, a po ostatnim znaku jest „Enter”. GCC (przynajmniej to nasze) uczy pisania czystego kodu, to znaczy jeśli będziesz pisał poprawnie ale byle jak możesz mieć w konsoli ostrzeżenie (warning). Plik zapisz z rozszerzeniem *.c. Nie zapisuj go na dysku systemowym. Najlepiej utwórz katalog na projekt i tam zapisz plik.

Teraz kompilacja. Żeby to zrobić musisz przejść do miejsca gdzie masz plik źródłowy (czyli w tym przypadku plik tekstowy pisany w notatniku). Domyślnie okno otwiera się z lokalizacją w ramdysku. Przejdź na dysk, na którym masz swój program, potem do katalogu z plikiem; możesz wykorzystać cechę „przeciągnij i upuść” na oknie dzięki czemu nie będziesz musiał przepisywać całej ścieżki do pliku.
U mnie akurat jest wyjątkowo krótka ścieżka, ale to rzadkość.
Następnie wpisz polecenie kompilacji:

gcc plik.c

Po czym wciśnij klawisz Enter:

Jak widzisz między dwoma linijkami nie ma żadnych komunikatów, czyli kompilacja przebiegła bez błędów.

Utworzony został plik wykonywalny o nazwie a.out. Jest to domyślna nazwa, ale na etapie kompilacji możesz podać własną. Nie będziemy się teraz w to zagłębiać, bo jest bardzo dużo materiałów do nauki C. Jako pracę domową odrób lekcję: co oznaczają polecenia z naszego pliku, i jak to działa. Jeżeli to zrobisz, oznaczać to będzie, że masz w sobie wystarczająco dużo siły i chęci. Innymi słowy, są duże szanse, że pójdziesz dalej.

W powszechnej opinii najlepszą książką o języku C jest „Język ANSI C” Briana W. Kernighana i Dennisa M. Ritchiego.

Nasz program po uruchomieniu wygląda tak:

I nic nie robi poza tym. Miał tylko pokazać, że możesz kompilować swoje programy.

Oczywiście nie będziesz pisał programów w notatniku posiłkując się konsolą. Niestety AmigaOS nie ma takich wygodnych środowisk programistycznych jak darmowe Visual Studio pod Windows. Sprawa nie jest jednak beznadziejna – coś jest.

Na początek pobierz sobie darmowy program SDK Browser:

os4depot.net/index.php?function=showfile&file=development/utility/sdkbrowser.lha

Przy każdym uruchomieniu program ten skanuje katalog SDK (trwa to krótko) po czym udostępnia całość w formie przeglądarki. Jest to wygodne, nie musisz otwierać pojedynczych plików tekstowych.

SDK Browser jest jednym z komponentów pakietu programistycznego AVD (Advanced Visual Developer). Jeśli jesteś zainteresowany programowaniem to całość możesz zakupić na stronie BITbyBIT. Nieco popularniejszy jest CodeBench, a kiedyś był Cubic IDE.

Te wszystkie narzędzia są mało znane. W każdym razie jeśli piszesz w C to każdy kompilator ci to skompiluje, ale na etapie tworzenia kodu musisz znać wszystkie amigowe różnice, od tego jest dokumentacja w SDK. Przede wszystkim musisz poznać API (Application Programming Interface) AmigaOS. Sama znajomość języka nie wystarczy, musisz umieć pisać pod AmigaOS.

To nie jest takie straszne, nasz pierwszy program to kilka linijek tekstu (dałoby się zmieścić w dwóch). Na pewno jak poznasz podstawy C spróbujesz napisać jakąś prostą grę logiczną; jak twój kod będzie jakoś działał, poszukasz grafika, muzyka… Potem pierwsza prosta gra zgłoszona na party czy Retrokompa. Wszystko z czasem, ważne żeby nie zmuszać się, ale jednocześnie być konsekwentnym, starać się rozwijać. Ludzie na forach amigowych są pomocni, będzie lepiej niż myślisz.

„Nigdy nie rezygnuj z celu tylko dlatego, że osiągnięcie go wymaga czasu. Czas i tak upłynie” – H. Jackson Brown

Mądre słowa. Nie marnuj czasu na Facebooka czy jałowe polemiki internetowe, zacznij działać.

Wiesz już jak zainstalować SDK, przeglądać dokumentację, skompilować pierwszy program. Co dalej?

Podstawowe źródło informacji o programowaniu pod system to wiki amigowe, które zawiera części dla użytkowników i programistów. Podstawowy opis jak wogóle zacząć jest tutaj:

http://wiki.amigaos.net/wiki/AmiWest_Setup

Samouczki powstałe na bazie wykładów na AmiWest:

http://wiki.amigaos.net/wiki/Tutorials:Main

Warto także poznać to miejsce:

http://www.os4coding.net

Sensowne jest uczyć się C albo Pythona – takie jest moje zdanie.
Programowanie w innych językach? Nie polecam. Dlaczego? Trudniej o wymianę doświadczeń. Ale żeby nie było – jak wygląda sprawa oprogramowania w innych językach:

AMOS – nie działa; jest XAMOS – wieloplatformowa reimplementacja AMOS BASIC-a oparta na jAMOS-ie, w pełni napisana w C ++ z bibliotekami SDL; ostatnia wersja z 2013 r.:

https://sourceforge.net/projects/xamos/files/

BlitzBasic – nie działa, był projekt BlitzMax, ale przestał być rozwijany; w 2014 uwolniono go, z tym że dzisiaj ciężko znaleźć coś w sieci; nie polecam

REBOL – rozwijany współcześnie przez odgałęzienia; niedawno temat został odświeżony przez twórcę języka, ale wersja amigowa najbardziej popularna to 1.2; umiarkowana popularność wśród amigowców w USA, można nabyć tutaj:

http://infocessories.com/pb/wp_e94f3642/wp_e94f3642.html

Obszerny artykuł o REBOL-u:

https://amigaone.wordpress.com/pod-lupa/rebol/

Amiga E – okres popularności raczej nie wróci. Z dużych rzeczy to napisany by w nim program graficzny Photogenics. Współcześnie warto wspomnieć o:

E Compiler X – ostatnia wersja z 2013

http://www.blubbedev.net/ecx/

PortablE – ostatnia wersja z 2016

http://cshandley.co.uk/portable/

Powyższy obrazek ze strony PortablE to fraktal „drzewo pitagorejskie” i jest to jeden z przykładów programowania hobbystycznego, kiedy robisz coś dla siebie, nie planując komercyjnego rozwoju czy współpracy w grupie. Programik ma 58 linii i jest napisany w E.

Z nowszych i aktywnie rozwijanych rzeczy mogę polecić Hollywood oparty na skryptowym języku LUA:

https://www.hollywood-mal.com

Wspomniałem o współpracy. Na PPA są ukryte wątki w dziale „Strefa twórców”, w których można bez niepotrzebnych polemik osób nie programujących dograć pewne rzeczy.

Zarówno składnia języka jak i dokumentacja są po angielsku, więc chcąc-nie chcąc uczysz się naraz tych dwóch rzeczy. Ogólnie trzeba jednak nastawić się na prywatną korespondencję, zagraniczne fora oraz dużo samodzielności i wytrwałości.

‘truman burbank’ – Amiga NG (5) 4/2018

—> do spisu artykułów

%d bloggers like this: