Bogdan Miś: Pierwszy, polski, prawdziwy…

Była jesień roku 1958, kiedy – jako student ostatniego, piątego roku matematyki UW –usłyszałem informację, która mnie szalenie zainteresowała: miało być w tym semestrze uruchomione proseminarium z programowania maszyn matematycznych, pierwsze takie w historii naszego wydziału. Zapisałem się natychmiast, wraz z paroma koleżankami i kolegami, także z niższych lat studiów; jako ciekawostkę powiem, że wśród tych ostatnich był szeroko dziś znany profesor i… cukiernik, Andrzej Blikle.

Po co nam to było?

Proseminarium zorganizowano nie tylko po to, by zaspokoić potrzeby intelektualne i ambicje grupki młodych ludzi, zafascynowanych dochodzącymi z Zachodu informacjami o nowych technikach obliczeniowych i domagających się dostępu do tej wiedzy. Oczywiście, to też odgrywało jakąś rolę: ile w końcu można było ćwiczyć metody obliczeniowe w laboratorium, z którym najnowszym sprzętem był elektryczny arytmometr Rheinmetall, zaś większość ćwiczących miała do dyspozycji jedynie niezapomniane „kręciołki”, prościutkie arytmometry mechaniczne, w gruncie rzeczy niezbyt różne od tego, który wynalazł jeszcze staruszek Leibniz?

Chodziło jednak jeszcze o coś innego, daleko bardziej fascynującego. Informacji o uruchomieniu kursu programowania – do tego w gruncie rzeczy sprowadzało się proseminarium – towarzyszyła wiadomość doprawdy ekscytująca. Otóż w Instytucie Matematyki, przy ul. Śniadeckich 8 w Warszawie, trwały ostatnie prace nad ostatecznym uruchomieniem pierwszej polskiej „prawdziwej” maszyny matematycznej (słowo „komputer” nie było jeszcze wówczas w powszechnym użyciu). Prawdziwej – to znaczy uniwersalnej i wykorzystującej technikę cyfrową, bo na Śniadeckich działała  już ogromna maszyna analogowa, ARR, skonstruowana z myślą o wykonywaniu jednego tylko zadania: rozwiązywania równań różniczkowych. A nowa maszyna, która nazywała się XYZ, miała być maszyną właśnie uniwersalną, nadającą się do rozwiązywania wszelkich problemów obliczeniowych, znanych matematykom. No, prawie wszelkich: niektóre, jak się potem przekonałem na własnej skórze, były po prostu i dla XYZ zbyt złożone…

Pierwszy niemal liczył…

Chcąc być zupełnie ścisłym muszę w tym miejscu powiedzieć, że przed XYZ skonstruowano w Polsce inną uniwersalną cyfrową maszynę matematyczną o nazwie EMAL (Elektroniczna Maszyna Automatycznie Licząca); wzorowana była na jednym z pierwszych komputerów angielskich o nazwie EDSAC. Mało kto ją dziś pamięta, bowiem nigdy nie udało się jej faktycznie w pełni uruchomić; projekt ten – z momentem opracowania koncepcji XYZ – został pomału zarzucony, choć już po oddaniu do użytku tej ostatniej maszyny udało się uruchomić następcę EMAL-a o nazwie EMAL-2; nawiasem mówiąc, była to pierwsza maszyna, zainstalowana w Centrum Obliczeniowym PAN. Była to jednak typowa ślepa uliczka. Złośliwcy mawiali z przekąsem „EMAL liczy niemal”…

