Funkcionální podzim v Et neteře

Od poloviny září probíhal sedmitýdenní on-line kurz Functional Programming Principles in Scala, kterého jsme se jako programátoři nadšení novými možnosti, které přináší programování ve Scale, se zaujetím účastnili. Pod taktovkou Martina Oderskyho, tvůrce Scaly, jsme prošli zákoutími čistě funkcionálního programování ve Scale.

Scala je revoluční přirozeným zkombinováním funkcionálního a objektově orientovaného programování, jejichž spojení přináší silné, typově bezpečné konstrukce s velkou vyjadřovací schopností i na malém prostoru zdrojového kódu. Z této symbiózy a zcela nových vlastností jazyka vznikají nové „best practices“, které stojí za to si osvojit.

Čistě funkcionální programování, které bylo probíráno v kurzu, nabízí přirozené abstrakce matematických ale obecně i jiných algoritmických problémů a vede k dobrému stylu programování bez nechtěných vedlejších efektů (např. v podobě modifikace stavu vstupních dat), které jsou zdrojem potenciálních chyb v aplikacích.

Materiály probírané v kurzu byly i součástí oficiálního kurzu funkcionálního programování na EPFL, kde Martin Odersky působí jako vysokoškolský profesor. Po dobu sedmi týdnů jsme pravidelně čekali na svou úterní várku přednášek a hodnocených programátorských úkolů a dočkali jsme se řady pěkně zpracovaných přednášek a cvičení, jejichž obtížnost místy kolísala a v závěru zajímavě gradovala.

Martin Odersky prošel řadou témat, která probírá i ve své knize Programming in Scala, v kurzu ovšem s větším teoretickým i praktickým důrazem na oblast funkcionálního programování ve Scale, s důrazem na pochopení vlastních základů a motivací funkcionálního programování.

Kurz už je nyní ve stádiu vyhodnocování, vypršela deadline pro vyřešení posledních úkolů, nicméně materiály kurzu jsou stále k dispozici (v podobě autoritativních video-přednášek od samotného tvůrce Scaly a cvičení, na kterých se podíleli také doktorandi EPFL).

Kurz postihl řadu oblastí:

  • Funkce a strategie jejich vyhodnocení, základy Scaly jako takové,
  • higher-order funkce, které přijímají na vstupu jiné funkce, nebo jejichž výsledkem je další funkce, function currying, tail rekurze,
  • numerické/matematické problémy v podobě výpočtu odmocnin, prvočísel, pevných bodů funkcí apd. a všudypřítomná elegantní rekurzivní řešení problémů,
  • základy datových abstrakcí a objektového programování ve Scale,
  • polymorfismus vs. pattern matching,
  • přirozené propojení funkcí a objektů a aplikace stejného substitučního modelu pro vyhodnocování výrazů na funkce i objekty,
  • hierarchie typů, variance,
  • immutable seznamy a jejich bohaté API umožňující programování na vyšší úrovni bez zbytečného boilerplate kódu,
  • implicitní parametry,
  • přehled důležitých typů immutable kolekcí,
  • for-expression pro dotazování na data, transformaci dat a řešení kombinačních problémů,
  • výrazy s lazy vyhodnocováním, streamy reprezentující nekonečné sekvence, použití streamů v rekurzivních algoritmech pro průchod stavového prostoru.

Nedílnou součástí bylo praktické procvičení probíraných problémů na méně i více záludných příkladech. Cvičení byla po odeslání buildovacím nástrojem SBT do repozitářů Coursery hodnocena sofistikovanou sadou automatických testů a kontrol programovacího stylu (i vlastní dobře zvládnuté technické zázemí kurzu stálo za pozornost). K vhodnému stylu programování (nejen) ve Scale a nejzajímavějším poznatkům z kurzu se jistě zanedlouho vrátíme. Při troše štěstí se dočkáme příští rok podobně kvalitních kurzů, které by měly být věnovány mutable konstrukcím ve Scale, jejich kombinaci s funkcionálním stylem programování, paralelismu a tvorbě doménově specifických jazyků (DSL) pomocí konstrukcí Scaly.

Sám Martin Odersky hodnotil tento kurz v rámci svého keynote na Scala eXchange 2012 velice pozitivně a také nechal nahlédnout do pozadí příprav. Navíc oznámil, že se bude kurz příští rok opakovat. Takže pokud jste jej letos nestihli, budete mít příští rok další možnost.

Zdroje

Článek obsahuje 0 komentářů