Przewężenie cyfrowego rogu obfitości

Mimo istotnego postępu, inżynieria oprogramowania nadal nie nadąża za sprzętowymi dziedzinami informatyki - możemy konstruować coraz szybsze i lepsze komputery, ale wąskim gardłem pozostają aplikacje. Czy programowanie intencjonalne pozwoli zmienić ten stan rzeczy?

Mimo istotnego postępu, inżynieria oprogramowania nadal nie nadąża za sprzętowymi dziedzinami informatyki - możemy konstruować coraz szybsze i lepsze komputery, ale wąskim gardłem pozostają aplikacje. Czy programowanie intencjonalne pozwoli zmienić ten stan rzeczy?

Mottem programowania intencjonalnego jest przyrównanie pisania programu do steganografii (ukrywania treści w pozornie nieistotnym przekazie). Programiści biorą jakąś koncepcję (intencję) i przetwarzają ją na linie w języku programowania. W trakcie tego procesu owa intencja rozmywa się na dziesiątki, a czasem nawet setki tysięcy pojedynczych instrukcji. Abstrakcja, która legła u podstaw celu działania programu, pozostaje głęboko ukryta. Tak stworzone oprogramowanie zawiera mnóstwo błędów; jest też trudne w naprawianiu i rozszerzaniu. To skutek tego, że każde dotychczasowe narzędzie (język programowania, diagram UML czy opis w XML) posiada wąsko określoną składnię, która może zaburzyć czy wręcz przekłamać intencje.

Zdaniem twórców IP cierpimy na tym wszyscy. Najbardziej zaś specjaliści z dziedzin, którzy wręcz kipią kreatywnością: medycyny, telekomunikacji, budownictwa, inżynierii materiałowej, także organizacji, handlu, zarządzania, finansów. A gdyby dać im do ręki narzędzie, które pozwoli wyrażać im samym cele, po czym "ubierze" je w użyteczne abstrakcje, a następnie wygeneruje rozwiązanie informatyczne i pozwoli je stopniowo dostrajać za pomocą wyrażania kolejnych, bardziej szczegółowych intencji?

Można powiedzieć jeszcze inaczej, tak jak Charles Simonyi, żywa legenda informatyki, twórca pierwszego edytora WYSIWYG oraz długoletni główny architekt firmy Microsoft, a dziś założyciel i prezes firmy Intentional Software: "Oprogramowanie to przewężenie cyfrowego rogu obfitości. O ile w innych dziedzinach informatyki obowiązuje prawo Moore'a, w myśl którego dostępna moc obliczeniowa, pamięć oraz przepustowość sieci podwaja się co 18 miesięcy, o tyle w oprogramowaniu nadal mamy do czynienia z kryzysem". Wszyscy widzą, że potrzeba przełomu. Zaś IP go obiecuje.

Niewolnicy składni

Na pewno powyższe uzasadnienie wielu osobom wydaje się znajome, bo słyszeli je już przy sztucznej inteligencji, językach funkcyjnych, narzędziach RAD czy wręcz pakiecie MS Office. W informatyce brakuje wielu rzeczy, ale niespełnionych obietnic na pewno nie. Warto więc podkreślić różnice między IP a tematami, które z regularnością zaćmień księżyca pojawiają się na firmamencie informatyki, obiecując wiele i dając tylko trochę.

Czy IP to nowy język? Tak - nowy w tym sensie, że własny. IP pozwala ekspertom wyrażać swoje potrzeby w ich własnym języku. Rolą programisty nie jest zapisanie programu, który implementuje dane idee. Jego rolą jest stworzenie programu, który "napisze" aplikację wg opisu w języku ekspertów. Jeżeli posługują się językiem rysunków i potrafią nimi wyrazić swoje pomysły (intencje), programista dostarczy translatora rysunków na kod.

Twórcy IP posługują się analogią z maszynami. Już od dawna ludzie ich nie budują. Oni je tylko wymyślają i projektują. Proces wytwórczy maszyn jest zmechanizowany. Człowiek, choćby pracował z największą starannością, w sterylnym środowisku i przy użyciu najmniejszych narzędzi, nie jest w stanie sam wytworzyć mikroprocesora. Jest natomiast w stanie stworzyć narzędzia, które wytworzyły kolejne narzędzia przeznaczone do wytwarzania mikroprocesorów. Dzięki temu mikroprocesorowi jest w stanie opracować jeszcze lepsze narzędzia, które pozwolą mu na... itd. Dlaczego ten model nie mógłby się sprawdzić w przypadku oprogramowania, skoro tak doskonale funkcjonuje w dziedzinie produkcji przemysłowej?

