Rok litości dla programistów.

Na początku roku chęć odgadywania przyszłości - której uległa również redakcja Computerworlda - nie jest czymś specjalnie oryginalnym. Koło PTI w Szczecinie zatroszczyło się o przyszłość jeszcze na początku czerwca. W Świnoujściu, na seminarium poświęconym narzędziom CASE i językom 4GL zorganizowało ono dyskusję pod hasłem "Programista 2000", której uczestnicy zastanawiali się, jak będzie wyglądała praca w tym zawodzie na początku przyszłego tysiąclecia, czyli za pięć lat. Część dyskutantów była zdania, że upowszechnienie nowoczesnych narzędzi usprawniających projektowanie systemów i tworzenie aplikacji spowoduje, że zapotrzebowanie na umiejętność programowania znacznie spadnie. Najbardziej radykalni uczestnicy obrad nakreślili nawet portret "kodysty Maliniaka" - nisko wykwalifikowanego specjalisty, który na zlecenie analityków i projektantów wyposażonych w CASE-y będzie modyfikować fragmenty kodu utworzonego przez generatory aplikacji.

Na początku roku chęć odgadywania przyszłości - której uległa również redakcja Computerworlda - nie jest czymś specjalnie oryginalnym.

Koło PTI w Szczecinie zatroszczyło się o przyszłość jeszcze na początku czerwca. W Świnoujściu, na seminarium poświęconym narzędziom CASE i językom 4GL zorganizowało ono dyskusję pod hasłem "Programista 2000", której uczestnicy zastanawiali się, jak będzie wyglądała praca w tym zawodzie na początku przyszłego tysiąclecia, czyli za pięć lat. Część dyskutantów była zdania, że upowszechnienie nowoczesnych narzędzi usprawniających projektowanie systemów i tworzenie aplikacji spowoduje, że zapotrzebowanie na umiejętność programowania znacznie spadnie. Najbardziej radykalni uczestnicy obrad nakreślili nawet portret "kodysty Maliniaka" - nisko wykwalifikowanego specjalisty, który na zlecenie analityków i projektantów wyposażonych w CASE-y będzie modyfikować fragmenty kodu utworzonego przez generatory aplikacji.

Osobiście mam nadzieję, że osoba o profilu zbliżonym do dzisiejszego informatyka, tzn. taka, która z własnej praktyki i ze studiów wie, na czym polega układanie algorytmów i projektowanie struktur danych, nie jest skazana na przekształcenie się w "kodystę Maliniaka", wręcz przeciwnie - ma jak najlepsze przygotowanie do tego, by docenić, zrozumieć i w pełni wykorzystać systemy CASE oraz inne nowoczesne narzędzia. Jednak od czasu dyskusji w Świnoujściu na każdej prezentacji nowego produktu do opracowywania aplikacji zastanawiałem się, jak wpłynie on na rolę programisty no i muszę zgodzić się z pewną umiarkowaną wersją tezy o Maliniaku: rzeczywiście, programista ma coraz mniejsze szanse na bezwarunkowe, dożywotnie odgrywanie roli lokalnego guru.

Nowoczesne narzędzia powodują zmniejszanie dystansu, który dzieli zaawansowanego użytkownika od danych na dysku i funkcji obliczeniowych maszyny. Na przykład System Magic pozwala bardzo szybko tworzyć aplikacje o architekturze klient/serwer obsługujące bazy danych. Do obsługi Magica wystarczy umiejętność korzystania z interakcyjnych narzędzi projektowania okien i znajomość uproszczonego języka obsługi baz złożonego z trzynastu komend.

Magic nie jest jedynym produktem tego typu. Computer Associates i Borland wyprodukowały nieco podobne narzędzia - samodzielne interfejsy do baz danych: CA-Visual Express i Borland ReportSmith. Umożliwiają one tworzenie aplikacji wyświetlających lub drukujących raporty zbiorcze z kilku baz danych o różnych formatach. Aby zbudować taką aplikację wystarczy umieć skorzystać z interakcyjnego narzędzia projektowania formatek. Jeśli użytkownik nie wie, co właściwie znaczy fachowe stwierdzenie, że "baza danych jest uporządkowanym zbiorem rekordów", to przy okazji może się tego dowiedzieć uruchamiając przeglądarkę baz (browser). SQL-em nie trzeba się przejmować, bo zapytania można definiować używając formalizmu QBE (Query by Example, czyli Pytanie przez Przykład). Wystarczy umieć utworzyć szablon odpowiedzi w postaci tabelki z pustymi miejscami na wartości wyszukiwanych pól. Poradzi sobie z tym każdy, kto umie wypełnić np. formularz przekazu pieniężnego, nie mówiąc już o absolwentach kursów Norton Commandera i Worda.

Te produkty nie wyczerpują jeszcze wszystkich możliwości "programowania bez programowania". Tworzenie aplikacji klient/serwer przy użyciu systemu Visual AppBuilder Novella polega na wybieraniu ikon z palety, rozmieszczaniu ich myszką na ekranie i łączeniu poetykietowanymi krawędziami. Przebieg krawędzi wyznacza kolejność działań, a etykiety - konkretne czynności.

Ekspansja cywilizacji obrazkowej i pęd do podlizywania się miłośnikom wideo nie ominął nawet twórców kompilatorów i środowisk programistycznych (a ja myślałem, że to ludzie poważni i z zasadami...). Wbudowane interakcyjne generatory kodu do obsługi interfejsu ekranowego - różnych CUA, VBX-ów i innych GUI-ów - stały się chyba normą. Wygląda na to, że kilka procent programistów - arystokracja zatrudniona w wielkich firmach - postanowiło zrobić całej reszcie kolegów po fachu brzydki kawał i raz na zawsze odsunąć ich od wykonywania zawodu albo przydzielić im rolę "kodysty Maliniaka".

