11. Přehled prog. jazyků

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

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

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

IB111 Programování a algoritmizace. Programovací jazyky

Úvod. Programovací paradigmata

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

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

2 Postup při programování, úvod do programovacího jazyka Java

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

8. Rekurze. doc. Ing. Jiří Vokřínek, Ph.D. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze

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

Algoritmizace. Cíle předmětu

Matematika v programovacích

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

Java [džava] nebo [džáva] v americkém slangu "kafe" Sun Microsystems nyní Oracle

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

Program a životní cyklus programu

Programovací jazyky Přehled a vývoj

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

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

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

10. Složitost a výkon

Úvod. Únor Fakulta informačních technologií VUT. Radek Kočí Seminář Java Úvod 1/ 23

3. Základy programovacího jazyka Java

1. Programování proti rozhraní

MIKROPROCESORY PRO VÝKONOVÉ SYSTÉMY

Úvod. Jiří Vokřínek. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze. Přednáška 1 B0B36PJV Programování v JAVA

Úvod. Jiří Vokřínek. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze. Přednáška 1 B0B36PJV Programování v JAVA

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

Informace o předmětu. Úvod. Cíle předmětu. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze

Class loader. každá třída (java.lang.class) obsahuje referenci na svůj class loader. Implementace class loaderu

Programování a algoritmizace: úvod

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

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

Algoritmizace a programování

Úvod. Karel Richta a kol. katedra počítačů FEL ČVUT v Praze. Karel Richta, Martin Hořeňovský, Aleš Hrabalík,2016

Úvod Seznámení s předmětem Co je.net Vlastnosti.NET Konec. Programování v C# Úvodní slovo 1 / 25

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

Uklízení odpadků a analýza úniku

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

Překladač a jeho struktura

Úvod do programovacích jazyků (Java)

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

Úvod. Jiří Vokřínek. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze. Přednáška 1 B0B36PJV Programování v JAVA

Informace o předmětu. Úvod. Cíle předmětu. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze. Informace o předmětu

5. Vyhledávání a řazení 1

Programování v C++ 1, 1. cvičení

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Operační systémy. Jednoduché stránkování. Virtuální paměť. Příklad: jednoduché stránkování. Virtuální paměť se stránkování. Memory Management Unit

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

Algoritmizace. Algoritmizace (Y36ALG), Šumperk - 1. přednáška 1

Operační systémy. Cvičení 3: Programování v C pod Unixem

IB015 Neimperativní programování. Organizace a motivace kurzu, programovací jazyk Haskell. Jiří Barnat

Preprocesor. Karel Richta a kol. katedra počítačů FEL ČVUT v Praze. Karel Richta, Martin Hořeňovský, Aleš Hrabalík, 2016

Základy jazyka C. Základy programování 1 Martin Kauer (Tomáš Kühr)

Struktura programu v době běhu

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

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

PROGRAMOVACÍ JAZYKY A PŘEKLADAČE STRUKTURA PŘEKLADAČE

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

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

Programovací jazyk Java

Střední průmyslová škola elektrotechnická Praha 10, V Úžlabině 320

Správa paměti. doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 /

Abstraktní datové typy: zásobník

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

Semestrální práce KIV/PC

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

TÉMATICKÝ OKRUH TZD, DIS a TIS

Algoritmizace a programování

Úvod. Leden Fakulta informačních technologií VUT. Radek Kočí Seminář Java Úvod 1/ 22

Procesy a vlákna (Processes and Threads)

Zdroje Úvod Zápis a kompilace programu Příklad programu v jazyce C Příklad programu s výstupem. Úvod do jazyka C. Jan Faigl

1 - Úvod do platformy.net. IW5 - Programování v.net a C#

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

Úvod do jazyka C. Úvod do jazyka C. Knihy 2/2. Knihy 1/2. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze.

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

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

Úvod. Jiří Vokřínek. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze. Přednáška 1 B0B36PJV Programování v JAVA

Základní datové typy, proměnné - deklarujeme předem - C je case sensitive rozlišuje malá a velká písmena v názvech proměnných a funkcí

Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod.

PB161 Základy OOP. Tomáš Brukner

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

Programování a algoritmizace: úvod

Jazyk C# (seminář 6)

Vzdělávací oblast: Informatika a informační a komunikační technologie Vzdělávací obor: Programování Předmět: Programování

Základní pojmy. Jan Faigl. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze. Přednáška 1 A0B36PR1 Programování 1

Programování II. Modularita 2017/18

8 Třídy, objekty, metody, předávání argumentů metod

Část 1 Organizace předmětu. Základní pojmy. Část 2 Programování a výpočty. Část 3 Programovací jazyk Java

Úvod do programování v jazyce Java

