Out of the Tar Pit

Pokud jste ještě nečetli paper Out of the Tar Pit, měli byste tento nedostatek co nejrychleji napravit. Out of the Tarpit se věnuje zdrojům komplexnosti programů a navrhuje několik poměrně radikálních způsobů, jak se této komplexnosti zbavit.

Právě tento paper inspiroval Riche Hickeyho při návrhu programovacího jazyka Clojure a databáze Datomic. Můžete se přesvědčit sami, že poselství paperu je jasně cítit v každé z jeho skvělých přednášek: Simple made easy, Value of Values, The Database as a Value).

Out of the Tar Pit se zakládá na poznatku, že hlavní zdroj komplexity programů je stav a kontrola (state and control). Stavem je myšlen měnitelný (mutable) stav o který se musíme explicitně starat iterativními algoritmy. Paper rozlišuje mezi nezbytným a vedlejším (essential a accidental) stavem a z toho vyplývající nezbytnou a vedlejší komplexitou. Nezbytný stav a komplexita je to, co zajímá uživatele software. Všechno ostatní jsou jenom vedlejší a nedůležité implementační detaily. Komplexitu (a tím pádem i délku a cenu vývoje a počet chyb v programech) by drasticky zredukovalo použití funkcionálního a logického programování, relačního modelu dat a deklarativních constraints, která vymezují konzistentní stav aplikace. Všechna zásadní logika programu by byla vyjádřena deklarativně pomocí funkcionálně relačního programování (FRP).

Další zásadní myšlenkou je, že snaha zredukovat komplexitu by měla být nadřazena všemu ostatnímu. Pokud je potřeba do programu zavést komplexitu nezásadních částí (například kvůli výkonu), je od sebe třeba zásadní a nezásadní části jasně oddělit tak, že i když budou všechny nezásadní části odstraněny, program bude stále korektně pracovat – chování je plně specifikováno v zásadní logické části.

V závěru paperu autoři ukazují jak by mohla vypadat FRP aplikace zbavená vší komplexity. Nejprve definují bázové relace, odvozené relace, všechny constraints (klíče, cizí klíče, podmínky konzistence vyjářené relačními výrazy), pak (opet deklarativně) přidají několik vodítek, jak má systém nakládat s relacemi aby pracoval efektivně, jak a které ukládat a které odvozené relace materializovat a to všechno bez toho, aby kdekoli programovali jak se má co dělat.

Flattr this!

This entry was posted in Funkcionální programování, Paper. Bookmark the permalink.

One Response to Out of the Tar Pit

  1. Severák says:

    The rise of ,,Worse is better” http://www.jwz.org/doc/worse-is-better.html – další zajímaví článek o tom proč je důležitá jednoduchost

Leave a Reply

Your email address will not be published. Required fields are marked *