Klasifikace jazyků Flashcards
Co je to programování?
Činnost, která jistý postup (algoritmus), převadí na posloupnost elementárních úkonů stroje, typicky počítače
Kdo je to programátor?
Realizuje proces tvorby programu
Typické vlastnosti procesu tvorby programu
Vysoká náročnost na čas a zdroje (lidi, stroje, peníze)
Znalost programoací jazyka není dostačující
Specifikace není bezchybná - často málo detailní a mění se v průběhu vývoje
Přeceňování/podceňování schopností/možností zdrojů - podceňování složitosti projektů, přeceňování schopnosti programátorů
Co je to programovací jazyk?
Prostředník mezi běžnou řečí a binárním kódem
Proč pro programování nepoužíváme přirozenou řeč?
Analýza přirozeného jazyka tak, aby byla jednoznačně převoditelná do binární formy, je příliš náročná. (Dosud neexistuje)
Nejednoznačnost a zdlouhavé popisy.
Záleží i na kontextu (To se pojí s nejednoznačnoststí)
Proč pro programování nepoužíváme binární jazyk (kód) ?
Příliš náročný na zapamatování (moc kombinací)
Nevhodný pro složité problémy. (Jednoduchá možnost chyby, rozsah kódu)
Nevhodný pro rychlé a efektivní programování. (Chybí koncept znovupoužitelnosti, rychlé orientace a znovupoužití kódu)
Binární kód je jiný pro každou architekturu
Co je to program?
Je to zápis v programovacím jazyce, který je abstrakcí reality
Implementuje abstraktní model - myšlenkový postup aplikovatelný v realitě je abstrahován a přizpůsobem možnostem počítače
Abstrahuje model počítače/procesoru - zastiňuje konkrétní podobu výpočtu a jeho realizaci na cílové platformě
Typy jazyků
Univerzální programovací jazyky (general purpose languages) - jazyky obecné použití [ C, Pascal, Java, Python ]
Specializované programovací jazyky - APL, jazyky řídících automatů
Jazyky pro popis integrovaných obvodů - VHDL, System C
Jazyky pro sazbu textu - TeX
Databázové jazyky - SQL
Jak dělíme jazyky podle abstrakce?
Abstrakce dat
Abstrakce řízení
Kategorie jazyků dle abstrakce dat
Jazyky strojové/assemblery - veškerá data jsou skipiny bitů či bajtů. Abstrakce veškerá žádná. Podporuje pár datových typů. (Celá čísla, desetinná čísla, bitová pole, atd..)
První jazyky vyšší úrovně - Stále nabízejí jen jednoduché datové typy. Na rozdíl od jazyků strojových zde dochází k abstrakci od cílového systému (skrytí implementace, jsou známy jen obecné vlastnosti, množina dostupných operací je typicky vyšší, než ta dostupná na cílové architektuře). Většinou vědecko technické jazyky, zaměřené na jedno odvětví. (COBOL, Fortran)
univerzální jazyky (PL/I neznamená general purpose languages) - velké množství datových typů.Ale není možné definovat vlastní datové typy. Neexistence klíčových slov
Blokově strukturované jazyky - Umožňuje definovat složitější datové sturktury. Umožňuje použít prvky softwarového inženýrství (Můžeme prvně definovat vhodné datové abstrakce a potom podle nich implementovat program, dosud to bylo naopak). Je to např. C (jen částnečně, je to i modulárni jazyk) a Pascal
Modulární blokově strukturované jazyky - Odděluje definici typu od operací, které ho manipulují. Tento princip umožňuje skrývat implementaci a lépe modifikovat programy. Třeba C
Objektově orientované jazyky
Spojuje konkrétní data i s operacemi, které je manipulují. Potom datový typ není manipulován v modulu, který tyto operace skrývá, ale neses si je s sebou.
Jazyky rozšiřující datové paradigma
Logické - Navíc mají predikáty a termy (Prolog)
Funkcionální - řadí mezi data funkce (lambda kalkul, Haskell)
Pro definici a manipulaci dat (DML) - datový typ je tabulka
Kategorie jazyků dle abstrakcí řízení
Imperativní jazyk
Deklarativní jazyk
Abstrakce řízení - imperativní jazyk (procedurální jazyk)
Programátor řeší tyto otázky řízení běhu programu:
CO za operace má být provedeno
V JAKÉM POŘADÍ to má být provedeno
Program je sestaven jako posloupnost příkazů. Nižší jazyky (Strojové) povolují skoky. U vyšších jazyků se tyto opakující se PATTERNY rozdělily do cyklů, podmínek,(zlepšuje se čitelnost).
Na vyšší úrovni programového kódu (bloky, moduly, jednotky) rozpoznáváme tyto typy konstrukcí pro řízení programu: podprogramy, bloky, paralelní programu, rozšířené zpracování
Zakladni operace: prirazeni, cykleni, vetveni
Imperativní jazyk - Podprogram
Umožňují vnořené zpracování určitých logických funkcí operací. Podprogram je volán skrze své rozhraní. Rozhraní definuje předávané parametry a výsledek. Implementace je skryta v definici podprogramu. V podprogramu můžeme volat i jiné podprogramy. Proto potřebuje identifikátor
Imperativní jazyk - Blok
Nemají jméno. Nelze je volat. Kód se uplatňuje pouze v místě, kde je vložen. Vytváří lokální scope. (C, Pascal)
Imperativní jazyk - Paralelní programy, procesy
Procesy -> vlákna. Kód jede víckrát ve stejný čas. Řeší se synchronizace a s ní její problémy (Deadlock..)
Imperativní jazyk - Odložené zpracování
Pokud výsledek některé operace v daném místě nemusí být nutně použit, vyhodnocení operace je pozdrženo