IPP Půlsemestrálka - pojmy Flashcards

1
Q

programovací jazyk

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

počítačový program

A
  • 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)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Abstrakce dat - dělení

A
  • jazyky strojové/assemblery
  • jazyky vyšší úrovně
  • univerzální jazyky
  • blokově strukturované jazyky
  • modulární blokově strukturované jazyky
  • objektově orientované jazyky
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Jazyky strojové/assembelry - manipulace s daty

A
  • data jsou skupina bitů
  • aritmetické a bitové operace
  • závislost na architektuře
  • jednoduché datové typy
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Univerzální jazyky - manupulace s daty

A
  • velké množství typů
  • nelze definovat nové typy
  • neexistují klíčová slova
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Blokově strukturované jazyky

A
  • možnost definovat složitější datové struktury pomocí jednoduchých konstrukcí (lze je spojovat, vnořovat
  • lze použít návrhové metologie
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Modulární blokově strukturované jazyky - manipulace s daty

A
  • odděluje definici typu od operací, vnitřní struktura je skryta
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Objektově orientované jazyky - manipulace s daty

A
  • spojuje data s operacemi, které je manipulují
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Abstrakce řízení

A
  • 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
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Procedurální jazyky

A
  • 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í
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Podpogramy

A
  • 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
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Bloky

A
  • 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
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Koprogramy

A
  • 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)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Paralelní programy a procesy

A
  • velké logické celky
  • vztahy nemusejí být symetrické
  • může docházet s synchronizaci
  • nejvyšší úroveň abstrakce - processy, v rámci procesů vlákna
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Odložené zpracování

A
  • 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
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Deklarativní jazyky

A
  • vysoká abstrakce a vyjadřovací síly -> příkazy pro větvení toku řízení a opakování s možnost vnoření
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

Deklarativní jazyky - volání podprogramů hodnotou

A
  • parametry se vyhodnocují před voláním podprogramu

- pokud se eliminuje opakováné vyhodnocení podvýrazu - striktní vyhodnocení

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

Deklarativní jazyky - volání podprogramů jménem

A
  • 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í
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

Deklarativní jazyky - volání podprogramů v případě potřeby

A
  • 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í)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

Specifikace jazyků

A
  • formální báze
  • syntaxe
  • sémantika
  • deklarace
  • definice
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q

Formální báze

A
  • takový formální prostředek (kalkul, algebra…), který umožňuje exaktně popsat všechny konstrukce daného jazyka
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
22
Q

Syntaxe

A
  • definuje strukturu programu, tj. jakým způsobem je dovoleno řadit jednotlivé konstrukce za sebe
  • lze ji popsat formálními gramatikami (regulární, bezkontextové gramatiky, BNF, syntaktickými grafy…)
23
Q

Sémantika

A
  • popis/definice významu jednotlivých syntaktických konstrukcí, způsobu jejich vyhodnocení, zpracování atd.
  • popisuje se slovně nebo pomocí příkladů
  • 2 typy - statická (vlastnosti, které mohou být ověřovány během analýzy/překladu programu) a dynamická (vlastnosti, které lze ověřit až za běhu programu)
24
Q

Deklarace

A
  • úplně vymezuje atributy dané entity

- explicitní / implicitní

25
Q

Definice

A
  • úplně vymezuje atributy dané entity, u proměnných způsob alokace paměti, u funkcí/procedur jejich tělo
26
Q

Vlastnosti entity programu

A
  • jméno
  • adresa a umístění v paměti
  • hodnoty, keterých může nabývat
  • typ
  • doba života
  • rozsah platnosti
27
Q

Zpracování kódu (3 typy programů)

A
  • analyzátor
  • interpret/vyhodnocovací program
  • překladač
28
Q

Analyzátor

A
  • analyzuje vstupní text v programovacím jazyce a provádí kontrolu na základě textu
29
Q

Interpret

A
  • jakmile rozpozná příkaz ve vstupním programu, ihned jej provede
  • převádí vstupní program na posloupnost okamžitě prováděných akcí
30
Q

Překladač

A
  • vstupní text příkazů v programovaícm jazyce převádí na posloupnost příkazů jiného jazyka či stroje
  • cílem překladu bývá binární soubor, který je spustitelný na dané architektuře
31
Q

