Czas zacząć na nowo

Niewolnicy IT i przyszłość

Dominujący paradygmat spowodował jeszcze jedną, dość przykrą dla twórców oprogramowania, konsekwencję. Z twórczych podmiotów stali się przedmiotami procesów wytwórczych. We współczesnym przemyśle informatycznym deweloperzy zostali sprowadzeni do roli zasobów, niewiele różniących się od narzędzi i produktów.

Zespół deweloperski jest często traktowany jak maszyna, a członkowie zespołu jak wymienialne części: w projekcie potrzebnych jest dwóch analityków, trzech projektantów, siedmiu programistów i dwóch testerów, dla każdego jest określony zestaw wymaganych umiejętności. Członka zespołu zawsze można wymienić na innego dewelopera o podobnych parametrach.

Obecnie praca programisty często bardziej przypomina niewolniczą pracę na XIX-wiecznej plantacji bawełny, niż radosną twórczość pierwszych programistów. O niszczącym wpływie takiego stanu rzeczy na jakość życia deweloperów i jakość tworzonych systemów nie trzeba wspominać.

Projekt Feyerabend nie tylko próbuje znaleźć nieprawdziwe założenia i zakwestionować "oczywiste" prawdy, lecz również wskazać alternatywne rozwiązania. Inspiracją są zupełnie nowe obszary badań lub idee istniejące, ale pozostające na marginesie, oraz, jak pisze Richard Gabriel, inne tradycje "w szczególności biologia, ale czasem też religia, magia lub voodoo".

Jak zatem powinien wyglądać nowy świat IT? Najpierw przyjrzyjmy się, w jakim kierunku zdążają systemy informatyczne. Pierwsza rzecz, którą widać, to coraz większy wzrost złożoności: systemy stają się coraz większe, coraz bardziej rozproszone i bardziej dynamiczne. Często nie są to już systemy składające się z kilku lub kilkunastu wielkich, skomplikowanych podsystemów, lecz z tysięcy, milionów lub nawet, jak w przypadku Internetu, miliardów małych, prostych podsystemów. Tak złożone systemy w przyszłości będą coraz bardziej powszechne. W takim systemie cały czas pojawiają się nowe składniki, a istniejące zmieniają interfejs, oferowane usługi lub całkowicie znikają. W czasie działania systemu nie tylko jego kod może dynamicznie ewoluować, ale również mogą zmieniać się same cele systemu.

Kolejnym kluczowym trendem jest coraz większa powszechność i coraz szersze zastosowanie technologii informatycznych. Coraz nowsze i szybciej zmieniające się wymagania sprawiają, że coraz częściej programowaniem zajmują się osoby niezwiązane z przemysłem IT. Przykładem tego trendu jest ogromna popularność arkuszy kalkulacyjnych czy HTML-a. Wydaje się wysoce prawdopodobne, że w niedalekiej przyszłości umiejętność programowania będzie równie podstawowa jak umiejętność pisania i czytania.

Dlatego coraz więcej systemów będzie powstawać w wyniku nieskoordynowanych działań wielu (setek, tysięcy czy milionów) osób i to bez nadrzędnego planu, bez ścisłej kontroli (tego typu oprogramowanie czasami określa się terminem mob software, co można przetłumaczyć jako oprogramowanie tworzone przez tłum).

Nowy wspaniały świat

Czym zatem powinny cechować się przyszłe technologie IT? Po pierwsze, będziemy musieli zaakceptować nowy rodzaj porządku, który w obecnym paradygmacie może jawić się jako swoista anarchia i chaos. Jednak tak naprawdę jest to znacznie głębszy rodzaj porządku niż ten, do którego dążymy obecnie. Wszyscy, którzy zachowali jeszcze resztki zdrowego rozsądku, zdają sobie sprawę, że pełna kontrola nad tworzeniem oprogramowania i oprogramowanie bez błędów nie tylko nie są możliwe, ale nawet nie są pożądane (być może poza wąską klasą systemów krytycznych związanych z bezpieczeństwem), co więcej, dążenie do pełnej kontroli może mieć bardzo negatywny wpływ na wytwarzany system.

