Metodika programování a filozofie programovacích jazyků
Metodika programování a filozofie programovacích jazyků | ||||
|
Obsah
Obecné povídání o jazycích
Poznámky
- PRG003 rysy a odkazy - obsáhlá sbírka odkazů a informací k jednotlivým probíraným jazykům
Podrobnosti k vybraným jazykům
Jak je jistě známo, u zkoušky se vyžaduje podrobnější znalost jednoho jazyka, vybraného z následujích možností. Je také možné si domluvit jazyk individuálně. V tom případě se očekává vcelku podrobná znalost (volně cituji: "Když mě ten jazyk během půlhodiny u zkoušky někdo naučí, tak prosím...").
a) SIMULA 67
Osnova požadovaných znalostí:
- pojem třídy - objektové programování
- text, předávání parametrů,
- kvalifikace a inspekce
- prefixování, virtuální atributy, hidden a private, inner,
- kvaziparalelní systém - koprogramy
- třídy SIMSET a SIMULATION, princip procesní simulace
b) C++
Osnova požadovaných znalostí:
- realizace myšlenek objektového programování
- pojem třídy, členu, konstruktor a destruktor
- ochrana přístupu ke členům tříd
- vícenásobná dědičnost, abstraktní třídy,
- zpracování výjimek, šablony
- přetěžování operátorů a metod
- srovnání jazyků C a C++
c) Ada
Osnova požadovaných znalostí:
- charakteristika jazyka
- typy a typové kontroly, atributy,
- separátní kompilace, práce s knihovnami
- generiky
- podprogramy, předávání parametrů
- výjimky
- paralelismus, mechanismus randevous
d) Java
Osnova požadovaných znalostí:
- koncepce jazyka
- applety
- realizace myšlenek objektového programování
- konstruktory, metoda finalize a garbage collector
- abstraktní a finální metody a třídy
- rozhraní
- vnitřní třídy
- ochrana přístupu k členům tříd
- balíky
- vlákna
- příkazy a výrazy
- zpracování výjimek
- předávání parametrů
- automatické dokumentování
e) Haskell
Osnova požadovaných znalostí:
- typy v Haskellu, typová specifikace funkce
- základní způsoby definování výrazů, sémantika „mečování“ parametrů, as patterns ( @s ), žolíky ( _ ), lazy patterns
- lazy vyhodnocování, "nekonečné" termy
- Lambda abstrakce, používání jmen funkcí jako operátorů a naopak, specializace operátorů { (např. (x+) Třídy, podtřídy, instance.
- pole v Haskellu
Praktické zkušenosti ze zkoušky
- 30. 6. 2005
Měl jsem vybránu Adu, dostal jsem otázky: paralelismus a typový systém. U paralelismu dr. Kryla speciálně zajímalo, zda se vlákna (tasky) nějak synchronizují při inicializaci – nakreslit časové osy. (Nejdřív se inicializuje rodičovské vlákno, děti čekají, pak se inicializují děti a rodič čeká. Až jsou všehny děti zinicializované, rodič spouští svojí výkonnou část. Děti si ji spouští hned. Rodič (netypicky) smí umřít až po smrti všech dětí.)
Pak jsem dostal obecnou otázku – polemizovat na viditelností/dobou života objektů v různých jazycích. (Viz. např. C++: static, lokální proměnná v cyklu).
Při probírání Ady nešel nijak extra do hloubky (oproti přednášce). Obecnou otázku ze mě trošku tahal a pak mi dal jedničku.