Można inaczej Andrzej Jacek Blikle

                                                                                                                                 

 

 

 

Narodziny gwiazdy

Rozmiar tekstu

Informatyka za lat dwadzieścia

Wypowiedź z 6 sierpnia 2011
dla Ośrodka Edukacji Informatycznej i Zastosowań Komputerów
z okazji dwudziestolecia działalności.


Dwudziestolecie Ośrodka Edukacji Informatycznej i Zastosowań Komputerów skłania do refleksji i postawienia pytania, czego możemy się spodziewać w tych dziedzinach za kolejne dwadzieścia lat? Aby uzmysłowić sobie, jak trudne jest to pytanie, cofnijmy się wstecz nieco dalej niż dwadzieścia lat, bo do roku 1986. Wybieram tę datę, bo wtedy przywiozłem sobie z Danii, gdzie miałem kontrakt na Uniwersytecie Kopenhaskim, mój pierwszy PC. Był to produkt amerykański marki Sperry z pamięcią RAM 128 Kb, oczywiście bez twardego dysku i z monitorem nie wyświetlającym grafiki. Do tego edytor tekstu MultiMate jako jedyna aplikacja. Za to wszystko zapłaciłem tyle, ile kosztowała w tamtym czasie w Danii (bez podatku) Toyota Carina 2000, czyli około dwustu (tak!) moich ówczesnych miesięcznych pensji na stanowisku dyrektora naukowego Instytutu Podstaw Informatyki PAN lub jednej mojej pensji profesora Politechniki Duńskiej w Lyngby.

W tym czasie w Polsce era PC dopiero się zaczynała. Od chwili, kiedy Stany Zjednoczone zniosły embargo na szesnastobitowy mikroprocesor 8086 dla „strefy sowieckiej”, zaczęły się pojawiać kopie IBM’ów wytwarzane w krajach, które później nazwano azjatyckimi tygrysami. Jednakże wiedza informatyczna była dostępna prawie wyłącznie informatykom, a użytkowników nielicznych pecetów, w braku dostępu do aplikacji, uczono głównie programowania w Basicu. Pamiętam, jak w tamtych czasach jakiś hutniczy resort zorganizował dla prezesów największych firm (państwowych oczywiście) „kurs zastosowań informatyki”, na którym uczono ich programowania w Basicu na komputerach-zabawkach marki Sinclar z ośmiobitowym procesorem. To miał być pierwszy krok do informatyzacji naszego przemysłu ciężkiego.

W tamtych czasach jednakże, podobnie jak dziś, uważano, że dokonujący się postęp informatyki jest wprost zawrotny. Komputer, który można postawić na biurku! Przecież kolejne dwadzieścia pięć lat wstecz pierwszy polski komputer XYZ miał 1 Kb pamięci RAM (ultradźwiękowej) i zajmował salę o powierzchni około 40 m2. Oczywiście nie miał ani monitora, ani podłączonej drukarki, a programy pisało się najpierw w kodzie zerojedynkowym, a dopiero nieco później w języku kodów symbolicznych.

Skoro informatyka przez ostatnie pięćdziesiąt lat dokonała takiego oszałamiającego postępu, to czy jest coś, co się od tamtych prehistorycznych czasów nie zmieniło? Otóż nie zmieniła się zasada działania komputera oparta na przełącznikach otwierających lub zamykających przepływ prądu. Te przełączniki są sterowane impulsami elektrycznymi, które muszą być dostatecznie silne, aby nie zostały „zagłuszone” przez przypadkowe impulsy płynące z otoczenia np. w wyniku pola magnetycznego generowanego przez różne urządzenia, czy nawet promieniowania kosmicznego. Silne impulsy zużywają tak dużo prądu, że dziś ograniczeniem dla rozwoju tradycyjnej technologii komputerów jest przede wszystkim bariera energetyczna. Oczywiście nie dla aktualnych zastosowań, ale już symulowanie działania mózgu ludzkiego nie jest możliwe właśnie z tego powodu. Jak się bowiem okazuje, symulacja pięciu sekund  pracy mózgu ludzkiego, która „kosztuje” organizm 10 watów, wymaga osiem i pół minuty pracy największego amerykańskiego superkomputera, który w tym czasie konsumuje 1,4 miliona watów! Bo choć dziś komputery są miliony razy szybsze, a ich pamięci miliony razy pojemniejsze niż pół wieku temu, to podstawowa zasada ich działania się nie zmieniła.

