1

Temat: Porównanie dialektów BASIC-a

https://i.imgbox.com/wgA06hLd.png

Przypisy.

[1] Modele 400/800. W serii XL/XE stanowi integralną część komputera.
[2] Możliwe jest zapisanie programu w Atari BASIC-u poleceniem LIST, a następnie odczytanie go pod Microsoft BASIC-em poleceniem MERGE. Jednak ze względu na różnice w składni, uruchomienie takiego programu bez znaczących poprawek jest ograniczone do bardzo prostych konstrukcji.
[3] W pakiecie Advan BASIC dostępny jest program dostosowujący kod Atari BASIC-a do Advan BASIC-a, ale i tak konieczne mogą się okazać ręczne modyfikacje programu źródłowego.
[4] Ograniczona do zmiany koloru linii tła w GRAPHICS 0.
[5] Istnieją cztery stałe liczbowe: %0, %1, %2, %3, zajmujące tylko 1 bajt pamięci.
[6]Przy użyciu specjalnego programu dostarczanego w pakiecie Advan BASIC.
[7] Nie działają prawidłowo poza DIR i SHELTER.

Uwagi ogólne dotyczące testu szybkości.

– Wykorzystane zostały nieco zmienione przeze mnie testy zamieszczone w Bajtku nr 1/1988.
– Pomiar został dokonany przy użyciu emulatora Altirra 2.80-test45 w systemie PAL, hardware 600/800XL, Atari BASIC wersja C. W innych warunkach wyniki mogą się różnić dlatego należy je traktować jako orientacyjne.
– BASIC XL i XE – pomiar w trybie FAST.
– Advan BASIC – kompilator standardowy.
– Współczynnik szybkości obliczony został poprzez zsumowanie wyników testów odpowiednio od nr 1 do nr 8 i od nr 1 do nr 9 z użyciem liczb rzeczywistych i podprogramów typu GOSUB.
– Należy pamiętać, że w testach pojawia się ledwie kilka poleceń, głównie operacji matematycznych i trygonometrycznych, wspólnych dla wszystkich implementacji, tak naprawdę nieodzwierciedlających rzeczywistej siły zaawansowanych BASIC-ów (BASIC XE, Advan BASIC, Turbo BASIC XL). Przewaga zaawansowanych BASIC-ów przy umiejętnym wykorzystaniu ich możliwości, w tym poleceń niedostępnych w uboższych odmianach, może być znacznie większa niż wynikałoby to z tych testów.

Moja subiektywna charakterystyka BASIC-ów.

Atari BASIC – jaki jest, każdy widzi… Jak na swoje 8 kB i czas, w którym powstał, całkiem przyzwoity i popularny do dziś. Z wad można wymienić powolność (na szczęście dostępne są kompilatory) i brak kilku istotnych poleceń takich jak MOVE czy DPEEK/DPOKE. Szczególnie brak MOVE powoduje, że trudno napisać program nie podpierając się procedurami w języku maszynowym. Brak pętli warunkowej typu REPEAT...UNTIL i polecenia IF...ELSE...ENDIF wymusza częste użycie skoku do numeru linii, co przy złożonych programach zaciera czytelność kodu.

Atari Microsoft BASIC II – niektórzy uważają, że jego wady równoważą z nawiązką zalety. Z pewnością osoba programująca w Atari BASIC-u i podobnych interpreterach musi zmienić dotychczasowe przyzwyczajenia. I nie wynika to tylko z różnic w składni poleceń, ale też z pewnych ograniczeń, których nie narzuca Atari BASIC, na przykład jako parametr GOTO czy GOSUB musi być podana stała liczbowa. Używanie zmiennych w tym przypadku jest niedozwolone. Niektóre polecenia działają też inaczej niż można byłoby się spodziewać. Ponadto na swoje potrzeby rezerwuje znaki o kodach 0 i 124 oraz 6. stronę pamięci. Zajmuje też 16 kB RAM, czyli mamy do dyspozycji o 8 kB RAM mniej niż w Atari BASIC-u. W zamian dostajemy mechanizm ułatwiający tworzenie programów składających się z dwóch i więcej części (zmienne wraz z nazwami i wartością mogą być przenoszone między programami), możliwość rezerwacji obszaru pamięci na własne cele, w tym na generator znaków i PMG bez zawracania sobie głowy gdzie ten obszar jest umiejscowiony. To za użytkownika robi interpreter. Podobnie, tu ciekawostka, działa polecenie MOVE, które zawsze „automatycznie” dobiera kierunek transferu, tak aby nie nastąpiło nadpisanie danych. Można też używać liczb całkowitych, które zajmują mniej miejsca w pamięci i pozwalają na szybsze wykonywanie programu. Pomocna jest możliwość wykorzystania definicji, a także tablic, których ilość wymiarów ograniczona jest tylko dostępnym RAM-em. Irytujący za to jest brak polecenia DIR. Interpreter ten jest szacunkowo szybszy od Atari BASIC-a o 100-150%. Jednak tak samo, jak w Atari BASIC-u im dalej od początku programu, tym bardziej on zwalnia. Ogólnie, mimo ciekawych możliwości używanie tego interpretera można przyrównać do jazdy samochodem bez wspomagania kierownicy.

