e-x-a.org » NPRG005 Neprocedurální programování 2016/17

Informační stránka o cvičení z neprocedurálního programování.

  • ČAS: bude
  • KONTAKT: exa.exa@gmail.com, do předmětu napište něco jako [NEPROC], ať se odlišíte od šedé mezivrstvy skorospamu.

Materiály ke čtení

Kde sehnat vývojové prostředí?

Oficiální seznam.

Na cvičeních budu používat:

  • SWI prolog na příklady, GNU prolog na některé ošklivé triky
  • Racket scheme
  • standardní GHC/GHCi

Za co bude zápočet?

Za splnění následujících podmínek:

  • splnit pár domácích úkolů (aspoň jeden z prologu a aspoň jeden z haskellu, ve vlasntním zájmu ale oba, + 1 bonus ze scheme)
  • na cvičeních občas vypadat aktivně zúčastněně (nedostatek aktivitních bodů bude možné nahradit nadprodukcí bodů za domácí úkoly)
  • vyrobit zápočťák

Na zkoušku je potřeba zápočet, proto je fajn mít všechno vyřešené do konce května.

Pokud v haskellu i prologu už programovat umíte a myslíte si, že požadavky pro vás budou triviální, dejte mi vědět mailem nebo na první hodině, ať se zbytečně nenudíme docházkou.

Zápočťáky

Narozdíl od zápočťáků z “tradičních” programování není potřeba, aby zápočtový program byl nějak extrémně obsáhlý, ale je nutné jím demonstrovat, že umíte správně zneužít výhody neprocedurálního přístupu. Téma je libovolné (kromě úplně triviálních úloh dostupných v desítkách kopií na celém internetu), ale doporučuje se neodbíhat od témat, pro která byly neprocedurální jazyky stvořeny:

  • V prologu je vhodné programovat umělé, logicky smýšlející inteligence a řešítka problémů s velkým stupněm volnosti
  • V haskellu je vhodné psát cokoliv co využije jednoduché zpracování nepravidelných datových struktur a/nebo lazy vyhodnocování.
  • Scheme je někde na “půlce cesty” — typy jsou dynamické, (map) užitečný, a navíc je velmi jednoduché generovat další schemový kód (protože všechna data jsou seznamy a seznamy jsou kód). Transpilery vítány.
  • Moje velice oblíbená skupina problémů: parsery, miniaturní jazyky, typecheckery (co třeba Hindley-Milnerův typový systém “skoro zadarmo” v prologu?), odvozovače informací o kódu (statická analýza), maličké interpretery, pidi virtuální stroje, transpilery, (pře)formátovače, ...
  • Dost nápadů na témata můžete najít u Jána Hrice a Rudolfa Kryla anebo taky třeba tady ale obecně i jinde a dost na googlu.
Termíny
  • Domluvení a odsouhlasení tématu včetně zapsání do SISu: 30. 4. 2018 23:59:59
  • Odevzdání včetně připomínkování nebo prezentace: poslední cvičení (bude nejspíš celé věnované odevzdávání a prezentacím zápočťáků)

(Pozor, přes červen většinou nebudu k dispozici, pokud chcete zápočet až v červnu, velmi silně doporučuju zápočťák stihnout do posledního cvičení.)

Mezivýsledky

Jsou k vidění v SISu ve studijních mezivýsledcích. Vysvětlivky:

  • Číslo N = aktivita na N-tém cvičení
  • ABCDE = úkol A-E.
  • A+ = pěkný úkol
  • A! = úkol nevypadal, že funguje, jak má (doporučení k odevzdání dalšího úkolu)

Zadání domácích úkolů

Řešení DÚ vkládejte do SISu pomocí rozhraní “studijní mezivýsledky”.

Průběh cvičení

Věci co jsme napsali na hodinách budou tady.

Bonusy

budou.