ALGOL 1204

ALGOL 1204

ALGOL 1204 to język programowania oraz translator, który jest implementacją języka ALGOL 60 dla komputera Odra 1204, produkowanego przez zakłady Elwro we Wrocławiu w latach 1968-1972. Język ten był podzbiorem ALGOLU 60, przy czym wprowadzone ograniczenia lub precyzacje w porównaniu do wersji wzorcowej były stosunkowo niewielkie. Do roku 1973 stworzono sześć wersji translatorów, które były dostosowane do różnych zestawów maszyn cyfrowych Odra 1204. W systemie można było korzystać m.in. z biblioteki podprogramów PP. Implementacja została opracowana w Katedrze Metod Numerycznych Uniwersytetu Wrocławskiego, a prace nad nią zakończono w 1970 roku. Realizację translatora prowadził mgr Jerzy Szczepkowicz.

Wersje

Dostępne wersje obejmowały dwie podstawowe, oznaczone literami A i B, które były przeznaczone dla minimalnych zestawów maszyn działających pod kontrolą systemu operacyjnego MASON. Wersja B umożliwiała tłumaczenie programów o długości około dwukrotnie większej w porównaniu do wersji A. Wersja D była przeznaczona dla maszyn z dodatkową pamięcią bębnową o pojemności od 65536 do 262144 słów maszynowych, również pracujących pod systemem MASON.

Oprócz powyższych wariantów istniały także inne, w tym wersje specjalne, takie jak A-DISP i B-DISP, które stworzono na zlecenie Instytutu Podstawowych Problemów Techniki PAN w Warszawie. W ramach tego projektu opracowano również bibliotekę podprogramów pomocniczych PP-DISP oraz system MASON (DISP). Innym opracowaniem był translator D-COAN, stworzony na zlecenie Centrum Obliczeniowego PAN w Warszawie. Wersje DISP były dostosowane do współpracy z monitorem ekranowym, który służył do wizualizacji wyników, np. wykresów. Z kolei wersja D-COAN była w zasadzie translatora wersji D z dodaną obsługą specyficznej drukarki zainstalowanej u zleceniodawcy.

Ograniczenia

W różnych opracowaniach wskazano, że implementacja Algol 1204 nakładała niewielkie ograniczenia na język wzorcowy, będąc obszerną realizacją ALGOLU 60. W zakresie gramatyki ograniczenia obejmowały wymóg stosowania specyfikacji dla każdego parametru formalnego i ograniczenie etykiet do formy nazw. W sferze semantyki wprowadzono ograniczenia dotyczące skoków przy nieokreślonych przełączeniach, ograniczono typy danych dla wyników operacji potęgowania oraz ograniczenia na liczby całkowite, które poza ustalonym zakresem były przekształcane na wartości typu zmiennoprzecinkowego. Nałożono również ograniczenia dotyczące zakresu wartości liczbowych, tworzenia nazw (identyfikatorów), liczby indeksów dla tablic oraz głębokości zagnieżdżenia procedur. Zmiany dotyczyły także zestawu znaków w alfabecie języka, wynikających z użycia elektrycznych maszyn do pisania Optima 527 i Optima 528. Wprowadzono także symbol „?” informujący o końcu taśmy, co pozwalało na zatrzymanie działania translatora w celu założenia nowej taśmy i wznowienie działania programu.

Rozstrzyganie niejednoznaczności

W implementacji języka podjęto również decyzje dotyczące rozstrzygania wielu niejednoznaczności występujących w ALGOLU 60, wynikających z ówczesnego międzynarodowego raportu języka jako wzorca. Obejmowały one m.in. takie zagadnienia jak wartość zmiennych własnych „own” (statycznych według współczesnej nomenklatury), kwestie nazw standardowych oraz możliwość tworzenia obiektów programu o identycznych nazwach. Ustalono zasady jednoznacznego działania instrukcji warunkowej, wyrażeń warunkowych, a także zasady obliczania wszystkich argumentów operatora, nawet gdy wynik znany był na podstawie obliczeń pierwszego argumentu. Ustalono również zasady jednoznacznej interpretacji zapisów kodu źródłowego w kontekście instrukcji pętli oraz dopuszczono użycie funkcji jako procedury, chociaż formalnie wynik nie był przypisany do żadnej zmiennej, to na poziomie maszynowym był dostępny w jednym z rejestrów komputera. Dopuszczono także skutki uboczne i inne.

Inne cechy

W kodzie źródłowym istniała możliwość ograniczonego stosowania programowania hybrydowego: ALGOL 1204 – język maszynowy. W tym celu wykorzystano specjalne podprogramy standardowe. Lista rozkazów maszynowych była ograniczona do 67 spośród 115 dostępnych w komputerze. System programowania zawierał także elementy ułatwiające znajdowanie i poprawianie błędów, m.in. istniała możliwość automatycznej korekty na podstawie wcześniej zdefiniowanego wykazu poprawek. Wprowadzono także możliwość znajdowania tzw. śladu (punktu orientacyjnego) dla kontroli poprawności działania programu. Translator miał także wbudowany system sygnalizacji błędów.

Wydajność

Autorzy publikacji podkreślili wysoką wydajność kodu wynikowego generowanego przez translator. Była ona tylko nieznacznie niższa niż dla programów bezpośrednio zakodowanych w języku maszynowym komputera Odra 1204, a znacząco lepsza w porównaniu do innych dostępnych systemów programowania. Jak podano w jednej z publikacji, dla programu dotyczącego 23 równań liniowych wyniki wydajności były następujące:

  • język wewnętrzny: 10 sekund
  • ALGOL 1204: 15 sekund
  • MOST 2: 21 sekund
  • ODRA-ALGOL: 48 sekund

Rozmiar wynikowego programu nie był znacząco większy niż bezpośrednio zakodowany w języku wewnętrznym, a mniejszy w porównaniu do innych systemów programowania tej maszyny:

  • język wewnętrzny: 214 słów maszynowych
  • ALGOL 1204: 312 słów maszynowych
  • MOST 2: brak danych
  • ODRA-ALGOL: 416 słów maszynowych

Uwagi

Przypisy

Bibliografia

KrystynaK. Jerzykiewicz, JerzyJ. Szczepkowicz, Algol 1204. System programowania maszyny cyfrowej Odra 1204, wyd. trzecie, zam. 503, T-5, Warszawa: Państwowe Wydawnictwo Naukowe, 1973 (pol.).

macminik, Elwro część 5 – Odra 1204 „Lodówka”, [w:] Elwro [online], Dobre programy, 18 września 2015 [dostęp 2017-06-30] (pol.).

ZygmuntZ. Ryznar, Zarys historii programowania elektronicznych maszyn cyfrowych (Na tle rozwoju ich konstrukcji i zastosowań), Warszawa: Inforna. Ośrodek badawczo–rozwojowy informatyki. Działowy Ośrodek Informacji., 1972 (pol.).