Metodika programování a filozofie programovacích jazyků

Z ωικι.matfyz.cz
Přejít na: navigace, hledání
Metodika programování a filozofie programovacích jazyků
Kód předmětu: NPRG003
Přednáší: Rudolf Kryl

Obecné povídání o jazycích[editovat | editovat zdroj]

Tato část je neúplná a potřebuje rozšířit. Záměrem této sekce je být odrazem přednášek. Zatím obsahuje pouze odkaz na sbírku odkazů níže.

Poznámky[editovat | editovat zdroj]

Podrobnosti k vybraným jazykům[editovat | editovat zdroj]

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[editovat | editovat zdroj]

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++[editovat | editovat zdroj]

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[editovat | editovat zdroj]

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[editovat | editovat zdroj]

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[editovat | editovat zdroj]

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[editovat | editovat zdroj]

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