PRG003 Metodika programování a filozofie programovacích jazyků
Výběrová přednáška 2/0 Zk - pondělí 9:00 S4
Náplň předmětu a předpoklady
Přednáška je vhodná především pro studenty informatiky - jak odborného,
tak i učitelského studia, mohou ji však navštěvovat i posluchači jiných oborů,
kteří se hlouběji zajímají o programování a chtějí se více dovědět o programovacích jazycích.
Přednáška předpokládá u posluchačů znalosti v rozsahu základních přednášek
z programování v prvním ročníku (Pascal, včetně základů objektového programování).
Hodí se i přehledová znalost jazyků C a C++
a některého neprocedurálního jazyka, není však podmínkou absolvování příslušných předmětů.
Skutečný zájemce si jistě potřebné globální vědomosti o těchto jazycích dokáže samostatně doplnit.
Mnohokrát se již stalo, že idea obsažená v dávno zapomenutém (čti neužívaném) jazyku
se později vrátila jako „objev“. Na přednášce se společně zamyslíme nad vývojem
metodiky programování (strukturované, modulární, objektové, event-driven, logické,
funkcionální, ..., grafické programování) a nad tím,jak se tyto koncepty projevily
v nejdůležitějších programovacích jazycích. Půjde nám především o souvislosti,
ne o detaily nebo přesný historický popis vývoje. Důraz bude na idejích, které jednotlivé
konstrukce v programovacích jazycích implementují, ne na syntaxi, pomocí níž se v nich zapisují.
Při výběru programovacích jazyků budeme větší pozornost věnovat těm, které se skutečně "ujaly v praxi".
Zcela jistě se budeme zabývat těmito programovacími jazyky: FORTRAN, ALGOL, SIMULA, ADA, LISP, APL,
Prolog, C a C++, SMALLTALK, Java možná i některými prostředky pro přípravu internetových dokumentů.
Míra pozornosti věnovaná jednotlivým aspektům a programovacím jazykům bude záviset
i na zájmu posluchačů.. Výklad bude veden pomocí příkladů, nepředpokládá se však, že by
posluchači museli psát a ladit svoje programy v jednotlivých jazycích.
Zkouška je ústní a skládá se ze dvou částí (rozdělení je jen terminologická záležitost,
obě části se konají najednou).
- Pro první část si student vybere jeden z jazyků, kterým bude na přednášce věnována větší pozornost
(o repertoáru se domluvíme, po předchozí domluvě je možné si zvolit i jiný). Zvolený jazyk bude muset znát podrobněji.
První část zkoušky může student nahradit vypracovaním eseje na relevantní téma (podléhá schválení přednášejícím).
- Pro druhou bude vypsán jistý počet "přehledových" otázek pokrývajících tématiku přednášky.
Co bylo resp. bude na přednášce
Náplň budoucích přednášek je jen velmi orientační. Změna programu vyhrazena,
vstupné se v takovém případě nevrací.
- přednáška 20.února
- Náplň a cíle předmětu
- Zkoušky
- Stručný přehled hlavních programovacích jazyků
- přednáška 27.února
- Fortran
- Algol 60
- Algol 68
- přednáška 6.března
- APL
- Simula 67
- Datové typy
- Příkazy
- Třídy - parametry, operační část, prefixace (dědičnost), virtuální atributy, inner,
kvalifikace - inspekt, predikáty in a is
- Prefixovaný blok
- Systémová třída SIMSET
- přednáška 13.března
- Opakování třídy SIMSET
- Kvaziparalení systém v Simule, pojem koprogramu,
prefixovaný blok jako hnízdo kvasiparalelního systému, stav třídy (samostatná a připojená),
procedury detach, resume, call,
- Diskrétní simulace - kalendář událostí, událostní a procesní simulace
- Třída Simulation
- Třída EVENTNOTICE
- třída process
- Pasivační procedury: passivate, hold, cancel, wait
- aktivační procedury: acivate a reactivate
at time, at tme prior, after time
- Digitalizovaný popis třídy SIMULATION (ze skript M.Malíka z roku 1979)
- zatím před korektutou
- Zdrojový text příkladu o vožení písku z hromady na hromadu probíraného na přednášce
- Vzpomínka: parodie na příklady z písemky ze Simuly, kterou psali studenti MFF okolo roku 1975
- přednáška 20.března
- Opakování Ssimula
- Kvaziparalelní systém
- Třída SIMULATION viz
kalendář událostí, třída EVENTNOTICE,
třída process, aktivační a passivační procedury
procedury current a time
main a tělo třídy SIMULATION
- Příklad simulující převážení písku z hromady A na hromadu B
- Metodika vytváření simulačních modelů:
- Volba procesů - mohou v dalším zjemňování modelu další přibývat, neměly by ubývat ubývat
- Volba událostí jednotlivých prosesů - obdobně měli bychom vystačit se zjemňováním,
jinak je "vše špatně" - a je třeba začít od začátku
- Příchod aktérů do systému až když je to nezbytné a
naopak včasný odchod po tom co již skončili svůj životní cyklus - šetření paměti
- programování statistik v hlavním programu
- Třída text, její použití
- předádávání parametrů v Simule
- Smalltalk - "jediný čistě objektový jazyk"
- přednáška 27.března
- Smalltalk - dokončení
- Ada
- okolnosti vzniku, hvězdné války
- Datové typy, pole
- Příkazy
- přednáška 3.dubna
- Opakování pole
- Typ rekord, s diskriminantem,
- Funkce a procedury a jeji specifika
- Předávání parametrů
- Odvozené typy, přejmenovávání podprogramů
- Balíky (packages), typy private a limited privatte
- Vyjímky - jen zmínka, že existují
- Generiky - co může být parametrem
- Paralelismus v Adě
- tasky, časový průběh výpočtů nadřízeného tasku a podřízených tasků
- randesvous, entry, příkazy accept a select,
- jednoduché příklady použití
- přednáška 10.dubna
- Clu jako příklad modulárního jazyka
- O Pascalu. Wirthův Pascal, norma (úroveň 0 a 1), Turbo Pascal, Borland Pascal
- C východiska, Kerningham=Ritchie, ANSI-C
- Východiska C++
- přednáška 24.dubna
C++ a Java
- přednáška 15.května
skriptovací jazyky - suplování Cyril Brom
- přednáška 22.května
Co všechno jsme nestihli