
Bezpłatny kurs Pythona ➞ Mini-kurs dla początkujących i doświadczonych programistów. 4 ciekawe projekty w portfolio, bezpośrednia komunikacja z prelegentem. Kliknij i dowiedz się, czego możesz się nauczyć na tym kursie.
Dowiedz się więcejNiklaus Wirth, przyszły światowej sławy programista, urodził się w 1934 roku w Winterthur w Szwajcarii, jako syn nauczyciela. Od najmłodszych lat interesował się modelarstwem samolotów i budową rakiet, a nawet próbował produkować paliwo rakietowe w szkolnej piwnicy. Ta pasja stała się fundamentem jego późniejszej kariery w programowaniu i tworzeniu języków programowania. Wirth wniósł znaczący wkład w rozwój informatyki, szczególnie poprzez swoje innowacje w algorytmach i programowaniu systemowym.
Marzenia o niebie towarzyszyły Wirthowi przez całe życie. Był tak mocno przywiązany do tego pragnienia, że jego kolega, profesor Donald Knuth, zauważył kiedyś: „Niklaus zawsze chciał budować samoloty, a języki programowania i mikrokomputery wykorzystywał jedynie jako narzędzia do osiągnięcia tego celu”. Te słowa podkreślają, jak ważna dla Wirtha była idea tworzenia maszyn latających i jak wykorzystał swoją wiedzę z zakresu programowania do realizacji swoich marzeń.

Młody pasjonat lotnictwa wkrótce zaczął opracowywać systemy sterowania dla modeli samolotów, co rozbudziło w nim pasję do elektroniki i programowania. Ta zmiana była ważnym etapem w rozwoju firmy, otwierając nowe horyzonty w świecie modelarstwa lotniczego i technologii.

W 1954 roku Wirth rozpoczął studia w Szwajcarskim Federalnym Instytucie Technologii w Zurychu (ETH). Następnie kontynuował naukę w Kanadzie i Kalifornii, gdzie z sukcesem obronił rozprawę doktorską na temat języka programowania Algol. Ten okres w jego życiu stał się fundamentalny dla dalszego rozwoju jego kariery w dziedzinie informatyki i programowania.
Co było nie tak z językiem Algol 68
Wkrótce Wirth rozpoczął pracę w komitecie IFIP, gdzie pracował nad standaryzacją języka programowania Algol. W tym czasie język Algol 60 cieszył się znaczną popularnością w Europie zarówno wśród programistów, jak i jako sposób opisu algorytmów w badaniach naukowych. Język ten miał jednak wiele wad i pilnie wymagał rewizji i udoskonalenia.

