W kryształowej kuli

Architektury komponentowe

Architektury komponentowe to składanie systemów informatycznych z gotowych funkcjonalnych klocków. Przypomina się technologia wielkopłytowa w budownictwie: ma swoje dobrze znane zalety i równie dobrze znane wady. Oczywiście, liczba programów i komputerów na świecie pozwala sądzić, że niemal każda potrzebna w danym projekcie funkcja gdzieś przez kogoś została kiedyś zaimplementowana. Czy opłaca się jej szukać? To zależy od relacji trudu i ryzyka napisania jej od początku do trudu odszukania istniejącej, zrozumienia jej i ewentualnego dostosowania.

Im obszerniejsze są biblioteki dostępnych komponentów, bardziej ogólne i szerokie ich zastosowania, tym znalezienie staje się bardziej kłopotliwe. Ponadto stosowanie gotowych komponentów utrudnia proces testowania i lokalizację ewentualnych błędów. W technologii komponentowej konstruktorzy i programiści często działają w warunkach dobrze znanych administratorom systemów: zmuszeni są operować w nieznanym środowisku, na oślep szukać przyczyn awarii.

Ponieważ zyski stosowania gotowych komponentów są redukowane przez kłopotliwość ich znajdowania i obsługi, należy sądzić, że w ciągu 10. lat użycie tego typu architektur pozostanie na proporcjonalnie niezmienionym poziomie.

Sztuczna inteligencja i programy samouczące się

Oczywiście, w środowiskach akademickich prowadzi się wiele prac w tej fascynującej (i trochę niepokojącej) poznawczo dziedzinie, niemniej ich zastosowanie ma charakter niszowy, a nie ogólny.

Wspominane kilkakrotnie wcześniej "metaprocesy", choć wydają się (kiedy je kiedyś zrealizujemy) działać inteligentnie, oczywiście inteligentne nie są: wprawdzie produkują opisy nowych procedur działania na podstawie skomplikowanych algorytmów przetwarzania danych wejściowych (parametrów produktu i projektu) w dane wejściowe, ale same algorytmy pozostają niezmienne, skonstruowane przez programistę.

Skoro na razie nie potrafimy nawet zaprojektować "samomodyfikujących się" procedur organizacyjnych, a modyfikacja istniejącego oprogramowania - nie mówiąc już o stworzeniu zupełnie nowego! - wymaga z reguły nabycia obszernej wiedzy domenowej, pozyskiwania wymagań i innych "miękkich" umiejętności, inteligentny program mogący sobie poradzić z takimi wyzwaniami musiałby mieć poznawczą nadmiarowość porównywalną z ludzką. Nawet zupełnie przeciętny programista ma wszak zakres doświadczeń, intuicji, heurystyk i możliwości transferu wiedzy, których symulacja w postaci systemu komputerowego przekracza o kilka rzędów wielkości możliwości współczesnej informatyki. Dlatego nie należy w perspektywie 10 lat spodziewać się praktycznego zastosowania "programów realizujących systemy na zlecenie" w przemysłowej skali.

Podsumowanie: siła czy inteligencja?

Na razie inteligencja jest niezmiernie kosztowna i niedająca się skutecznie zautomatyzować, natomiast siła - mierzona szerokością pasma, szybkością procesora i pojemnością pamięci - z każdym rokiem tańsza. Stąd można oczekiwać, że przynajmniej w perspektywie najbliższych 10. lat nadal będziemy świadkami tryumfu metod siłowych w przemysłowych zastosowaniach informatyki.

Jednak metody inteligentne wciąż się rozwijają i trudno przewidzieć, kiedy ich liniowy na pozór rozwój doprowadzi do przekroczenia jakiegoś progu, po którym nastąpi wykładnicza eksplozja. Jaki miałby być jej charakter - tego już nie odważę się próbować przewidzieć bez znieczulenia. Mam nadzieję, że uda mi się to zobaczyć.

Bogdan Bereza-Jarociński jest niezależnym konsultantem (http://www.bbj.com.pl ).


TOP 200