Przewężenie cyfrowego rogu obfitości

Ważne, że gdy technologia pójdzie naprzód, intencje pozostaną te same, zmienią się jedynie generator oraz kod wynikowy - mówiąc dokładniej, zestaw potencjalnych kodów wynikowych, gdyż jedna intencja może służyć do zbudowania wielu aplikacji różnymi generatorami.

Wszyscy analitycy, którym powyższe wyjaśnienie wydało się znajome, powinni ostudzić swoje apetyty. Istnieje przepaść pomiędzy programowaniem intencjonalnym, takim jak widzi je Charles Simonyi, a narzędziami oraz metodykami analizy i projektowania, takimi jak UML, RUP czy rozmaite "biznesowe" odmiany XML. Autor IP argumentuje, że stosowanie języka o sztywnej, formalnej składni jest największym ograniczeniem technologicznego "rogu obfitości", gdyż pozwala opisać tylko te kategorie i takimi sposobami, o jakich pomyśleli twórcy języka.

Dobre intencje

Stare przysłowie mówi, że dobrymi intencjami jest wybrukowane piekło. Prace nad programowaniem intencjonalnym trwały wiele lat w laboratoriach badawczych Microsoftu. Niestety, nigdy nie obejrzeliśmy ich efektu, a wszelkie ślady po tej działalności zostały skrzętnie usunięte ze stron WWW Microsoft Research! Nie widać także, by którekolwiek z narzędzi programistycznych tej firmy wyszło z "niewoli składni". Jedynym śladem po programowaniu za pomocą intencji pozostają wizualne kreatory obecne w każdym ze środowisk programistycznych dostarczanych przez giganta z Redmond.

Czy IP jest więc poważnym podejściem do budowania aplikacji dla biznesu, czy jedynie mglistym marzeniem bardzo bogatego ekscentryka, który osiągnął już w życiu zawodowym wszystko i może sobie pozwolić na eksperymenty za miliony dolarów? Chyba raczej to pierwsze. Gdyby szukać analogii, w historii mamy zarówno średniowiecznych alchemików, jak i ludzi takich jak Kopernik, Edison czy da Vinci, którzy na przekór uznanym autorytetom rzucali szalone pomysły, a po latach okazywało się, że to oni mieli rację.

Charlesowi Simonyi niewątpliwie bliżej do Edisona niż Cagliostra, a programowaniu intencjonalnemu do realnego pomysłu (być może nieudanego, ale wartego uwagi) niż do mrzonek o kamieniu filozoficznym. Każdy przełom wymaga błysku talentu oraz lat pracy. Brak prostych efektów IP może rozczarowywać, ale nie powinien usypiać naszej - informatyków - czujności.

Firma Intentional Software obiecuje zestaw narzędzi do programowania w bliżej nieokreślonej przyszłości, ale raczej bliższej niż dalszej. Założyciele argumentują, że właśnie teraz jest dobry czas dla IP - ponieważ maszyny osiągnęły odpowiednią moc obliczeniową, istnieją standardy, np. UML czy XML, a rozwiązania, takie jak wzorce projektowania (design patterns) czy programowanie z aspektami (aspect-oriented programming), stały się już dojrzałe.

Podstawowe założenie tkwiące u podstaw programowania intencjonalnego - projekt i program to jedność - każe sądzić, że produktem Intentional Software będzie coś, co najbardziej będzie przypominać współczesne narzędzia CAD/CASE w połączeniu z kreatorami algorytmów oraz interfejsu użytkownika, zaś proces budowy oprogramowania będzie polegać na rozmowie z ekspertami, przedstawianiu przez nich pewnych koncepcji (intencji) i dopracowywaniu rozwiązania informatycznego. W ten sposób, jak argumentuje firma w swoim FAQ, będą budowane rozwiązania mobilne, złożone serwisy internetowe, a nawet platformy B2B.

Nie sposób nie zauważyć słabości IP. Po pierwsze, obietnica jest zbyt mglista, by można było wyrobić sobie zdanie na jej temat. Może się okazać, że z dużej chmury spadnie mały deszcz, a po programowaniu intencjonalnym zostanie co najwyżej kilkadziesiąt odwołań w katalogu Google, prowadzących do dawno nieuaktualnianych stron. Drugi zarzut dotyczy poziomu abstrakcji - czy rzeczywiście narzędzie operujące tak ogólnymi kategoriami będzie mogło być używane przez ekspertów z dziedziny? Trzecia słabość IP to proces i jego skalowalność. Współczesna inżynieria oprogramowania dorobiła się dość dobrych metod pracy zespołowej, wg zorganizowanego procesu. Dzięki temu kluczowe aplikacje biznesowe są budowane przez wielosetosobowy zespół informatyków o jasno rozłożonej odpowiedzialności w grupach. Tymczasem IP koncentruje się na kilkuosobowym zespole: eksperci plus "programista intencji", czyli autor generatora programu kodującego zadaną intencję. Czy to na pewno wystarczy we współczesnym przedsiębiorstwie i przy współczesnej złożoności procesów biznesowych oraz aplikacji?

Natomiast najsilniejszą stroną IP bez wątpienia jest pomysł, by to programy pisały programy. Od czasu wymyślenia pierwszego kompilatora trwa nieustanny proces zastępowania człowieka przez maszynę w kolejnych "warstwach" oprogramowania. Osiągnięcia ostatnich lat - maszyny wirtualne, narzędzia RAD czy UML - każą sądzić, że kiedyś wreszcie dojdzie do tego, że autor rozwiązania informatycznego będzie mógł całkowicie zapomnieć o szczegółach technicznych, skupiając się na koncepcjach czy też - jak chce Charles Simonyi - intencjach.

Nam, informatykom, pozostaje więc kibicować twórcom programowania intencjonalnego. Jeżeli uda im się stworzyć to, co obiecują, to być może część "magików od narzędzi" straci dobrze płatną pracę, ale dzięki uproszczeniu budowy systemów informatycznych będziemy mieć więcej czasu na to, co naprawdę przynosi wartość dodaną - na myślenie.

Intencjonalne źródła

TOP 200