Programovací jazyk univerzální notace pro zápis algoritmů, implementována.

Podobné dokumenty
IB111 Programování a algoritmizace. Programovací jazyky

Úvod. Programovací paradigmata

Programovací jazyky. imperativní (procedurální) neimperativní (neprocedurální) assembler (jazyk symbolických instrukcí)

Programovací jazyky. imperativní (procedurální) neimperativní (neprocedurální) assembler (jazyk symbolických instrukcí)

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

IB111 Úvod do programování skrze Python Přednáška 13

Matematika v programovacích

1 Základních pojmy z oblasti programování, vyšší programovací jazyky, programovací paradigmata

MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ

Program a životní cyklus programu

11. Přehled prog. jazyků

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

Maturitní otázky z předmětu PROGRAMOVÁNÍ

Masarykova střední škola zemědělská a Vyšší odborná škola, Opava, příspěvková organizace

Vrstvy programového vybavení Klasifikace Systémové prostředky, ostatní SW Pořizování Využití

1 Úvod 1.1 Vlastnosti programového vybavení (SW)

DTP Základy programování Úvod do předmětu

IB111 Úvod do programování skrze Python Přednáška 13

Vyučovací hodina. 1vyučovací hodina: 2vyučovací hodiny: Opakování z minulé hodiny. Procvičení nové látky

Databázové systémy. Doc.Ing.Miloš Koch,CSc.

Programovací jazyky Přehled a vývoj

Sada 1 - Základy programování

09. Memory management. ZOS 2006, L.Pešička

Programové prostředky IS/IT

ŠVP Gymnázium Ostrava-Zábřeh Úvod do programování

Překladač a jeho struktura

Vlastnosti algoritmu. elementárnost. determinovanost. rezultativnost. konečnost. hromadnost. efektivnost

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

Úvod z historie. Kompilátory. Kompilace / Kompilátor Compile / Compiler. Pojem kompilátoru. Úvod z historie

ZÁKLADY PROGRAMOVÁNÍ. Mgr. Vladislav BEDNÁŘ /14

MPASM a IDE pro vývoj aplikací MCU (Microchip)

ZÁKLADY PROGRAMOVÁNÍ. Mgr. Vladislav BEDNÁŘ /14

Programování - úvod. Programování. Proces programování. Vlastnosti dobrého programu: Kapitola seznamuje se základními pojmy programování.

Kritéria hodnocení praktické maturitní zkoušky z databázových systémů

Klasické metodiky softwarového inženýrství I N G M A R T I N M O L H A N E C, C S C. Y 1 3 A N W

Převod 4GL aplikací do webového prostředí. Ing. Jan Musil, IBM ČR Community of Practice for

Algoritmizace- úvod. Ing. Tomáš Otáhal

1. Znalostní systémy a znalostní inženýrství - úvod. Znalostní systémy. úvodní úvahy a předpoklady. 26. září 2017

Nové jazykové brány do Caché. Daniel Kutáč

Předměty. Algoritmizace a programování Seminář z programování. Verze pro akademický rok 2012/2013. Verze pro akademický rok 2012/2013

NULTÁ GENERACE reléové obvody 30. a 40. let minulého století Harvard Mark I Harvard Mark II Konráda Zuseho Z2 SAPO

Vyřešené teoretické otázky do OOP ( )

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

Kritéria hodnocení praktické maturitní zkoušky z databázových systémů

Maturitní témata Školní rok: 2015/2016

Osnova. GIOP a IIOP IDL IOR POA. IDL Klient Server. 2 Historie. 3 Princip a základní pojmy. 4 Implementace. 5 Aplikace CORBA

Základy C++ doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 21.

8.2 Používání a tvorba databází

TÉMATICKÝ OKRUH Softwarové inženýrství

Sdílení dat mezi podprogramy

Úvod SISD. Sekvenční výpočty SIMD MIMD

Programování v C++ Úplnej úvod. Peta (maj@arcig.cz, SPR AG )

VISUAL BASIC. Přehled témat

Programování a algoritmizace: úvod

Programování II. Třídy a objekty (objektová orientovanost) 2018/19

Datová věda (Data Science) akademický navazující magisterský program

Maturitní témata. IKT, školní rok 2017/18. 1 Struktura osobního počítače. 2 Operační systém. 3 Uživatelský software.

Kapitola 1: Úvod. Systém pro správu databáze (Database Management Systém DBMS) Účel databázových systémů

2010/2011 ZS. Operační systém. úvod základní architektury

MIKROPROCESORY PRO VÝKONOVÉ SYSTÉMY

