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ů.