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

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

IB111 Programování a algoritmizace. Programovací jazyky

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í)

Úvod. Programovací paradigmata

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

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

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

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

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

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

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

11. Přehled prog. jazyků

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

Sada 1 - Základy programování

Matematika v programovacích

Program a životní cyklus programu

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

Programovací jazyky Přehled a vývoj

Jaký programovací jazyk učit jako první a jak ho učit?

Martin Hejtmánek hejtmmar

Programování a algoritmizace: úvod

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

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

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

Programování. Úvod a základní principy. Martin Urza

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

Netradiční programovací jazyky

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

C2184 Úvod do programování v Pythonu podzim Mgr. Stanislav Geidl Národní centrum pro výzkum biomolekul Masarykova univerzita.

Programování a algoritmizace: úvod

Inovace výuky prostřednictvím ICT v SPŠ Zlín, CZ.1.07/1.5.00/ Vzdělávání v informačních a komunikačních technologií

IB111 Úvod do programování skrze Python Úvod kurzu

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

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

IB111 Úvod do programování skrze Python Úvod kurzu

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

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

Funkcionální programování

Paradigmata programování 1

IB111 Základy programování Úvod kurzu. Radek Pelánek

Algoritmy a jejich znázorňování.

Teorie a praxe SW inženýrství

1. Obecně o programování

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

C2184 Úvod do programování v Pythonu podzim Stanislav Geidl Národní centrum pro výzkum biomolekul Masarykova univerzita. Úvod.

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

IB111 Úvod do programování Úvod kurzu

Programování II. Modularita 2017/18

Seminář z Informatiky a výpočetní techniky. Slovanské gymnázium Olomouc 4. září 2014 Tomáš Kühr

Algoritmy. BI-PA1 Programování a Algoritmizace I. Ladislav Vagner

Základy programování Programovací jazyky. doc. RNDr. Petr Šaloun, Ph.D. VŠB-TUO, FEI (přednáška připravena z podkladů Ing. Michala Radeckého)

Funkcionální programování. Kristýna Kaslová

Sazba zdrojových kódů (balíček listings)

Praktické tipy, programovací jazyky. IB111 Základy programování Radek Pelánek

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

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

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

C2115 Praktický úvod do superpočítání

Architektura počítačů Agenda

Identifikátor materiálu: ICT-1-21

Pojem algoritmus. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava

Vizuální programování

Algoritmizace. Cíle předmětu

IB111 Programování a algoritmizace. Objektově orientované programování (OOP)

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

Překladač a jeho struktura

1. Úvod. Podmínky absolvování

Functional and Logic Programming Functional languages

Programovací jazyky. Ing. Marek Běhálek Katedra informatiky FEI VŠB-TUO A-1018 /

Úvod do programování

Algoritmy a algoritmizace

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

ANOTACE vytvořených/inovovaných materiálů

Algoritmus. Přesné znění definice algoritmu zní: Algoritmus je procedura proveditelná Turingovým strojem.

1. Programování proti rozhraní

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í

Programovací jazyky. Ing. Marek Běhálek Katedra informatiky FEI VŠB-TUO A-1018 /

Úvod do programování (ALG ) F F U K. Jonathan L. Verner. Department of Logic

PB161 Základy OOP. Tomáš Brukner

Úvod do informačních technologií

Obsah. Kapitola 1 Hardware, procesory a vlákna Prohlídka útrob počítače...20 Motivace pro vícejádrové procesory...21

Programovací jazyky a jejich využití

Software, licence, programování

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

Úvod. Co je to programovací jazyk? Proč studovat programovací jazyky? Klasifikace jazyků

Úvod. doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 /

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

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

Práce v textovém editoru

Základy algoritmizace

Schopnosti překladačů vybraných objektově orientovaných jazyků

TÉMATICKÝ OKRUH TZD, DIS a TIS

PHP PHP je skriptovací programovací jazyk dynamických internetových stránek PHP je nezávislý na platformě

Úvod do programování

VY_32_INOVACE_INF.15. Dějiny počítačů II.

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

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

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

Sémantika Tabulka symbolů Intermediální kód Typová kontrola, přetypování Statická a dynamická sémantika. Sémantická analýza.

Transkript:

IB111 Úvod do programování skrze Python Přednáška 13 Programovací jazyky Nikola Beneš 14. prosinec 2016 IB111 přednáška 13: programovací jazyky 14. prosinec 2016 1 / 21