Niklaus i Charles Hoare, naukowiec z Uniwersytetu Oksfordzkiego, opracowali język programowania Algol W. Język ten był ulepszoną wersją Algola, która korygowała niedociągnięcia oryginału i dodawała ważne funkcje. Chociaż projekt otrzymał pozytywne recenzje od wielu naukowców, komisja ds. standardów programowania ostatecznie go odrzuciła. Algol W wpłynął jednak na dalszy rozwój języków programowania i stał się podstawą wielu późniejszych osiągnięć.
W 1968 roku wprowadzono nowy język programowania, Algol 68. Język ten wywołał spore kontrowersje wśród programistów, ponieważ nawet doświadczeni programiści zauważyli jego złożoność i objętość. Partner Niklausa Wirtha, Charles Hoare, określił Algol 68 jako niejasny i zbyt ambitny, podkreślając jego złożoność i braki w percepcji. Mimo to Algol 68 wpłynął na rozwój języków programowania i stał się ważnym kamieniem milowym w historii informatyki.
Obliczanie daty następnego dnia w języku programowania Algol 68 jest ważnym zadaniem. Aby określić następną datę, musimy wziąć pod uwagę liczbę dni w miesiącu i przejście do następnego miesiąca lub roku. Algol 68 pozwala nam wykorzystać proste operacje arytmetyczne i warunki do implementacji tej logiki. Najpierw musimy określić bieżącą datę, w tym dzień, miesiąc i rok. Następnie, zwiększając dzień o jeden, możemy sprawdzić, czy przekracza on liczbę dni w bieżącym miesiącu. Jeśli dzień przekracza maksymalną liczbę dni, powinniśmy ustawić go na pierwszy dzień następnego miesiąca i, w razie potrzeby, zwiększyć rok, jeśli miesiąc jest równy 1.
Należy również uwzględnić lata przestępne, w których luty ma 29 dni. Algol 68 może implementować sprawdzanie lat przestępnych, aby poprawnie obliczyć datę następnego dnia. Zatem prawidłowe obliczenie daty następnego dnia w Algolu 68 wymaga uwzględnienia wielu czynników, takich jak liczba dni w miesiącu i lata przestępne, co czyni to zadanie interesującym i pouczającym.
Niektórzy członkowie komitetu, w tym Wirth, wyrazili krytykę Algola 68, wskazując na jego niedociągnięcia jako narzędzia do niezawodnego tworzenia złożonych programów. W swoim raporcie zauważyli, że język ten nie radzi sobie z zadaniami, do których został zaprojektowany. Komitet IFIP nałożył jednak embargo na dokument, co podniosło kolejne kwestie dotyczące przejrzystości i obiektywizmu oceny języków programowania.
Algol 68 nie osiągnął popularności Algola 60 i nie wyparł tak powszechnie używanych języków programowania, jak Fortran i COBOL. W środowisku akademickim uznano ją za zbyt skomplikowaną i nieefektywną, co doprowadziło do jej zarzucenia. Pomimo innowacyjnych koncepcji, Algol 68 nie zdobył zaufania programistów i nauczycieli, co skutkowało jego ograniczonym przyjęciem.

Jak narodził się Pascal
Do 1967 roku Niklaus Wirth pracował na Uniwersytecie Stanforda, gdzie opracował język PL360 dla IBM System/360. Następnie powrócił na Uniwersytet w Zurychu, gdzie wkrótce objął stanowisko profesora informatyki. Okres ten stał się jednym z najbardziej produktywnych w jego karierze, naznaczonym znaczącymi osiągnięciami w dziedzinie programowania i rozwoju języków programowania.
W Szwajcarii Wirth dążył do stworzenia odpowiednika Uniwersytetu Stanforda. Aktywnie angażował się w działalność naukową i organizacyjną, z powodzeniem wprowadzając tradycje i zwyczaje Stanforda do ETH. Podniosło to jakość kształcenia i badań, a także przyciągnęło uwagę szwajcarskiej uczelni na arenie międzynarodowej. W wyniku pracy Wirtha ETH stała się centrum innowacji i zaawansowanych technologii, co przyczyniło się do rozwoju społeczności naukowej w kraju.
Wirth nie przepadał ani za Algolem, ani za innymi językami programowania istniejącymi w tamtym czasie. Uważał je za zbyt złożone i nieefektywne. Jego zdaniem języki te charakteryzowały się redundancją i brakiem logiki, co komplikowało proces programowania i zmniejszało produktywność programistów.
W latach 60. i 70. XX wieku języki programowania postrzegano jako środek komunikacji między ludźmi a maszynami, co nadawało im znaczenie filozoficzne. Z kolei Niklaus Wirth uważał, że języki programowania powinny być ściśle ustrukturyzowanymi zbiorami reguł sterowania komputerami. Jego praca zaowocowała stworzeniem języka Pascal, nazwanego na cześć wybitnego fizyka Blaise'a Pascala. Rozwój Pascala był ważnym krokiem w ewolucji programowania, ponieważ język ten zapewniał przejrzystość i przejrzystość pisania kodu, co ułatwiało efektywniejszą interakcję między programistami a komputerami.
Podczas pracy w IFIP Niklaus Wirth poznał wybitnych naukowców Edsgera Dijkstrę i Tony'ego Hoare'a. Opierając się na zasadach programowania strukturalnego zaproponowanych przez Dijkstrę i matematycznych podstawach opracowanych przez Hoare'a, Wirth stworzył język programowania Pascal. Język ten opierał się na jego własnych osiągnięciach, w tym na języku Algol W, który integrował najlepsze praktyki programistyczne i zwiększał wydajność tworzenia oprogramowania. Pascal stał się ważnym narzędziem w nauczaniu programowania i wywarł znaczący wpływ na kolejne języki, przyczyniając się do popularyzacji strukturalnego podejścia do tworzenia oprogramowania.