Přednáška. Správa paměti II. Katedra počítačových systémů FIT, České vysoké učení technické v Praze Jan Trdlička, 2012

Programování 1 - Java

Algoritmy I. Cvičení č. 2, 3 ALGI 2018/19

Opakování programování

5. Dynamické programování

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Studijní zdroje. Studijní zdroje. Studijní zdroje. Podmínky ukončení předmětu. Vlastnosti a použití jazyka Java. Semestrální projekt

Transkript:

Jiří Vokřínek, 2016 B6B36ZAL - Přednáška 11 1 Základy algoritmizace 11. Přehled prog. jazyků doc. Ing. Jiří Vokřínek, Ph.D. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze

Jiří Vokřínek, 2016 B6B36ZAL - Přednáška 11 2 Základy algoritmizace Dnes: Programovací jazyky Příklad jazyk C Příklad jazyk Java

Programovací jazyky Jiří Vokřínek, 2016 B6B36ZAL - Přednáška 11 3

Jiří Vokřínek, 2016 B6B36ZAL - Přednáška 11 4 Programovací jazyk Existuje množství programovacích jazyků Nelze říci, že jeden jazyk je lepší než druhý V podstatě jsou všechny ekvivalentní Můžeme, ale říci, že některé jazyky se hodí na konkrétní úlohy Základní dělení: Vysoko-úrovňové a nízko-úrovňové Liší se mohutností množiny primitiv Obecné a speciální (určené pro konkrétní aplikace) Interpretované a překládané Dle typu: imperativní (procedurální), funkcionální, logické (deklarativní), objektově-orientované

Programovací jazyk Nízko-úrovňové Platformě závislé, specifika systému Explicitní práce s pamětí náročnější vývoj Vyšší efektivita programu Strojový kód, jazyk symbolických adres (assembler,) jazyk C Vysoko-úrovňové Platformě nezávislé Využití abstraktních datových typů snadnější vývoj Nižší efektivita programu Jazyk C, Java, Python, Jiří Vokřínek, 2016 B6B36ZAL - Přednáška 11 5

Jiří Vokřínek, 2016 B6B36ZAL - Přednáška 11 6 Programovací jazyk Nízko-úrovňové Příklad: funkce ve strojovém kódu x86 pro výpočet n-tého prvku Fibonacciho posloupnosti 8B542408 83FA0077 06B80000 0000C383 FA027706 B8010000 00C353BB 01000000 B9010000 008D0419 83FA0376 078BD98B C84AEBF1 5BC3 Příklad: totéž v jazyku symbolických adres

Programovací jazyk Příklad: jazyk C #include<stdio.h> int main(){ int k,r; long int i=0l,j=1,f; //Taking maximum numbers form user printf("enter the number range:"); scanf("%d",&r); printf("fibonacci SERIES: "); printf("%ld %ld",i,j); //printing firts two values. for(k=2;k<r;k++){ f=i+j; i=j; j=f; printf(" %ld",j); } } return 0; Jiří Vokřínek, 2016 B6B36ZAL - Přednáška 11 7

Programovací jazyk Další třídění: imperativní (procedurální), funkcionální, logické (deklarativní), objektově-orientované Příklad: Lisp Příklad: Prolog Jiří Vokřínek, 2016 B6B36ZAL - Přednáška 11 8

Jiří Vokřínek, 2016 B6B36ZAL - Přednáška 11 9 Programovací jazyk Příklad: jazyk Java public class FibonacciIterative { public static int fib(int n) { int prev1=0, prev2=1; for (int i=0; i<n; i++) { int saveprev1 = prev1; prev1 = prev2; prev2 = saveprev1 + prev2; } return prev1; } } Porovnej s Pythonem def fibonaccii(n): fib = fibm1 = fibm2 = 1 for i in range(2,n+1): fibm2 = fibm1 fibm1 = fib fib = fibm1 + fibm2 return fib

Programovací jazyk (ne) typované Každá operace přijímá jen data daného typu vs. operace přijímá sekvenci bytů Slabě typované Umožňují konvertovat typ proměnné Silně typované Šatný typ vyvolá chybu v programu Jsou typově bezpečné Staticky typované Typ je určen přímo v kódu (C, Java, ) Dynamicky typované Typ se určuje za běhu programu podle hodnoty (Python, ) Jiří Vokřínek, 2016 B6B36ZAL - Přednáška 11 10

Programovací jazyk Kompilované Program se přeloží do strojového kódu pomocí překladače Staticky nebo dynamicky se propojí s knihovnami Spustí se na cílové platformě Typicky rychlejší, optimalizován pro danou platformu Interpretované Program se přímo vykonává pomocí virtuálního počítače interpretu Samostatný program není spustitelný Typicky pomalejší, závislý na interpretu Vhodné pro skriptování Kompilované just-in-time K překladu dochází při spuštění (příp. v průběhu) Jiří Vokřínek, 2016 B6B36ZAL - Přednáška 11 11

