Zpět výuka LS 2005/6

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

  1. 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).
  2. 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í.

  1. přednáška 20.února
    • Náplň a cíle předmětu
    • Zkoušky
    • Stručný přehled hlavních programovacích jazyků
  2. Začátek semestru
  3. přednáška 27.února
    • Fortran
    • Algol 60
    • Algol 68
  4. Začátek semestru
  5. 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
  6. Začátek semestru
  7. 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
  8. Začátek semestru
  9. 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"
  10. Začátek semestru
  11. přednáška 27.března
    • Smalltalk - dokončení
    • Ada
      • okolnosti vzniku, hvězdné války
      • Datové typy, pole
      • Příkazy
  12. Začátek semestru
  13. 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í
  14. Začátek semestru
  15. 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++
  16. Začátek semestru
  17. přednáška 24.dubna
    C++ a Java
  18. Začátek semestru
  19. přednáška 15.května
    skriptovací jazyky - suplování Cyril Brom
  20. Začátek semestru
  21. přednáška 22.května
    Co všechno jsme nestihli
  22. Začátek semestru
Zpět výuka LS 2005/6