Przejdź do treści Przejdź do stopki
Doktoranci - aktualności

„Ciekawe komentarze jednego z pionierów informatyki” – felieton

„Ciekawe komentarze jednego z pionierów informatyki” – felieton

Skrócona wersja poniższego felietonu autorstwa prof. Ryszarda Tadeusiewicza została opublikowana w „Dzienniku Polskim” oraz „Gazecie Krakowskiej” 25.2.2022 r.

Gazety w dniu 25.02.2022 pełne były wiadomości dotyczących sytuacji na Ukrainie, więc w Gazecie Krakowskiej, gdzie zwykle moje felietony były drukowane na drugiej stronie, mój tekst wcale się nie ukazał. Ale w Dzienniku Polskim był wydrukowany, dlatego jego rozszerzoną wersję przedstawiam także czytelnikom Aktualności AGH.

Informatyka jest działem nauki, techniki i działalności gospodarczej, który w ciągu 70 lat zdominował wszystko. Świat tak bardzo się przekształcił pod wpływem rozpowszechnienia komputerów, że niektórzy twierdzą, iż trzeba zmienić używany od setek lat podział historycznych er na B.C.A.C. (tłumaczonych jako Before Christ oraz After Christ - Przed Chrystusem i Po Chrystusie). Obecnie skróty te, jak żartobliwie argumentują entuzjaści informatyki, powinny być tłumaczone jako Before Computer oraz After Computer.

Rzeczywiście, nawet zajmując się profesjonalnie informatyką od ponad 50 lat jestem zdumiony tym, jak bardzo stała się ona ważna. Mamy na wszystkich uczelniach wielką liczbę kandydatów na studia informatyczne, obserwujemy na rynku pracy bardzo wysokie zarobki oferowane informatykom, coraz więcej spraw zawodowych i prywatnych załatwiamy korzystając z narzędzi informatycznych.

Żeby nam się wszystkim nie poprzewracało w głowach od tych sukcesów – warto przypomnieć kilka mądrych komentarzy opublikowanych w latach 60. i 70. przez jednego z twórców informatyki o trudnym nazwisku Edsger Wybe Dijkstra. Nie ulega wątpliwości, że ten Holender wniósł ogromny wkład w budowę fundamentów, na których stoi dziś ogromni gmach informatyki, ale miał też dystans do tego co robił i niezwykle trafnie wyrażał swoje wątpliwości, które pozostają aktualne do dziś. Przytoczę kilka z nich.

W początkowych latach rozwoju informatyki problemem były błędy w programach. Istniała konieczność pisania wielu programów dla wielu różnych zastosowań – ale ludzie są omylni, a najdrobniejszy błąd w programie może mieć bardzo doniosłe skutki. Kiedy uczyłem studentów programowania w języku FORTRAN, opowiadałem im o najdroższej kresce w historii świata. W dniu 22 lipca 1962 roku z przylądka Canaveral na Florydzie wystrzelono ogromną rakietę, która miała zanieść próbnik Mariner 1 na orbitę planety Wenus. Rakieta zawierała ogromne ilości paliwa, bo miała lecieć bardzo daleko. Ale zaraz po starcie zaczęła się zachowywać nieprawidłowo i mogła runąć jako góra ognia na zamieszkane wybrzeże Florydy. Kontrolerzy lotu w 293 sekundzie wydali rozkaz samozniszczenia rakiety. W gigantycznym wybuchu zginął próbnik Mariner i ponad miliard dolarów włożonych w budowę rakiety. Przyczyną był błąd w programie sterującym lotem rakiety, napisanym w FORTRANE. Program ten liczył kilkaset tysięcy linii kodu, ale w jednej z nich zapomniano dopisać jednej małej kreski. Kosztowna to była kreska!

Dijkstra zajął się problemem błędów w programach bardzo systematycznie i wykazał, że źródłem wielu z nich (chociaż nie wspomnianej wyżej „najdroższej kropki”) było używanie w programach tak zwanej instrukcji skoku (go to). Wszczął całą kampanię przeciwko jej stosowaniu i doprowadził do tego, że w nowych językach programowania została ona całkowicie wykluczona. W późniejszych pracach pisał też:

„Sztuka programowania to sztuka organizowania złożoności, opanowania mnogości i unikania chaosu”.

To stwierdzenie stało się drogowskazem dla całych pokoleń programistów. Do dziś!

Dijkstra był konsekwentnym głosicielem tezy, że dobry program musi być maksymalnie czytelny dla ludzi, którzy chcą go sprawdzić. Prawie każdy programista przechodzi przez etap nadmiernej pewności siebie, kiedy pisze bardzo „sprytne” programy, które dzięki różnym błyskotliwym sztuczkom zawierają mało kodu, a robią bardzo skomplikowane rzeczy. Jest to jednak „stąpnie po kruchym lodzie”, bo w ten sposób powstają błędy. W związku z tym mądrzy i doświadczeni programiści sformułowali zasadę KISS (Keep It Simple Stupid!), którą w Polsce zamieniliśmy na BUZI (Bez Udziwnień Zapisuj Idioto).

Wielką zasługą Dijkstry było zwrócenie uwagi na małą skuteczność powszechnie używanej metody kontroli poprawności programów, polegającej na ich testowaniu. Metoda ta polega na próbnym uruchamianiu programu i na zlecaniu mu rozwiązana zadania, którego poprawny wynik jest znany. Jeśli program poda ten poprawny wynik – to zda egzamin pozytywnie. Jeśli nie – to wiadomo, że jest błąd. Dijkstra popsuł dobre samopoczucie zwolennikom testów dowodząc, że pozytywny wynik testu dla jednych danych wcale nie gwarantuję, że program dostarczy poprawnych wyników też dla wszystkich innych danych. Z własnej praktyki mam setki przykładów potwierdzających tę regułę!

Więc kolejny komentarz Dijkstry:

„Testowanie może pokazać obecność błędu, ale nigdy nie udowodni, że go nie ma”

też stał się na wiele lat drogowskazem programistów!
 


Wykaz wszystkich publikacji popularnonaukowych prof. Tadeusiewicza wraz z odnośnikami do ich pełnych wersji

 

Stopka