Nestrukturované jazyky

A
  • mapř. Fortran, Basic
  • rozšířené využívání ve skriptovacích jazycích
  • nemají formální bázi, neexistuje formální verifikace a validace
  • syntaxe je podávána přirozeným jazykem s příklady a může být volná či pevná
  • sémantika je podávána neformálně
  • nevhodné pro rozsáhlé a týmové projekty
32
Q

Nestrukturované jazyky - data

A
  • typické jsou základní numerické typy, znakové řetězce a pole; for, if a skok
  • nelze definovat nové typy, pro manipulaci s daty lze použít jen vestavěné operace
  • nelze definovat podprogram, lze ale použít textová makra a otevřené podprogramy (pomocí skoku)
33
Q

Nestrukturované jazyky - překladač

A
  • syntaktická analýza - závorkové struktury
  • sémantická analýza je obvykle v pozadí
  • generování kódu - používají se přímočaré algoritmy
34
Q

Nestrukturované jazyky - interpret

A
  • lexikální analýza - u některých systém se s vložením programového řádku provede převod klíčových prvků jazyka do interní reprezentace
  • syntaktická analýza - podpodně jako u využití překladače
  • sémantická analýza - je prováděna v určité posloupnosti, případně lze odložit na samotné vyhodnocení
  • běh - jsou využívány knihovny funkcí a operací; co nejvíce operací se provádí pomocí procesoru
35
Q

Strukturované jazyky

A
  • např. Pascal, Algol
  • snaží se dosáhnout flexibility, efektivní tvorby programů. zpřehlednit program a dosáhnout čitelné struktury programy
  • nemají primárně formální bázi, jsou navrženy bez užití formalismů
  • syntaxe je podávána formálním či semiformálním způsobem
  • sémantika je popsána neformální formou
  • program je stále tvořen jedním souborem, chybí moduly, není možné skrývat manipulaci s daty
  • odlišují se pojmy deklarace a definice
  • je možné aplikovat návrh
  • typované jazyky
  • možnost vytvářet datové struktury
  • možnost vytvářet bloky příkazů (funkce)
36
Q

Strukturované jazyky - překladač

A
  • lexikální, sémantickou a syntaktickou analýzu lze provádět najednou v rámci jednoho průchodu zdrojovým textem
  • využití víceúrovňových tabulek symbolů u sémentické analýzy
37
Q

Strukturované jazyky - interpret

A
  • nejsou moc časté kvůli přílišné složitosti (de facto první dochází k překladu programu, až potom k vyhodnocení)
38
Q

Modulární jazyky

A
  • např. C, ADA
  • při použití modulu uživatele dostává pouze binární kód a popis, jak využít funkčnost modulu (tzv. rozhraní modulu)
  • primárně nemají formální bázi
  • syntaxe formální či semiformální formou
  • sémantika podávána neformálně
  • využívané i dnes (vhodné pro týmovou spolupráci a složité problémy díky možnosti dokomponování)
  • pokud není možné použít OOP, je modulární programování nejvýhodnějším přístupem
39
Q

Modulární jazyky - překladač

A
  • kvůli modularitě není možné provádět některé druhy globálních optimalizací, volání a návrat funkcí musí probíhat přes snadardní rámec
  • objevuje se spojovací program (linker), který přebírá některé funkce překladače
  • lexikální analýza - její součástí se stal textový preprocesor
  • syntaktická analýza - probíhá standardním způsobem
  • sémantická analýza stejná jako u strukturovaných jazyků
  • linkter - spojuje všechny moduly a části knihovny do jednoho bloku, sestavuje cílový kód
40
Q

Objektově orientované jazyky

A
  • využití dekompozice do modulů, které tvoří samostatné celky
  • OOP - způsob abstrakce, kdy algoritmus implementujeme pomocí množiny zapouzdřených vzájemně komunikujích entit (objektů)
41
Q

Objektově orientované jazyky - výhody a nevýhody

A
  • výhody:
  • vyšší míra abstrakce
  • analogie mezi SW modelem a reálným modelem (jednodušší na pochopení)
  • praktické, přirozenější
  • stabilní
  • flexibilita SW modelů
  • znovupoužitelnost SW modelů
  • zvýšení produktivity
  • nevýhody:
  • pokud neexistuje analogie mezi SW m. a r. m., je pak obtížně určit a definovat SW m.
  • delší učící křivka
  • některé výhody nejsou v praxi vidět
  • pomalejší kód (vyšší režie)