XYZ nie był jeszcze w pełni profesjonalnym komputerem. W gruncie rzeczy urządzenie to nie było nawet prototypem takiej maszyny; etap budowy, na którym się znajdowało, technologowie określali mianem „modelu laboratoryjnego”. „Właściwa” maszyna miała się nazywać ZAM-2 i istniała dopiero na deskach kreślarskich projektantów. Oznaczało to, że masa zastosowanych rozwiązań była zupełnie prowizoryczna i czysto eksperymentalna; nikt w szczególności nie interesował się takimi drobiazgami, jak ergonomia czy estetyka urządzenia. Nie przeszkadzało to jednak wcale, że maszyna działała. To znaczy – miała działać: do jej obsługi niezbędni byli nie tylko inżynierowie i technicy elektronicy, ale programiści. Tych postanowiono rekrutować głównie spośród matematyków – i stąd  wspominane na wstępie proseminarium.

Co to było za monstrum…

Pora na kilka informacji technicznych o XYZ. Szanownych PT Czytelników proszę w tym miejscu o spokój i brak chichotów: wtajemniczeni zorientują się, że dzisiejszy cyfrowy zegarek na rękę ma większą moc obliczeniową od tego cudu techniki. Ale opisywane tu wydarzenia rozgrywały się ponad pół wieku temu; i jedyną zasadną refleksją w tym momencie jest zaduma nad ogromem postępu technicznego ostatnich lat…

Rysunek 1: XYZ – widok ogólny. Obsługa przy pulpicie sterującym.

XYZ, zbudowany przez zespół kierowany przez doc. dr inż. Leona Łukaszewicza (dziś emerytowanego profesora; w skład zespołu wchodzili Antoni Mazurkiewicz, Zdzisław Pawlak, Jerzy Fiett, Zygmunt Sawicki, Jerzy Dańda, oprogramowanie robili Antoni Mazurkiewicz, Jan Borowiec, Krzysztof Moszyński, Jerzy Swianiewicz, Andrzej Wiśniewski), był konstrukcyjnie twórczą kompilacją kilku maszyn. Jego organizacja logiczna była wzorowana na mocno uproszczonej amerykańskiej maszynie IBM 701 z roku jeszcze 1952, ale elektronika – już do niej nie nawiązywała, lecz korzystała z dynamicznych przerzutników radzieckiej  maszyny M-20, wymagających dwa razy mniej lamp. Konstrukcja przerzutników i bramek wywodziła się z wspomnianej wyżej maszyny EMAL, ale użyte w EMAL-u diody próżniowe zastąpiono w XYZ germanowymi. Z maszyny EMAL po udoskonaleniu pochodziła także pamięć operacyjna, której poświęcę kilka słów niżej.

Mówiąc najkrócej – XYZ był dynamiczną maszyną szeregową, liczącą w arytmetyce binarnej. Oczywiście, można było wprowadzać dane do obliczeń w „zwykłej” postaci dziesiętnej, ale przed rozpoczęciem przetwarzania musiały one być przetłumaczone na układ dwójkowy za pomocą specjalnego programu. Podobnie wyniki wydawane przez urządzenia wyjściowe programowo przekształcano na system dziesiętny.

Podstawowym układem logicznym maszyny  był dynamiczny przerzutnik na jednej triodzie (połówce lampy elektronowej) oraz diodowo-ferrytowe bramki OR oraz AND, składające się z transformatora impulsowego i ostrzowych diod germanowych.

Rysunek 2: Konsola sterownicza XYZ

Pamięć?

Maszyna początkowo nie miała stałej pamięci, tylko RAM oparty konstrukcyjnie na opóźnieniu ultradźwięku w rurze wypełnionej rtęcią. Pół wieku temu, debiutując dziennikarsko w nieistniejącym dziś miesięczniku „Problemy”, pisałem o tej pamięci tak (proszę zwrócić uwagę na współczesne wytłuszczenia, podkreślające cechy, które dziś uznalibyśmy za… zabawne):

