ALGOL 1204

ALGOL 1204język programowania i translator stanowiący implementację języka ALGOL 60 dla komputera Odra 1204[1][2] produkowanego w zakładach Elwro z Wrocławia w latach 1968-1972[3]. Język ten stanowił podzbiór ALGOLU 60 przy czym nałożone ograniczenia lub uściślenia na język wzorcowy były stosunkowo niewielkie. Do 1973 roku opracowano sześć wersji translatorów dostosowanych do różnych zestawów maszyn cyfrowych Odra 1204. W systemie można było stosować między innymi bibliotekę podprogramów PP[1]. Implementacja została opracowana w Katedrze Metod Numerycznych Uniwersytetu Wrocławskiego[2][3], a prace nad nią zakończono w 1970 roku[2]. Prace nad realizacją translatora prowadził mgr Jerzy Szczepkowicz[3].

WersjeEdytuj

Wersje obejmowały między innymi dwie podstawowe oznaczone literami A i B dla podstawowych (minimalnych) zestawów maszyny pracujących pod kontrolą systemu operacyjnego MASON. Wersje te różniły się istotnymi cechami, między innymi wersja B mogła być użyta do tłumaczenia około dwukrotnie dłuższych programów niż wersja A. Wersja D przeznaczona była dla maszyny z dodatkową pamięcią bębnową o pojemności od 65536 do 262144 słów maszynowych, pracującej pod systemem MASON (D)[4].

Oprócz wyżej opisanych wariantów translatorów istniały także inne w tym wersje specjalne. Były to wersje A-DISP i B-DISP wykonane na zlecenie Instytutu Podstawowych Problemów Techniki PAN w Warszawie. W ramach projektu opracowano także bibliotekę podprogramów pomocniczych PP-DISP oraz system MASON (DISP). Innym opracowaniem był translator D-COAN opracowany na zlecenie Centrum Obliczeniowego PAN w Warszawie. W szczególności wersje DISP przystosowano do współpracy z monitorem ekranowym, przy czym był on używany do wizualnego prezentowania wyników np. wykresów. Natomiast Wersja D-COAN w zasadzie stanowiła translator wersji D z dodaną obsługą specyficznej drukarki zainstalowanej u zleceniodawcy opracowania[5].

OgraniczeniaEdytuj

W różnych opracowaniach wskazywano, że implementacja Algol 1204 nakładała stosunkowo niewiele ograniczeń na język wzorcowy, stanowiąc obszerną realizację ALGOLU 60. W zakresie gramatyki nałożone ograniczenia obejmowały takie wymogi jak wymaganie dla każdego parametru (formalnego) stosowanie jego specyfikacji, a na etykiety nałożono ograniczenie do ich formy w postaci nazw. W zakresie natomiast semantyki wprowadzono ograniczenie dotyczące skoków przy nieokreślonych przełączeniach jako sytuacji błędnych, ograniczono typ danych stanowiących wynik operacji potęgowania oraz ograniczenie na liczby typu całkowitego i przekształcanie ich, jeżeli wartość jest spoza ustalonego zakresu, na wartości typu zmiennoprzecinkowego. Ponadto nałożono, w dostosowaniu do charakterystyki komputera docelowego, na zakres wartości liczbowych, tworzenia nazw (identyfikatorów), liczby indeksów dla tablic oraz stopnia procedur (tj. głębokości zagnieżdżenia procedur). Zmiany dotyczyły także zestawu znaków w alfabecie języka, a wynikały one ze stosowania w zestawach Odry 1204 elektrycznych maszyn do pisania Optima 527 lub Optima 528 oraz z różnic w tych dwóch modelach. Wprowadzono także symbol w postaci znaku zapytania "?" informujący o końcu taśmy, co umożliwiało zatrzymanie działania translatora w celu założenia kolejnej taśmy i wznowienie działania programu translatora[6].

Rozstrzygnięcia niejednoznacznościEdytuj