OSS BASIC XL – jest niemal równie powolny co Atari BASIC. Jego rozwinięciem jest OSS BASIC XE i w tym kontekście bliższe zapoznanie się z nim raczej nie ma sensu.

OSS BASIC XE – jeden najbardziej rozbudowanych i jeden z dwóch najszybszych (obok Turbo BASIC-a XL) interpreterów. Obsługa PMG, procedury, zmienne lokalne, możliwość konfiguracji systemu, opcjonalne wykorzystanie 128 kB RAM (z czego na sam kod programu przeznaczone jest 64 kB) to oprócz szybkości największe atuty BASIC-a XE. Są też wady. Brak kompilatora, konieczność posiadania kartridża BXE, aby uruchomić program (współcześnie alternatywą jest emulator). Wprawdzie można użyć runtime od BASIC-a XL, ale wtedy nie można używać poleceń niewystępujących w BASIC-u XL, co czyni BASIC XE równie słabym, jak wspomniany XL. W takiej sytuacji warto rozważyć użycie Altirry BASIC-a. W tej klasie BASIC-a, dziwić może też brak liczb całkowitych, pętli bez końca, pauzy (PAUSE) czy możliwości umieszczania tekstu w trybach graficznych. Niemniej jest wygodny, przejrzystości kodu nie ustępując Turbo BASIC-owi XL, a jeśli to nieznacznie. Ze względu na wykorzystanie rozszerzonej pamięci można go szczególnie polecić do pisania dużych, złożonych programów.

Advan BASIC – słowo advan[ced] nie jest tu przypadkowe, jest rzeczywiście najbardziej zaawansowanym BASIC-em, w dodatku nietypowym, bo wyłącznie kompilatorem. Jako jedyny pozwala na wstawki w asemblerze, generowanie nie tylko efektów dźwiękowych, ale też muzyki niezależnie od wykonywanego programu, a także na animację obiektów PMG. Jak w praktyce Advan BASIC się sprawuje trudno mi powiedzieć. Dotychczas nie miałam okazji napisać niczego poważniejszego w tym języku. Na pewno istotną wadą jest zintegrowanie go z własnym DOS-em, co wymusza używanie tylko tego konkretnego, prawdopodobnie zgodnego z DOS 2.5. Problemem może być też to, że jakakolwiek zmiana w kodzie programu skutkuje ponowną kompilacją, co przy dłuższych programach może być uciążliwe. Niemniej jest to najpotężniejszy z BASIC-ów, chociaż nie wynika to wprost z testów szybkości. Głównym powodem jest to, co napisałem w „uwagach ogólnych dotyczących testu szybkości”. Ponadto standardowy kompilator Advana używa sprzętowego pakietu procedur matematycznych. Podobno (nie sprawdzałem osobiście) szybkie procedury posiada Kompilator Optymalizujący, wchodzący w skład pakietu Advan BASIC. Jednak i tu szczególnie „ciężkie” operacje matematyczne (dzielenie, potęgowanie, funkcje trygonometryczne) nie są wykonywane zauważalnie szybciej, np. test 10 zajmuje 1654 sekundy po optymalizacji, wobec 1660 sekund bez optymalizacji. Jednakże z drugiej strony, jeśli wykorzystamy składnię i możliwości tego języka, unikając zarazem wspomnianych „trudnych” operacji, to możliwe jest uzyskanie naprawdę imponującej szybkości. Żeby nie być gołosłownym, przykład:

100 ?"*** TEST ***"
110 POKE 18,0:POKE 19,0:POKE 20,0
120 K=0
130 REPEAT
140 K=K+1
150 TEST@
160 UNTIL K=1000
170 T=65536*PEEK(18)+256*PEEK(19)+PEEK(20)
180 ?"CZAS:";T/50;" RAMEK:";T
190 END
200 SUB TEST@
210 A=K*2+4-1
220 SUBEND