Programovací jazyky Jiří Vokřínek, 2016 B6B36ZAL - Přednáška 11 12 https://attractivechaos.github.io/plb/

Programovací jazyk C Jiří Vokřínek, 2016 B6B36ZAL - Přednáška 11 13

Programovací jazyk C Nízko-úrovňový programovací jazyk Systémový programovací jazyk (operační systém) Vhodný pro vestavné systémy Téměř vše nechává na programátorovi (inicializace proměnných, správa paměti, ) Má blízko k využití hardwarových zdrojů Klíčové pro správné chování je zacházení s pamětí Vysoko-úrovňový jazyk Objektově orientovaná nadstavba C++ Interpretovaná varianta C# (.NET) Jiří Vokřínek, 2016 B6B36ZAL - Přednáška 11 14

Jiří Vokřínek, 2016 B6B36ZAL - Přednáška 11 15 Programovací jazyk C Překlad Preprocesor pro předzpracování zdrojových kódů Kompilace do objektového souboru Sestavení spustitelného programu z dílčích objektových souborů a odkazovaných knihoven (možno i dynamicky)

Programovací jazyk C Preprocesor Umožňuje definovat makra a přizpůsobit překlad aplikace kompilačnímu prostředí Výstupem je textový (zdrojový) soubor Compiler Překládá zdrojový kód do strojové podoby Nativní, platformě závislý kód Linker Sestavuje program z přeložených souborů do podoby výsledné aplikace Může obsahovat dynamická volání na knihovní funkce, služby OS, atp. Jiří Vokřínek, 2016 B6B36ZAL - Přednáška 11 16

Programovací jazyk Java Jiří Vokřínek, 2016 B6B36ZAL - Přednáška 11 17

Programovací jazyk Java Obecný vyšší imperativní a objektově orientovaný jazyk Překládaný, zaměřený na přenositelnost zdrojových kódů i přeložených binárních souborů Přeložený binární soubor je interpretován virtuálním strojem Součástí základního vývojového prostředí je i bohatý soubor knihovních funkcí Zaměřen na efektivní a robustní programovaní Jiří Vokřínek, 2016 B6B36ZAL - Přednáška 11 18

Jiří Vokřínek, 2016 B6B36ZAL - Přednáška 11 19 Programovací jazyk Java Překlad Zdrojové kódy jsou zapisovány v textových souborech s koncovkou.java Zdrojové soubory jsou překladačem (javac) přeloženy do binárního kódu (byte code) uložených v souborech s koncovkou.class Byte code je platformě nezávislý binární kód, který je interpretován pomocí Java Virtual Machine (JVM) Je možný i přímý překlad do nativního kódu (problém s knihovnami)

Jiří Vokřínek, 2016 B6B36ZAL - Přednáška 11 20 Programovací jazyk Java Interpretace Virtuální stroj interpretuje přeložený byte code (java) JVM je abstraktní virtuální počítač nezávislý na prog. jazyce Zajišťuje dynamické linkování a přístup k HW a OS Zajišťuje správu paměti pomocí Garbage Collector Poskytuje interpretaci nebo just-in-time překlad Umožňuje dynamické (runtime) optimalizace Potenciálně efektivnější než statická optimalizace/překlad

Jiří Vokřínek, 2016 B6B36ZAL - Přednáška 11 21 Programovací jazyk Java Prostředí Java JDK (Java Developement Kit) základní vývojové prostředí, knihovny funkcí, překladač javac, jeho součástí je i JRE JRE (Java Runtime Environment) základ prostředí Java pro spouštění programů, obsahuje virtuální stroj JVM (Java Virtual Machine) virtuální stroj pro spouštění přeložených programů JAR (Java ARchive) archív Java souborů, typicky mnočiny přeložených tříd (.class) doplněných textovým popisem (Manifest), kterou třídu spustit, slouží pro snadnější distribuci a spouštění programů o více souborech V podstatě je to ZIP archív

Jiří Vokřínek, 2016 B6B36ZAL - Přednáška 11 22 Programovací jazyk Java V příštím semestru se naučíme Syntaxi a použití jazyka Java Pracovat s JVM Vybrané knihovní funkce prostředí A hlavně Osvojíme si objektově orientované programování a vyvineme (první) složitější aplikaci Zároveň se naučíme testovat software a pracovat s databázemi

Jiří Vokřínek, 2016 B6B36ZAL - Přednáška 11 23 Základy algoritmizace Dnes: Programovací jazyky Příklad jazyk C Příklad jazyk Java Příště konzultace, pak čistý kód