IPP Půlsemestrálka - pojmy Flashcards
programovací jazyk
- prostředník mezi běžnou řečí a řečí počítače
- konečná množina příkazů, která má specifickou syntaktickou strukturu a přesně vymezenou sémantiku
počítačový program
- zápis v programovacím jazce, který obsahuje abstrakci reality
- implementuje abstranktní model, abstrahuje model počítače (zastiňuje konkrétní podobu výpočtu)
Abstrakce dat - dělení
- jazyky strojové/assemblery
- jazyky vyšší úrovně
- univerzální jazyky
- blokově strukturované jazyky
- modulární blokově strukturované jazyky
- objektově orientované jazyky
Jazyky strojové/assembelry - manipulace s daty
- data jsou skupina bitů
- aritmetické a bitové operace
- závislost na architektuře
- jednoduché datové typy
Univerzální jazyky - manupulace s daty
- velké množství typů
- nelze definovat nové typy
- neexistují klíčová slova
Blokově strukturované jazyky
- možnost definovat složitější datové struktury pomocí jednoduchých konstrukcí (lze je spojovat, vnořovat
- lze použít návrhové metologie
Modulární blokově strukturované jazyky - manipulace s daty
- odděluje definici typu od operací, vnitřní struktura je skryta
Objektově orientované jazyky - manipulace s daty
- spojuje data s operacemi, které je manipulují
Abstrakce řízení
- procedulární (imperativní) - programátor musí řešit, co za operace má být provedeno, a v jakém pořadí mají být provedeny
- deklarativní - programátor řeší jen, co za operace má být provedeno
Procedurální jazyky
- sestavují program jako posloupnost příkazů
- lze provádět skoky, u vyšších jazyků i cykly a větvení
- abstrakce jako podprogramy, bloky, koprogramy, paralelní programy, odložené zpracování
Podpogramy
- umožňují vnořené zpracování určitých logických funkcí či operací
- jsou volány skrze své rozhraní, které definuje předávané parametry a výsledek
- implementace je skryta v definici podpogramu, kde lze volat další či stejný podpogram -> jednoznačná identifikace podpogramu
Bloky
- nemají jméno -> nelze je volat
- jejich kód se uplatňuje jen v místě vložení bloku
- může mít své lokální definice
Koprogramy
- pojmenované bloky kódu
- mají k sobě symetrický vztah
- jejich kód je zpracováván současně či prokládaně
- rozhraní a identifikace jsou jako u podprogramů
- nemají synchronizační mechanismy (mohou být ale implementovány jako vlákna)
Paralelní programy a procesy
- velké logické celky
- vztahy nemusejí být symetrické
- může docházet s synchronizaci
- nejvyšší úroveň abstrakce - processy, v rámci procesů vlákna
Odložené zpracování
- pokud výsledek některé operace v daném místě nemusí být nutně dále použit, vyhodnocení operace je pozdrženo a provedeno později a jen v případě, že je výsledek potřeba
Deklarativní jazyky
- vysoká abstrakce a vyjadřovací síly -> příkazy pro větvení toku řízení a opakování s možnost vnoření
Deklarativní jazyky - volání podprogramů hodnotou
- parametry se vyhodnocují před voláním podprogramu
- pokud se eliminuje opakováné vyhodnocení podvýrazu - striktní vyhodnocení
Deklarativní jazyky - volání podprogramů jménem
- parametry se předávají nevyhodnoceny a jsou reprezentovány zástupným jménem
- k jejich vyhodnocení dojde, až to vyžaduje volaný podpogram - nestriktní vyhodnocení
Deklarativní jazyky - volání podprogramů v případě potřeby
- podobné jako volání jménem. hodnota se však uschovává pro další použití (nedochází k vícenásobnému vyhodnocování) - lazy vyhodnocení (taky nestriktní)
Specifikace jazyků
- formální báze
- syntaxe
- sémantika
- deklarace
- definice
Formální báze
- takový formální prostředek (kalkul, algebra…), který umožňuje exaktně popsat všechny konstrukce daného jazyka