Jako programovací jazyk jsem si vybral Python. Šel se mnou ještě jeden kluk a vybral si Javu. Co jsem zaslechl, dostal historii Javy ale ne úplně historii - spíš než data kdy vznikla a tak chtěl Kryl slyšet proč vznikla, čím se odlišuje a jaké má výhody a nevýhody. Chtěl to podle všeho s trochou historického kontextu.
Průběh:
Kryl prohlásil, že na Pythonu není moc věcí na co se ptát a ať mu tedy dám nějaký všeobecný přehled. Začnu přehledem, přejdu na základní datové typy a zakončím to podrobnějším popisem OOP v Pythonu. Začal jsem tedy stručným přehledem (co je Python, k čemu se používá, jaké jsou jeho klady a zápory, ...). Pak jsem plynule přešel na základní datové typy (None, Boolean, Integer, Float, String, Object) ze kterých jsem se přehoupl na datové struktury (List, Set, Tuple, Dictionary). Pak jsem zmínil, že String je vps tuple, list comprehensions a slicing pomocí [startstep]. To Kryla moc nezajímalo. Tak jsem popis Pythonovských krás utnul a přešel rovnou na OOP. Tam jsem rozebral jak je řešený ukládání proměnných a funkcí do tříd, to že třídy jsou objekty - a dají se tedy měnit za runtimu, že Python nemá interfacy, zmínil jsem dekorátory funkcí a ukázky statických funkcí, třídních funkcí, properties a setterů. Pak jsem přešel na abstraktní třídy a dědičnost. Tam chtěl Kryl slyšet jak je řešená vícenásobná dědičnost na který Python stojí. Důležitý je zmínit, že se prapředkové nevytváří pro každého předka, ale že funguje virtuální dědičnost a tedy je každý předek přítomný jen jednou. O průběhu linearizace nic vědět nechtěl. Zkratku MRO ani neznal. Takže tyhle implementační "detaily" asi není třeba ani moc znát. Měl jsem připravený ještě hlubší povídání o GC (její funkcionalitu jsem nastínil při popisu datových typů, kde jsem se zmínil o životním cyklu proměnných) a lehčí povídání o výjimkách, ale ani na jedno z toho nedošlo. Po tom, co jsem popsal dědičnost, mě Kryl zastavil a dal mi jedničku. Hodilo se mít na papíře nějaké praktické ukázky kódů.
Studijní materiály:
http://ksvi.mff.cuni.cz/~kryl/Avyuka/20 ... _18(1).pdf - Prezentace, kterou Kryl použil při povídání o Pythonu - hodí se minimálně na získání historického pozadí a výhod / nevýhod Pythonu v porovnání s ostatními jazyky.
https://www.youtube.com/watch?v=SiXyyOA6RZg - poměrně hezká přednáška o Pythonu - hodí se hlavně pokud s Pythonem začínáte - předpokládá základní znalost Pythonu, ale já na to koukal aniž bych o Pythonu cokoliv věděl a pochopil jsem myslím vše.
Imo se dcla hodí si udělat nějaké praktické věci s Pythonem, pokud jste s ním nikdy nepracovali. Já použil aplikaci SoloLearn v telefonu a udělal jsem si celý kurz na Python 3 (za cca půl dne a koukal jsem u toho na seriály .
Najděte si nějaké zdroje, kde by byla podrobněji popsaná dědičnost a OOP v Pythonu. Já to čerpal z videí, dokumentace Pythonu, několika článků, které bych už asi znovu nenašel a od spolužáků, kteří Python umí.
Hezký článek o MRO a jeho historii (jedná se spíš o zápisky autora - https://python-history.blogspot.com/201 ... order.html
Přikládám také svůj vypracovaný text na základě okruhů, které Kryl požaduje (požadoval) podle jeho letošních požadavků ke zkoušce. U Pythonu bylo několik odrážek "okruhů", co bychom měli znát. Tak jsem je vzal a o každé napsal odstavec / dva. Mělo by to bohatě stačit na jedničku, ale nespoléhal bych se na to. Nestačí to mít naučený ale je potřeba tomu i rozumět. Kryl se často ptá, pokud se mu něco nezdá a má talent na trefu do černého.
Dojmy:
Když jsem se začal učit, neuměl jsem v Pythonu nic. Vůbec nic. Učil jsem se 4-5 dní a moje znalost Pythonu je imho lepší než většiny Pythonových programátorů. Dokonce jsem našel pár chyb v některých "učebních" textech na internetu, kde se snažili Python učit. Naprosto jsem se přeučil s těmi zdroji, co jsem vypsal a s tím, že víte na co se zaměřit, si myslím, že 3 dny už je pomalu také moc. 2 dny by měly stačit bohatě, i když o Pythonu skoro nic nevíte.
Je důležité mluvit sám. Když vám Kryl skočí do řeči, nenechte se rozhodit. Odpovězte mu (dejte si na čas, rozmyslete se) a pokud vám to odkýve, pokračujte rovnou tam, kde jste přestali. Jakmile přestanete mluvit, začne být Kryl naštvaný, protože si musí vymýšlet otázky. A to většinou nedopadá dobře.
Kryl nemá tendenci dávat trojky. To vám spíš dá čtyřku a počká si až se to naučíte pořádně, aby vám mohl dát pěknou známku.
Oblečení není třeba vůbec hrotit - šortky a tričko je ok.
Dejte si pozor ať neřeknete nějakou blbost. Kryl neskáče do řeči když má pocit, že něco chybí, ale jen, pokud řeknete něco špatně. Když neskočí do řeči, dost možná se k tomu ani nevrátí a prostě vám to jen odkýve.
Omlouvám se za případné překlepy, či přehlédnuté blbosti. Zlomte vaz
Zkouška 1. 6. 2018
Přednáška je vhodná především pro studenty informatiky - jak odborného, tak i učitelského studia, mohou ji však navštěvovat i posluchači jiných oborů, kteří se hlouběji zajímají o programování. Přednáška předpokládá u posluchačů znalosti základů programování, programovacích jazyků Pascal (včetně objektového programování v něm), C a C++ a některého neprocedurálního jazyka - nejlépe Prologu. Složení příslušných zkoušek však není vstupní podmínkou. Na přednášce se společně zamyslíme nad vývojem metodiky programování (strukturované, modulární, objektové, event-driven, logické, funkcionální,... programování) a nad tím, jak se tyto koncepty projevily v nejdůležitějších programovacích jazycích. Půjde nám o souvislosti, ne o detaily nebo přesný historický popis vývoje. Při výběru programovacích jazyků budeme větší pozornost věnovat těm, které se skutečně "ujaly v praxi".
-
- Matfyz(ák|ačka) level I
- Příspěvky: 6
- Registrován: 5. 10. 2014 10:28
- Typ studia: Informatika Mgr.
- Login do SIS: 72501113
Zkouška 1. 6. 2018
- Přílohy
-
- Python.pdf
- Použijte na vlastní nebezpečí :)
- (579.35 KiB) Staženo 197 x
Zpět na „PRG003 Metodika programování a filozofie programovacích jazyků“
Přejít na
- Aktuální informace
- ↳ Studijní oddělení
- ↳ Knihovna
- ↳ Studentská komora Akademického senátu (SKAS)
- ↳ Volby na ak. rok 2013/2014
- Všichni
- ↳ Práce
- ↳ Klubovna
- ↳ Toto fórum
- ↳ Státní závěrečná zkouška
- ↳ Bakalářské SZZ
- ↳ Magisterské SZZ
- ↳ Info for foreign students
- ↳ Akce
- ↳ Fotbalový turnaj 2008
- Informatika ZS
- ↳ Výuka ZS 1. ročník
- ↳ DMI002 Diskrétní matematika
- ↳ 2007
- ↳ 2006
- ↳ 2005
- ↳ 2004
- ↳ MAI054 Matematická analýza I
- ↳ 2007
- ↳ 2006
- ↳ 2005
- ↳ 2004
- ↳ MAI057 Lineární algebra I
- ↳ 2006
- ↳ 2005
- ↳ 2004
- ↳ PRG030 Programování I
- ↳ 2006
- ↳ 2005
- ↳ 2004
- ↳ SWI120 Principy počítačů a operačních systémů
- ↳ SWI087 Principy počítačů
- ↳ Ostatní
- ↳ DMI051 Úvod do řešení problémů kombinatorických, mat. i jiných (IPS) II
- ↳ Výuka ZS 2. ročník
- ↳ MAI056 Matematická analýza III
- ↳ 2006
- ↳ 2005
- ↳ 2004
- ↳ OFY016 Fyzika pro nefyziky I - Svět kolem nás
- ↳ SWI089 Ochrana informace I
- ↳ SWI096 Internet
- ↳ TIN061 Algoritmy a datové struktury II
- ↳ 2006
- ↳ 2005
- ↳ 2004
- ↳ Ostatní
- ↳ Aplikační software
- ↳ NPRG035 Jazyk C# a platforma .NET
- ↳ NPRG041 Programování v C++
- ↳ AIL062 Výroková a predikátová logika
- ↳ 2007
- ↳ 2006
- ↳ 2005
- ↳ PGR013 Java
- ↳ MAI059 Pravděpodobnost a statistika
- ↳ Výuka ZS 3. ročník
- ↳ SWI099 Administrace Systemu Windows
- ↳ SWI015 Programování v Unixu
- ↳ SWI098 Principy překladačů
- ↳ 2006
- ↳ Ostatní
- ↳ DBI007 Organizace a zpracování dat I
- ↳ 2006
- ↳ MAI062 Algebra I
- ↳ PGR003 Počítačová grafika I
- ↳ SWI090 Počítačové sítě I
- ↳ Výuka ZS NMgr.
- ↳ TIN066 Datové struktury I
- ↳ TIN062 Složitost I
- ↳ TIN064 Vyčíslitelnost I
- ↳ MAI060 Pravděpodobnostní metody
- ↳ SWI004 Operační systémy
- ↳ SWI106 Administrace Unixu
- ↳ Ostatní
- ↳ NTIN090 Základy složitosti a vyčíslitelnosti
- ↳ OPT042 Programování s omezujícími podmínkami
- ↳ AIL002 Neuronové sítě
- ↳ AIL025 Evoluční algoritmy I
- ↳ AIL069 Umělá inteligence I
- ↳ NDBI001 Dotazovací jazyky I
- ↳ TIN070 Testování software
- ↳ NDBI027 Datové sklady a analytické metody pro Business Intelligence
- ↳ NDBI034 Vyhledávání multimediálního obsahu na webu
- ↳ NPRG023 Softwarový projekt
- Informatika LS
- ↳ Výuka LS 1. ročník
- ↳ MAI055 Matematická analýza II
- ↳ 2006
- ↳ 2005
- ↳ 2004
- ↳ MAI058 Lineární algebra II
- ↳ 2006
- ↳ 2005
- ↳ 2004
- ↳ PRG031 Programování II
- ↳ 2006
- ↳ 2005
- ↳ 2004
- ↳ TIN060 Algoritmy a datové struktury I
- ↳ 2006
- ↳ 2005
- ↳ 2004
- ↳ SWI095 Úvod do UNIXu
- ↳ 2006
- ↳ 2005
- ↳ 2004
- ↳ Ostatní
- ↳ Výuka LS 2. ročník
- ↳ SWI071 Ochrana informace II
- ↳ TIN071 Automaty a gramatiky
- ↳ PRG033 Ročníkový projekt - specifikace
- ↳ DMI011 Kombinatorika a grafy I
- ↳ DBI025 Databázové systémy
- ↳ Ostatní
- ↳ SWI036 Programování pro Windows I & II
- ↳ SWI096 Internet
- ↳ PRG005 Neprocedurální programování
- ↳ 2006
- ↳ 2005
- ↳ 2004
- ↳ NSWI143 Architektura počítačů
- ↳ Výuka LS 3. ročník
- ↳ Ostatní
- ↳ PGR004 Počítačová grafika II
- ↳ PRG036 Technologie XML
- ↳ SZZ026 Bakalářská práce
- ↳ PRG003 Metodika programování a filozofie programovacích jazyků
- ↳ MAI064 Matematické struktury
- ↳ MAI042 Numerická matematika
- ↳ SWI021 Počítačové sítě II
- ↳ SWI045 Rodina protokolů TCP/IP
- ↳ NPRG038 Pokročilé programování pro .NET
- ↳ Výuka LS NMgr.
- ↳ SWI109 Konstrukce překladačů
- ↳ NPRG042 Programování v paralelním prostředí
- ↳ SWI117 Technologie vývoje webových aplikací
- ↳ SWI026 Softwarové inženýrství
- ↳ MAI061 Metody matematické statistiky
- ↳ I1 Ostatní Teoretická informatika
- ↳ I2 Ostatní Softwarové systémy
- ↳ I3 Ostatní Matematická lingvistika
- ↳ I4 Ostatní Diskrétní modely a algoritmy
- ↳ AIL026 Evoluční algoritmy II
- ↳ AIL070 Umělá inteligence II
- ↳ NDBI010 Dokumentografické informační systémy
- ↳ NDBI023 Dobývání znalostí
- ↳ NDBI016 Transakce
- ↳ NDBI006 Dotazovací jazyky II
- ↳ NAIL029 Strojové učení
- Matematika
- ↳ Výuka LS 1. ročník
- ↳ Lineární algebra 2
- ↳ Programování 2
- ↳ Matematická analýza 1b
- ↳ Volitelné předměty
- ↳ Výuka LS 2. ročník
- ↳ Pravděpodobnost a statistika
- ↳ Teorie Míry a integrálu II
- ↳ Algebra II
- ↳ Matematická analýza 2b
- ↳ Ostatní
- ↳ Výuka LS 3. ročník
- ↳ Předměty numeriky
- ↳ Úvod do funcionální analýzy
- ↳ Funkcionální analýza I
- ↳ Vybrané partie z funkcionální analýzy
- ↳ Náhodné procesy 2
- ↳ Matematická statistika 2
- ↳ Teorie pravděpodobnosti 2
- ↳ Matematická ekonomie
- ↳ Ostatní
- ↳ LS - Předměty MMIB a pokročilé Algebry
- ↳ Všeobecná diskuse
- ↳ Počítačová algebra
- ↳ Teorie čísel a RSA
- ↳ Aplikovaná kryptografie II
- ↳ Standardy v kryptografii
- ↳ Kryptoanalytické útoky
- ↳ Aplikace bezpečnostních mechanismů
- ↳ Kvantové a DNA počítače
- ↳ Faktorizace velkých čísel
- ↳ Algebraická geometrie v kladné charakteristice
- ↳ Výuka ZS 1. ročník
- ↳ MAA001 Matematická analýza 1a
- ↳ PRM044 Programování I
- ↳ MAA079 Proseminář z kalkulu 1a
- ↳ DMA005 Diskrétní matematika
- ↳ ALG001 Lineární algebra a geometrie I
- ↳ Ostatní
- ↳ Volitelné předměty
- ↳ Výuka ZS 2. ročník
- ↳ MIB
- ↳ Matematická analýza 2a
- ↳ Teorie míry a integrálu
- ↳ Numerika
- ↳ Algebra
- ↳ Předměty finanční matematiky
- ↳ Ostatní
- ↳ Výuka ZS 3. ročník
- ↳ Matematická statistika
- ↳ Teorie pravděpodobnosti
- ↳ Náhodné procesy
- ↳ Optimalizace
- ↳ Předměty numeriky
- ↳ Předměty finanční matematiky
- ↳ Komplexní analýza
- ↳ Funcionální analýza
- ↳ Ostatní
- ↳ ZS - předměty MMIB a pokročilé Algebry
- ↳ Úvod do algebry
- ↳ Složitost pro kryptografii
- ↳ Samoopravné kódy
- ↳ Teoretická kryptografie
- ↳ Aplikovaná kryptografie I
- ↳ Datové a procesní modely
- ↳ Eliptické křivky
- ↳ Členění kryptografických standardů
- ↳ Kryptografické protokoly
- ↳ Úvod do teorie grup
- ↳ Právní aspekty zabezpečení dat
- ↳ Komutativní okruhy
- Fyzika ZS
- ↳ Výuka ZS 1. ročník
- ↳ OFY067 Fyzika v experimentech I
- ↳ MAF027 Lineární algebra I
- ↳ OFY021 Fyzika I (mechanika a molekulová fyzika)
- ↳ OFY056 Programování pro fyziky
- ↳ MAF033 Matematická analýza I
- Oborový mix aktuální
- ↳ Anglický jazyk
- ↳ Tělesná výchova
- ↳ Granty GAUK
- Odkazy
- ↳ Wiki
- ↳ SKAS
- ↳ Spolek Matfyzák
- Matematika Archiv
- ↳ Výuka LS 2006/2007 3. ročník
- ↳ Předměty numeriky
- ↳ Úvod do funcionální analýzy
- ↳ Náhodné procesy 2
- ↳ Matematická statistika 2
- ↳ Teorie pravděpodobnosti 2
- ↳ Matematická ekonomie
- ↳ Výuka LS 2006/2007 2. ročník
- ↳ Pravděpodobnost a statistika
- ↳ Teorie Míry a integrálu II
- ↳ Angličtina
- ↳ Algebra II
- ↳ Matematická analýza 2b
- ↳ Ostatní
- ↳ Výuka LS 2006/2007 1. ročník
- ↳ Volitelné předměty
- ↳ Lineární algebra 2
- ↳ Programování 2
- ↳ Matematická analýza 1b
- Zrušené předměty
- ↳ SWI087 Principy počítačů
- ↳ SWI120 Principy počítačů a operačních systémů
- ↳ 2006
- ↳ 2005
- ↳ 2004
- ↳ PRG029 Programování v C++
- ↳ 2006
- ↳ 2005
- ↳ 2004
- ↳ PRG032 Objektově orientované programování
- ↳ 2006
- ↳ 2005
- ↳ 2004
- ↳ SWI097 Základy operačních systémů
- ↳ NDBI003 Organizace a zpracování dat II
- Roztřídit (resty)
- ↳ Výuka ZS 2005/06 2. ročník
- ↳ Předměty informační bezpečnosti
- ↳ Předměty finanční matematiky
- ↳ Teorie míry a integrálu
- ↳ Numerika
- ↳ Algebra
- ↳ Analýza/kalkulus
- ↳ Matematika obecně
- ↳ Výuka LS 2005/06 2.ročník
- ↳ Základy matematického modelování
- ↳ Finanční management
- ↳ Úvod do optimalizace
- ↳ Numerika
- ↳ Kalkulus
- ↳ Angličtina
- ↳ Diferenciální geometrie
- ↳ Pravděpodobnost a statistika
- ↳ Teorie míry a integrálu II
- ↳ Algebra II
- ↳ Analýza 2b