Środkowe lata osiemdziesiąte ubiegłego stulecia zapoczątkowały erę komputeryzacji społeczeństwa. Komputery, zwane wtedy osobistymi, stawały się coraz bardziej dostępne posiadaczom dewiz. ZX Spectrum, Atari 800, Commodore C64 czy elitarna Amiga – głównie te marki zdominowały rynek nie tyle informatyczny, ile gier komputerowych. O komputerach klasy PC nikt wtedy nie słyszał, a dysponowały nimi jedynie centra obliczeniowe i niektóre zakłady pracy. Na Uniwersytet Śląski, gdzie studiowałem, pierwsze takie maszyny trafiły na początku lat 90-tych, wzbudzając w studenckiej braci powszechne niemal zainteresowanie. Dziś już mogę się przyznać, że wspólnie z kolegami w czasie jednego z wykładów kursowych masowo odwiedzaliśmy nowo założoną pracownię komputerową, poświęcając czas na grę w Blockouta (trójwymiarową wersję słynnego Tetrisa) zamiast zgłębiać tajniki geometrii różniczkowej.
Skądinąd wiadomym było, że wszystkie zagadnienia związane z komputerami określa się mianem informatyki. Tak więc jeśli któryś z pracowników biurowych nie potrafił włączyć komputera, o pomoc prosił informatyka. Gdy w drukarce skończył się papier, uprzejmy urzędnik odpowiadał: nie mogę pana obsłużyć, jutro przyjdzie informatyk i naprawi drukarkę. Tak więc osoby zajmujące się wszelkimi czynnościami związanymi z serwisem sprzętu komputerowego nazywane były informatykami. Często jednak nie potrafiły napisać choćby linijki kodu programu komputerowego. Zwróćmy jednak uwagę na podobieństwo do prowadzenia samochodu. Tę umiejętność, przynajmniej teoretycznie, powinna mieć każda osoba posiadająca prawo jazdy. Jednak naprawa pojazdu jest już domeną osób w tym kierunku wykształconych, czyli mechaników. Tak więc zadaniem tzw. informatyków nie było programowanie komputerów, lecz dbałość o prawidłowe działanie sprzętu.
Czym wobec tego jest informatyka? Powyżej używając wielkiego skrótu myślowego wskazałem programowanie komputera. Ta maszyna licząca wykonuje programy, które ktoś musi przecież stworzyć. Należy jednak oddzielić kodowanie programów, czyli ich zapis w postaci zrozumiałej dla komputera od tworzenia algorytmów, na których bazie powstały. Aby jednak zbudować algorytm, potrzebna jest często gruntowna znajomość matematyki.
W ten sposób dochodzimy do konkluzji, że informatyka jest częścią matematyki. Obecnie w polskiej klasyfikacji dziedzin i dyscyplin naukowych informatyka wymieniona jest w dziedzinie nauk ścisłych i przyrodniczych tuż obok matematyki. Same studia informatyczne w dużej części polegają na zgłębianiu królowej nauk. Przecież programy komputerowe w dużej mierze służą do obliczeń i jakoś należy je przeprowadzać. Tak więc studenci informatyki dogłębnie poznają m. in. analizę matematyczną czy algebrę liniową – choć oczywiście dotykam tu jedynie wierzchołka góry lodowej.
Program komputerowy służy do wykonania jakiegoś zadania. Na użytek tego felietonu w celach ilustracyjnych posłużę się prostym zadaniem dodania iluś liczb zapisanych na liście – mogą to być np. zarobki pracowników działu informatycznego. Najpierw należy zdać sobie sprawę z tego, w jaki sposób wykonać to dodawanie. Większość z nas postąpi intuicyjnie i nie zastanawiając się doda te liczby. Ale jak? Analiza problemu doprowadzi nas do konkluzji, że należy wziąć pierwszą liczbę z listy, następnie dodać do niej drugą liczbę, do otrzymanej sumy dodać następną z liczb i tak dalej aż do wyczerpania całej listy. Można to streścić w kilku punktach:
1. Przyjmij, że początkowo suma wynosi zero.
2. Do obliczonej już wartości sumy dodawaj kolejne liczby z listy.
3. Jeśli lista wyczerpała się, to zakończ obliczenia.
W ten sposób utworzyliśmy prosty algorytm. Właśnie tworzenie algorytmów jest domeną informatyki. Zauważmy, że nie było tu mowy o żadnym komputerze. Jeśli jednak chcielibyśmy dodać do siebie liczby zapisane na długiej liście, należałoby go użyć. Powyższy algorytm należy więc zakodować w postaci dla niego zrozumiałej. Znów posługuję się uproszczeniem, gdyż komputer posługuje się tylko zerami i jedynkami. W chwili obecnej wystarczy jednak zapisać ten algorytm w tzw. języku programowania wysokiego poziomu, w którym programy tworzy się w języku zbliżonym do naturalnego, takim jak Python czy C++. Mówimy o zakodowaniu programu, a zadanie to wykonują tzw. koderzy. Oni też są informatykami.
Na myśl przychodzi mi tu trójpodział władzy. Władza ustawodawcza to tworzenie algorytmu służącego do rozwiązania konkretnego problemu. Tworzy go osoba reprezentująca informatykę teoretyczną. Władza wykonawcza to zakodowanie algorytmu w jednym z języków programowania. Tym zajmują się właśnie koderzy. A gdzie miejsce na władzę sądowniczą? Każdy algorytm, ale i program komputerowy, musi zostać przetestowany. Należy sprawdzić czy jego zastosowanie prowadzi do otrzymania poprawnych wyników. Jednym z zagadnień informatyki teoretycznej jest dowodzenie poprawności algorytmów. Robi się to metodami matematycznymi. Natomiast testowanie programu komputerowego odbywa się w wielu aspektach. Np. programy obliczeniowe uruchamia się z danymi poprawnymi, ale i z niepoprawnymi tak, aby wykluczyć powstawanie błędów.
Do obu rodzajów informatycznych czynności potrzeba innego rodzaju umiejętności. Tworzenie algorytmów to szeroko rozumiana matematyka. Oczywiście w czasach współczesnych algorytmy tworzy się uwzględniając ograniczenia narzucane przez sprzęt komputerowy, np. dobierając odpowiednie postaci zapisu danych czy uwzględniając, ilu miejsc po przecinku sięga dokładność komputera. Ale ciągle sam sprzęt jest tu wtórny. Na scenę wkracza on dopiero w chwili, gdy zbudowany algorytm należy zakodować. To koderzy dysponują szczegółową wiedzą o możliwościach komputera, na którym wdrożony i zakodowany algorytm będzie działał. Natomiast dogłębna znajomość matematyki nie jest warunkiem koniecznym bycia dobrym koderem.
W swojej praktyce zawodowej bardzo często wykorzystuję komputery do przeprowadzenia potrzebnych mi obliczeń. Do dziś cenię sobie przedmiot podstawy informatyki, z którym zetknąłem się 36 lat temu na pierwszym roku studiów matematycznych. Poznawaliśmy tam zapomniany już język programowania Pascal, który – można powiedzieć – jest matką wszystkich języków tzw. wysokiego poziomu. Wiedza, którą zdobyłem, w niczym nie straciła na aktualności, a stosuję ją niemal codziennie będąc w swojej mikroskali nie tylko twórcą algorytmów oraz koderem, ale i serwisantem domowego sprzętu. Wspomniany przedmiot (w zamyśle twórców programu studiów) nie był najważniejszy na studiach matematycznych, ale po wielu latach stwierdzam, że dostarczył mi umiejętności niezbędnych w każdym okresie mojej pracy.
Większość z nas jest użytkownikami informatyki, wykorzystując komputery w codziennym życiu. Wiele lat temu odwiedziłem kolegów, którzy pracowali w założonej przez siebie firmie informatycznej, tworząc programy dla księgowości. Ci posadzili mnie przed ekranem komputera i prosili o przyjrzenie się ich dziełu. Bez żadnych instrukcji dokonałem pewnych obliczeń, a następnie zakończyłem działanie programu. Na pytanie jak to zrobiłem odpowiedziałem: przecież wszystko było napisane na pasku w dolnej części ekranu. Z dużym uznaniem koledzy stwierdzili, że jest to kultura informatyczna. Życzmy sobie, żeby ta kultura coraz bardziej rozpowszechniała się w społeczeństwie, a umiejętność tworzenia prostych algorytmów czy programów była tak powszechna, jak jazda na rowerze.
Szymon Wąsowicz – prywatny nauczyciel, mentor i trener. Popularyzator matematyki, autor bloga Być matematykiem (byc-matematykiem.pl). Tłumacz tekstów naukowych, autor lub współautor 35 prac naukowych opublikowanych w recenzowanych czasopismach o zasięgu międzynarodowym. Doktor habilitowany nauk matematycznych, profesor Akademii Techniczno-Humanistycznej w Bielsku-Białej. Z zamiłowania humanista, znawca twórczości Jaroslava Haška. Pasjonat historii motoryzacji, śpiewu chóralnego oraz aktywności fizycznej. Zapalony rowerzysta.