W drugiej połowie lat 70-tych wraz z Markiem Manieckim wprowadziliśmy do programu studiów na kierunku informatyka Wydziału Elektroniki Politechniki Warszawskiej wykład z Systemów Operacyjnych, a potem uzupełniający obieralny wykład z Programowania Współbieżnego. Po dwóch semestrach mieliśmy już dobrze opracowane notatki do wykładów, ale studenci nie mieli, oprócz własnych notatek, tekstów do nauki. Na wszelki wypadek przypominam, że internetu jeszcze nie było. Postanowiliśmy zatem napisać podręcznik-monografię, opisujący zasady programowania współbieżności oraz wykonywania współbieżnego i równoległego programów.

Już wtedy programy mogły być wieloprocesowe, gdzie każdy z procesów mógł być wykonywany współbieżnie w stosunku do innego procesu, w rzeczywistości lub naprzemiennie, zależnie od liczby procesorów. Ze względu na wspólne dla danego programu zasoby (obszary danych, urządzenia), konieczne było synchronizowanie fragmentów sekwencji działania tych procesów. Z czasem dodano pojęcie wątków, części instrukcji wykonywanych wspólnie w ramach danego procesu, podlegających synchronizacji. Pozostał przy tym podział programu oraz aplikacji na procesy tworzone hierarchicznie… No dobrze, może wystarczy tej wiedzy.

Chcę przy tym podkreślić, że nasza wiedza nie była tylko teoretyczna. Uczestniczyliśmy w zespole wykonującym wieloprocesowy system operacyjny dla prototypu minikomputera UMC-20, który miał być wielostanowiskowym rejestratorem danych na taśmach magnetycznych (KRTM-20). Niestety prototyp nie wszedł do produkcji, ale doświadczenie praktyczne w pisaniu takich systemów uzyskaliśmy. Jeden z nas miał też okazję programować w Concurrent Pascalu na maszynie PDP-10 na Uniwersytecie w Aarhus. Zebraliśmy też sporo literatury zagranicznej, co też nie było proste w tamtych czasach.

Jak na tamte czasy i trudności z dostępem do papieru (tak, tak) dość szybko Wydawnictwo Naukowo Techniczne (WNT) w 1983 roku wydało naszą (Wacław Iszkowski, Marek Maniecki) książkę pod tytułem „Programowanie Współbieżne” w tzw. serii z jamnikami w nakładzie 3000 egzemplarzy.

W podręczniku opisaliśmy współbieżność, proste i strukturalne metody synchronizacji, operacje semaforowe i monitory. Analizowaliśmy kilka klasycznych przykładów, w tym problem pięciu filozofów (kto go nie zna, nie może się nazywać informatykiem… no dobrze, żartuję). Pokazaliśmy język Concurrent Pascal na podstawie książki Per Brinch Hansena „The Architecture of Concurrent Pascal”. Książkę tę zamówiliśmy do zakupienia. Biblioteka Główna PW dość szybko sfinalizowała transakcję, ale książka zniknęła. Dopiero po kilku tygodniach odnalazł ją jeden z naszych studentów w bibliotece na Wydziale Architektury! Opisaliśmy też język Modula opracowany przez autora języka Pascal, N. Wirtha. Zrobiliśmy przegląd kilku innych języków programowania współbieżnego (raczej powinno być współbieżności), niestety jeszcze bez wiedzy o języku Ada. Z teorii wyjaśniliśmy Sieci Petriego oraz Model automatowy.

W tych szarych, smutnych czasach początku lat 80-tych czasem zadawaliśmy sobie pytanie, po co uczymy naszych studentów takich zaawansowanych metod i struktur oprogramowania komputerów, dla których w praktyce w Polsce nie było zastosowania. A przepraszam – były dwie instalacje superkomputera CDC 6400, każdy z 10 procesorami centralnymi oraz procesorami peryferyjnymi, ale one działały w trybie wielozadaniowym, wykonując równolegle kilka programów równocześnie. Część studentów również zadawała sobie i nam podobne pytania – „a po co nam to wiedzieć, do czego może mi się to przydać?”.