Czas wykonania (sekundy):
5,86 liczby rzeczywiste;
4,62 liczby rzeczywiste, kompilator optymalizujący;
1,70 liczby całkowite;
0,62 liczby całkowite, kompilator optymalizujący;
Dla porównania:
6,40 Turbo BASIC XL;
1,40 Turbo BASIC XL skompilowany.

Turbo-BASIC XL 1.5 – najpopularniejszy obok Atari BASIC-a. Dlaczego? Od początku był dostępny jako darmowy, w formacie plikowym, to ważkie argumenty, ale niewystarczające. Poza tym jest szybki (a jeszcze posiada kompilator), pozostawia nawet nieco więcej wolnego miejsca na program niż Atari BASIC. Posiada też w praktyce wszystkie najpotrzebniejsze w programowaniu polecenia, łącznie z możliwością użycia tekstu w trybie graficznym. Wielorakie pętle, procedury i możliwość skoku do etykiety, a nie numeru linii, powodują, że pisanie programu jest łatwe, a tworzony kod wyjątkowo przejrzysty. Co prawda nie posiada obsługi grafiki player-missile, ale nie stanowi to jakiegoś poważniejszego problemu. Jego popularność spowodowała, że doczekał się kilku mutacji.

Hypra-Soft-BASIC – wydaje się próbą stworzenia alternatywy dla Atari BASIC-a i usunięcia najpoważniejszych jego wad. Posiada 48 dodatkowych poleceń, w tym obsługę PMG. Niestety jest równie wolny, jak Atari BASIC i nie posiada kompilatora. Zajmuje o 8 kB RAM więcej, tym samym pozostawiając na program ok. 23 kB. Gwoli sprawiedliwości należy dodać, że dzięki tym dodatkowym poleceniom strata dostępnego RAM-u jest częściowo kompensowana. Ciekawostką jest polecenie MULTICOL i LINECOL umożliwiające zmianę koloru tła w wybranych lub wszystkich liniach GRAPHICS 0.

Altirra BASIC – interpreter stworzony został z myślą o zastąpieniu wysłużonego Atari BASIC-a dlatego jest ulokowany w tym samym miejscu pamięci co Atari BASIC (dostępny jako pamięć ROM lub plik).  Mimo że zajmuje również 8 kB posiada znacznie więcej poleceń w tym wygodną obsługę dżojstików (HSTICK i VSTICK). Nie zabrakło poleceń do obsługi PMG i stacji dysków. Pojawiły się też tak brakujące w Atari BASIC-u IF...ELSE...ENDIF i MOVE. Wszystkie polecenia i tokeny zgodne są z OSS BASIC XL/XE. Jest też szybszy, co z jednej strony jest korzystne, z drugiej pogarsza kompatybilność. Przydałby się tryb zgodności z Atari BASIC-em, wówczas Altirra BASIC mógłby zastąpić ten pierwszy w 100%, ale jak na 8 kB i tak jest niezwykły.

Istnieją jeszcze:
– BASIC A+, działa jedynie na Atari 800. Jego odpowiednikiem na modele Atari XL/XE jest BASIC XL, wydany na kartridżu;
– Atari Microsoft BASIC wydany w 1981 roku w wersji plikowej. Jego udoskonaloną wersją jest Atari Microsoft BASIC II wydany w 1982 roku na kartridżu;
– i kilka innych, których nie uwzględniam ze względu na śladową popularność, jaką uzyskały.

Na zakończenie warto zauważyć, że znaczną przewagę w szybkości osiągają te implementacje, które posiadają własny pakiet szybkich procedur matematycznych, zamiast korzystać z pakietu zainstalowanego w OS ROM Atari.


-------------------
W opracowaniu prócz własnego doświadczenia wykorzystałem również materiały:
Charles Cherry, BASIC Bonanza Powerhouse languages for 8-bit Ataris, „Antic” 1988, volume 6, number 2.
Wojciech Zientara, Który lepszy?, „Bajtek” 1988, nr 1 (25).


Pobierz: BASIC – porównanie dialektów

Ostatnio edytowany przez Bluki (2016-11-19 17:16:19)

Post's attachments

Porównanie dialektów BASIC-a (testy).atr 90.02 kb, liczba pobrań: 1 (od 2016-07-10) 

Porównanie dialektów BASIC-a (testy).pdf 21.74 kb, liczba pobrań: 3 (od 2016-07-10) 