Osnova dnešní přednášky Programovací jazyky historie a vývoj přehled a použití Shrnutí předmětu Co dál? co jsme se naučili? programovací a algoritmické předměty na FI IB111 přednáška 13: programovací jazyky 14. prosinec 2016 2 / 21

Programovací jazyky IB111 přednáška 13: programovací jazyky 14. prosinec 2016 3 / 21

Kvízová otázka Kdo byl první programátor? IB111 přednáška 13: programovací jazyky 14. prosinec 2016 4 / 21

Kvízová otázka Kdo byl první programátor? Ada, hraběnka z Lovelace. Minulý týden uplynulo 201 let od jejího narození. (Ada Lovelace Day 10. prosince) IB111 přednáška 13: programovací jazyky 14. prosinec 2016 4 / 21

Historie programovacích jazyků Počátky první počítač (nikdy nesestrojen): 1837 Charles Babbage první programátorka: Ada, hraběnka z Lovelace děrné štítky automatický tkalcovský stav (1801, Joseph-Marie Jaquard) zpracování sčítání lidu (1890, Hermann Hollerith) IB111 přednáška 13: programovací jazyky 14. prosinec 2016 5 / 21

Historie programovacích jazyků Teoretické základy programování lambda kalkul Alonzo Church Turingův stroj Alan Turing a další První počítače (40. léta) strojový kód první programovací jazyky IB111 přednáška 13: programovací jazyky 14. prosinec 2016 6 / 21

Historie programovacích jazyků Počátky vývoje programovacích jazyků (50. - 60. léta) FORTRAN používaný dodnes pro vědeckotechnické výpočty LISP některé dialekty používány dodnes, významný vliv na rozvoj funkcionálních jazyků ALGOL významný vliv na vývoj programovacích jazyků a jiné (COBOL, CPL, ) IB111 přednáška 13: programovací jazyky 14. prosinec 2016 7 / 21

Historie programovacích jazyků Další vývoj (70. - 80. léta) strukturované programování jazyk C, Ada, objektově-orientované programování Simula, Smalltalk, jazyk C++ logické a funkcionální programování Prolog, ML, Scheme, Moderní programovací jazyky (90. léta a dál) Haskell, Python, Ruby, Java, JavaScript, C#, vývoj stále pokračuje vznikají nové jazyky staré jazyky se vyvíjejí a mění IB111 přednáška 13: programovací jazyky 14. prosinec 2016 8 / 21

Dělení programovacích jazyků Podle míry abstrakce jazyky vyšší/nižší úrovně Podle způsobu překladu a spuštění kompilované/interpretované Podle paradigmatu imperativní/deklarativní Další druhy skriptovací objektově-orientované paralelní Většina jazyků kombinuje více přístupů. IB111 přednáška 13: programovací jazyky 14. prosinec 2016 9 / 21

Dělení programovacích jazyků Podle míry abstrakce (spíše spojitý přechod) nejnižší programovací jazyky strojový kód assembler (jazyk symbolických adres) o něco vyšší programovací jazyky (manuální správa paměti) Pascal, C, Ada, C++ ještě vyšší programovací jazyky (automatická správa paměti) Java, Python, moderní C++ IB111 přednáška 13: programovací jazyky 14. prosinec 2016 10 / 21

Dělení programovacích jazyků Podle míry abstrakce (spíše spojitý přechod) Vývoj nejnižší programovací jazyky strojový kód assembler (jazyk symbolických adres) o něco vyšší programovací jazyky (manuální správa paměti) Pascal, C, Ada, C++ ještě vyšší programovací jazyky (automatická správa paměti) Java, Python, moderní C++ směrem k vyšším jazykům je vhodné pamatovat i na nižší úrovně abstrakce často usnadňuje pochopení vyšších úrovní abstrakce nebývají vždy dokonalé IB111 přednáška 13: programovací jazyky 14. prosinec 2016 10 / 21

Dělení programovacích jazyků Podle způsobu překladu a spuštění kompilované jazyky (C, C++, Pascal, ) překladač (kompilátor) překlad do strojového kódu výhoda: rychlost za běhu interpretované jazyky (JavaScript, Perl, PHP, ) interpret postupně čte program a vykonává příkazy pomalejší, ale odpadá fáze překladu IB111 přednáška 13: programovací jazyky 14. prosinec 2016 11 / 21