42
Q

OOP - Objekt

A
  • jednoznačně identifikovatelný reálný objekt nebo abstrakce, která obsahuje jejich data a operace nad těmito daty
  • objekty mezi sebou komunikují pomocí zasílání zpráv
  • metoda - zapouzřená funkce objektu
  • rozhraní objektu - množina zpráv, kterým objekt rozumí
  • protokol - postup objektu při hledání reakce na přijatou zprávu
  • zapouzdření - uživatel nemůže měnit interní stav objektu libovolným způsobem, ale musí k tomu použít poskytnuté rozhraní
  • dědičnost - způsob implementace sdíleného chování
43
Q

Třída

A
  • šablona, podle níž mohou být vytvářeny objekty (instance)

- stará se o správu protokolu objektu, směřování zpráv a obsahuje implementace některých metod

44
Q

Konstruktor třídy

A
  • slouží pro inicializování datových složek objektu
45
Q

Instance třídy

A
  • objekt, který obsahuje naplněné instanční proměnné a odkaz na třídu, ze které vznikl
46
Q

Kopírování objektů

A
  • hluboká kopie - kromě objektu jsou kopírovány i objekty, které dané instanční proměnné refrencují
  • mělká kopie (= hloubková kopie do hloubky 0) - je vytvořen nový objekt, ale všechny instanční proměnné obsahuje odkazy na totožné objekty jako originál
47
Q

Rušení objektů v paměti

A
  • automaticky - pomocí garbage collectoru (ten jednou za čas vyhledá objekty, na které již neexistuje žádný odkaz a ty zruší)
  • manuální - pomocí metody destruktor
48
Q

Klasifikace dědičnosti

A
  • jednoduchá dědičnost - každý potomek ma nejvýše jednoho přímého předka (Java)
  • vícenásobná dědičnost - třída může dědit od více přímých potomků, možné problémy s konflikty a duplikací jmen -> zákaz výskytu konfliktních jmen (C++, Python)
  • dědičnost implementace - kromě atributů jsou do dědičnost zahrnuty celé metody včetně jejich implementae
  • dědičnost rozhraní - dědění pouza na úrovni rozšiřování protokolu objektu (tj. předpis nebo seznam metod, které je nutné v potomkovi implementovat)
49
Q

Čisté/hybridně objektově orientované jazyky

A
  • čísté - vše je objekt a existuje třída nebo objekt, od kterých jsou odstatní odvozeny
  • hybridní - sada základních primitivních typů (bool, číslo, znak atd.), které lze skládat do struktur; třída je potom heterogenní struktura, které je předkem každé existující třídy (např. Java, C++, C#…)
50
Q

Staticky/dynamicky typované jazyky - kontrola metod

A
  • staticky typované - určena množina podporovaných operací už během překladu programu, v případě, že je po objektu požadována neimplementovaná operace, překlad neproběhne
  • dynamicky typované - kontrola existence metod se prování za běhu programu. Pokud se metoda nenalezne, proběhne pokus o konverzi objektu na jiný typ, případně je vygenerována chyba
51
Q

Prototypově orientované jazyky

A
  • znají pouze jeden typ objektůů, nevyčleňují samostatně objekty reprezentující třídy
  • objekty mají unifikovanou strukturu
  • každý objekt může obsahovat členské proměnné i metody, nazývané sloty
  • pokud je objektu zaslána zpráva, prozkoumá množinu svých slotů a pokusí se najít ten který zprávě odpovídá
  • pro rušení objektů se používá garbage collector
  • např. JavaScript, SELF
52
Q

UML

A
  • jednoduchý grafický jazyk pro jednotnou specifikaci, vizualizaci, konstrukci a dokumentaci při objektově orientované analýe a návrhu i pro modelování organizace
  • nezávislý na implementačním jazyce
  • vysoká míra abstraktnosti
  • není výpočetně úplný - zaměřuje se na popis specifikace, návrhu a procesu vývoje
  • napomáhá dekompozici problému
53
Q

UML - základní pohledy

A
  • strukturální
  • datový
  • pohled na chování
  • pohled na rozhraní