0:00:15tak já jsem se brát s přepravou přednášku programovacích jazycích z jednoho prostého důvodu
0:00:20protože vlastně už šumem brání
0:00:23sem kdysi měl problémy se učit cizí jazyky jakékoli další jazyky
0:00:27ale přesto se měl velké nutkání jsem velice tak zaktivněn velice přesně vyjadřovat a dost
0:00:34často se nenacházel slova gramatiku sémantiku a podobně tomu aby se mi to podařilo
0:00:39aha
0:00:40tak jsem se zajímal o jazyky
0:00:42běžné řekněme nejprve
0:00:44nám o to jsem se rozhodl strach informatiku tak já jsem se zajímal jako programovací
0:00:49jazyky
0:00:51jako takové
0:00:52a
0:00:53právě
0:00:54v průběhu mých studií zrovna na této fakultě
0:00:57sem nehledal jakýsi mezi ve kterém jsem pracoval příjemně ve kterém bych se mohl velice
0:01:02stručně a přitom jasně vyjadřovat
0:01:05který by splňoval moderní požadavky to znamená pokud tak ajťáci tak tušíte co tím asi
0:01:10mám na mysli
0:01:11pro ostatní co to může odnášet tak je to nějaká rychlost jednoduchost použití čitelnost testovatelnost
0:01:18a kromě rozšiřitelnost pochopitelně tak dále
0:01:22takže
0:01:23to sou asi tu peníze odrážky a teď bych se dostal k té třetí suše
0:01:28jakási ideologie kultura s tím jazyky souvisejí
0:01:32možná se si všimli že jazyky nejenom programovací obecně jsou velice úzce navázané na kulturu
0:01:38v ip jelikož to je velice mladý obor tak se nám většinou zrodily takzvané ideologické
0:01:45jazyky které vycházejí z nějaké velice
0:01:49strukturované
0:01:50ideologie například funkcionální programování kde se na všechno díváte jako na matematickou funkci a snažíte
0:01:57se veškerý ekosystém přizpůsobit právě tomuto
0:02:00vnímání
0:02:01a ukazuje se že tento přístup není úplně vhodný protože
0:02:08pro programovací jazyk s ty stejně jako běžné jazyky jednoho dne se vymkl kontrole kozlovka
0:02:14a dostanou se do míst kde s ním nikdo nikdy nepočítal a kam se podstatě
0:02:18jen tolik nehodí ale z nějakého důvodu
0:02:20je někdo nucen je tam použít
0:02:22a vtom prostor těchto případech vznikají velké problémy a právě proto vlastně ip se říká
0:02:29že třeba nejhůře benešova tell me obor protože nikdo neví jak přistoupit právě tomdlectom problému
0:02:36a kdy se všechno mění a vlastně to není kompatibilní nefunguje vám to a je
0:02:40to strašně složité
0:02:42takže
0:02:43todlecto je vlastně jazyk ohledně toho dál který se snaží těmto problémům aspoň trochu předcházet
0:02:49snaží se podchytit tyto situace snaží se
0:02:53aha vcítit do těch lidí do jejich potře
0:02:56a nějakým způsobem se s tím vyrovnat dozvíme se o tom dále
0:03:00a
0:03:01jazyk je podstatě pro ty kteří tady naprogramovali případně program umí tak je to podstatě
0:03:06něco
0:03:07kde
0:03:08my se snažíme přenést informaci naších hlavy
0:03:12do počítače a to po pokud možno nějaké strukturované formě aby to bylo zase zpětně
0:03:17námi čitelné a pochopitelné
0:03:19ale zároveň aby to bylo dostatečně formální
0:03:22aby ten počítač přesně věděl co s tím má dělat
0:03:27objevují se programovacích jazycích pochopitelně další něco jako fráze nějak něco jako idiom je prostě
0:03:32nějaký jakoby korektní způsob jak dělat nějakou malou činnost
0:03:37a
0:03:37toto vy vlastně podobnosti s nima běžným jazykem takže to se týká tohodlectoho prvního slajdu
0:03:42který měl
0:03:44říct nějak něco o tom jaký je vztah mezi programovacím jazykem
0:03:48a možným rizikem
0:03:51tak teďka se nepřestanete ip části a začneme se trochu více zabývat
0:03:55je na konkrétním a věci na
0:03:58takže my sme se snažili aby ten jazyk byl velice jasný aby se v něm
0:04:03dalo vyjadřovat velice stručně
0:04:05a konkrétně
0:04:06a aby umožňoval různé typy kontroly
0:04:09pod tou kontrolou si programátor představí jak tom sou flow to znamená nějaké wifi podmínky
0:04:15before a tak dále
0:04:17ale může si po tím představit i nějaké vyšší konstrukce
0:04:21objektové programování
0:04:23modularitu a tak dále
0:04:25a všimli jsme si že
0:04:28na velkou výhodu dnešním světě jazyku tvoří něco jako interfejsy to znamená vás nezajímá co
0:04:35je té černé krabičce ale zajímá vás jak s tou krabičkou vlastně chcete komunikovat a
0:04:40co ji chcete před a za informaci a co si vodní zase chcete vybrat
0:04:45další věc která je dneska
0:04:47pravděpodobně největším problémem software a římě je to souběžný paralelizmus
0:04:53když se podíváte na dnešní jazyk jako mají podporu pro paralelizmus tak se většině programátorů
0:04:58zježí všechny chlupy na těle protože ovládnout pro vezmu si dneska složité a hlavně z
0:05:03důvodu bezpečnosti
0:05:05vy musíte hlídat ohromné množství proměnných ohromné množství prostě různejch tácků který se můžou a
0:05:10nemůžou dělit a tak dále
0:05:13takže todlecto je další z velká z velkých věcí tedy ten to pro tento programovací
0:05:18jazyk dalo chce řešit a řeší
0:05:22dále i přes to všechno co to ne programovací jazyk
0:05:26jasně zvládá nebo nějakým způsobem řeší tak a je tam pořád ten silný asi tak
0:05:31že se musí že sme chtěli tento pro práci jazyk zabudovat řadu nějakého zařízení to
0:05:36znamená ta programovací jazyk musí mít malý
0:05:39případně když není malý tak musí mít jednoduše možné z něho nějakou funkci no to
0:05:43vyhodit
0:05:44představte si například javu které se říká že to jakoby nejrozšířenější jazyk na všech možných
0:05:49je zařízení tak vlastně java opravdu funguje
0:05:52třeba i nějaké sim kartě kterou máte
0:05:55na mobilním telefonu a podobných zařízeních opravdu se to programuje java podstatě tamtý java není
0:06:00ani žádný ty tam že není ani nic tam není nic takového tam vlastně sou
0:06:03jenom třídy
0:06:05no takže dělá se dá použít i to prostředích a my sme se snažili aby
0:06:10možná ne tak extrémních prostředích ale vy i na těch byly systémech jak se nazývají
0:06:14tak by tento jazyk byl velice dobře použitelný
0:06:17no a v neposlední řadě pochopitelně si to musíte užít to programování pro vás to
0:06:22bavilo aby to nebylo jenom jazyk kterej vypadá jak něco ze středověku ale vás to
0:06:26bavilo vás donutilo
0:06:28ne tím přemýšlet a užívat se to programování samotné
0:06:32a pochopitelně k tomu kdo se žení všech to těsto ip uspět a ip cílu
0:06:38tak a ten jazyk musí splňovat hodně kritérií například musí mít perfektní knihovnu připraveno protože
0:06:46podle toho se stalo například pipe no
0:06:49kdy neexistovala knihovna a víte že vpadni dvojce tak dál a byli knihovny nějak navržené
0:06:54a momentálně se pak mu pračce docela hodně předělávali
0:06:57pak no trojce sou zase třeba jeho kdy pěkně navržené a zjistíte že díky skládání
0:07:02a tak dále různým těm
0:07:04klička
0:07:05a spojování tak se třeba voláte stát na nějakej soubor třikrát za sebou úplně zbytečně
0:07:10takže má to své pro a proti takže kvalitní knihovna nějaké utility okolo našem případě
0:07:16té například automatické generování byte dingů existenci knihovny nebereme přepisovat nesmysl vygenerujeme automaticky blendingy další
0:07:24věc kterou třeba většina jazyků nemám vůbec ani to třeba nejde
0:07:28my máme protože my máme nativní podporu pro cc plus další knihovny
0:07:34a krom toho můžeme bylo tydlecty knihovny přímo s
0:07:37ze s prostředí toho jazyka měl takže
0:07:40to na možně docela velkou
0:07:43docela velkou různorodou
0:07:46skupinu činností
0:07:47a nějaké aplikace ještě která nemá mé to bych tady vás rád poprosil kdyby vás
0:07:52to zaujalo tak se určitě podívejte ani se napište máme tam spíš takové ukázky na
0:07:58iphone nějakou jednoduchou před aplikaci grafice a tak dále
0:08:02a
0:08:02nebo webové stránky se sqlite back and a tak dále takže různé věci máme ale
0:08:07sou to spíš že malinkaté věci je nás málo takže
0:08:10není to úplně rozšířené
0:08:13jaké hry komerční systémy nemá vlastně zatím žádné
0:08:16a to je to co bychom chtěli vlastně dosáhnout v budoucnu aby se tento program
0:08:20si jazyk rozšířil komerční sféře takže komerční sféra je přesně to co udržuje aniž se
0:08:26vám to přál znáte to je to se udržet jazyky na životě podívejte strana nebo
0:08:31jestli někdo víte něco málo historii programovací jazyk ergo tak zjistíte
0:08:36že kdysi dávno se používá ten devítce hodně zvláštní formě já tobě jakejsi nástupce céčka
0:08:43potom se začal používat jeho vylepšená variantách operačním systému
0:08:48a
0:08:50tady vycházel stipple ste bandity každopádně tento jazyk se menoval mimo
0:08:55a
0:08:56nyní se ten lindu vlastně přetransformovat někdo v roce dva tisíce šest tak dál tak
0:09:00na tom začal inženýři znova dělat a přetransformovat hladomor i know do moderního světa funguje
0:09:05na všech počítačích a je to poměrně moderní jazyk takže ta jako ukázka toho že
0:09:09penězi do té doby skomíral nebylo ně komerční zájem a proto mě nikdo neviděl přitom
0:09:14to je velice schopný a zajímavé velice pěkný jazyk určitě by bylo dobré se tím
0:09:19zabývat pokud vás jazyky zajímají jako takové takže to je příklad proč vlastně vůbec tady
0:09:24chceme mít i komerční systém
0:09:27tak
0:09:28a nyní teda
0:09:29jak se vlastně přistoupili tvorbě toho jazyk programovací jazyk a dal
0:09:35a pochopitelně
0:09:36a něco vymýšlet na zelené louce problém tak sme se nejdříve podívali na koncepty které
0:09:42se používají ostatních programovacích jazycích zažili jsme se to dělá velice kriticky to znamená že
0:09:48jsme se stali nějaké vlastnosti
0:09:50například paralelní programování ve skále
0:09:54řekli jsme si dobře víme že ve skále když potřebuju napsat právní program je to
0:09:58sice čisté programování a napíšu strašně moc řádků co je tam za problém začali jsme
0:10:02hledat ty všechny matky jednotlivé problémy které s tím nehod čitelnosti přes ukecaná host a
0:10:09škol nějaké třeba i bezpečnostní problémy výkonnostní problémy a tak dále
0:10:14a zkusili jsme se na to podívat je na ano líbí se nám třeba koncert
0:10:18future to znamená že
0:10:20jaká paralelní úloha okamžitě vrátí hodnotu a ta hodnota nám zatím říká ano někde na
0:10:25pozadí se nám něco počítat paralelně a tu hodnotu si můžeš vyznal ve zvednout hash
0:10:30a teď tam nějakým způsobem vyřešeno kdy
0:10:34takže například tento konce a přetransformovat ho tak aby byl pokud možno jednodušší použitelnější rychlejší
0:10:42a vůbec zapadalo celkové konce tutoho jazyka
0:10:45takže takto jsme postupovali dostali sme se přes mnoho různých věcí trenéra příklady které jsou
0:10:50viditelné hlavně pro uživatele jsme se zabývali i tvorbou samotné virtuální mašíny protože jazyk dal
0:10:59je
0:11:00momentálně interpretovaný jezy
0:11:02byly nějaké pokusy a počítá se s tím do budoucna že prej kompilovanými ale zatím
0:11:07na to nemáme čas takže předpokládám třeba horizontu pěti let že se ti někdo začne
0:11:11zabývat ale zatím nemáme takové kapacity
0:11:14takže to co je viditelné pro programátora tak to můžou bejt třeba enumerace můžu tobě
0:11:19dekorátory může to bejt takzvaný defer kdo z vás prosím vás zná co je třeba
0:11:23differs programovacích jazycích tady
0:11:26nikdo
0:11:28tak takže rychle zkusím přiblížit
0:11:31tak to je taková zajímavou vlastnost například verzi jazyka kdo
0:11:36tady označíte nějakou se chci kódu nebo nějakej jako posloupnost nějak nějaký k o že
0:11:41se má provést až na konci nějakého name space nějaké houskou obecně znamená se na
0:11:48konci funkce a vy můžete kdekoliv tý funkci označit jakejkoli kus kódu který se má
0:11:53takhle provést
0:11:55z toho psa abstraktně a dám příklad například budou mít funkci která pracuje se souborem
0:12:00vím že když odevřu soubor že ho potřebuju zavřít busy me garantovaný že ho zavřou
0:12:06ne že je to hodí výjimku nebo že někde něco return ne prostě se vrátí
0:12:10nebo že něco spadne zůstaneme vodevřenej faly světa nemůžu si to dovolit
0:12:14právě z tohoto důvodu hnedka na první řádek napíšu declare klaus ten file for deskriptor
0:12:20to znamená že tu chvíli mě ten default a klauzule rychle garantuje že někde na
0:12:25konci úplně provedení celý ty funkce a když to bude vyskočení ven zeptaj nebo by
0:12:30mi provedení celý funkce rutiny a teda na ten garantuje že se zavolá ten klaus
0:12:35na ten soubor
0:12:37takže tímto způsobem se dají modelovat různé transakční problémy různé
0:12:42podkládání třeba víme chytání výjimek různé další věci halasně to velice elegantní způsob jak se
0:12:49vyhnout například samotnému nějakýmu try switch a tak dále
0:12:54a nakonec třeba jak jsem říkal stesk ale tak tam máme tepen týče
0:13:00tak
0:13:03co se dneska vlastně od jazyku
0:13:04čeká a
0:13:07co se objevuje na to umí
0:13:09já jsem to nazval market
0:13:11a na tom trhu jazyků
0:13:13potřebujete s něčím prorazit
0:13:16tak potřebujete mít něco nového něco co prostě ty ostatní zaujme a jinými slovy vytlačí
0:13:23a momentálně to je
0:13:25jakýsi návrat funkcionální programování možná jste zaregistrovali mnoho jazyků které vznikají nebo aspoň
0:13:31se dal vyvíjí tak se začínají zabývat tím konceptem té piju dnes prostě té čistoty
0:13:37byl asi máte čistou funkci která nemá vedlejší efekty nebude víra soubory
0:13:42nic takového
0:13:45potom dále s tím souvisí tipovací systémy
0:13:47které
0:13:48máme tady takové dvě odvětví nemáme
0:13:51říkám volně typované jazyky
0:13:53a máme velice střelec ale se silně typované jazyky
0:13:58a tydlecty odvětví je problém skloubit každej má něco každé vede k různým problém například
0:14:03volně typované
0:14:04zvyšují výrazným způsobem
0:14:08testovat testování
0:14:10to znamená
0:14:11když vy vlastně
0:14:14netrefíte co se jedná o pět netrefíte
0:14:18přesně
0:14:19tam dané komponenty děje
0:14:21tak přesunete tu responsible titulu
0:14:24a pardon
0:14:43transmisemi
0:14:53hodin
0:14:55tak a přesunete veškerou to nese zodpovědnost
0:14:58ná toho pestrá který chudák prostě musí otestovat a prvním jestli jsou a stejně nikdy
0:15:03nebude mít garantovaný
0:15:04že ten program se bude chovat korektně
0:15:07naopak tady máme ty šílené systém je někteří říkají ta svá sklá pro mě které
0:15:12jsou čistě funkcionální
0:15:14případně naprosto čisté jazyky ve kterých je zase problém udělat změnu pokud se někde provést
0:15:19takové riziko například webové stránky
0:15:21poměrně běžná záležitost dneska
0:15:23tak zjistíte že pro nějakou změnu přidání třeba nějakého tlačítka nebo nějakou malou změnu musíte
0:15:28udělat tom zdrojovém kódu prasklo
0:15:31na deseti různých místech
0:15:33netriviální změny
0:15:35a přesně tahle sem problém
0:15:39ne
0:15:40a přesně tohle sem problém sme se snažili
0:15:43jak vyřešit zamyslet se nad tím co s tím dělat
0:15:45protože my vlastně chceme voboje my chceme aby ten programátor vodevzdával kolovat
0:15:51který je plně korektní pokud možno
0:15:53chceme aby tester neměl tolik co dělá a zároveň chceme aby ten programátor moh napsat
0:15:58rychle protože pokud bude psát maskou tak prostě bude porvali něco někde měnit a bude
0:16:03se těm akorát trápit
0:16:05no řešil jsme to tak
0:16:06je podporuje oba tipovací systém je dál máme volné typování i pevné typování je to
0:16:13čistě z unixové dohromady můžete si vlastně vybrat co bude tipovaným co nebude
0:16:18a
0:16:19tímhle vlastně dáme plno s tou programátor vybrat si pochopitelně
0:16:23to volné typování
0:16:25je pomalejší to znamená protože se kontrolují všechny ty typy přímo pane přímou za běhu
0:16:31aplikace
0:16:32pokud použijete to silné typování
0:16:35zkontroluje se to přímo ještě před kompilací to znamená že to zjistíte hned
0:16:39a
0:16:40ale zase toho napíšete trošku víc takže tohle se naše jakési řešení funguje to velice
0:16:45dobře
0:16:46a
0:16:47krom toho problému že se musí třeba upravovat na mnoha místech kolo případě silně typovaných
0:16:52tak se tam mobil
0:16:57tak já jsem se na
0:16:59tak se tam objevuje ještě
0:17:02další problém
0:17:03a tím je
0:17:06a tímto problémem je a
0:17:11vraťte se k tomu za chvilku momentálně na tady není vhodná chvíle
0:17:14a
0:17:15zmíním ještě rychle něco o
0:17:17nevím je to byly ty
0:17:19a všimli jste si že celá těch funkcionálních jazycích je to jeden ze způsobů jak
0:17:23zaručit právě tu korektnost
0:17:26rád kdo z vás tady používalo něco jako vím je to bylo ta věc prosím
0:17:29vás
0:17:30zvedněte ruku
0:17:32to vše lepší děkuju
0:17:35tak dál
0:17:37víte že tím si vlastně předem garantuje pevně danou hodnotu kterou si někam ukládat se
0:17:42kterou pracujete už nikdy nemůžete změnit
0:17:45a kupodivu se ukazuje že opravdu programátor hodnoty zase tak často nemusí měnit a právě
0:17:53proto kdyby se předem označíte že tuhle hodnotu
0:17:56jedno z middle tý doby už nikdy nebojí nastavíte už nikdy potom ní nebudete měnit
0:18:01tak se ukazuje tenhlecten způsob kontroly je velice výhodný
0:18:09a hle jak jsem řekl
0:18:11tak to vlastně dále klade nároky na to programátor moc se předem zamyslím gui muset
0:18:18měnit nebudu a tak dál
0:18:20a všimli jste si dále ve světě okolo že pochopitelně nám rostou skriptovací jazyky s
0:18:26tohoto důvodu jsme se zaměřili zase na interpretovaný skriptovací jazyk vlastně to jazyk někde mezi
0:18:32skriptování na řekněme systému programováním ať oba což nevím kdo z vás by řekl že
0:18:38to je skriptovací jazyk
0:18:40definice že to má virtuální mašinu pro mě by to asi byl
0:18:43a je poměrně
0:18:45nízkoúrovňový a pravé slovo důvodů bychom asi neradi říkali skriptovací
0:18:51takže
0:18:54na našem případě design dál konkrétně
0:18:57takže virtuální mašina sběr když kolektorem protože se zabýváme tím paralelizmem a dalšíma věcma takže
0:19:02tam bychom si vůbec stručný prací paměť a tak dále
0:19:07neporadili je to orlici
0:19:10tím se má na mysli
0:19:12takže tento jazyk je velice jednoduše rozšířit to znamená dá se vložit do jiného jazyka
0:19:17dá se vložit do jakékoli aplikace policie vše velice malý ten jazyk porovnání třeba s
0:19:22partnerem perla ruby javou a tak dále
0:19:25a zároveň to funguje i naopak to znamená do dalo můžu volit další jazyky může
0:19:31volat na ty mě c plus programy pro ten je dále
0:19:36auto bandy kdy všechno
0:19:38funguje perfektně
0:19:39a jazyk je postavení s tím že by v budoucnu měl byt velice dobře optimalizovatelné
0:19:44ní a to tele i samotnou kompilaci tak je pomocí třeba ti kompilace že sem
0:19:50tam kopa
0:19:51a další rozhodnutí bylo jaké vlastně kódování zvolit zvol jsme u tech osum protože
0:19:59mám dvě výhody za základní jedna věc je velice úsporné
0:20:03to znamená vlastně šetří bejt i
0:20:06a to se nám o ní druhá věc je plně kompatibilní sazky
0:20:09to znamená
0:20:10můžeme to využít na jakékoli string k
0:20:13a máme vyřešeno polívka na jakékoli masky string
0:20:18tak o našem sofistikované typu systému sem mluvil a hlavní věcí a to je k
0:20:25čemu sem se dostal před chvilkou chtěl dostat řekl jsem že probrat později tak to
0:20:29je typová inference znamená odvozování typů
0:20:34a my máme vlastně
0:20:36porovnání s ostatníma jazyka jazyky jeden z nejsilnějších
0:20:40a inferenčních džínů vtom jazyce to znamená
0:20:43moc se snaží velice dobře odhadnout podle toho jak používáte proměnné jaký typ asi používáte
0:20:50a jakmile to odhadne tak o té doby už ho potom ten typni nemůžete
0:20:54a jestli se pracovali perlu tak je to trochu podobný možná pro vás
0:20:59ze zkušenosti
0:21:01a to podaří po poradí si to i se speciální a ty pomatené tady mám
0:21:06jmenované
0:21:07některé z nich
0:21:08ty piny ta je právě ten ty které vlastně
0:21:11a vyhodnocovány přímo tom partaje
0:21:15a nebo třeba python girls co jsou speciální typy ne si přímo na místě kde
0:21:20ty potřebujete specifikovat vyberete něco co ho zastoupí ten ty a to něco toho zástupce
0:21:27po tak použijte někde jinde kódu šéf vlastně slinkujete tyhle tři části kódu a řeknete
0:21:33je na všech třech bude muset být za každou cenu
0:21:36toužit stejný typ je to výhodné například pro makra pro různé template i a tak
0:21:41dál
0:21:42template jsem se smířil a přesuneme se modularitě
0:21:47na jazyk má podporu pro objektové pro programování pro moduly a oddělení různými name space
0:21:54s tak dál
0:21:56a poslední zmínka ještě to dal bude probrána dalším slon slajdu
0:22:01tak je konce oflo
0:22:03a k tomu takovou malou poznámku
0:22:05a že se k tomu dají psát speciální makra
0:22:09a makra v jiném smyslu než schumachera která přímo jako generují ten jazyk ale která
0:22:13spíš pozmění u jí syntaxi jazyka a sice píšou se pdfka notaci o kus nahoru
0:22:20ve formě
0:22:21a tím se stávají velice dobře čitelný například měli sme tam teďka nějaký ruskej s
0:22:26jednoduchý nějaký vyvolá čtyři chtěl
0:22:30automatické aplikovat
0:22:32na některé jeho funkce případně
0:22:35metody
0:22:37já chtěl aplikovat
0:22:38nějaký dekorátor
0:22:40a měl ten deklarátor vždycky spojení se jménem té funkce
0:22:44a tomto případě to nechtěl pokaždé vypisovat dekorátor funkci a po to zavolání toho té
0:22:49funkce s dekoratérem
0:22:51a tom případě použil makro a měl to prostě jako kdyby se zadefinovat speciální funkci
0:22:56a měl to velice hezky to vypadalo fungovalo to nám naprosto bezproblémově takže takové jednoduché
0:23:01věci to makro byl schopnej napsat za dvě tři minuty a ulehčil motorový množství práce
0:23:07a je to plně kompatibilní
0:23:11moduly různé typy modulů podporujeme pochopitelně samotné meze central jak jsem říkal cc plus já
0:23:18se propojit s čímkoli protože dneska když se podíváte tak má téměř všechno nějaké propojení
0:23:23na cc plus a pokud si budete hrát pokus kontra má tak prostě docílit do
0:23:28toho cíle které pro potřebujete
0:23:31a pravor function
0:23:35to asi víte co je kousek šest to je zajímavá věc kdo z vás tady
0:23:39program ale někdy v ruby například
0:23:42super
0:23:43aspoň jeden
0:23:45tak já du bist netuší co sou to něco jako konce všem s protože v
0:23:48ruby je a taková hezká věc si můžete
0:23:52vlastně volat nějakou sekvenci nějaký k o
0:23:55a přímo na místě
0:23:58přímo na místě kde ten kód byste chtěli položit
0:24:01ale může toho volat takle ty repetitive ně
0:24:05no a vlasně my jsme řešili to nastane problém
0:24:08takže jsme zavedli speciální typ rutiny kecání ty funkce
0:24:12kterou se nazývá na kousek šel
0:24:15a ale konce června může předávat do té sekce ve které jako další proměnné ne
0:24:20jenom přes hlavičkou a na proměnné které jsou vlastně vyhodnocují přímo té sekci
0:24:26a v ruby se to zapisuje tuším nějakými zatím si myslíte něco takového jestli se
0:24:32dobře pamatuji
0:24:34a
0:24:34todlecto je velice užitečná věc protože například pomocí tohoto konceptu ukážeme si později
0:24:39máme implementovaný ten defer
0:24:42to odkládání volání nějakejch těch sekcí kódu např na konci rutiny
0:24:47a další užitečné věci potřeba různé funkcionální pojetí práce se seznamy
0:24:55se mapami a tak dále
0:24:57takže můžete přát zavolá sort a přímo do té kousek čem po té sekce kódu
0:25:02dát akorát x je větší než ypsilon
0:25:04a on se to nula pro každý ten
0:25:07dvojici sou seznamu podle algoritmu řadí cíl a porovnávat přesně podle toho co vrací vlastně
0:25:12zase chce takže takové různé věci se s tím bejt dělat hezky se s tím
0:25:17dá vyhrát
0:25:18podpora tříd třídní systém podpora interfejsu máme speciální dva typy
0:25:23a to vám asi myslím radši na příkladech které má na konci protože to není
0:25:28úplně nechám na pochopení
0:25:30a mixy my podporujeme
0:25:33a pomalované typy
0:25:35to se hodí například pro ty node ulice plus kód pro mě vlastně ten typ
0:25:39si něčem obalíte aby to bylo čistě kompatibilní s tím dal spekulacím systémem
0:25:45je nedá nebo s to je ta implementace táhněte byly ty
0:25:49jak jsem o tom mluvil kasty další věc také se někomu ještě z ježí chlupy
0:25:55když si představím jak se kastu je tady přetypována řekněme
0:26:00a řádce plus
0:26:02tak my máme poměrně jednoduchý ne
0:26:06systém jak toho docílit ta se cena implementujete metodu která vrací daný ty pokud nejen
0:26:11talentem tam metrů kerá vracím tý že tak prostě budete moct napsat okamžitě přetypovat danou
0:26:18hodnotu na ten integer zavolá se metoda a ta něco vrátí
0:26:23takže tímto spíš se to způsobený mám implementovaný krásným je to velice užitečná věc například
0:26:28když pracujete s různými jednoduchými typy potřete dost často před i po mezi finta s
0:26:33těmi dvěma směry potřebujete mezi časem zase pošlete převážně čas do interní a formátu
0:26:40a do nějakého lidsky čitelného formátu a tak dál takže byli se užitečná věc
0:26:45pan nepotřebuje to vlastně vůbec žádné zásah ze strany programátora
0:26:50a já jsem tady snad vyplynulo zhruba sto sem říkal tak dál
0:26:56na interně
0:26:58implementováno podporu pro vyjímky tímto způsobem se řeší veškeré neřešitelné situace když třeba se něco
0:27:06porouchá jako vevnitř
0:27:10ne ani tak dál ale třeba po otevírání souborů při nějaké práci po síti prostě
0:27:16vytáhnout ve spojení a podobně takže to se řeší přes výjimky se kterými se dá
0:27:21perfektně zacházet díky tomu dyž prachy tání možná ne to si neukážeme protože to příliš
0:27:27a potom
0:27:29konečně ten paralelizmus
0:27:31tak máme takový zavedený nový operátor tvůj vykřičník
0:27:36o vykřičník za sebou
0:27:38který dělá jednoduchou věc že spustí danou skupinu
0:27:40v dalším vlákně
0:27:43takže když to pustí tak cyklu jak se tam že to pustit řád deset tisíc
0:27:45vláken a všechno zpracovala pro ně deseti tisíc krát a ta vlákna si můžu spustit
0:27:50další vlákna a tato vlákna jsou namapovaná dycky na vlákna přímo do tom systému ve
0:27:56kterém to běží používám být retz takže to multiplatformními že to všude
0:28:00a je to velice rychle předáme si pomocí
0:28:03různých metod ale nejraději má metadatech tím že hodnoty to znamená by to mělo ten
0:28:08funkcionální tvar
0:28:09je to prostě vrátí hodnotu a toho případně tam mám zabudovanou podporu pro černou to
0:28:16je zase zbylo
0:28:17jestli ste někdo poslouchal aspoň někdy nebo slyšel ten konce
0:28:21takže se vlastně kanálem dají posílat
0:28:24a naprosto kdes použití nějakých explicitních synchronizačních nech mechanismu tak si může to posílat hodnoty
0:28:31mezi vlákny úplně mezi sebou ústně stačí před a ten samý kanál pokud dva dvě
0:28:36vlákna nebo dvě funkce dvě metody vyvolání ty instance budou mít ten samý kanál tak
0:28:42můžu přes ten kanál komunikovat
0:28:45tak to nešel jsou těch u těch příkladu ten jazyk má trošku céčkovou neboce plus
0:28:51plusku syntaxi
0:28:52a tady obligátní halo kterým by si měl napsat jako a jo white lajn holt
0:28:59ale dá se za copy zjednodušeně protože interpret to jako takový vrací defaultní stavu poslední
0:29:06vykonanou poslední hodnotu kterou dostal to zas poslední instrukce takže se dá zapsat jen s
0:29:12krásnější formě
0:29:14tak
0:29:15trošku zajímavější možná ukázka je pracovat s prostředím vnějším
0:29:21a
0:29:23určitě znáte koncept mi není třeba vysvětlovat tři tečky znamená jakýkoliv počet a jakýchkoliv parametrů
0:29:29takže předáme celému programu extern a teďka dalo
0:29:33předáme nějaké parametry a ony vypíše pokud žádné tak vypíše prostě prázdný ta o
0:29:39tak to je intuice a je to zase jeden se zabudovaných typů stejně jako na
0:29:44i seznamy a tak dále ste linky a podobně
0:29:48takže je to použitelné velice jednoduše
0:29:52jo návratu hodnotu stav jde to
0:29:55tak z dostaneme se konečně to paralelizmu
0:29:59a
0:30:00paralelizmus se tady neimplementované je příklad pomocí funkce vrece
0:30:05a používáme klíčové slovo ty protože ve skutečnosti se může jednat nečisté funkce a my
0:30:12sme se mu začátku byl jsem se chtěj co nejvíce přiblížit o intuitivním chápání jazyků
0:30:17takže některé věci jsou zde pojmenovány jinak míša lezete dalších jazycích když dělají velice podobnou
0:30:24nebo někdy stejnou věc
0:30:25protože
0:30:26function vy řeknete matematikovi
0:30:29tak pro očekávat čistou funkci
0:30:31a holá díky tomu že si tady můžeme takle posílat někde něco vám a mít
0:30:36ve ty vedlejší efekty něco napsat na obrazovku a podobně
0:30:39tak to radši ani nazýváme rutinou
0:30:43a
0:30:44vidíte tam ten vlastně ten kanál té ty
0:30:48je to není ste jsou té
0:30:53taková zajímavost mezi není space a nějakým klíčovým slovem
0:30:59a můžeme psát volitelně dvojtečku zdvojenou dvojtečku a nebo jenom jednoduchou tečku
0:31:05ale je to jediný případ kde je tam
0:31:08tadlecta volba je ne ve všech ostatních případech vtom jazyce všechno napevno dál a nemůžete
0:31:13si vymýšlet
0:31:15a
0:31:16takže co tam já jsem to udělala
0:31:19co šíření roznásobím udělat
0:31:21taková otázka do pléna řekl jsem tady něco málo o konceptu differ a řekl jsem
0:31:26tady něco málo kanálech řekl jsem tady něco
0:31:30o posílání a deklaraci a o cyklech podstatě se nám řekl téměř všechno co je
0:31:36potřebné pro tento příklad pro pochopení zkusil by to někdo rozšifrovat prosím vás zvedněte ruku
0:31:41nebo to na mě rovnou vykřikne
0:31:44pan tady dyž taky odměnu pro vás takže vás můžu i materiálně
0:31:49motivovat
0:31:50že prej získáte dva citní procentní slevu na nějaký z nich produktu či služeb nevím
0:31:55přesně jaký ale to se dozvíte po přednášce tady pravděpodobně
0:31:59takže
0:32:01někdo
0:32:04nevadí zatím si to necháme stranou
0:32:07nám
0:32:08jednoduchým způsobem declare sítě
0:32:11nula znamená že se předá že se zavírá kanál to znamená ten kanál pošle jako
0:32:16by poslední zprávu to bude na
0:32:18řekne tím ano zavírám se
0:32:20a ve fort cyklu po tím se vlastně vygeneruju ty kanály
0:32:24a dokáže jsi něco uložíme a pak zavolám paralelně to abecedu ty no s těma
0:32:29parametrová s tím kanálem a s nějakým tím číslem abych měl nějakou informaci kterou si
0:32:34budu potom vyčítat jak vypadá výsledek tak vypadá právě takhle
0:32:38vyčítám hodnoty takže si nějaký nekonečném cyklu všimněte si máme tam povinností o hodnoty jako
0:32:44true a false sou přímo implementovány v jazyce takže se dají krásně použít
0:32:50tak v nekonečném cyklu se já dívám
0:32:52já ten kanál
0:32:54a pokud ten kanál push něco zpracovává protože ten kanál běží paralelně
0:32:58tak o tom král pokud něco pracoval tak status něho níže vrátí že finished a
0:33:03pokud je finished tak můžu zavři
0:33:06ten cyklus protože ten finished status se objeví vtom kanálu případě jsem si poslal to
0:33:12že sem uzavřel tou nulou to kapacity je to cena byla zkratka pro tebe se
0:33:16ty
0:33:17a pokud ne
0:33:19tak si píšu tu hodnotu sto kanál
0:33:22a
0:33:23to xml ju je bloko bylo neblokující ale tu
0:33:28tomto případě to vždycky vrátí hodnotu protože se jedná o primitivní ty in takže není
0:33:33s tím žádný problém
0:33:35takže vidíte že to ví co vlastně všechny ty čtyři čísla které jsem se tady
0:33:41které jsem si tady tom for cyklu vlastně vod nuly do té trojky
0:33:45poslal
0:33:46a všechny sem dostal jsem tak informaci o tom že se všechny ty kanál zavřeli
0:33:52tak
0:33:53další příklad trošku složitější
0:33:55přesuneme se k těm rozhraním která jsem říkala že máme byly může máme dvou typu
0:34:00tady vám ukazuji
0:34:02právě a oba typy
0:34:05a nejprve si na definuje běžné rozhraní
0:34:08interfejs na z muselo bejt imax
0:34:11a mladejch je z new si
0:34:13tom rozhraní pouze rutinu aby byl která má nějaké parametry mají nějaké tipy
0:34:19abych explicitně si ho hlídal co tam teda předávám
0:34:23a má něco vracet
0:34:26ta vlasta rutina podstatě interfejs nic jinýho neříká to je ta komunikace dovnitř
0:34:32a potom
0:34:33a vím že to modulu time
0:34:36existuje ty date time
0:34:39a já si ho chci právě
0:34:40nějakým způsobem pozměnit tenhleten ty
0:34:43a udělám to jednoduše tak
0:34:45že tenhleten interfejs aplikuju
0:34:48na tento ty
0:34:50a teďka možnost jsou vlastně dvě možnosti buď se vytvoří bicí tak interfejs a použiju
0:34:56jako
0:34:58jenom jako interfejs to znamená jenom chci říct že někam budu předávat něco
0:35:03co má metodu a debil
0:35:05a nebo z něj udělal takzvaný konkrétní interfejs se všeta novinka
0:35:11kterou tady máme čímž po změním ten původní ty
0:35:16na vždycky o změním ten původní ty ale vlastně jeho koupi přesně řečeno pozmění jeho
0:35:22koupi
0:35:23a konci dál bude chovat podle toho co bylo nadefinované to interfejs
0:35:27interfejs konkrétní
0:35:29se definuje nejen vektorové definuje pomocí té na praze for to znamená interfejs ty ten
0:35:37název toho existují jsou interfejsu pro a teďka nějakej ten typ kterej taky musí existovat
0:35:44a pak se tam objeví celá definice toho co vlastně ten interfejs má dělat
0:35:48a co to tady dělá tak je
0:35:51že to přidá sama k sobě tak to přidá to co předám parametry
0:35:56a vrátí to samo sebe
0:35:57čím jsem se vlastně momentálně změnil dá se říct a chování té metody a debil
0:36:04protože metoda a debil v případě typu date time
0:36:10nevrací nic vrací nám
0:36:13to znamená já jsem si to vlastně jo takže vrátí sebe
0:36:16to je jediný co dělá a do cíl jsem to těm že sem se nadefinoval
0:36:19vlastně interfejs
0:36:21prima vlastně dá se říct shodnou uplně shodnou a deklaraci
0:36:25a
0:36:26potom jsem si nadefinoval co která má vlastně ten interfejs pro ten tým dělat
0:36:29použití vypadá
0:36:31například následovně trošku sem to tam ze složitě ale ještě abych ukázalo že máme takové
0:36:36mach rovinky jako třeba nepoznala modulu který jednodušším způsobem může přímo vypisovat ten děj hlídá
0:36:43za vás vlastně veškerou korektnost těch pinů a tak dále
0:36:46aby si do přímo do kódu v dalo korektním kódů můžete zkontrolovat krom prohánět typově
0:36:52zapsat celé je to malá
0:36:55se vším všudy
0:36:56takže když to přeskočit a podíváte se mašina toho co vlastně se má objevit tom
0:37:01aha jedna nadpisu cože obsah máj jejíž pět a něco tak vidíte krásný přetypování na
0:37:08string takže výsledek toho c právo tak bude vždycky s tady plus je tomhle případě
0:37:12přetížený operátor který připojuje string k tomu předchozímu stringu
0:37:16a přetypovávat si něco co vrací metoda null z modulu tá jen to vrací aktuální
0:37:23čas konkrétní před pusy nedej tam x přidám k ní něco tady přidávám tři roky
0:37:30a tydlecty tři roky ten celej výsledek tak úplně novej novou hodnotu vlastně
0:37:35tak si přetypovaná string a nějaký vyšel přetypování na string to tady vypisuje hezkém uživatel
0:37:42lidsky čitelného formátu tady se můžete podívat jak vypadá výsledek mi podle toho to mel
0:37:47moduly generoval pěkného to mela
0:37:49a do toho nevložil ten malej patch a teď ten
0:37:52celý čas se vším všudy
0:37:54nám
0:37:56taková poznámka tento čas je podle erekce
0:37:59a všimněte si že na desetinná místa
0:38:03prováděli jsme že bude nejlepší v reprezentovat těma a začít s čísly s plovoucí desetinnou
0:38:10čárkou
0:38:11protože v budoucnu jak se nám rozšiřují ty hardwerove architektury dala tak to bude nejlepší
0:38:17formát na reprezentaci času má prostě největší rozpětí a přesnost je dostatečná
0:38:24a reprezentovat to integer bylo pro nás velice nevýhodné minimálně natřel těch empiric systémech kde
0:38:30mám jenom třiceti dvou bitové instrukce s indií ženy
0:38:34a
0:38:35práce to že bychom potřebovali minimálně šedesát čtyři bitů na to jak práci by byla
0:38:39pomalá a nevýhodná
0:38:40takže proto to reprezentujeme takhle a zjistil jsem že práci s těma floating point číslama
0:38:45a není zas tak pomalá takže v důsledku se nám to opravdu vyplatí
0:38:51tak
0:38:52todlecto nula si těch ohledně těch příkladů měl bych tady pochopitelně mnohem detailnějšího to můžeme
0:38:58probrat potom diskuzi koukám že za chvíli už bych měl pomalu končit
0:39:02eště vám
0:39:03no takže tady mám jenom řekl teďka zhruba a něco o tom projektu samotném ten
0:39:09projekt funguje zhruba od roku dva tisíce šest takže to opravdu dlouhá doba ten projekt
0:39:15není nestabilní projekce pořád vyvíjí pracoval na tom šest hlavních vývojářů a sedum řekněme takových
0:39:22vedlejší kteří
0:39:24doplnili nějaké moduly nebo něco takže to stále poměrně malý projekt a máme tam podprojekty
0:39:31které se zabývají především těmi moduly zajímavost je třeba máma module končit prostě akorát na
0:39:37načtete modul a najednou vám všechno jede přes ten ta prostě tom kole se to
0:39:41paměti a jede vám to rychle
0:39:44grafické modulu pro přide grafiku tam máme ten například používá náš hlavní vyvolá ste ho
0:39:50používá na svém jako iphony si proto programátory což si myslím že je velice zajímavé
0:39:55naneštěstí nemam ukázku
0:39:57nemám ani iphone
0:40:00a skrýval pro ty kteří dělají web a řeknu tak to roste úplnej základ takže
0:40:04máme tam nějak jednoduchej modul pro hezky velkej podporuje s téměř celé celý snad se
0:40:10nebo celej standard hezký well
0:40:13devadesát s úmyslem
0:40:15a z ní jel
0:40:17a znáte asi zase grafika celníci je právě ta zajímavost kdy díky tomuto modulu vy
0:40:24můžete nečte se simonu pak si označíte nějakej is trying se chce že se že
0:40:29se týká zdrojový kód v nějakém daném jazyce a z toho daného jazyka
0:40:35se potom vytvoří ste sekce pomocí dat chtěl jazyka se vytvoří spustitelná část programovat a
0:40:41se vloží přímo dodal a tím způsobem se dají volat externí rutiny
0:40:46to celníci chci jet můžete procent plus takže je to způsobem můžete vložit přímo do
0:40:51kódu dal nějakej c plus plusku jako a pomocí tohoto modulu prostě genů spoustě a
0:40:55všechno se vyřeší na pozadí
0:40:57za vás
0:40:58a studio máme tam nějaké jednoduchý programovací prostředí pro to dal ve skutečnosti to ale
0:41:04není moc potřeba spíše to jenom takový jako pro ty lidi kteří opravdu potřebují programovací
0:41:09prostředí se vším všudy s divadlem a tak dále pak to máme také
0:41:13a mnoho dalších modulech sem tady zmínil ta vymejšlí jenom máme tam procesy systémový máme
0:41:19tam
0:41:21kupu dalších prostě vopravdu jich je docela hodně několik desítek takže stanislaviny vyjmenuju
0:41:27no a jenom taková zajímavost nakonec ta virtuální mašina referenční protože my víme paralelně referenční
0:41:33virtuální mašinu to znamená
0:41:35přímo ten program
0:41:37a zároveň vidím jaký jazyk
0:41:39co jsou dvě udělaný věci ideologické jazyky většinou vyvinuli jenom ten jazyk samotný a pak
0:41:45se nedívali tolik ani na to implementaci a nebo naopak jsou jazyky kde se dívají
0:41:49pouze na implementaci jako je asembler třeba jako takže otázka při přívětivost a ideologie a
0:41:55tak dále zatím může trošku slabší
0:41:58no a abys to snažíme skloubit proto paralelně vyvíjíme jak jazyk taky to virtuální mašinu
0:42:03a zjišťujeme zpětně že todle špatně implementovatelný že to bude pomalý nebo nějakým způsobem se
0:42:08to nehodí
0:42:08tak to s tou jazyka buď vyhodíme nebo se to snažíme nějak po změny pokud
0:42:12to je opravdu
0:42:13byly obou pokud nějaký přínosný koncept
0:42:16no a naopak
0:42:18takže ta naše virtuální mašina momentálně podporuje celej ten jazyk kterej momentálně mám nějaký verzi
0:42:23a na ten ta samotná binárka přímo tak má jenom devět tisíc bajtů takže devět
0:42:29kilo
0:42:30a knihovna dalo
0:42:31to znamená bez modulů a samotná knihovna dál a nula celá devět megabajtů takže je
0:42:36to opravdu maličkatý jazyk který je použitelný téměř všude je to napsané či stránce devadesát
0:42:41devět
0:42:42a tím pádem je to velice rychlé pro na ní třás a jak onen tak
0:42:46je to minimálně dva a půl krát rychlejší při běžných operacích takže s to sem
0:42:51se může docela dobrý úspěch na to že to dělá jenom pár lidí