Nie zatrzymując się specjalnie nad szcze­gółami konstrukcji XYZ, omówimy jedynie obszerniej pamięć. Jest ona w maszynie na­szej dwojaka: statyczna i dynamiczna. Pa­mięć statyczna — to wirujący bęben, pokry­ty analogiczną substancją jak taśmy do ma­gnetofonu. Liczby i rozkazy są na nim za­pamiętywane też na tej samej zasadzie, co w magnetofonie. Jest to pamięć trwała i po­jemna — zawiera bowiem miejsce na 8192 liczby 36-bitowe. Jej wadą jest jednak nie­duża (w porównaniu z działaniem maszyny) szybkość. Dlatego też nie można jej używać w bezpośrednim sprzężeniu z układami li­czącymi, używa się też jej raczej w charak­terze magazynu. Natomiast pamięć dynami­czna jest bardzo szybka, ale mało pojemna — jej więc używa się bezpośrednio przy wykonywaniu obliczeń. Pamięć dynamiczna jest rozwiązana konstrukcyjnie bardzo pomysłowo. Poniższy rysunek przedstawia za­sadę jej działania:

 

Rysunek 3: Schemat budowy pamięci XYZ

 

Ciąg impulsów przedstawiający liczbę wpro­wadza się przez urządzenie A do rury rtę­ciowej (tzn. wypełnionej rtęcią) poprzez kry­ształek kwarcu K, grający rolę generatora impulsów ultradźwiękowych. Generator ten zamienia impulsy elektryczne na ultradźwię­kowe, które stosunkowo powoli przepły­nąwszy przez rurę zostaną na drugim jej końcu odebrane przez odbiornik B, przetworzone ponownie na impulsy elektryczne i wzmocnione przez wzmacniacz V. W tym czasie urządzenie A zamknie obwód (linia kreskowana) i w ten sposób ciąg impulsów zostaje ,,uwięziony” w rurze. W razie po­trzeby sygnał sterujący otworzy drogę i licz­ba „spłynie” do układów liczących.

Szybka pamięć, szybkie liczenie…

XYZ wykonywał 650-4500 dodawań i 350-500 mnożeń na sekundę. Jego 18-megabitowa (tak jest!) pamięć operacyjna miała średni czas dostępu 0,4 ms (milisekundy!), zaś bębnowa była jeszcze pięćdziesięciokrotnie wolniejsza. Pamięć operacyjna to była w dodatku wielka stalowa szafa, a bębnowa też nie była mała (no, powiedzmy – była wielkości lodówki…). Trudno to sobie zapewne wyobrazić dzisiejszemu użytkownikowi peceta, który wie doskonale, jak wygląda i jak jest maleńki współczesny moduł pamięci…

I jeszcze jedno: średni czas bezawaryjnej pracy maszyny wynosił… 50 minut. Oznacza to, że raz na godzinę mniej więcej proces obliczeniowy się przerywał, a dyżurny technik musiał biec z zapasowym panelem w ręce, by uszkodzenie usunąć.

 

Rysunek 4: Zapasowy wymienny panel XYZ

Ale to „ustrojstwo”, w którym tkwiło 400 lamp elektronowych i 2000 diod, liczyło. I to wykonywało obliczenia całkiem poważne i o sporym znaczeniu naukowym i praktycznym. Wprawdzie rozwiązanie – dajmy na to – układu dwudziestu algebraicznych równań liniowych z dwudziestoma niewiadomymi zajmowało jednak trochę czasu, ale czas ten – w porównaniu do czasu niezbędnego do rozwiązania zadania za pomocą zwykłego arytmometru był i tak śmiesznie mały. I proszę mi nie mówić, że dzisiaj trwa to przy użyciu jakiegoś programu  „Mathematica” czy innej ”Macsimy” moment.

Rysunek 5: Wnętrze szafy pamięci XYZ, widok na rury rtęciowe

XYZ pracował więc na rzecz – na przykład – rolnictwa, oceniając wyniki złożonych doświadczeń rolniczych. Pracował dla medyków, wyliczając wyniki testów, dokonywanych na lekach. Był także używany do ściśle tajnych obliczeń wojskowych. Próbowano go użyć – bez powodzenia, bo problem okazał się od strony czysto teoretycznej wówczas zbyt jeszcze trudny – do rozpoznawania odcisków palców.

Programowanie