Porównanie dialektów BASIC-a.pdf 105.88 kb, liczba pobrań: 4 (od 2016-07-10) 

Tylko zalogowani mogą pobierać załączniki.

2

Odp: Porównanie dialektów BASIC-a

Woow! Szacunek za włożoną w to pracę przygotowanie tego materiału.

3

Odp: Porównanie dialektów BASIC-a

Niedawno pojawił się też U-BASIC by Draco. Jest to zwykły Atari BASIC w wersji plikowej, siedzi sobie pod ROM-em dzięki czemu dla programu jest dostępne 8KB więcej, korzysta z szybkiego pakietu FP.

hex, code and ror'n'rol
niewiedza buduje, wiedza rujnuje

4

Odp: Porównanie dialektów BASIC-a

Ale robota, brawo Bluki.

Czy możecie wyjaśnić, Stirlitz, dlaczego wasz służbowy adres stirlitz@rsha.gov.de ma aliasa justas@gru.su?
Nie czytam PM. Proszę używać e-mail.

5

Odp: Porównanie dialektów BASIC-a

dobra robota Bluki, masz może to w XLSie?

Lynx I / Mega ST 1 / 7800 / Portfolio / Lynx II / Jaguar / TT030 / Mega STe / 800 XL / 1040 STe / Falcon030 / 65 XE / 520 STm / SM124 / SC1435
DDD HDD / AT Speed C16 / TF536 / SDrive / PAK68/3 / Lynx Multi Card / LDW Super 2000 / XCA12 / SkunkBoard / CosmosEx / SatanDisk / UltraSatan / USB Floppy Drive Emulator / Eiffel / SIO2PC / Crazy Dots / PAM Net
http://260ste.atari.org

6

Odp: Porównanie dialektów BASIC-a

jak tam Panie Kot masz schematy i wsady do tych kartów? ; o ) ) ) ) ) ) )

Odp: Porównanie dialektów BASIC-a

Fajna tabelka, ale łatwiej by się porównywało gdyby Tak/Nie były pokodowane kolorystycznie, przykładowo tak to robią na wikipedii: https://en.wikipedia.org/wiki/List_of_c … _compilers

Ostatnio edytowany przez Adam Klobukowski (2016-07-10 18:59:06)

Atari: FireBee, (Falcon030 CT60e SuperVidel SvEthlana CTPCI), TT, (520ST Pak030 Frak PuPla Panther), (520ST 4MB ST RAM 8MB TT RAM CosmosEx SC1435), (1040STFM UltraSatan SM124), (1040STE 4MB ST RAM 8MB TT RAM CosmosEx NetUSBee SM144 SC1224), 260ST, 520 ST+, (MEGA ST SM125), (65XE Rapidus U1MB VBXE SIDE2 SIO2PC), (Jaguar SkunkBoard), Lynx II, 2x Portfolio

8

Odp: Porównanie dialektów BASIC-a

Dzięki za komentarze, uwagi i uzupełnienia. Przynajmniej wiadomo, że warto takie rzeczy robić :)

@Panie bezrobotny: do BXE wsad mam, ale co do reszty nie. Popytaj wujka Google albo tych, którzy zajmują się produkcją kartridży :)

@Adam Klobukowski: nie pomyślałem o takim rozwiązaniu, chociaż tu jest sporo BASIC-ów i tabela jest długa więc zdecydowałem się na podkolorowanie właśnie ich. Poza tym nie wszystkie informacje to „tak” lub „nie”, ale zapamiętam Twoją uwagę na przyszłość. Dzięki.

@Cyprian: niestety nie mam możliwości konwersji na XLS. Format źródłowy to ODT.

9

Odp: Porównanie dialektów BASIC-a

Dało by radę wrzucić to do atariki?

10

Odp: Porównanie dialektów BASIC-a

Bluki napisał/a:

Cyprian: niestety nie mam możliwości konwersji na XLS. Format źródłowy to ODT.

w sumie to o to mi chodziło :)

Lynx I / Mega ST 1 / 7800 / Portfolio / Lynx II / Jaguar / TT030 / Mega STe / 800 XL / 1040 STe / Falcon030 / 65 XE / 520 STm / SM124 / SC1435
DDD HDD / AT Speed C16 / TF536 / SDrive / PAK68/3 / Lynx Multi Card / LDW Super 2000 / XCA12 / SkunkBoard / CosmosEx / SatanDisk / UltraSatan / USB Floppy Drive Emulator / Eiffel / SIO2PC / Crazy Dots / PAM Net
http://260ste.atari.org

