Tekstowe języki specjalizowane – prezentacja

Od pewnego czasu staram się promować na blogu idee tekstowych języków specjalizowanych a dokładnie technologię xText. Nie mogę więc nie wspomnieć o bardzo ciekawej webowej prezentacji jaka zakończyła się dosłownie kilka minut temu. Polecam ją każdemu, niezależnie od tego czy zajmuje się technologiami modelowania czy dopiero planuje się nimi zainteresować.



Podczas prezentacji oprócz naprawdę fajnego demka z szachami wyjaśniona została także architektura samego projektu. Przyznam że bardzo podoba mi się zastosowanie Google Guice jako sposobu na kastomizację generatów. Łączenie kodu generowanego z ręcznie pisanym zawsze stanowiło duży problem w projektach o większym stopniu złożoności niezależnie od zastosowanego podejścia. Zwykle kończyło się to albo dziesiątkami metod 'generated NOT' albo było skrajnie niewygodne jak modyfikacje w 'GMFGen' lub 'zastępowanie szablonów'. Szczególnie problem widoczny jest właśnie w przypadku biblioteki GMF która generuje naprawdę złożony kod który należy w dużej mierze zmodyfikować. Zastosowanie technologii Guice pozwala na znaczne rozluźnienie relacji pomiędzy poszczególnymi fragmentami budowanego edytora co znacznie upraszcza proces jego kastomizacji.

Bardzo ciekawy jest także dalszy kierunek rozwoju. Tematem przewodnim jest budowanie złożonych projektów opartych o wiele współpracujących modeli czyli koncepcja budowy indeksu modeli (instancji) w ramach środowiska. Rejestr modeli to jedno z pierwszych zadań jakie musi wykonać każdy projektant tworzący IDE. Ponieważ użytkownicy będą tworzyli dziesiątki lub setki instancji modeli w ramach projektu indeksowanie jest konieczne by wzajemnie się one widziały i możliwe były akcje typu wyszukanie czy refaktoring. Ustandaryzowanie tego typu mechanizmów może być kamieniem milowym w kierunku uniwersalnych mechanizmów refaktoringu (połączenie koncepcji index + compare)

Drugim tematem jest budowa tzw. języka bazowego dla reprezentacji wyrażeń. W każdym środowisku tworzymy lub wykorzystujemy jakiś istniejący język wyrażeń by wiązać poszczególne elementy modelu, reprezentować warunki etc. Czy jest to popularny XPATH, kolejna mutacja OCL czy cokolwiek innego mocno zależy to od wymagań tworzonego środowiska. Uproszczenie tego tematu wydaje się być atrakcyjne ale nie jestem pewien czy jest ono konieczne. Mamy już kilka modeli wyrażeń a pomimo tego każdy i tak tworzy własny by najlepiej odpowiadał potrzebom danego systemu. Nie do końca jestem przekonany czy powstanie kolejnego języka (bazowego?) cokolwiek wniesie do tematu. Przyznam że bardziej wolałbym gdyby połączono i dopracowano istniejące języki tak by powstała jedna składnia OCL’a, pojedyncza wersja XPAND’a etc. Możliwe jednak że źle rozumiem kierunek tego podprojektu. Czas więc poszukać dodatkowych informacji co i jak.

XText bez wątpienia wprowadza do środowiska Eclipse co najmniej tak dużo nowych możliwości jak kilka lat temu zrobił to GMF. Gdy tylko skończę czytać kupioną niedawno książkę o GMF biorę się za naukę. Mam nadzieję że analiza tego projektu pozwoli mi rozwiązać także problemy w moim własnym projekcie (koncepcja zastosowania Guice etc.)

8 lat w Java, 5 lat z Eclipse, 2 lata blogowania…

To straszne jak ten czas szybko płynie. Osiem lat temu w lipcu rozpoczynałem swoją pierwszą pracę. Język Java wydawał mi się wtedy totalnym nieporozumieniem. Borland JBuilder 4 nie dość że nie potrafił poprawnie zatrzymywać się na wszystkich break pointach to dodatkowo działał nieprawdopodobnie wolno na procesorach 300MHz :)

Z czasem bardzo polubiłem prostotę Javy jednak prawdziwym przełomem było pojawienie się środowiska Eclipse 2.1. Hierarchia wywołań metod, refaktoring, natywny wygląd i niewiarygodna szybkość porównywalna praktycznie z VisualStudio... to była rewolucja. Dzięki książkom 'Eclipse In Action' oraz 'Contributing to Eclipse' dowiedziałem się ponadto że można łatwo samemu robić dodatki do tego środowiska. To było wielkie odkrycie. Możliwe stało się coś co wydawało się być wcześniej zarezerwowane dla programistów wielkich zachodnich firm. Trochę ponad rok później miałem gotowe pierwsze narzędzia do modelowanie procesów sterowania centralami cyfrowymi zbudowane z wykorzystaniem biblioteki GEF (Graphical Editing Framework). To był początek wielkiej przygody.

Dwa lata temu postanowiłem założyć bloga. Celem jaki sobie postawiłem to zainteresować większą ilość osób tematyką Eclipse, a w szczególności ideą tworzeniu narzędzi specjalizowanych DSL (języków specyficznych dla rozwiązywanego problemu). Początki były naprawdę trudne, jednak miniony rok okazał się zdecydowanie lepszy. Głównie dzięki pomocy wielu osób związanych z grupami użytkowników języka Java (JUG) oraz serii konferencji Eclipse DemoCamp (między innymi organizacji pierwszej edycji wrocławskiej). Liczba odwiedzających ten adres zdecydowanie się zwiększyła co jest bardzo miłe.

W tym roku udało mi się także zdobyć licencję PADI Open Water Diver co w kontekście nazwy tego bloga ma kluczowe znaczenie. Sam egzamin przy zatoce znanej z filmu 'Niebiańska plaża' pozostanie jednym z najpiękniejszych wspomnień, podobnie jak cała wyprawa do Tajlandii. Mam nadzieję że kolejnym krokiem będzie nauka robienia zdjęć podwodnych. W tematyce programowania natomiast zabieram się za naukę technologii xText. Jest to bez wątpienia jeden z najbardziej innowacyjnych projektów na jaki trafiłem. We wrześniu planuję także zakup książki o Equinox która bez wątpienia będzie hitem biorąc pod uwagę coraz większą popularyzację OSGi także po stronie oprogramowania serwerowego...

To był wyjątkowo udany rok. Mam nadzieję że kolejny będzie jeszcze ciekawszy.