Złożoność większości budowanych systemów dawno przekroczyła próg możliwości kontroli przez tradycyjne procesy. Czy oznacza to, że nieuchronnie musimy pogrążyć się w chaosie? Niekoniecznie. Wiele wskazówek może dać nam teoria złożoności, a w szczególności teoria systemów adaptacyjnych i przykłady takich systemów występujących w naturze. W organizmach żywych występują takie zjawiska jak homeostaza, samoregulacja, samonaprawianie, czy system immunologiczny. Stanowi to inspirację dla próby stworzenia programów, które będą adaptować się do zmiennych warunków, automatycznie usuwać uszkodzenia czy zainfekowane wirusami powracać do stabilnego stanu po awarii, to programy, które będą mogły działać nawet przy częściowym zniszczeniu. Przykładem prac badawczych w zakresie takich możliwości jest Amorphous Computing Project prowadzony w MIT.

Innymi często wskazywanymi inspiracjami są teoria chaosu, wyłaniane się porządku z chaosu czy zachowanie emergentne - uzyskiwanie bardzo złożonego i inteligentnego działania systemów składających się z wielu prostych, rządzonych nieskomplikowanymi regułami elementów (przykładami takich systemów może być mrowisko składające się z tysięcy mrówek lub mózg składający się z miliardów neuronów (niektórzy jako przykład podają również Internet)). Próbami zastosowania m.in. tych idei zajmuje się projekt Autonomic Computing Project prowadzony w IBM.

Od natury próbujemy skopiować nie tylko strukturę systemów złożonych, ale również proces ich wytwarzania. W tym duchu prowadzone są prace nad zastosowaniem najnowszych wyników Christophera Alexandera (w świecie IT znanym przede wszystkim jako twórca idei wzorców, pisałem o nim w jednym z majowych numerów Computerworld) do procesu tworzenia oprogramowania. Opracowane przez niego procesy (dla budownictwa) wzorują się na procesach wykorzystywanych przez naturę, są to więc procesy adaptacyjne, niedeterministyczne, działające przez rozwijanie całości (tak jak rozwija się zarodek).

Wieża Babel

Nowe podejścia i nowe paradygmaty będą wymagały nowych języków programowania. Jedną z bardzo nieprzyjemnych cech dominujących obecnie języków programowania jest ich ogromna niestabilność: jeden przecinek w złym miejscu w programie liczącym setki tysięcy linii kodu może spowodować katastrofalną awarię całego systemu. Inną wadą współczesnych języków programowania jest bardzo mała ekspresywność i niedostosowanie do sposobu myślenia człowieka (pod tym względem są one zaskakująco asymetryczne: chociaż języki programowania są przeznaczone zarówno dla człowieka, jak i komputera, to stronie maszyny poświęcono nieporównanie więcej uwagi).

Języki przyszłości mają być znacznie bardziej ekspresyjne i bliższe człowieka, mają też być dostosowane do opisywania zachowań emergentnych (taką właściwość częściowo posiada Prolog). Zamiast kilku dominujących języków uniwersalnych, pojawi się mnóstwo języków specjalistycznych. To z kolei pociąga konieczność łatwej komunikacji między programami napisanymi w różnych językach, rezultatem będzie powstanie różnych protokołów. Przy czym potrzebne będą znacznie prostsze i bardziej ekspresywne standardy niż powstające obecnie w próbach globalnej standaryzacji typu ebXML czy Web Services. Bardziej będą przypominać standardy występujące w naturze, takie jak DNA (uderzające jest samo porównanie prostoty, uniwersalności i możliwości DNA z obecnymi standardami dla usług typu Web Services).

Czy przyszłość IT będzie wyglądać tak jak przewiduje Richard Gabriel i inni wizjonerzy? Jak w przypadku wszystkich wizji futurystycznych rzeczywistość okaże się zapewne bardziej złożona. Jednak zmiana paradygmatu wydaje się nieunikniona, bo niezadowolenie z obecnego stanu rzeczy jest coraz powszechniejsze. Być może nie oznacza to, że obecne metody wytwarzania oprogramowania zupełnie znikną, ale na pewno pojawią się nowe, zupełnie odmienne od stosowanych teraz. Jednak największym wyzwaniem, przed jakim stoi dzisiaj świat IT, może okazać się nie samo stworzenie nowych technologii, lecz odrzucenie ortodoksyjnych wierzeń obowiązującej ideologii.


TOP 200