Dělení programovacích jazyků Podle způsobu překladu a spuštění kompilované jazyky (C, C++, Pascal, ) překladač (kompilátor) překlad do strojového kódu výhoda: rychlost za běhu interpretované jazyky (JavaScript, Perl, PHP, ) interpret postupně čte program a vykonává příkazy pomalejší, ale odpadá fáze překladu Různé kombinace (kompromisy) jazyky, které mohou být překládány i interpretovány kompilace do mezikódu (Python, Java, ) interpretuje se mezikód kompilace za běhu (JIT, Just-In-Time kompilace v Javě) IB111 přednáška 13: programovací jazyky 14. prosinec 2016 11 / 21

Paradigmata programovacích jazyků Imperativní jazyky program je posloupnost instrukcí instrukce jsou rozkazy, které určují, co má počítač dělat IB111 přednáška 13: programovací jazyky 14. prosinec 2016 12 / 21

Paradigmata programovacích jazyků Imperativní jazyky program je posloupnost instrukcí instrukce jsou rozkazy, které určují, co má počítač dělat Deklarativní jazyky program je popis toho, co se má udělat logické programování (Prolog) program je popsán pomocí logických formulí funkcionální programování (Haskell) program je popsán pomocí funkcí funkce nemají vedlejší efekty rekurse Moderní jazyky kombinují více přístupů: funkcionální prvky v C++, Javě, Pythonu, IB111 přednáška 13: programovací jazyky 14. prosinec 2016 12 / 21

Další druhy programovacích jazyků Skriptovací jazyky užitečné pro jednoduché programy, tzv. skripty usnadnění zdlouhavé manuální činnosti Bash, Perl, Python, IB111 přednáška 13: programovací jazyky 14. prosinec 2016 13 / 21

Další druhy programovacích jazyků Skriptovací jazyky užitečné pro jednoduché programy, tzv. skripty usnadnění zdlouhavé manuální činnosti Bash, Perl, Python, Objektově-orientované jazyky využívají objektového návrhu programu většina moderních jazyků obsahuje nějaké prvky OOP C++, Java, Python, Objective C, C#, IB111 přednáška 13: programovací jazyky 14. prosinec 2016 13 / 21

Další druhy programovacích jazyků Skriptovací jazyky užitečné pro jednoduché programy, tzv. skripty usnadnění zdlouhavé manuální činnosti Bash, Perl, Python, Objektově-orientované jazyky využívají objektového návrhu programu většina moderních jazyků obsahuje nějaké prvky OOP C++, Java, Python, Objective C, C#, Paralelní výpočty počítání na více procesorech / více počítačích zároveň získává na popularitě podpora v moderních jazycích (např. C++11) proč? procesory už moc rychlejší nebudou IB111 přednáška 13: programovací jazyky 14. prosinec 2016 13 / 21

Jaký jazyk používat? Programovacích jazyků je mnoho. Který si mám vybrat? IB111 přednáška 13: programovací jazyky 14. prosinec 2016 14 / 21

Jaký jazyk používat? Programovacích jazyků je mnoho. Který si mám vybrat? špatně položená otázka není žádný jeden ideální jazyk použitelný pro všechny druhy úkolů záleží na tom, co řešíme může být výhodné kombinovat více jazyků/přístupů IB111 přednáška 13: programovací jazyky 14. prosinec 2016 14 / 21

Jaký jazyk používat? Programovacích jazyků je mnoho. Který si mám vybrat? špatně položená otázka není žádný jeden ideální jazyk použitelný pro všechny druhy úkolů záleží na tom, co řešíme může být výhodné kombinovat více jazyků/přístupů Doporučení nefixujte se na jeden jazyk učte se různé jazyky různé jazyky s sebou nesou i různé způsoby přemýšlení IB111 přednáška 13: programovací jazyky 14. prosinec 2016 14 / 21

Jaký jazyk používat? Programovacích jazyků je mnoho. Který si mám vybrat? špatně položená otázka není žádný jeden ideální jazyk použitelný pro všechny druhy úkolů záleží na tom, co řešíme může být výhodné kombinovat více jazyků/přístupů Doporučení nefixujte se na jeden jazyk učte se různé jazyky různé jazyky s sebou nesou i různé způsoby přemýšlení Kolik programovacích jazyků umíš, tolikrát jsi programátorem. IB111 přednáška 13: programovací jazyky 14. prosinec 2016 14 / 21

Shrnutí předmětu IB111 přednáška 13: programovací jazyky 14. prosinec 2016 15 / 21

Shrnutí předmětu Co jsme se naučili? základy programování můžeme donutit počítač, aby dělal to, co chceme programování nám může usnadnit práci programování nám umožňuje dělat zajímavé a zábavné věci IB111 přednáška 13: programovací jazyky 14. prosinec 2016 16 / 21

