Seminář o jazyku Perl 6
V letním semestru 2016/17 vedeme s Filipem Štědronským seminář o jazyku Perl 6 [NDMI094] (viz reklamní letáček). Seminář se koná ve středu od 15:40 v S8.
Zápočet dáváme za jednoduchý zápočtový program, účast na semináři k jeho napsání nejspíš výrazně dopomůže.
Vyzkoušejte si Perlivou soutěž :-)
Program semináře
| datum | co jsme dělali | tahák | video |
|---|---|---|---|
| 1. 3. | Filosofování o programovacích jazycích a pomluvení většiny z nich coby motivace pro studium Perlu6. Principy návrhu P6. Příklady z letáčku. | 02 | |
| 8. 3. |
Základy syntaxe: mezery (a unspaces), komentáře, literály. Proměnné
a deklarátor my. Základní operátory a řídicí konstrukce.
| 03 | 03 |
| 15. 3. |
Uvedení state na pravou míru. Řetězce a quoting.
Proměnné, kontejnery a binding. Posloupnosti, pole, slipy a generátory
posloupností.
| 04 | 04 |
| 22. 3. | Základní metody seznamů a polí. Heše a jejich příbuzenstvo (množiny, pytle a mixy). Funkce a jejich signatury, jak se z argumentu stane parametr. | 05 | není |
| 29. 3. | Funkce, rutiny, bloky, multifunkce, is cached. Subsignatury. Funkce MAIN. Operátory: definice, určení priority, junctions, metaoperátory. | 06 | 06 |
| 5. 4. | Násobení řetězců a seznamů. Feed operators. OOP: objekty a třídy, (multi)metody, atributy a accessory. Vícenásobná dědičnost, MRO (method resolution order) a algoritmus C3, interakce s multimetodami. | 07 | 07 |
| 12. 4. | OOP: konstruktory, delegace, kompozice (role a mix-iny). Typové objekty aneb mnoho různých undefů. Metatřídy a metametody. Zvěřinec standardních typů. Výjimky. | 08 | 08 |
| 19. 4. | Ještě k výjimkám: failures, control flow exceptions. Phasery. Úvod do Unicode: různé druhy codepointů, reprezentace, vlastnosti, normální formy. Stringy v P6: Str, Uni, Buf a Blob. Reklama na regexy. | 09 | 09 |
| 26. 4. | Regexy: literály a matchovací operátory, množiny a kategorie znaků, kvantifikátory a jejich modifikátory, alternativy, match objekty, zachytávání (dvojí tvář captures), assertions, skládání regexů. | 10 | 10 |
| 3. 5. | Regexy: backtracking, longest token matching, příslovce, gramatiky a jejich dědičnost, sémantické akce, proto-regexy. Balíčky a moduly, exportování a importování. | 11 | 11 |
| 10. 5. | Interakce s cizím kódem: NativeCall, Inline::Perl5. Generování kódu v době importu. Práce se soubory. Líné vyhodnocování, gather/take. Paralelní a asynchronní programování: HyperSeq, spouštění procesů, promises, channels, supplies. | 12 | 12 |
| 17. 5. | Přednáška se nekoná: Rektorský sportovní den. | ||
| 24. 5. | Implementace P6: NQP (jazyk, jeho překladač, obecná stavebnice překladačů), serializace, QAST (abstraktní skoro-syntaktický strom), 6model (stavebnice objektových systémů), MoarVM. Příklady: rozšíření jazyka o HTML quoting s bezpečnou interpolací, (HTMLQuote.pm6, html-test.p6), jednoduchý systém šablon (template.p6). Makra (pouze v taháku, na přednášce jsme nestihli). | 14 | 14 |
Kde najít dokumentaci?
- Oficiální dokumantace – aktuální a udržovaná, ale místy neúplná.
- Apokalypsy, exegeze a synopse – původní návrhové dokumenty Perlu 6 z doby jeho vzniku. Zajímavé spíš z historického a filosofického hlediska, většina informací tam je zastaralá. Občas se tam odpověď na záludnou otázku najít dá, jen vyžaduje experimentální verifikaci.
- Další odkazy na stránkách Perlu 6.
Jak si pořídit Perl 6
Debian
Verze Rakuda v Jessie (2014.07) je nepoužitelně stará. Připravili jsme pro vás APT repozitář s aktuální verzí 2017.02. Přidejte následjící řádek do /etc/apt/sources.list:
deb http://regnarg.cz/p6 jessie main
Potom už jen:
apt update
apt install rakudo
V testing je verze 2016.12, která by mohla být dostačující. Nainstalujte prostě apt install rakudo. Případně můžete rovněž zkusit nás repozitář.
Arch Linux
Pro Arch existuje neoficiální repozitář obsahující aktuální binární balíčky Rakuda. Stačí přidat do /etc/pacman.conf:
[rakudo]
Server = https://spider-mario.quantic-telecom.net/archlinux/$repo/$arch
SigLevel=Never
a pak:
pacman -Sy rakudo
Alternativně lze balíčky sestavit z AUR.
Windows
Nešťastníci, kteří si místo operačního systému pořídili Windows, mohou sáhnout po Rakudo Star.
Rakudobrew
Pokud si chcete zkompilovat nejnovější verzi Rakuda z repozitáře, můžete použít rakudobrew.
git clone https://github.com/tadzik/rakudobrew
cd rakudobrew
bin/rakudobrew build moar 2017.01
PATH=`pwd`/moar-2017.01/install/bin:`pwd`/moar-2017.01/install/share/perl6/site/bin:$PATH
perl6 # Zkusíme, že překladač funguje
# Nainstalujeme správce modulů, pro jistotu oba :)
bin/rakudobrew build panda
bin/rakudobrew build zef
# Nainstalujeme základní moduly, ale pozor, jsou k tomu potřeba hlavičkové soubory od libssl
apt update && apt install libssl-dev
panda install Task::Star
Počítačová laboratoř na MS
Je tu nainstalováno aktuální Rakudo, ale zatím bez správce modulů.