Przede wszystkim jednak XYZ pracował na rzecz swoich następców. Na samym początku bowiem programowanie maszyny było dość trudne (współczesny programista powiedziałby zapewne: potwornie trudne, ale współczesny programista nie widział nigdy programu dla nieco później skonstruowanej w Politechnice Warszawskiej maszyny UMC; to dopiero był niewyobrażalny koszmar!): trzeba było oddzielnie zapisywać każdą operację matematyczną i logiczną w specjalnym kodzie, w którym na przykład ciąg znaków MRDK 0001 oznaczał dodanie do zawartości tzw. akumulatora (specjalnego rejestru w maszynie) liczby, zawartej w komórce pamięci o numerze 1. Oznacza to, że programista musiał dokładnie widzieć wszystko o każdym dodawaniu, mnożeniu czy dzieleniu jakichkolwiek dwóch liczb i znać dokładnie ich usytuowanie w komputerze…

A w dodatku wspomniany wyżej kod… był już poważnym udoskonaleniem wykorzystywanego na początku jako jedyny tak zwanego „języka maszyny”, w którym wszystko – i polecenia i liczby – było zapisane w postaci zwykłych liczb binarnych, to jest długich ciągów zer i jedynek.

Przy okazji: ktoś, kto ma odrobinkę większe od laika pojęcie o programowaniu zorientuje się natychmiast, że mówimy tu o tak zwanym assemblerze. Ten stosowany w obsłudze XYZ nazywał się SAS (System Adresów Symbolicznych). Napisany został (bo assembler sam jest rodzajem programu przecież…), oczywiście, w języku maszyny – i na XYZ był sprawdzany i testowany.

Czytelnik z łatwością pojmie, ze popełnianie błędów przy użyciu takich „narzędzi” programistycznych, jak język maszyny czy nawet SAS,  jest  po prostu nieuniknione. To też „odpluskwianie” programu, czyli testowanie poprawności jego działania było czynnością potwornie męcząca i niebywale czasochłonną.

Dopiero nieco później, chyba w roku 1960, opracowany został – właśnie przy użyciu maszyny XYZ – tak zwany „autokod” o nazwie SAKO (System Automatycznego Kodowania) , czyli język programowania wyższego rzędu, pisanie w którym przypomina już doznania towarzyszące programowaniu w jakimś Pascalu, czy języku z rodziny C… Nawiasem mówiąc, przypominał on trochę legendarny FORTRAN, choć polecenia (CZYTAJ, PISZ, TEKST…) miały polskie brzmienie.

Tyle wspomnień o tej maszynie w tym miejscu. Mam w pamięci niezliczone anegdoty o niej; jak choćby o tym, jak musieliśmy oprowadzać walące do Instytutu Matematyki wówczas drzwiami i oknami wycieczki amatorów obejrzenia „polskiego mózgu elektronowego”, jak pisała prasa.  Pewnego razu weszła wycieczka pań ze Związku Literatów; jedna z nich z nabożnym wręcz szacunkiem spytała siedzącego przy konsoli sterowniczej Kamosza (dziś: prof. dr Krzysztof Moszyński), co robi? Wściekły Kamosz odparł:

– Wstyd powiedzieć, proszę pani: macierz odwracam…

Rysunek 6: Doc. K. Bochenek i Kamosz

Oczywiście, rozwiązywał jakiś układ równań metodą obliczania współczynników macierzy odwrotnej. Ale dama spiekła srogiego raka, wyobraziwszy sobie jakieś „bógwico”.

Powiem jeszcze, że nie obeszliśmy się z tą maszyną godnie. Pracowała dzielnie kilka lat; potem ją po prostu zdemontowano. Tylko niektóre jej elementy zdołano uratować; są dziś w warszawskim Muzeum Techniki.

Bogdan Miś

Print Friendly, PDF & Email

Jedna odpowiedź

  1. Robson 2011-11-15
WP Twitter Auto Publish Powered By : XYZScripts.com