Shrnutí předmětu Co jsme se naučili? základy programování můžeme donutit počítač, aby dělal to, co chceme programování nám může usnadnit práci programování nám umožňuje dělat zajímavé a zábavné věci IB111 přednáška 13: programovací jazyky 14. prosinec 2016 16 / 21

Co dál? IB111 přednáška 13: programovací jazyky 14. prosinec 2016 17 / 21

Výhled do budoucnosti Co dál? kde se dozvím víc o programování? jaké programovací/algoritmické předměty fakulta nabízí? kdo ze mě udělá lepšího programátora? IB111 přednáška 13: programovací jazyky 14. prosinec 2016 18 / 21

Výuka programování / algoritmizace na FI Algoritmy (směr k větší abstrakci) IB002 Algoritmy a datové struktury I programátorské úlohy v Pythonu navazující IV003 Algoritmy a datové struktury II IB111 přednáška 13: programovací jazyky 14. prosinec 2016 19 / 21

Výuka programování / algoritmizace na FI Algoritmy (směr k větší abstrakci) IB002 Algoritmy a datové struktury I programátorské úlohy v Pythonu navazující IV003 Algoritmy a datové struktury II Programování podrobněji (směr k nižší abstrakci, jak funguje počítač) PB071 Principy nízkoúrovňového programování správa paměti, práce s řetězci, (jazyk C) IB111 přednáška 13: programovací jazyky 14. prosinec 2016 19 / 21

Výuka programování / algoritmizace na FI Algoritmy (směr k větší abstrakci) IB002 Algoritmy a datové struktury I programátorské úlohy v Pythonu navazující IV003 Algoritmy a datové struktury II Programování podrobněji (směr k nižší abstrakci, jak funguje počítač) PB071 Principy nízkoúrovňového programování správa paměti, práce s řetězci, (jazyk C) Objektově-orientované programování PB161 Programování v jazyce C++ (a navazující PV264) PB162 Programování v jazyce Java (a navazující předměty) IB111 přednáška 13: programovací jazyky 14. prosinec 2016 19 / 21

Výuka programování / algoritmizace na FI Algoritmy (směr k větší abstrakci) IB002 Algoritmy a datové struktury I programátorské úlohy v Pythonu navazující IV003 Algoritmy a datové struktury II Programování podrobněji (směr k nižší abstrakci, jak funguje počítač) PB071 Principy nízkoúrovňového programování správa paměti, práce s řetězci, (jazyk C) Objektově-orientované programování PB161 Programování v jazyce C++ (a navazující PV264) PB162 Programování v jazyce Java (a navazující předměty) Jiná paradigmata IB015 Neimperativní programování Haskell, Prolog IB111 přednáška 13: programovací jazyky 14. prosinec 2016 19 / 21

Výuka programování / algoritmizace na FI Paralelní programování IB109 Návrh a implementace paralelních systémů navazující PV197 GPU Programming používání grafických karet pro masivně paralelní výpočty IB111 přednáška 13: programovací jazyky 14. prosinec 2016 20 / 21

Výuka programování / algoritmizace na FI Paralelní programování IB109 Návrh a implementace paralelních systémů navazující PV197 GPU Programming používání grafických karet pro masivně paralelní výpočty Více o jazyce Python a jiných jazycích PV248 Kurz jazyka Python PV249 Vývoj v jazyce Ruby PV178 Úvod do vývoje v C#/.NET (a navazující předměty) IB111 přednáška 13: programovací jazyky 14. prosinec 2016 20 / 21

Výuka programování / algoritmizace na FI Paralelní programování IB109 Návrh a implementace paralelních systémů navazující PV197 GPU Programming používání grafických karet pro masivně paralelní výpočty Více o jazyce Python a jiných jazycích PV248 Kurz jazyka Python PV249 Vývoj v jazyce Ruby PV178 Úvod do vývoje v C#/.NET (a navazující předměty) Teorie programování co je možné pomocí počítače řešit? jak rychle je to možné řešit? vyčíslitelnost a složitost učí se v rámci různých předmětů (IB102, IB107) IB111 přednáška 13: programovací jazyky 14. prosinec 2016 20 / 21

A to je vše Dotazy, komentáře? IB111 přednáška 13: programovací jazyky 14. prosinec 2016 21 / 21

A to je vše Pěkné svátky, úspěšné zkouškové,... IB111 přednáška 13: programovací jazyky 14. prosinec 2016 21 / 21

A to je vše Pěkné svátky, úspěšné zkouškové,...... a nezapomeňte programovat. IB111 přednáška 13: programovací jazyky 14. prosinec 2016 21 / 21