Tento předmět se věnuje studiu programovacích jazyků. Studenty seznámí se základními principy a koncepty paradigmat včetně strukturovaného, objektově orientovaného a funkcionálního
programování. Koncepty jsou ilustrovány na příkladech konkrétních jazyků a studenti získají zkušenosti s implementací některých konceptů v praxi.
Poslední úprava: Holan Tomáš, RNDr., Ph.D. (21.05.2025)
The course treats programming languages as the subject of study. It introduces basic principles and concepts of paradigms including structured, object-oriented and functional programming. The concepts are
illustrated through examples in concrete programming and students will gain hands-on experience implementing some of the concepts in practice.
Poslední úprava: Holan Tomáš, RNDr., Ph.D. (21.05.2025)
Podmínky zakončení předmětu -
Pro zakončení předmětu je zapotřebí získat zápočet a složit zkoušku. Zápočet bude udělen za úspěšné dokončení úkolů zadávaných v průběhu semestru nebo za vypracování zápočtového programu v rozsahu dohodnutém s vyučujícím.
Poslední úprava: Holan Tomáš, RNDr., Ph.D. (21.05.2025)
Credit and an exam are required to complete the course. Credit will be awarded for successful completion of assignments given during the semester or for completing a credit program within the scope agreed upon with the instructor.
Poslední úprava: Holan Tomáš, RNDr., Ph.D. (21.05.2025)
Literatura -
1. John C. Mitchell. Concepts in Programming Languages. ISBN: 978-0521780988, Cambridge University Press, 2003.
2. Mark Priestley. A Science of Operations: Machines, Logic and the Invention of Programming. ISBN 978-1-84882-554-3, Springer, 2011.
3. Robert Nystrom. Crafting interpreters. ISBN: 978-0990582939, Genever Benning, 2021.
4. Ramsey, Norman. Programming Languages: Build, Prove, and Compare. ISBN: 9781107180185. Cambridge University Press, 2022.
Poslední úprava: Holan Tomáš, RNDr., Ph.D. (21.05.2025)
1. John C. Mitchell. Concepts in Programming Languages. ISBN: 978-0521780988, Cambridge University Press, 2003.
2. Mark Priestley. A Science of Operations: Machines, Logic and the Invention of Programming. ISBN 978-1-84882-554-3, Springer, 2011.
3. Robert Nystrom. Crafting interpreters. ISBN: 978-0990582939, Genever Benning, 2021.
4. Ramsey, Norman. Programming Languages: Build, Prove, and Compare. ISBN: 9781107180185. Cambridge University Press, 2022.
Poslední úprava: Holan Tomáš, RNDr., Ph.D. (21.05.2025)
Kontroly studia předmětu a podmínky pro jejich úspěšné vykonání, způsob hodnocení -
Zkouška je ústní. Požadavky odpovídají sylabu předmětu v rozsahu, který byl přednesen na přednáškách.
Poslední úprava: Holan Tomáš, RNDr., Ph.D. (21.05.2025)
The exam is oral. The requirements correspond to the syllabus of the course in the scope that was presented at the lectures.
Poslední úprava: Holan Tomáš, RNDr., Ph.D. (21.05.2025)
Sylabus -
Počátky programovacích jazyků
Raná historie programovacích jazyků
Nestrukturované programování
Vědecké, obchodní a symbolické programování
Modely programovacích jazyků
Specifikace syntaxe jazyka
Abstraktní stroje a sémantické modely
Lambda kalkul jako programovací jazyk
Programovací paradigma Algolu
Strukturované programování a bloková struktura kódu
Předávání parametrů, rozsah platnosti proměnných, výjimky
Bezpečnost, datové typy a statické typování
Funkcionální programování
Programování pomocí výrazů a funkcí
Algebraické datové typy a typy funkcí
Typová kontrola a odvozování typů
Objektová orientace a abstrakce dat
Moduly a abstraktní datové typy
Zapouzdření, dědičnost a podtypy
Prototypové a třídové OO
Další programovací paradigmata
Logické programování, unifikace a rezoluce
Asynchronní, reaktivní a souběžné programování
Metaprogramování, událostmi řízené programování
Poslední úprava: Holan Tomáš, RNDr., Ph.D. (21.05.2025)
Origins of programming languages
Early history of programming languages
Unstructured programming
Scientific, business and symbolic programming
Models of programming languages
Specifying the syntax of a language
Abstract machines and semantic models
Lambda calculus as a programming language
The Algol programming paradigm
Structured programming and block structures
Parameter passing, variable scoping, exceptions
Language safety, data types and static typing
Functional programming paradigm
Programming with expressions and functions
Algebraic data types and function types
Type checking and type inference
Object-orientation and data abstraction
Modules and abstract data types
Encapsulation, inheritance and subtyping
Prototype-based and class-based OO
Further programming paradigms
Logic programming, unification and resolution
Asynchronous, reactive and concurrent programming
Metaprogramming, event-driven programming
Poslední úprava: Holan Tomáš, RNDr., Ph.D. (21.05.2025)