Historia informatyki, którą staram się przybliżyć państwu w kolejnych felietonach tej serii, składa się z historii rozwoju sprzętu (hardware) i oprogramowania (software). O historii rozwoju sprzętu komputerowego pisałem w częściach od 1 do 13 felietonów tej serii, natomiast kolejne części prezentowały historię rozwoju metod i narzędzi programowania (w szczególności języków algorytmicznych). Dziś chcę się zająć wstydliwą częścią historii programowania, to znaczy opowiedzieć o błędach popełnianych w programach i ich konsekwencjach tychże błędów.
Skąd się wzięła pluskwa?
Od początku rozwoju informatyki błędy w programach stanowiły poważny problem. Istniała konieczność pisania wielu programów dla wielu różnych zastosowań – ale ludzie są omylni, dlatego błędy w programach zdarzały się dość często. Obecnie, wiedząc o tym, stosujemy takie języki programowania, żeby prawdopodobieństwo popełnienia błędu uczynić możliwie jak najmniejszym. Ale na początku, gdy programowano w językach maszynowych (vide „Początki programowania”, „Rzecz o Historii” z 17 grudnia 2021 r.) i zaczęto się zmagać z pierwszymi błędami w programach, zaczęto też nazywać owe błędy pluskwami (ang. bug). Wiadomo, że tę nazwę wprowadziła do języka informatyki Grace Hopper. O tej niezwykłej kobiecie pisałem w tej samej części (nr 14) niniejszej serii felietonów, co więcej – wspominałem o niej potem wielokrotnie w dalszych częściach serii, ponieważ wiele fundamentalnych elementów współczesnej informatyki jest wynikiem jej awangardowych koncepcji i pionierskich dokonań. To właśnie ona sprawiła, że błąd w programie komputerowym w anglojęzycznej literaturze nazywany jest bug, co w języku polskim zwykło się zastępować słowem pluskwa.
Wyjaśniano tę nazwę na różne sposoby. Między innymi wiedząc, że twórczyni tej nazwy Grace Hopper była admirałem marynarki USA, fantazjowano, że dokuczliwe błędy w programach skojarzyły się pani admirał z pluskwami, które niekiedy pojawiały się na okrętach US Navy i bardzo się dawały we znaki. Na okrętach wykonuje się wtedy operację odpluskwiania (debugging) – i tak też nazwano działania zmierzające do wykrycia oraz usunięcia błędów z programu komputerowego.
Okazuje się, że prawdziwe jest inne wytłumaczenie pochodzenia nazwy „bug” (ogólnie owad, niekoniecznie pluskwa). Otóż gdy Grace pracowała z komputerem Mark II, w pewnym momencie zaczął się on dziwnie zachowywać. Popełniał błędy w obliczeniach i nie słuchał rozkazów. Było to dokładnie 9 września 1947 r. o godz. 15.25. Zaczęto szukać przyczyny i o 15.45 znaleziono ją: do wnętrza maszyny dostała się ćma i zablokowała działanie przekaźnika nr 70 w panelu F! Incydent opisano w dzienniku pracy komputera, przyklejając dodatkowo „winowajczynię” (ćmę) do odpowiedniej strony – co można zobaczyć na rysunku w internecie. Ćmę usunięto, a samą czynność Grace nazwała „usunięciem owada” (debugging). Znam tę historię i tu dla porządku ją przytaczam, chociaż jako programista z 30-letnią praktyką zaciekłego szukania błędów w programach (moich własnych oraz moich studentów) bardziej skłaniam się do wiązania słowa bug z dotkliwie gryzącymi pluskwami, a nie z niewinną i sympatyczną ćmą!
Kosztowny brak jednej kreski
Każdy błąd w programie jest czymś bardzo niekorzystnym. Przecież nie używamy komputerów dla zabawy, tylko nakazujemy im określone obliczenia po to, żeby w oparciu o wyniki tych obliczeń podjąć jakieś konkretne działania. Dostajemy wynik, wierzymy, że jest prawidłowy, działamy zgodnie z owym wynikiem – a rezultat tego działania jest odmienny od oczekiwanego. Bo w programie był błąd, podany przez komputer wynik był nieprawidłowy, a podjęte na jego podstawie działanie fatalnie się skończyło.