Profilová část maturitní zkoušky 2017/2018

Objektově orientovaný přístup

Programování II. Modularita 2017/18

Common Object Request Broker Architecture

Úvod do Linuxu. SŠSI Tábor 1

1/1 ČESKÁ ZEMĚDĚLSKÁ UNIVERZITA V PRAZE PROVOZNĚ EKONOMICKÁ FAKULTA PŘIJÍMACÍ ŘÍZENÍ 2017/2018

Real Time programování v LabView. Ing. Martin Bušek, Ph.D.

Martin Hejtmánek hejtmmar

PB161 Programování v jazyce C++ Přednáška 7

Principy komunikace s adaptéry periferních zařízení (PZ)

Informační systémy 2008/2009. Radim Farana. Obsah. Obsah předmětu. Požadavky kreditového systému. Relační datový model, Architektury databází

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

PODPROGRAMY PROCEDURY A FUNKCE

Další aspekty architektur CISC a RISC Aktuálnost obsahu registru

PB161 Programování v jazyce C++ Přednáška 7

Procesy a vlákna (Processes and Threads)

Chyby software. J. Sochor, J. Ráček 1

1 Strukturované programování

Lekce 9 - Migrace dat

5. STRUKTURA PLC PROGRAMU

Opakování programování

Vývoj programů. ÚVOD DO OPERAČNÍCH SYSTÉMŮ

10 Metody a metodologie strukturované analýzy

Úvod do expertních systémů

Vizuální programování

Řízení IO přenosů DMA řadičem

Paradigmata programování 1

Prolog PROgramming in LOGic část predikátové logiky prvního řádu rozvoj začíná po roce 1970 Robert Kowalski teoretické základy Alain Colmerauer, David

Vlákno (anglicky: thread) v informatice označuje vlákno výpočtu neboli samostatný výpočetní tok, tedy posloupnost po sobě jdoucích operací.

Návrh softwarových systémů - architektura softwarových systémů

Střední průmyslová škola elektrotechnická Praha 10, V Úžlabině 320 M A T U R I T N Í T É M A T A P Ř E D M Ě T U

3. Je defenzivní programování technikou skrývání implementace? Vyberte jednu z nabízených možností: Pravda Nepravda

NSWI /2011 ZS. Principy cpypočítačůčů aoperačních systémů ARCHITEKTURA

Objektově orientované databáze. Miroslav Beneš

Úvod do jazyka C. Ing. Jan Fikejz (KST, FEI) Fakulta elektrotechniky a informatiky Katedra softwarových technologií

3 Co je algoritmus? Trocha historie Definice algoritmu Vlastnosti algoritmu... 3

PHP framework Nette. Kapitola Úvod. 1.2 Architektura Nette

Seznámení s prostředím dot.net Framework

Analýza a Návrh. Analýza

TÉMATICKÝ OKRUH Softwarové inženýrství

Transkript:

Programovací jazyk univerzální notace pro zápis algoritmů, která je implementována. Proč studovat programovací jazyky? æ schopnost psát efektivní programy pole jako parametr funkce nebo procedury lze v principu předat i hodnotou rekurze (např. násobení se dá naprogramovat pomocí sčítání cyklem, ale i rekurzí) æ lepší využití existujících programovacích jazyků æ přehled o užitečných programových konstrukcích lidé mají tendenci myslet v prog. jazycích, které ovládají užitečné konstrukce, které se vyskytují v jednom jazyce, je možné naprogramovat v jiném æ schopnost výběru prog. jazyka, vhodného pro danou aplikaci æ zjednoduší se proces učení nových jazyků æ snadnější návrh nových jazyků 1

Vývoj programovacích jazyků 50. léta æ Assembler. Jazyk symbolických adres. Zaváděl jména pro instrukce, které byla schopna provádět procesorová jednotka a zejména symbolické označení (návěští) cílové adresy skokových instrukcí. æ FORTRAN (FORmula TRANslator), 1955-57. Numerické výpočty, hlavní důraz kladen na efektivitu generovaného kódu. æ LISP (LISt Processing). Následník IPL, nasazen pro aplikace v oblasti umělé inteligence (snadná práce se seznamy, které reprezentují stavový prostor). Jde o první funkcionální jazyk. æ ALGOL (ALGOrithmic Language), 1958. Vznikl jako alternativa k Fortranu, objevuje se myšlenka nezávislosti na HW (návrh Fortranu byl původně podřízen architektuře IBM 704). Zavádí se koncept Call by name (obtížně implementovatelné). 60. léta æ COBOL (COmmon Business Oriented Language), 1960. Snaha vytvořit čitelný jazyk blízký mluvené angličtině, oddělení strojově nezávislých částí kódu od strojově závislých, oddělení popisu algoritmu od popisu dat. æ Simula, 1967. Používá se pro programové simulace reálných procesů. Zavádí se pojem třídy. æ PL/I. Snaha zkombinovat schopnosti FORTRANu (numerické výpočty) a COBOLu (snadná čitelnost programů). æ Revize existujících programovacích jazyků (FORTRAN, COBOL, AL- GOL). 70. léta æ Pascal, 1970. Patrně nejpopulárnější programovací jazyk 70. let. Charakteristická je silná podpora strukturovaného programování. Při přenosu na nové HW platformy byl úspěšně použit tzv. bootstrapping. 2