W innym podejściu można by spojrzeć na IP jako jeszcze doskonalszego PowerPointa. Zdecydowana większość pomysłów we współczesnym świecie jest przekazywana za pomocą prezentacji wytworzonych w tym właśnie narzędziu. Z pewnym sarkazmem można by dodać, że wielu klientów - szczególnie tych mniej dojrzałych - podejmuje decyzje o zakupie na podstawie takich prezentacji. Żarty na bok, skoro prezentacja i wizualizacja to znakomite narzędzia przekazywania idei, zaprzęgnijmy je do prawdziwej pracy! Dzisiaj tylko przekazują idee, jutro - wzbogacone o translator idei w program - mogą przygotowywać aplikacje!

Po trochu

"Przyrost" i "weryfikacja" to słowa kluczowe programowania intencjonalnego. Ten rodzaj oprogramowania powstaje w ścisłej współpracy między ekspertem dziedzinowym a informatykiem (przy całej świadomości, że to ostatnie określenie oznacza kogoś nieco innego niż rozumiemy to dzisiaj). Ekspert zapisuje więc swoje intencje, programista buduje generator, który takie intencje zamienia w wykonywalny kod. W ten sposób unika się wielu błędów implementacyjnych, których nadmiar trapi dzisiejsze oprogramowanie. Jednocześnie wynik działania jest stale sprawdzany i porównywany z intencją eksperta, co za każdym razem pozwala na uszczegółowienie intencji.

Przykład: "Chciałbym wprowadzić informacje o zamówieniu" - to pierwsze przybliżenie intencji eksperta. Po obejrzeniu wyniku dodaje - "Zamówienie powinno mieć numer, dane zamawiającego, listę zamówionych towarów oraz łączną wartość". Programista dodaje więc odpowiednią semantykę, która te pojęcia przekłada na język działającej aplikacji. "Teraz dla każdego zamówionego towaru życzę sobie liczbę jednostek, jednostkę, cenę jednostkową oraz wartość pozycji". Opis aplikacji pozostaje stale opisem intencji eksperta, nie zaś ciągiem zrozumiałych tylko dla informatyka instrukcji w wybranym języku programowania. Obowiązkiem programisty jest budowa takiego generatora, który te intencje przetłumaczy na język maszyny. Językiem opisu stale pozostaje intencja, nie zaś program - gdyby ekspert zechciał dokonać zmian, to po prostu modyfikuje opis swoich intencji.

Żywa legenda

Charles Simonyi to jedna z ciekawszych postaci świata informatyki. Urodzony w 1948 r. w Budapeszcie jako Simonyi K‡roly, był synem słynnego węgierskiego naukowca, specjalisty od elektryczności i elektroniki. Jako nastolatek miał szansę pracować z pierwszymi komputerami lampowymi. Nie wrócił za żelazną kurtynę po krótkim pobycie naukowym w Danii. Ukończył matematykę na Uniwersytecie Berkeley, zrobił także doktorat z informatyki na Uniwersytecie Stanforda. Jego pierwsze osiągnięcie to Bravo - edytor typu WYSIWYG zbudowany w słynnych laboratoriach Xerox PARC w Palo Alto.

W 1981 r. dołączył do Microsoftu, jako 40. z kolei pracownik tej firmy. Będąc tam głównym architektem, odpowiadał za sztandarowe produkty Microsoftu - Multiplan, MS Word i Excel. Najbardziej znany jest chyba jako autor tzw. notacji węgierskiej (prefiksowanie nazwy zmiennej oznaczeniem typu), powszechnie stosowanej w aplikacjach Microsoftu oraz promowanej w narzędziach tej firmy. W 1991 r. stworzył w Microsofcie laboratoria badawcze (Microsoft Research). Dwa lata temu odszedł z koncernu, by założyć własne przedsięwzięcie - Intentional Software - i kontynuować prace nad programowaniem intencjonalnym.

W celu komercyjnej reprodukcji treści Computerworld należy zakupić licencję. Skontaktuj się z naszym partnerem, YGS Group, pod adresem [email protected]

TOP 200