1. Úvod C2184 Úvod do programování v Pythonu podzim 2020 Adam Midlik Co je to programování? Programming is when you’re describing to the machine how to do something. Bill Gates 2 Historie ● 1837 – Charles Babbage navrhl Analytický stroj (Analytical Engine) ○ Všestranný mechanický počítač ○ Nikdy nebyl celý sestrojen :( ● Ada Lovelace ○ Popsala metodu, jak pomocí Analytického stroje spočítat Bernoulliho čísla ○ Považuje se za autorku prvního počítačového programu 3 Část Analytického stroje Historie 40. léta 20. století ● Vznikají první počítače ● Používají se nízkoúrovňové programovací jazyky ○ Např. strojový kód, Assembly… ○ Složité pro psaní, specifické pro konkrétní typ procesoru 4 Replika počítače Z3 (1941) 5 Strojový kód b8 21 0a 00 00 a3 0c 10 00 06 b8 6f 72 6c 64 a3 08 10 00 06 b8 6f 2c 20 57 a3 04 10 00 06 b8 48 65 6c 6c a3 00 10 00 06 b9 00 10 00 06 ba 10 00 00 00 bb 01 00 00 00 b8 04 00 00 00 cd 80 b8 01 00 00 00 cd 80 Jazyk Assembly pro procesor IBM-PC (i386) dosseg .model small .stack 100h .data hello_message db 'Hello, World!',0dh,0ah,'$' .code main proc mov ax,@data mov ds,ax mov ah,9 mov dx,offset hello_message int 21h mov ax,4C00h int 21h main endp end main Takhle vypadají soubory .exe Tomuto rozumí procesor Historie 40.–50. léta ● První vysokoúrovňové jazyky ○ Umožňují vyšší míru abstrakce ○ Přeloží se do strojového kódu pomocí překladače (nemusí to dělat člověk) ● 1954 – jazyk Fortran (IBM) ○ První rozšířený vysokoúrovňový jazyk ○ Stále používán pro high-performance computing ● Další jazyky: LISP, COBOL… 6 Fortran PROGRAM HELLOWORLD 10 FORMAT (1X,11HHELLO WORLD) WRITE(6,10) END Historie 60.–80. léta: ● Pascal, C, C++, MATLAB… 90. léta: ● Python, R, Java… ● Internet: PHP, JavaScript… Současnost – stále nové jazyky: ● C# (2001), Go (2009), TypeScript (2012)… 7 Python print('Hello World!') Vývoj Pythonu ● 1989 – Guido van Rossum začal pracovat na jazyce Python ○ Výzkumné centrum CWI v Holandsku ○ Jazyk pojmenován podle komické skupiny Monty Python 8 ● 1994 – Python 1.0 ● 2000 – Python 2.0 ● 2008 – Python 3.0 ○ Cíl: napravit chyby v návrhu Pythonu ○ Není zpětně kompatibilní v Pythonem 2! ○ Python 2 stále přežívá (kvůli množství existujícího kódu) … ○ … Konec podpory – 1.1.2020 ● 2019 – Python 3.8 (zatím nejnovější) ● 5.10.2020 – Python 3.9 9 Proč Python? 10 Proč Python? ● Jednoduchý jazyk, snadno se učí a je pedagogický ● Přehledná syntaxe ● Velká oblíbenost ○ Dokumentace, Stack Overflow ○ Množství tutoriálů a kurzů ○ Velké množství balíčků, všestranné nasazení ● Mocný jazyk ○ Výkonné vysokoúrovňové datové struktury ○ Jednoduchý přístup k objektovému programování ● Využití ve vědě ○ Bioinformatika: Biopython, scikit-bio ○ Matematika: scipy, matplotlib ○ Strojové učení: scikit-learn, TensorFlow ○ Zpracování obrazu: scikit-image … 11 Přehledná syntaxe Funkce pro seřazení čísel: Poznámka: tuto funkci by bylo zbytečné psát, protože to už někdo udělal za nás: 12 Síla 13 Oblíbenost PYPL index – 1. místo TIOBE index – 3. místo 14 Filozofie – jednoduchost a konvence The Pythonic way: There should be one – and preferably only one – obvious way to do it. 15 Bude fungovat Jednodušší a přehlednější způsob (the Pythonic way) Slabiny Pythonu Rychlost ● Pomalejší než třeba C nebo Java :( ● Existují způsoby, jak napsat rychlý kód :) ● Pravděpodobně na tento problém nenarazíte Spotřeba paměti ● Pravděpodobně na tento problém nenarazíte Runtime errors ● Je to dynamicky typovaný jazyk, proto z kódu nelze poznat, jaké chyby se mohou vyskytnout při běhu programu Méně vhodný pro mobilní aplikace a databáze 16 Co je vlastně Python? Python je ● Programovací jazyk ○ Jazyk, který umožňuje zápis zdrojového kódu programu ○ Jeho syntax a sémantika je popsána dokumentací ○ Konkrétně verze Python 3.8 ● Interpreter ○ Program, který umožňuje spouštění (interpretaci) zdrojového kódu napsaného v jazyce Python ○ Konkrétně CPython 3.8 (existují i další interpretery, např. PyPy, Jython) 17 Jak funguje interpreter? 18 Vstup Výstup Chybový výstup Zdrojový kód (skript) Interpreter v interaktivním módu 19 Zdrojový kód (příkazy) Vstup Výstup Chybový výstup Rozdíly od neinteraktivního módu: ● Zdrojový kód se zadává z terminálu ● Pro zadání příkazů se vypisuje prompt (>>>) ● Výsledky příkazů se vypisují na výstup Terminál Co je IDE? ● IDE = Integrated Development Environment (“chytrý editor”) ● Ulehčuje nám práci při programování ● My budeme používat Visual Studio Code ○ Zadarmo ○ Není vázané na konkrétní jazyk ○ Lze do něj přidávat funkcionalitu pomocí extensions (využijeme extension Python) ● Jiná IDE: PyCharm, Spyder... 20 21 Instalace Pythonu a VSCode – Windows Python ● Stáhněte Python 3.8 z https://www.python.org/downloads/ ● Důležité: na začátku instalace zaškrtněte Add Python 3.8 to PATH ● V jednom z dalších kroků zaškrtněte Disable path length limit ● Kontrola: v nabídce Start najděte Python 3.8 – měl by se otevřít terminál VSCode ● Stáhněte z https://code.visualstudio.com/ ● Při instalace také zaškrtněte Add to PATH ● Spusťte VSCode a na levé liště klikněte na ikonu Extensions ● Vyhledejte a nainstalujte extension Python od autora Microsoft ● Restartujte VSCode 22 Instalace Pythonu a VSCode – Linux, Mac OS X Obdobná instalace Ve většině distribucí Linuxu je už Python nainstalován, ale jmenuje se python3 ● Starší verze (do Ubuntu 19.10): ○ python3 = Python 3 (nepoužívat python = Python 2) ● Novější verze (od Ubuntu 20.04): ○ python3 = Python 3 (po instalaci balíku python-is-python3: python = python3 = Python 3) ● Doinstalujte si balík python3-pip (přes sudo apt install python3-pip) Instalace VSCode může být složitější (https://code.visualstudio.com/docs/setup/setup-overview) 23 První kroky ● Vytvořte si složku, ve které si budete ukládat svoje programy počas semestru ● Ve VSCode na levé liště klikněte na ikonu Explorer a otevřete svoji složku ● Na horní liště klikněte Terminal > New Terminal, otevře se vám terminál s shellem (bash nebo powershell) ● Terminál lze skrýt / znovu otevřít pomocí Ctrl+` (na klávesnici pod Esc) 24 Základní příkazy shellu ● ls – vypiš obsah aktuální složky (nebo ve Windows dir) ● cd .. – jdi o složku výš ● cd blabla – jdi do podsložky blabla ● blabla – spusť program blabla ● man blabla – vypiš nápovědu k příkazu/programu blabla (Linux, MacOS) ● help blabla – – | | – (Windows) ● exit – ukonči shell a zavři terminál Klávesy ↑↓ – návrat k předchozím příkazům Tab – automatické doplnění příkazu / programu / názvu souboru / složky 25 Spuštění Pythonu v interaktivním módu ● Do terminálu ve VSCode napište python, stiskněte Enter ● Vypíše se verze Pythonu a objeví se prompt (>>>) ● Zkuste zadávat příkazy, např. 2+2 nebo print('Hello') ● K předchozím příkazům se umíte vrátit pomocí šipek ↑↓ na klávesnici ● Python ukončíte signálem end-of-file (Windows: Ctrl+Z a Enter; Linux, Mac: Ctrl+D), nebo zadáním příkazu exit() 26 Spuštění skriptu ● V nabídce Explorer ve VSCode vytvořte nový soubor hello.py a otevřete ho (pythonovské skripty mají příponu .py) ● Do souboru napište print('Hello World!') a uložte (* nebo • nahoře u názvu souboru znamená, že není uložen) ● Do terminálu zadejte python hello.py (shell umí dokončit název souboru stisknutím Tab) ● Spustí se Python a vypíše Hello World! ● Python se hned i ukončí, neuvidíte >>> ● Trik: aktuální řádek nebo označenou část skriptu lze spustit přes Shift+Enter 27 Jupyter Notebook ● Nástroj, který umožňuje kombinovat text, zdrojový kód, rovnice, grafy … v jednom dokumentu (notebooku, přípona .ipynb). ● Notebook se skládá z buněk dvou typů ○ Markdown – obsahují formátovaný text ○ Code – obsahují zdrojový kód ● Na pozadí běží interaktivně interpreter, který vykonává kód v buňkách (kernel) ● Výstup interpretru se zobrazuje přímo v notebooku ● Buňky lze upravovat, přesouvat, mazat a opakovaně spouštět 28 Spuštění Pythonu přes Jupyter notebooks ● Do své složky si stáhněte ukazkovy_notebook.ipynb z osnovy v ISu ● V nabídce Explorer ve VSCode otevřete ukazkovy_notebook.ipynb, potvrďte všechny výzvy k instalaci doplňků a pod. – může to chvilku trvat ● Zkuste spouštět a upravovat buňky v notebooku 29 Ukázkový domácí úkol ● Do své složky si stáhněte a rozbalte DU_1.zip ● Ve VSCode otevřete du_1_1.ipynb ● Řešte zadaný úkol ● Řešení si můžete zkontrolovat spuštěním testovací buňky na konci notebooku, před tím ale nezapomeňte notebook uložit (nebo si nastavte File > Auto Save) ● Když vám projdou testy (vypíše se Tests passed), můžete odevzdat notebook do odevzdávárny v ISu ● Body za DÚ budeme cca 1x týdně zapisovat do poznámkových bloků v ISu 30 Užitečné triky VSCode ● Ctrl+` – zobrazí/skryje terminál ● Ctrl+/ – zakomentuje/odkomentuje řádek (text za # interpret ignoruje) ● Ctrl+X – smaže řádek ● Ctrl+K, Ctrl+O – otevření složky 31 Doporučení: používejte anglickou klávesnici 32 Obsahuje všechny speciální znaky používané při programování @ # % ^ & ( ) [ ] { } < > + - = * / | \ : ; ’ ” ` _ … Česká Slovenská 33