æ C, 1970. Vyvinut pro účely systémového programovaní v návaznosti na OS Unix (použit při přepisu jádra Unixu do vyššího programovacího jazyka). Jde o velmi úsporný jazyk, např. vstupně/výstupní funkce nejsou součástí jeho definice. æ Ada. Původně navržena pro vojenské aplikace snaha sjednotit vývoj veškerého vojenského SW na jediné bázi (standard pro jazyk Ada existoval dříve, než fungující překladač). Ada obsahuje podporu pro distribuované a real-time aplikace, jde o složitý a obtížně implementovatelný jazyk. æ Prolog (PROgramming in LOGic), 1972. Dominantní jazyk v oblasti tzv. logického programování. Používá se pro aplikace z oblasti umělé inteligence (zejména expertní systémy). æ ML (Meta Language). Kombinuje imperativní a funkcionální programování, má zajímavě řešený systém typové kontroly. æ Smalltalk. Původně šlo nejen o jazyk, ale vlastněo totální prostředí (jazyk, počítač, programovací prostředí). Později byl jazyk přenesen i na jiné operační systémy. Je od začátku koncipován jako objektový jazyk. 80. léta æ C++, 1986. Rozšíření jazyka C, zavedení konstrukcí umožňujících objektové programování. æ OCCAM. Jazyk nízké úrovně navržený pro transputerové desky. Podporuje superparalelní programování výpočetní proces se rozloží na mnoho podúloh, z nichž každá se řeší na zvláštním procesoru. æ 4GL. Jazyky čtvrté generace se používají při programování databázových aplikací. Charakteristické jsou silné instrukce pro manipulaci s daty (např. SQL) i pro tvorbu uživatelského rozhraní. æ PostScript. Jazyk pro popis stránek. Interpret tohoto jazyka bývá součástí firmware kvalitnějších tiskáren. Umožňuje vytvářet dokumenty nezávisle na rozlišení výstupního zařízení. 3

90. léta æ HTML (Hyper-Text Markup Language). Jazyk pro popis struktury hypertextových dokumentů. æ Java. Objektový jazyk kompilovaný do poměrně hutného mezikódu, který je interpretován koncovým zařízením (nezávislost na HW za cenu ztráty výkonu). Malá velikost mezikódu umožňuje jeho on-line přenos po síti. æ Perl (Practical Extraction and Report Language). Výkonný nástroj původně navržený pro snadnou práci s textovými soubory. 4

Faktory ovlivňující návrh programovacích jazyků æ Výkon a vybavení počítačů æ Prostředí Prostředí dávkových systémů (transformace souboru se vstupními daty na soubor dat s výsledky). æ I/O operace jsou souborově orientované æ Žádný mechanismus pro ošetření chyb a vyjímek æ Žádné časově omezující podmínky æ Typická struktura hlavní program a pomocné podprogramy Interaktivní prostředí (komunikace s uživatelem během provádění programu i při kompilaci) æ I/O operace dokáží snadno zpracovat vstup z terminálu æ Kontrola správnosti dat, která vstupují z terminálu. æ Programy podléhají časovým omezením (reakce na povely uživatele, časový limit na zadání vstupu,...) æ Hlavní program v obvyklém smyslu často neexistuje; program reaguje na požadavky uživatele. Prostředí vnořených systémů (programy, které jsou integrální součástí větších systémů jako elektrárny, nukleární zbraně, atd.) æ Nestandardní I/O operace, často chybí operační systém æ Ošetření chyb a vyjímek je kritické æ Obvykle jde o real-time aplikace æ Program sestává z mnoha podúloh, které běží nezávisle (kontrolují různé části systému) 5

