Detail předmětu
Skriptovací jazyky
ISJ Ak. rok 2021/2022 letní semestr 5 kreditů
Základní koncepty skriptovacích jazyků, skriptování versus programování, přehled vývoje skriptovacích jazyků, makrojazyky, tvorba komponent, základy jazyka Python, skriptování v operačních systému Unix, objektově-orientované programování ve skriptovacích jazycích, souběh a paralelismus.
Garant předmětu
Koordinátor předmětu
Jazyk výuky
Zakončení
Rozsah
- 26 hod. přednášky
- 26 hod. projekty
Bodové hodnocení
- 51 bodů závěrečná zkouška (písemná část)
- 9 bodů půlsemestrální test (písemná část)
- 40 bodů projekty
Zajišťuje ústav
Přednášející
Cvičící
Stránky předmětu
Získané dovednosti, znalosti a kompetence z předmětu
Studenti se seznámí s moderními skriptovacími jazyky, po úspěšném zvládnutí předmětu budou schopni demonstrovat znalosti a chápání základních vlastností a role skriptovacích jazyků, syntaxe a sémantiky jazyka Python, implementovat skripty pro automatizaci systémových činností a vyvíjet jednoduché aplikace s použitím vhodných nástrojů.
Studenti se naučí řešit problémy v jazyce Python formou pravidelných projektů. Zdokonalí se v praktickém užívání programátorských nástrojů.
Cíle předmětu
Porozumět tématu skriptovacích jazyků a jejich aplikací, pochopit komplementaritu skriptovacích jazyků vzhledem k systémovým jazykům, jejich výhody a nevýhody. Seznámit se základy regulárních výrazů, použitím vhodných struktur a postupů zejména v jazyce Python (částečně i ruby a dalších).
Proč je předmět vyučován
I když je předmět ISJ pro některé první příležitostí k seznámení se s programovacím jazykem Python, a okrajově Ruby, případně dalšími, nejedná se o základní kurz programování v těchto jazycích. Osobně se domnívám, že úvodní kurzy programování v konkrétním jazyce (za kredity) na univerzity snad ani nepatří. Někteří studenti je dnes absolvují dokonce už v raných ročnících gymnázií či na středních školách. A i pokud se tak nestane, měli by ti, kteří úspěšně prošli přijímacími zkouškami na FIT a chtějí poznat jen základní prvky jazyků typu Python, zvládnout pochopit náplň úvodních internetových kurzů, případně základních příruček, kterých je na internetu celá řada (viz také odkazy níže).
Obsah předmětu jde v mnoha směrech daleko nad rámec základních kurzů programování a zhruba od poloviny semestru se předmět dotýká témat, která bývají řazena mezi pokročilé techniky programování v tom kterém jazyce. I když tedy začínáme regulárními výrazy a základními stavebními kameny jazyka Python, probíráme tuto látku velmi rychle, abychom se co nejdříve dostali ke konceptuálně zajímavým a z hlediska systémových jazyků typu C novým tématům. Dále, i když většinu konstrukcí ukazujeme v jazyce Python a vyzdvihujeme některé elegantní konstrukce v Ruby a jinde, zaměřuje se ISJ na obecné koncepty, které jsou typické pro celou rodinu vysokoúrovňových dynamických skriptovacích jazyků.
ISJ není kurz, v němž lze získat kredity zadarmo. Studenti 1. ročníku, kteří o něj budou mít zájem, jej určitě zvládnou. Ale jistě budou muset překonat skutečnost, že se s některými koncepty (mj. i objektově orientovaným přístupem) setkají prostě poprvé, a nebudou tedy moci stavět na základech osvojených ve specializovaných kurzech. Zkušenost z předchozích let ale ukazuje, že se zvýšené úsilí z dlouhodobého hlediska i studentům 1. ročníku vyplatí.
Předmět je nepovinný, takže většinou není problém jej neabsolvovat. Pokud byste ale rovnou věděli, že se nebudete moci či chtít přípravě a projektům pravidelně věnovat, doporučuji raději vybrat jednodušší kurzy. Ať nejste zklamaní...
Pro každé z probíraných témat jsou zveřejněny odkazy na volně dostupné zdroje, často videa z konferenčních přednášek (v angličtině), s nimiž by se studenti měli seznámit ještě před přednáškou, na kterém je ta která oblast probírána. Přednášky cíleně nejsou vedeny jako výklad nových témat "od nuly", ale předpokládá se, že přítomní už témata alespoň na základní úrovni prošli v odkazovaných materiálech, a lze se tedy věnovat diskusi, provázání probíraného s dřívější látkou a souvisejícími oblastmi, případně vysvětlování pokročilých otázek.
Při současném rozsahu předmětu bohužel nelze zavést klasická počítačová cvičení. Všem proto doporučuji používat na přednáškách notebooky, tablety a další zařízení, na nichž si budou moci přímo "hrát" s demonstračním kódem. Část přednášky by tak lépe mohla mít formu demonstračního cvičení, kdy budu kód modifikovat přímo před tabulí a vy budete moci vidět, případně si i zkoušet, důsledky konkrétních změn.
Materiály, které budu využívat na přednáškách (jak bylo uvedeno, spíše jako podklad k diskusi) budou sice zveřejněny, ale nejsou primárně určeny k samostudiu. Nemá tedy cenu se na ně zaměřovat při přípravě na zkoušku, je vhodnější znovu projít materiály k jednotlivým tématům a projekty. Materiály budou převážně ve formátu Jupyter Notebook. O instalaci tohoto prostředí bude řeč na první přednášce.
Doporučené prerekvizity
- Operační systémy (IOS)
- Úvod do softwarového inženýrství (IUS)
- Základy programování (IZP)
Literatura studijní
- Harms, D., Macdonald, K.: Začínáme programovat v jazyce Python. Computer Press, ISBN 80-7226-799-X.
- Lutz, M., Ascher, D.: Naučte se Python - Pohotová příručka. Grada, 2003, ISBN 80-247-0367-X.
- Driscoll, M: Python 201: Intermediate Python. Amazon Digital Services LLC, ASIN: B01LMUAYSO, 2016.
- Beazley, D.M.: Python - Podrobná referenční příručka pro programovací jazyk Python. Neocortex.
- Abelson, H.: Structure and interpretation of computer programs, Cambridge. MIT Press, 2002.
Osnova přednášek
- Úvod, stručná historie vývoje skriptovacích jazyků, výhody a nevýhody, porovnání jazyků
- Regulární výrazy a jejich podpora ve skriptovacích jazycích
- Vytváření jednoduchých skriptů v prostředí OS Unix, automatizace systémových činností
- Jména v Pythonu, základní datové struktury a jejich implementace
- Slovník (hashovací struktura) a jeho implementace v Pythonu
- Funkce a jejich argumenty, moduly, zpracování výjimek
- Základy objektově orientovaného programování ve skriptovacích jazycích
- Pokročilé prvky objektového přístupu v Pythonu, vícenásobná dědičnost a pořadí hledání metod
- Základy jazyka ruby a srovnání s Pythonem
- Dekorátory funkcí a tříd
- Iterační protokol a iterovatelné objekty
- Generátory a jejich použití v kontextu funkcí
- Souběžnost a paralelismus
Osnova ostatní - projekty, práce
Samostatné projekty řešící zadané obecnější úlohy, předpokládá se naprogramování středně rozsáhlého skriptu v jazyce Python. Je požadováno elektronické odevzdání pomocí IS FIT.
V předmětu je místo jednoho či několika málo velkých projektů zadáno 8 miniprojektů, tedy od 3. přednášky téměř každý týden. Je k dispozici server, který projekty ještě před oficiálním odevzdáním prostřednictvím WIS automaticky ohodnotí, takže lze předem zjistit, kolik bude za aktuální řešení bodů. Půlsemestrální test a zkouška jsou přímo svázány s tématy, která si vyzkoušíte v rámci projektů.
Průběžná kontrola studia
- Půlsemestrální písemný test (9 bodů).
- Individuální projekt (40 bodů).
Kontrolovaná výuka
Kontrolovaná výuka zahrnuje půlsemestrální test a individuální projekt. Půlsemestrální test nemá náhradní termín.
Ke zkoušce je třeba získat minimálně 1/3 bodů z bodovaných aktivit, přičemž 13 bodů je minim z projektu.
Podmínky zápočtu
- Získání alespoň 20 bodů z projektů
Zařazení předmětu ve studijních plánech