Jeśli jednak przyjrzymy się wspomnianym narzędziom trochę uważniej, to okaże się, że ich producenci postanowili - chyba z litości, albo może przez roztargnienie - pozostawić jakąś niszę ekologiczną dla programistów. Trudno powiedzieć, czy aż do roku 2000, ale rok 1995 zapowiada się w miarę bezpiecznie nawet tam, gdzie pojawią się niepokojące wytwory ery Windows. Weźmy np. takiego ReportSmitha. Otóż Borland wyposażył go w język programowania ReportBasic (zbliżony do Visual Basica). Także Visual Express ma interpreter języka makrodefinicji (script language) z procedurami i całkiem przyzwoitym zestawem instrukcji sterujących. Obydwa interfejsy mają także edytory zapytań SQL-owych - widocznie producenci nie są do końca przekonani o nieograniczonej mocy i subtelności środków wyrazu języków obrazkowych.

Języki programowania nie tylko nie zostały wyparte z sąsiedztwa baz danych, ale pojawiły się w miejscach dość nieoczekiwanych. Chodzi nie tylko o arkusze kalkulacyjne (Excell, CA-SUperCalc) i edytory (m.in. Multiedit). Firma Computer Associates włączyła do swojego systemu projektowania przedsięwzięć CA-SuperProject dwa elementy: bibliotekę DLL z funkcjami obsługi SuperProjecta i translator języka Realizer (jeszcze jeden dialekt Basica dla Windows). Funkcje z DLL-a dają aplikacjom w Realizerze możliwość korzystania ze wszystkich działań dostępnych użytkownikowi za pośrednictwem ekranu, myszki i klawiatury. Równocześnie inne mechanizmy Realizera pozwalają połączyć te funkcje np. z dostępem do baz danych lub z obliczeniami statystycznymi.

Ten trend, polegający na przenoszeniu mechanizmów obsługi gotowych aplikacji na płaszczyznę najbardziej odpowiadającą programistom, tzn. na poziom kodu źródłowego i bibliotek funkcji, najprawdopodobniej utrzyma się w tym roku. Np. Novell (po przejęciu licencji na arkusz Quattro Pro wraz z grupą opracowujących go programistów i po wchłonięciu WordPerfecta) zamierza uruchomić inicjatywę PerfectFit, polegającą na udostępnieniu wszystkim twórcom aplikacji wewnętrznych mechanizmów systemu Envoy (zaawansowanego viewera dokumentów) i arkusza Quattro. Będzie to polegać na opublikowaniu ich specyfikacji i utworzeniu języka umożliwiającego sterowanie obydwoma produktami bez pośrednictwa interfejsu ekranowego. Borland odseparował funkcje obsługi baz danych od otoczki Paradoxa, i udostępnił je - w postaci "silnika" BDE (Borland Database Engine) - najpierw użytkownikom dBase'a, a ostatnio także ludziom programującym w C (w postaci nowej biblioteki Database Tools dla C++ 4.5). Novell w swej strategicznej wizji przetwarzania upowszechnionego ("pervasive computing") przyznał interfejsom programistycznym API (Application Programers' Interface) równie istotne miejsce jak mechanizmom interfejsu użytkownika.

Rozpowszechnienie systemu Windows przyczynia się nie tylko do przybliżenia użytkownikom zasobów komputera (danych i funkcji), ale także zmniejszenia dystansu dzielącego programistę od wewnętrznych mechanizmów gotowych aplikacji. Ten drugi efekt wynika z ułatwienia procesu łączenia programów w następstwie wprowadzenia w Windows technologii dynamicznej konsolidacji (po polsku: linkowania) i bibliotek DLL. Do niedawna aplikacja "z półki" miała zwykle postać pliku .EXE i była czymś w rodzaju czarnej skrzynki, obsługiwanej za pomocą kilku pokręteł (a raczej kilkunastu menus, co nie stanowi różnicy jakościowej). Obecnie producenci zdecydowali, że warto pozwolić programistom zaglądac "pod maskę" produktu i własnoręcznie regulować lub modyfikowac jego działanie.

***

Jeśli więc dobrze pójdzie, to w tym roku programiści będą mieli co robić. Może nawet rozwój narzędzi jeszcze przez jakiś czas będzie działał na ich korzyść. Nie trzeba będzie zajmować się pracowitym sumowaniem szerokości okienek i sprawdzaniem czy jeszcze mieszczą się na ekranie, bo od tego będą generatory interfejsu. Można będzie za to więcej czasu poświęcić na to, co jest istotą zawodu informatyka - na układanie algorytmów, poprawianie ich efektywności obliczeniowej i funkcjonalności. Ja sądzę, że na razie programistom grozi głównie konieczność podszkolenia się w obiektowym i, w nieco dalszej perspektywie - poznania metodologii projektowania systemów w stopniu umożliwiającym pracę np. z Easy-CASE. Ale ostrożnie: jak źle pojdzie, to może okazać się, że wszystkie algorytmy potrzebne użytkownikom przez najbliższe dziesięciolecie zostaną napisane w wielkich firmach, że do ich składania za pomocą AppBuildera i narzędzi typu RAD (Rapid Application Development) najopłacalniej będzie zatrudnić absolwentów zawodówek informatycznych, które w roku '95 pojawią się jak grzyby po deszcu i że będzie to ostatni rok, w którym los będzie jeszcze skłonny litować się nad programistami.