IPP Půlsemestrálka vol 2 - I Flashcards
Programování
Činnost, která převádí jistý postup (typicky myšlenkový) na posloupnost elementárních prvků nějakého stroje (typicky počítače).
Přitom dochází k uložení tohoto postupu tak, aby jej stroj mohl opakovat periodicky
Programátor
Ten, kdo realizuje proces tvorby programu
Programovací jazyk
Definice 1:
Prostředník mezi běžnou řečí a posloupností typicky binárních číslic
Definice 2:
Konečná množina příkazů, která má specifickou syntaktitckou strukturu a pevně a přesně vymezenou sémantiku
Počítačový program
Zapís v programovacím jazyce, který je abstrakcí reality.
- Implementuje abstraktní model - myšlenkový postup aplikovatelný v realitě je abstrahován a přizpůsoben možnostem počítače
- Abstrahuje model počítače/procesoru - program zastiňuje konkrétní podobu výpočtu a jeho realizaci na cílové platformě
Dělení jazyků dle abstrakce (podle použití)
- Univerzální programovací jazyky - C, Java, C#
- Specializované programovací jazyky - APL, jazyky řídicích automatů
- Jazyky pro popis integrovaných obvodů - VHDL, System C
- Jazyky pro sazbu textu - LaTeX
a další
Dělení jazyků dle abstrakce dat
- Jazyky strojové/assemblery
- Jazyky vyšší úrovně (např. Fortran, Cobol)
- Tzv. univerzální jazyky - PL/I
- Blokově strukturované jazyky (např. Pascal)
- Modulární blokově strukturované jezyky (např. C)
- Objektově orientované jazyky (např. Java, C#)
- Jazyky rozšiřující datové paradigma
Strojově orientované jazyky
Veškerá data jsou skupiny bitů či bajtů.
K dispozici základní aritmentické a bitové operace.
Žádná podpora vyšších abstrakcí, podpra základních typů specifická dle cílové architektury (programy specifické pro konkrétní počítač)
Jazyky vyšší úrovně
Stále jen jednoduché datové typy
Abstrakce nad cílovým systémem (je skryta implementace, jsou známy jen obecné vlastnosti), i tak je stále velká orientace na cílovou architekturu.
Žádný z jazyků není určen pro obecné použití, navrženy např. pro vojenské nebo vědecko-technické využití nebo zpracování dat.
Často definovaná pevná struktura zdrojového textu
Jazyk PL/I (tzv. univerzální jazyk)
Snaží se být prvním jazykem pro obecné použití
Definuje velké množství různých datových typů, ovšem není možné definovat vlastní typy
Neobsahuje klíčová slova (což komplikuje analýzu kódu)
Blokově strukturované jazyky
Umožňují definovat složitější datové i řídicí struktury pomocí jednoduchých konstrukcí, které lze spojovat a vnořovat
Umožňují využít návrhové metodologie a prvky softwarového inženýrství.
Modulární blokově strukturované jazyky
Umožňují oddělit definici typu od operací, které ho manipulují (např. formou headerů v C)
Objektově orientované jazyky
Umožňují spoujit konkrétní data s operaci, které je manipulují.
Jazyky jiných paradigmat
Logické jazyky - pracují na úrovni dat s predikáty a termy
Funkcionální jazyky - řadí mezi data funkce
Jazyky pro sazbu textu
Jazyky pro definici a manipulaci dat
Dělení jazyků podle abstrakce řízení
Imperativní a deklarativní
Imperativní (procedurální) programovací jazyk
Programátor řeší, co za operace má být provedeno a v jakém pořadí
Program je sestaven jako posloupnost příkazů. U nižších jazyků skoky, u vyšších smyčky, cykly atd.
U vyšších jazyků dále podprogramy, bloky, koprogramy, paralelní programy a odložené zpracování
Podprogramy
Umožňují vnořené zpracování určitých logických funkcí. Jsou volány skrze své rozhraní, které definuje předávané parametry a výsledek
Každý podprogram má jednoznačnou identifikaci, která jej zpřístupňuje
Bloky
Bloky nemají jméno => nelze je volat z různých míst a jejich kód se uplatňuje pouze v místě, kde je vložek
Můžou mít své lokální definice.
Ko-programy
Pojmenované bloky kódu, které vzhledem k sobě mají symetrický vztah (jejich kód je zpracováván současně, případně prokládaně)
Rozhraní a identifikace shodné s podprogramy.
Paralelní programy a procesy
Vztahy nejsou nutně symetrické, může docházet k synchronizaci
Na nejvyšší úrovni abstrakce procesy, 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, je jeho vyhodnocení pozdrženo.
Provedeno je později a jen v případě, že je výsledek třeba, v opačném případě není vyhodnocení provedeno vůbec
Deklarativní programovací jazyk
Programátor řeší, co za operace má být provedeno.
Vyhodnocení parametrů při volání hodnotou
Parametry se vyhodnocují před voláním podprogramu
Vyhodnocení parametrů při volání jménem
Parametry se nevyhodnocují, jsou reprezentovány zástupným jménem. K jejich vyhodnocení dojde, až to vyžaduje volaný podprogram
Syntaxe jazyka
Syntaxe jazyka definuje strukturu programu, tj. to, jakým způsobem je dovoleno jednotlivé konstrukce řadit za sebe
Formy definice syntaxe
Slovní popis, syntaktické grafy, BNF, ENBF, gramatiky
Sémantika jazyka
Sémantika je popis významu jednotlivých syntaktických konstrukcí, způsobu jejich vyhodnocení, zpracování atd.
Formy popisu sémantiky
Obvykle se nepoužívají formalismy ale pouze slovní vysvětlení nebo ukázka na přikladech
Statická sémantika
Popisuje vlastnosti, které mohou být studovány a ověřovány v době analýzy/překladu programu
např. typová kompatibilita, existence proměnných atd.
Dynamická sémantika
Popisuje vlastnosti, jejichž splnění lze ověřit až v době běhu programu, např. velikost indexu pole daného výrazu, velikost výsledku, apod.
Deklarace
Úplně vymezuje atributy dané entity. Může být explicitní i implicitní
Definice
Úplně vymezuje atributy dané entity a dále u proměnných způsob alokace paměti a u funkcí navíc tělo funkce
Vlastnosti proměnné
Jméno
Adresa a umístění/lokace v paměti
hodnoty, jichž může nabývat
typ
doba života
rozsah platnosti
Maximální délka názvu vs efektivní délka názvu proměnné
Maximální délka - maximální počet znaků, který je pro danou implementaci jazyka možné využít
Efektivní délka - počet znaků, který je skutečně zpracován a rozlišován
Rozsah platnosti proměnné
Rozsah platnosti určuje tu část programu, kdy je možné s proměnnou pracovat
Doba života proměnné
Časový interval, po který je pro danou proměnnou alokována paměť