Trwają więc prace naukowe nad zbudowaniem przełącznika zbliżonego parametrami do ludzkiej synapsy odpowiedzialnej za przekazywanie impulsów pomiędzy neuronami. I oto w tym roku w Uniwersytecie Stanforda w Kalifornii powstało takie urządzenie (patrz http://news.stanford.edu/news/2011/july/nano-synapse-computing-061211.html). Jest zbudowane w nanotechnologii, zużywa bardzo mało energii i dodatkowo może przyjmować 100 różnych stanów w porównaniu do dwóch (0 i 1) tradycyjnego przełącznika. Jak wyjaśniają twórcy tego urządzenia, pozwoli ono na budowanie „mikroprocesorów zdolnych do uczenia się, adaptowania do zmieniających się warunków oraz podejmowania decyzji opartych na rachunku prawdopodobieństwa”. Może też posłużyć do symulowania działania mózgu ludzkiego, co otwiera zupełnie nowe horyzonty przed informatyką. Nowe nie tylko ilościowo, ale przede wszystkim jakościowo.

Co z tej perspektywy możemy powiedzieć o przyszłości roku 2031? Z pewnością tylko jedno — że niczego nie jesteśmy w stanie przewidzieć.

Tyle z perspektywy sprzętowej. A softwareowa? I tym razem trzeba powiedzieć, że z pewnego punktu widzenia nie posunęliśmy się w porównaniu do stanu sprzed pięćdziesięciu lat. Oczywiście mamy miliony aplikacji działających miliony razy szybciej niż kiedyś i zawierające miliony razy więcej kodu każda niż kiedyś, ale podstawowa technologia tworzenia oprogramowania nie zmieniła się. Nie zmieniła się w tym względzie, że informatyk do dziś nie pracuje w takim reżymie, jak każdy inny inżynier. Bo „każdy inny inżynier”, np. inżynier budujący most, zaczyna od wykonania projektu, którego istotnym elementem są obliczenia gwarantujące, że po zbudowaniu most się nie zawali. Oczywiście przed oddaniem mostu do eksploatacji obciąża się go próbnie, ale mosty w ogromnej większości te próby wytrzymują. Nie zawalają się.

Z aplikacją komputerową jest całkiem odwrotnie. Przekładając to na mostową alegorię, zamiast inżynieryjnego projektu z obliczeniami powstaje opis przyszłego mostu w języku zbliżonym do potocznego (specyfikacja), następnie się most buduje (pisze program), a w trzeciej kolejność sprawdza jego wytrzymałość (testuje). No i okazuje się, że praktycznie żaden komputerowy most nie przechodzi tego testu — po zbudowaniu nie nadają się do eksploatacji. Wtedy następuje proces usuwania błędów zwany eufemistycznie „uruchamianiem systemu”. Ten proces pochłania nierzadko 50% i więcej budżetu całego projektu. I na tym oczywiście nie koniec. Dziurawy most jest przekazywany użytkownikowi, by nieusunięte do tej pory dziury usuwać już na jego koszt w ramach abonamentu serwisowego. Na dodatek, producent aplikacji nie sprzeda produktu klientowi dopóki ten nie podpisze deklaracji, że z góry rezygnuje z wszelkich roszczeń, jakie mógłby mieć z powodu ewentualnych strat poniesionych z powodu błędów w tejże aplikacji. Czy jest do pomyślenia taka sytuacja przy zakupie samochodu, czy telewizora? Czy kupilibyśmy pralkę, której producent oczekuje, że nie będziemy dochodzić odszkodowania, gdy pralka zaleje nam mieszkanie lub spowoduje pożar? Z pewnością nie. Co więcej, takie działanie ze strony producenta byłoby wręcz nielegalne. W informatyce jest inaczej, mimo że komputery spowodowały już niejedną katastrofę by wymienić rozbicie się amerykańskiego lądownika na Wenus (lata 1980.), katastrofę platformy wiertniczej w norweskim fiordzie (1991), katastrofę Airbusa w Warszawie (1993), przeoczenie przez niemieckie służby meteorologiczne zbliżania się huraganu Lothar (1999). Takich przykładów można podać znacznie więcej.
Czy tej sytuacji nigdy nie da się zmienić? Wierzę, że się da, bo problem jest nie tyle techniczny — choć technicznie oczywiście też — ale psychologiczno-marketingowy. Do tej pory rynek na produkty informatyczne przyjmuje ten stan rzeczy za naturalny, bo klientom wmówiono, że taka jest natura produktów softwareowych. Wmówiono tak skutecznie, że uwierzyła w to również część informatyków. Ale niech tylko pojawi się pierwszy producent oprogramowania, który nie zażąda od klienta zrzeczenia się wszelkich przyszłych roszczeń. Więc może za dwadzieścia lat…

No a edukacja informatyczna? Czy ta też nie zmieniła się od pół wieku? Ależ nie. Ta się zmieniła. Niestety na gorsze. Nie mówię tu o edukacji informatyków-naukowców na wyższych uczelniach, choć i z tą bywa różnie. Mówię o edukacji techników i inżynierów softwareowych. Wydany pięćdziesiąt lat temu podręcznik języka programowania Algol 60 (kto dziś pamięta tej język?) miał niecałe sto stron, zawierał pełny i precyzyjny opis składni i przyzwoicie opisaną semantykę (znaczenie) programów. Podobne cechy miał wydany nieco później podręcznik Pascala. Dzisiejsze podręczniki języków takich jak np. Delphi, HTML czy nawet Pyton (piszę „nawet” bo to ambitny język) dalekie są od tej precyzji i systematyki, zawierają natomiast po tysiąc i więcej stron, przez które nie sposób, ale też i nie warto, się przebijać. O definicji składni w ogóle nie ma mowy, trzeba się jej domyślać z przykładów, a z semantyką jest jeszcze gorzej. Z tych podręczników niewiele można się nauczyć, więc mnożą się fora użytkowników odpowiadających sobie wzajemnie na pytania typu „Hej, może ktoś wie jak…”. Z podręcznikami aplikacji nie jest lepiej. Wielu użytkowników woli poeksperymentować i popytać znajomych, bo podręcznik jest nieczytelny, niepełny i wewnętrznie sprzeczny. Czy ktoś potrafi sobie wyobrazić edukację chirurgów przy pomocy podręczników typu „Chirurgia urazowa w 24 łatwych lekcjach” albo „Kardiochirurgia w weekend”? Czy ktoś jest w stanie pomyśleć o internetowym forum chirurgów, na którym pojawiają się pytania w rodzaju „Hej, czy ktoś wie jak zatrzymać krwotok? Pacjent okropnie mi krwawi.” (Ten wątek rozwijam na stronie Komputer dla inteligentnych)

Czy więc informatyka ponosi same klęski? Ależ nie. Wręcz przeciwnie. Mimo tego wszystkiego o czym napisałem informatyka zmienia świat. W XX wieku dotyczyło to gównie nauki, techniki i gospodarki, w XXI zaczęła zmieniać społeczności. Rosnący w wykładniczym tempie dostęp do wiedzy i informacji nie zna już granic pomiędzy państwami i systemami politycznymi. Podobnie nie zna tych granic tworzenie się nowych społeczności jednoczących się wokół forów typu Facebook, czy Twitter. Dziś też każdy może stać się globalnym wydawcą rozpowszechniającym własne czasopisma, książki, utwory muzyczne czy filmy. Tych zjawisk jeszcze do niedawna nie byliśmy w stanie przewidzieć, jak dziś nie jesteśmy w stanie przewidzieć, co będzie za pięć, dziesięć, czy dwadzieścia lat. Pewne jest jednak, że ta zmiana będzie się dokonywać coraz szybciej i że informatycy — choć nie jedynie oni — będą za nią odpowiedzialni.