11

Odp: Porównanie dialektów BASIC-a

Jeśli kogoś interesuje materiał źródłowy w formacie ODT, to proszę: http://www.freespace.com.au/filehosting/68002
Wymagane czcionki to Verdana i PT mono.

12

Odp: Porównanie dialektów BASIC-a

Do Atariki to zestawienie się średnio nadaje, bo dobór BASIC-ów jest bardzo arbitralny. Co prawda autor wspomina, że dobrał najbardziej popularne ("kilka innych, których nie uwzględniam ze względu na śladową popularność, jaką uzyskały"), ale osobiście chciałbym zauważyć, że śladową popularność ma akurat dokładnie połowa (cztery z ośmiu) BASIC-ów z tabeli. Mianowicie Microsoft BASIC II, BASIC XE, Advan BASIC i Hypra-Soft BASIC.

Popularne są z wymienionych tak naprawdę tylko dwa: Atari BASIC i TBXL, plus od biedy trzeci Altirra BASIC. W latach 90 stosunkowo popularny był też BASIC XL, całkiem często spotykało się Atarki z BASIC-em XL zainstalowanym zamiast Atari BASIC-a. Reszta to plankton.

KMK
? HEX$(6670358)

13

Odp: Porównanie dialektów BASIC-a

Bluki napisał/a:

Jeśli kogoś interesuje materiał źródłowy w formacie ODT, to proszę: http://www.freespace.com.au/filehosting/68002
Wymagane czcionki to Verdana i PT mono.

dzięki.

fajnie było by gdyby w zestawieniu był jeszcze Basic z C64

Lynx I / Mega ST 1 / 7800 / Portfolio / Lynx II / Jaguar / TT030 / Mega STe / 800 XL / 1040 STe / Falcon030 / 65 XE / 520 STm / SM124 / SC1435
DDD HDD / AT Speed C16 / TF536 / SDrive / PAK68/3 / Lynx Multi Card / LDW Super 2000 / XCA12 / SkunkBoard / CosmosEx / SatanDisk / UltraSatan / USB Floppy Drive Emulator / Eiffel / SIO2PC / Crazy Dots / PAM Net
http://260ste.atari.org

14

Odp: Porównanie dialektów BASIC-a

@Bluki, podoba mi się to porównanie. Szacun.

Sikor umarł...

15

Odp: Porównanie dialektów BASIC-a

chwalić, nie czesto ostatnio spotyka sie wartosciowye posty, a ten taki jest.

moim zdaniem najpopularniejsze byly te dialekty do ktorych mozna bylo zdobyc jakakolwiek dokumantacje - do basica xe i turbobasica byly kserowki, soeto: turbo basic, basic xe i microsoft basic. do reszty basicow nie pamietam zebym widzial jakakolwiek dokumentacje na gieldzie.

moj kumpel ze szkoly zawsze uzywal microsoft basica. hipster do dzis ;-)

http://atari.pl/hsc/ad.php?i=1.

16

Odp: Porównanie dialektów BASIC-a

xxl napisał/a:

do basica xe i turbobasica byly kserowki,

Potwierdzam, sam posiadam/posiadalem*.
Sam artek w deseczke.

*o ile rodzice nie przewietrzyli piwnicy.

17

Odp: Porównanie dialektów BASIC-a

Jeszcze raz dzięki za dobre słowo :)

W kraju rzeczywiście: była instrukcja po polsku, można było liczyć na jakąś popularność języka. Do BXE mam podręcznik wydany przez – tu przydługa nazwa – „Naczelną Organizację Techniczną. Ośrodek Doskonalenia Kadr Technicznych Rady Stołecznej. Forum Atari” :) . Kartridże BXE (i BXL) były dostępne, oczywiście pirackie. W USA w latach 80. to wyglądało trochę inaczej, bo w większości były to produkty komercyjne, które lepiej czy gorzej, ale jednak się sprzedawały. Według „Antica” z 1987 roku ceny wyglądały następująco (w $): AMBII – 29.95; BXL – 59.00; BXE – 79.00; Advan – 39.95.

18

Odp: Porównanie dialektów BASIC-a

"Kserówki były" to zerowy wyznacznik _popularności_. Popularne sensu stricto w latach 90 były tylko dwa dialekty: Atari BASIC i TBXL. Teraz ewentualnie do nich dołącza Altirra BASIC. BXE i Microsoft BASIC II jako standard nie istnieją.

KMK
? HEX$(6670358)