Programovací prostředí (soubor nástrojů pro editaci, kompilaci, ladění, testování, verifikaci) æ Separátní kompilace (tvorba a kompilace programu po částech). Kompilátor potřebuje informace o externích podprogramech a sdílených datových objektech: æ Počet, pořadí a typ parametrů všech externích podprogramů. æ Deklarace dat. Např. o každé proměnné je nutné vědět, zda je globální nebo lokální v jiném podprogramu, aby byla zvolena správná přístupová metoda. æ Definice datových typů. Při deklaraci lokálních proměnných je třeba vymezit patřičný pamět ový prostor. Možné přístupy: æ Explicitní zopakovaní této informace (redeklarace). Výhodou je naprostá nezávislost modulů (tzv. nezávislá kompilace), sdílené objekty se však obtížně modifikují a chybí možnost kontroly integrity. Použito u FORTRANU. æ Zavedením určitého pořadí kompilace. Před zkompilovaním modulu A jsou nejprve přeloženy všechny moduly, na nichž A závisí (ADA, Pascal). æ Před kompilací musí existovat knihovna, která obsahuje potřebné informace (C++, ADA). æ Testování a ladění æ Podpora trasování (LISP, Prolog). æ Body přerušení (breakpoints). æ Predikáty (assertions C++) æ Programovací a implementační metody æ Teoretické studie æ Standardizace Výrobcem, který jazyk vyvinul a vlastní. Pokud jde o rozšířený a populární jazyk, je tento způsob standardizace často neúčinný. 6

Standardizačními organizacemi na základě obecné dohody. æ ANSI (American National Standards Institute) æ IEEE (The Institute of Electrical and Electronic Engineers) æ BSI (British Standards Institute) æ ISO (International Standards Organization Ženeva) Má-li být standardizace účinná, musí být dobře načasovaná (FORTRAN æ ADA, C) dobře definovat vlastnosti jazyka a překladače, které jsou předmětem zaváděné normy zohlednit vývoj daného jazyka aktualizací zavedených norem (důležitá je zpětná kompatibilita). æ Oblast nasazení Vědecko-technické výpočty (FORTRAN) Databázové a informační systémy (4GL, HTML, Java) Umělá inteligence (LISP, PROLOG) Systémové programování (C, C++, Perl) Elektronické publikování (T E X, PostScript, HTML) 7

Paradigmata programovacích jazyků æ Imperativní (také procedurální) jazyky. Program je posloupnost příkazů, které jsou postupně prováděny. příkaz 1 ; příkaz 2 ; :::příkaz n ; Každý příkaz jistým způsobem změní momentální obsazení paměti (stav) počítače a ten tak přejde do nového stavu, kdy se vykoná další instrukce. Během provádění programu se tedy počáteční stav (tj. počáteční obsazení paměti) počítače postupně modifikuje, dokud se nedosáhne stavu cílového. Většina běžných jazyků (FORTRAN, C, C++, Pascal, Perl,...) jsou jazyky imperativní. æ Funkcionální jazyky. Na program lze také nahlížet jako na funkci, která obdrží jako parametr počáteční stav počítače a vrátí stav koncový. Takto chápaný program je pak vlastně zápisem uvedené funkce ta je ovšem dosti komplikovaná, proto je vhodné ji vyjádřit jako kompozici jednodužších funkcí. fce n è:::fce 2 èfce 1 èdataèè :::è Jazyky, které zdůrazňují tento aspekt výpočtu, jsou označovány jako funkcionální. Text programu pak sestává z definic funkcí a jejich vzájemné aplikace (v čistych funkcionálních jazycích proto není přiřazovací příkaz, nebot není potřebný). Jazyky, které podporují funkcionální programovaní, jsou např. LISP a ML. æ Rule-based jazyky. Program je posloupnost pravidel, která se skládají z podmínky a s ní spojené akce: podmínka 1! akce 1 podmínka 2! akce 2... podmínka n! akce n Tento seznam se prochází a pokud je podmínka splněná, provede se asociovaná akce. Příkladem je Prolog nebo YACC. 8

Překladače Programy, které transformují kód A ve vstupním jazyce na kód B v jazyce výstupním tak, že platí jistá relace mezi A a B. æ Preprocesor (makroprocesor). Přeloží rozšířený vyšší programovací jazyk do jeho standardní podoby. æ Kompilátor. Transformuje kód ve vyšším programovacím jazyku na ekvivalentní kód v jazyku symbolických adres. æ Asembler. Transformuje kód zapsaný v jazyku symbolických adres na přemístitelný kód ve strojovém jazyku (object-code). æ Linker (loader). Transformuje object-code na proveditelný kód. Interprety Programy, které načtou kód ve vyšším programovacím jazyce a simulují jeho provádění. 9