W 1968 roku Niklaus Wirth i jego zespół opracowali koncepcję języka programowania Pascal, a następnie rozpoczęli tworzenie kompilatora. Stworzyli maszynę P, która wykorzystywała pośredni kod P, co umożliwiło Pascalowi przenoszenie się na różne platformy. Co ciekawe, kompilator Pascala został napisany w samym Pascalu. Później James Gosling wykorzystał idee maszyny P do stworzenia języka Java i wirtualnej maszyny Java (JVM), co było ważnym krokiem w rozwoju programowania.
W 1971 roku Niklaus Wirth przedstawił język programowania Pascal, który stał się znany jako język kompaktowy, obsługujący programowanie strukturalne i dane strukturalne. Głównym celem rozwoju Pascala było nauczanie studentów podstaw programowania zawodowego, co czyniło go idealnym dla instytucji edukacyjnych. Język ten okazał się jednak również bardzo skuteczny w rozwiązywaniu złożonych problemów praktycznych, co przyczyniło się do jego popularności w różnych obszarach tworzenia oprogramowania. Pascal nadal jest ważnym narzędziem w nauczaniu programowania i tworzeniu rozwiązań programistycznych.
Przykład kodu drukującego „Hello, world.” w języku programowania Pascal wygląda następująco:
«`pascal
program HelloWorld;
begin
writeln(‘Hello, world.’);
end.
«`
Ten prosty przykład demonstruje podstawową składnię języka Pascal, gdzie program rozpoczyna się od słowa kluczowego `program`, po którym następuje nazwa programu. W blokach `begin` i `end` znajduje się polecenie `writeln`, które odpowiada za wyświetlanie tekstu na ekranie. Wykorzystanie Pascala do nauczania podstaw programowania pomaga rozwijać logiczne myślenie i zrozumienie struktury kodu.
W ciągu zaledwie dwóch lub trzech lat język programowania Pascal stał się bardzo popularny wśród programistów i nauczycieli. W latach 90. XX wieku był uważany za jeden z najpopularniejszych języków algorytmicznych. Jego prostota i strukturalne podejście sprawiły, że był idealnym wyborem do nauczania programowania, a także do tworzenia różnorodnych aplikacji. Pascal pozostaje ważną częścią historii programowania i stanowi podstawę wielu współczesnych języków programowania.
Inne projekty Wirtha: Modula-2 i Lilith
Niklaus Wirth kontynuował rozwój strukturalnych języków programowania, a jego kolejnym znaczącym osiągnięciem była Modula. Ten język programowania łączył modułowość i możliwości programowania równoległego, co czyniło go innowacyjnym jak na tamte czasy. Jednak pomimo swoich zalet, Modula nie zyskała powszechnej popularności w świecie programowania.
W 1977 roku naukowiec postanowił opracować kompletny system komputerowy, obejmujący osobistą stację roboczą, mikrokod, kompilator, system operacyjny i programy narzędziowe, mające na celu wygodę zarówno użytkowników, jak i programistów. Projekt ten nazwano Lilith i stał się ważnym krokiem w rozwoju technologii komputerowej. Lilith zademonstrował, jak mógłby wyglądać zintegrowany system, zdolny do zaspokojenia potrzeb użytkowników i programistów, co z kolei wpłynęło na późniejszy rozwój informatyki.
W tamtych czasach pomysł był prawdziwie rewolucyjny. Operatorzy wykonywali obliczenia na dużych komputerach mainframe, zapewniając użytkownikom dostęp za pośrednictwem terminali. Na jednym komputerze mogło pracować jednocześnie tylko dwóch lub trzech użytkowników, podczas gdy pozostali czekali na swoją kolej, aby przetworzyć dane. Model ten ograniczał szybkość działania i efektywność wykorzystania zasobów obliczeniowych, co sprawiło, że innowacje w dziedzinie informatyki stały się szczególnie istotne.