W opracowanej implementacji języka zdecydowano się także na rozstrzygniecie wielu niejednoznaczności występujących w ALGOLU 60, a wynikających z ówcześnie stosowanego międzynarodowego raportu języka, jako wzorca. Obejmowały one między innymi takie zagadnienia jak wartość zmiennych własnych "own" (statycznych wg współczesnej nomenklatury), kwestie nazw standardowych i możliwości tworzenia obiektów programu o identycznych nazwach, jednoznaczne określenie działania instrukcji warunkowej, wyrażeń warunkowych (działających analogicznie do operatora warunkowego), ustalono zasadę obliczania wszystkich argumentów operatora, nawet jeśli wynik znany jest już na podstawie obliczeń pierwszego z argumentów, dokonano także ustalenia zasad jednoznacznej interpretacji zapisów kodu źródłowego w zakresie instrukcji pętli, skoków do wnętrza pętli, definiowania paramentów (formalnych) i ich zgodności z argumentami (parametrami aktualnymi), dopuszczenie użycia funkcji jako procedury (choć formalnie wynik zostaje odrzucony, bowiem nie zostaje przypisany do żadnej zmiennej, to na poziomie maszynowym jest dostępny w jednym z rejestrów komputera), dopuszczenie skutków ubocznych i inne[7].

Inne cechyEdytuj

W kodzie źródłowym można było w ograniczonym zakresie stosować programowanie hybrydowe: ALGOL 1204 - język maszynowy. Służyły temu celowi specjalne podprogramy standardowe. Lista rozkazów maszynowych ograniczona była jednak do 67 spośród 115 dostępnych w komputerze rozkazów[8].

System programowania uwzględniał także elementy ułatwiające znajdowanie i poprawnie błędów. Między innymi istniała możliwość automatycznej korekty na podstawie wcześniej zdefiniowanego i wczytanego wykazu poprawek[9]. Do kontroli poprawności działania programu wprowadzono możliwość znajdowania tzw. śladu, czy punku orientacyjnego. Translator posiadał wbudowany system sygnalizacji znalezionych błędów[10].

WydajnośćEdytuj

Autorzy publikacji wskazywali na wysoką wydajność generowanego przez translator kodu wynikowego. Była bowiem ona tylko nieznacznie niższa niż dla programów zakodowanych bezpośrednio w języku maszynowym komputera Odra 1204. Natomiast była znacząco lepsza w porwaniu do innych dostępnych dla Odry 1204 systemów programowania. Jak podaje jeden z autorów publikacji, dla programu dotyczącego 23 równania liniowe wyniki wydajności były następujące[11]:

Także rozmiar wynikowego programu nie był znacząco większy niż bezpośrednio zakodowany w języku wewnętrznym, a zmniejszy niż dla innych systemów programowania tej maszyny[11]:

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

UwagiEdytuj

  1. MOST 2 to wersja autokodów dla komputera Odra 1204 stanowiąca rozwinięcie języka MOST 1, będącego autokodem dla wcześniejszych maszyn cyfrowych Odra 1003 i Odra 1013.
  2. ODRA-ALGOL to także wersja ALGOL 60, jednakże w porównaniu z późniejszym ALGOLEM 1204 oceniana jako znacznie uboższa.

PrzypisyEdytuj

  1. a b Jerzykiewicz 1973 ↓, s. 7.
  2. a b c Ryznar 1972 ↓, s. 113.
  3. a b c macminik 2015 ↓.
  4. Jerzykiewicz 1973 ↓, s. 7, 118-122.
  5. Jerzykiewicz 1973 ↓, s. 156-158.
  6. Jerzykiewicz 1973 ↓, s. 7, 11-22.
  7. Jerzykiewicz 1973 ↓, s. 7, 23-36.
  8. Jerzykiewicz 1973 ↓, s. 84-100.
  9. Jerzykiewicz 1973 ↓, s. 101-107, 114-117.
  10. Jerzykiewicz 1973 ↓, s. 101-107.
  11. a b Jerzykiewicz 1973 ↓, s. 7, 8-10.

BibliografiaEdytuj

  • Krystyna Jerzykiewicz, Jerzy 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.).
  • Zygmunt 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.).