Language Oriented Programming
Sergey Dmitriev, spoluzakladatel a CEO firmy JetBrains (sídlící v Praze), která vyvíjí Javovské IDE IntelliJ IDEA, se nedávno ve svém článku zamyslel nad vývojem programování a představil svou vizi programování v budoucnu: Language Oriented Programming.
Základní myšlenka spočívá v tom, nechat programátora vytvářet vlastní jazyky pro jednotlivé "problem domians" (např. databázové programování, GUI,...) a maximálně mu usnadnit tvorbu chytrého prostředí pro práci s nimi. Kód v těchto jazycích se pak bude překládat do nějakého základního jazyka, přímo do instrukcí procesoru či (dnes asi pravděpodobněji) do kódu nějaké virtuální mašiny. Pojem "jazyk" přitom Dmitrijev chápe velmi široce – je to pro něj jakýkoliv prostředek schopný jednoznačně sdělit nějakou myšlenku (jazykem je tedy třeba i diagram).
Vše, co jsem tu teď k Language Oriented Programming řekl, je ale hodně velké zjednodušení a pro plné pochopení je asi třeba si článek přečíst celý.
Dmitrievova analýza dnešní (a v podstatě odvěké) situace programátorů jakožto "vysvětlovačů problémů tupému počítači", která článek uvozuje, je podle mě docela vystihující. Jak vážně lze ale brát jeho Language Oriented Programming je otázka. Co jsem koukal různě po internetu, tato myšlenka je dost kritizována a nejčastější námitkou je, že celý systém je v podstatě to samé jako makra v Lispu. Tady bych si troufl vznést dvě námitky:
- Ať už je to podobné Lispu nebo ne, Lisp se prostě neujal, k čemuž z nemalé části přispěla jeho nestravitelná syntaxe. Jakýkoliv pokus o jeho reimplementaci ve snesitelnějším kabátu je pravděpodobně zlepšením a kritiku si z tohoto směru nezaslouží.
- Příznivci Lispu značně podceňují sílu dobré reprezentace jazyka a editoru pro manipulaci s ním. Na tom naopak Dmitriev velmi staví.
Když tak nad tím vším přemýšlím, tak ale musím uznat, že článek v některých aspektech možná příliš orginální není. Vlastně jen dotahuje do extrému dnešní trend algebraizace jazyků, tedy pohled na zdrojový text programu nikoliv jako na hromadu znaků, ale jako na strukturu s všemožnými operacemi (rozuměj zejména refaktorizacemi a jinými transformacemi), a důraz na silné IDE. Ale na druhou stranu se Dmitrievovy myšlenky jeví jako velice zajímavé a ať už se prosadí v této podobě nebo budou sloužit jako inspirace někomu jinému, skrývají v sobě potenciál o mnoho zlehčit práci programátorů. Článek mě každopádně přiměl k velkému zamyšlení, a toho si cením.
Jazyková poznámka: Rusky nemumím, takže jsem radši nechal jméno autora článku v anglickém přepisu, než ho nějak komolit pokusy o počeštění.