Pomysł na Lilith zrodził się w głowie Wirtha po wizycie w Xerox PARC w Kalifornii, gdzie zetknął się z koncepcją osobistej stacji roboczej. Zobaczył tam urządzenie z monitorem, myszą i oddzielnym dyskiem, pozwalające każdemu użytkownikowi korzystać z własnego komputera bez konieczności dzielenia się zasobami z innymi. To wrażenie wywarło ogromne wrażenie na Niklausie, który postanowił wdrożyć podobne rozwiązanie w swoim domu w Zurychu. W ten sposób Lilith stał się jednym z pierwszych komputerów osobistych, co miało znaczący wpływ na rozwój technologii i doświadczenia użytkownika.
W 1979 roku zespół inżynierów elektroników z Politechniki Federalnej w Zurychu (ETH) opracował komputer osobisty Lilith, który wykorzystywał cztery zestawy mikroprocesorów Am2901 i przetwarzał 16-bitowe słowa. Ten projekt był znaczącym krokiem w historii informatyki, demonstrując możliwości komputerów osobistych w dziedzinie przetwarzania danych.

Niklaus i jego zespół zajmowali się rozwojem języka ogólnego przeznaczenia do programowania systemów i aplikacji. Ważną częścią ich pracy był kompilator oraz system operacyjny dla Lilith. Stworzyli również narzędzia i pierwsze aplikacje demonstrujące możliwości tego języka. Rozwój języka ogólnego przeznaczenia otworzył nowe horyzonty w programowaniu, dostarczając programistom narzędzia do tworzenia wydajnych i wydajnych rozwiązań programistycznych. Język Modula-2 został opracowany w celu połączenia programowania aplikacji i systemów. Zawiera pseudomoduł SYSTEM, który jest przeznaczony do wykonywania operacji niskiego poziomu. Ta struktura języka pozwala na efektywne tworzenie zarówno aplikacji aplikacyjnych, jak i systemowych, zapewniając wysoki poziom abstrakcji i kontrolę nad zasobami. Znalezienie największego wspólnego dzielnika (NWD) w języku programowania Modula-2 jest ważnym problemem w dziedzinie arytmetyki matematycznej i programowania. Największy wspólny dzielnik dwóch liczb to największa liczba, przez którą obie liczby są podzielne bez reszty. Modula-2 może implementować algorytm Euklidesa do obliczania największego wspólnego dzielnika (NWD), który jest wydajny i prosty.
Aby zaimplementować ten algorytm, należy utworzyć funkcję przyjmującą dwie liczby całkowite jako parametry. Funkcja ta wykorzystuje podejście rekurencyjne, w którym NWD oblicza się poprzez podzielenie większej liczby przez mniejszą, a następnie zastąpienie większej liczby resztą z dzielenia, aż jedna z liczb stanie się zerem. Wynikiem będzie druga liczba, która w tym momencie będzie NWW.
Przykład kodu Modula-2 do znajdowania największego wspólnego dzielnika może wyglądać następująco:
«`
MODULE NWW;
PROCEDURE NWW(a, b: INTEGER): INTEGER;
BEGIN
IF b = 0 THEN
RETURN a;
ELSE
RETURN NWW(b, a MOD b);
END;
END NWW;
BEGIN
(* Przykład użycia *)
VAR result: INTEGER;
result := NWD(48, 18);
(* Wypisz wynik *)
END NWD.
«`
Ten kod pokazuje, jak prosta jest implementacja algorytmu znajdowania NWD w Modula-2. Używając takiej funkcji, programiści mogą łatwo zintegrować ją z bardziej złożonymi programami, które wymagają pracy z ułamkami, upraszczaniem liczb lub innymi działaniami matematycznymi.
System operacyjny Medos został stworzony dla Lilith, który obejmuje obsługę oprogramowania dla wyświetlacza i edytor tekstu z funkcjonalnym menu rozwijanym.
W 1980 roku studenci ETH zbudowali pierwsze 20 komputerów z 60. W 1982 roku komputery Lilith zostały podłączone do serwera i sieci opartej na sieci Ethernet. Wraz z wprowadzeniem drukarek laserowych Canon LBP-10, komputery Lilith stały się pierwszymi w Europie, które w pełni wykorzystały ich możliwości, w tym obsługę czcionek, grafiki, skanowanych obrazów i obwodów elektronicznych.
Wirth zauważył później, że gdyby szwajcarski przemysł komputerowy był w stanie w pełni wykorzystać potencjał Lilith, mógłby on zdobyć znaczące miejsce w historii technologii.
W 1984 roku Niklaus Wirth otrzymał Nagrodę Alana Turinga za opracowanie języków programowania Lilith i Modula-2. Nagroda ta jest uważana za odpowiednik Nagrody Nobla w dziedzinie informatyki i przyznawana za wybitne osiągnięcia w tej dziedzinie. Wirth jest znany ze swojego wkładu w projektowanie języków programowania, który odegrał kluczową rolę w rozwoju nowoczesnej technologii komputerowej.
Język programowania Modula-2 został wykorzystany do opracowania systemu operacyjnego OS/400 dla platformy IBM AS/400. W tym języku stworzono również kompilatory dla różnych komputerów osobistych, w tym PC i Macintosh, a także dla stacji roboczych IBM RS/6000 oraz komputerów mainframe IBM i SGI. Modula-2 demonstruje swoją wszechstronność i wydajność w tworzeniu oprogramowania dla różnych systemów komputerowych.
Pomimo swojej prostoty i wysokiej wydajności, język programowania Modula-2 nie był szeroko stosowany i nie był w stanie zastąpić swojego poprzednika, Pascala. Jedną z przyczyn tego może być to, że mało znany system Lilith nie był w stanie wywrzeć odpowiedniego wpływu na promocję języka.
W 1988 roku Niklaus Wirth i Jürg Gutknecht opracowali język programowania Oberon, oparty na Modula-2, do użytku na stacji Ceres. Później zaprezentowali ulepszoną wersję języka o nazwie Oberon-2, która rozszerzyła możliwości i funkcjonalność oryginalnego Oberona.
W 1996 roku naukowiec stworzył język programowania Lola, przeznaczony do opisu i modelowania cyfrowych obwodów elektrycznych. Język ten stał się niezbędnym narzędziem w projektowaniu i weryfikacji systemów cyfrowych, umożliwiając inżynierom precyzyjne określanie struktury i zachowania złożonych urządzeń elektronicznych. Lola ułatwia proces rozwoju i testowania, dzięki czemu zyskuje popularność w branży mikroelektroniki i logiki cyfrowej.
Pod koniec swojej kariery zawodowej Wirth, realizując swoją pasję z młodości, wspierał mechaników ETH w opracowaniu pierwszego prototypu drona. Nie tylko zaprojektował, ale także zaprogramował komputer pokładowy, znacząco optymalizując jego zużycie energii, zmniejszając je prawie dziesięciokrotnie.
W 1999 roku, w wieku 65 lat, Niklaus Wirth przeszedł na emeryturę. Poświęcił ponad trzy dekady pracy w Szwajcarskim Federalnym Instytucie Technologii (ETH), gdzie zajmował różne stanowiska, od profesora po dziekana Wydziału Informatyki. Później kierował również Instytutem Systemów Komputerowych ETH. Wirth jest znany ze swojego znaczącego wkładu w programowanie i projektowanie języków, co czyni go jedną z kluczowych postaci w historii informatyki.

Niklaus Wirth kontynuuje swoją pracę naukową i pozostaje znaczącą postacią w dziedzinie informatyki. Jest autorem licznych klasycznych podręczników i publikacji, które stały się fundamentem dla wielu studentów i specjalistów w tej dziedzinie. Wirth jest obecnie członkiem kilku akademii krajowych, a od 2007 roku posiada tytuł doktora honoris causa Rosyjskiej Akademii Nauk. Jego wkład w informatykę i metody nauczania nadal inspiruje nowe pokolenie badaczy i programistów.
Przeczytaj także:
- Pierwsza programistka – historia programowania
- Test: Do którego specjalisty IT z filmów jesteś podobny?
- Rekurencja wokół nas: Ludzie, katedry i kapusta romanesco

