DAVID Malan: Vítejte zpět, všichni. Takže včera, budete připomenout, že jsme se zaměřili na těchto tématech zde. Takže jsme měli čtyři zastřešující topics-- soukromí, bezpečnost a společnost; Internetové technologie; cloud computing; a nakonec, vývoj webových aplikací. Řekl někdo mít šířka pásma nebo doba se dívat trochu Johna Oliver minulou noc? Je to vlastně docela zábavné, ne-li trochu děsivé. Jakékoliv dotazy na cokoliv jsme dělali včera? Nějaké vysvětlení? Jakékoliv dotazy, které chcete, aby se jisti, že se dotýkáme dnes v nějaké formě? Tak čistý štít. Takže to, co je na programu dnes? Tak jsem si myslel bychom dnes začíná s pohledem na to, co je všeobecně známý jako výpočetní thinking-- na Riziko zjednodušují, myšlení jako počítač, možná přemýšlet jako inženýr, a snaží se začít organizovat své myšlenky nebo aby vám lepší pocit co se podílí na skutečnosti velící počítačový něco udělat prostřednictvím programování. A my ho budeme držet při docela na vysoké úrovni, do značné míry anglicky, ale zkuste použít povědomě příklady, jak formalizovat bys jít o řešení problémů. A budeme znovu nějaký CS tématy, jako je abstrakce, který přišel pár časů včera, algoritmy a potom reprezentace. A to je místo, kde začneme dnes za chvíli. Pak jsme se podíváme na programování. My se podíváme na některé základní pojmy se kterou by mohla být obeznámeni a možná dokonce najít poměrně intuitivní. Podíváme se, ve skutečnosti, při programování vzorku Prostředí, které je velmi dobře přístupný, velmi hravý, a opravdu cílené pro děti od 12 a nahoru. Budeme strávit pár minut tam a pak vzít věci do nižší úrovně a vlastně mluvit o některých algoritmy a datové struktury, tak říkajíc, že programátoři obvykle používají řešit problémy daleko více efektivněji, než si možná být schopni dělat bez nich úplně. Pak po obědě, budeme se podívat v technologických komíny, což je právě ozdobný způsob, jak říkat kolekce technologií že byste mohli použít k vyřešit nějaký problém. A budeme mluvit o abecedě polévka z jazyků, které existují today-- Java a Python a C ++ a PHP a Ruby a všechny druhy dalších věcí. Budeme se krátce vzhled v návrhových vzorů. Programátoři, v průběhu času, přijaly metodik které mají tendenci, aby jim pomohla řešit problémy snadněji. Když začnete vidět sám sebe psaní stejný druh kódu znovu a znovu, lidé formálně ty opakování Názvy a připisují jim a pak je používat a podporovat je v konečném důsledku. A budeme mluvit trochu o mobilních strategiích, jako to, co to znamená ve skutečnosti aby mobilní aplikaci nebo mobilní webové stránky. Děláte to pro Android? Děláte to pro iOS? Děláte to pro oba z nich? A jaké jsou kompromisy? A pak konečně, vezmeme webové programování vzhled, který je souhrnný termín Opravdu popisující kdykoliv budete psát software, který je chtěl běžet na webu, ať už na telefonech nebo stolní počítače nebo notebooky. Vezmeme krátký pohled na databází a design v něm, i kdyby jen proto, že téměř jakýkoli Zajímavý webová aplikace v těchto dnech má nějaký druh databáze. V opačném případě by to prostě být statický obsah. A databáze umožňuje provádět změny v průběhu času, ať už sami nebo od uživatelů. A budeme uvažovat, jak jste by jít o navrhování že databáze a druh žargonu které by mohly přijít v inženýr je diskuse na bílou tabuli když ve skutečnosti se provádí app poprvé. Budeme se krátce mluvit o API, užitečné služby které můžete použít k postavit na ramena druhých, ať už společnosti nebo jednotlivci, a vyřešit váš vlastní problémy rychleji. A pak budeme fušovat možná trochu s JavaScriptem, programovací jazyk, který se používá Oba v prohlížečů v těchto dnech, ale také v serverech. A možná, zmíníme znovu, čas dovolí, některé hands-on web, co jsme včera a integrovat dva dohromady, než jsme odložit. Takže s že-- co je ahead-- je tam něco chybí, že vás by rád, aby se ujistil vložíme a dotknout se v určitém okamžiku. Pokud je to napadne, vychovat to netrvalo dlouho. Ale proč ne začneme s podívejte se na výpočetní myšlení. A dovolte mi navrhnout, aby výpočetní myšlení je, opět, druh popisu vysoké úrovni co je to počítačový odborník mohl udělat. A skutečně, začněme se třemi složkami, které Mohou jít až do výpočetní myšlení. To je jen jeden způsob, jak popisovat to. Mohli bychom jistě definovat to v mnoha různými způsoby. Ale dovolte mi navrhnout, V zájmu dnes, že problémy světa, všechny problémy světa, Při osloven počítačový odborník mohl být považována za co budeme volání vstupy, které je třeba, aby se přivádí do toho, co budeme nazývat algoritmy, které pak výtěžností výstupy. Jinými slovy, celá Svět řešení problémů Tvrdím může být použita destilovaná do Tyto tři složky. Tak co mám na mysli vstupy? Vstupy je právě to, co jste podal za účelem vyřešení. Například, tady je škola problém starý. Mám-li telefonní seznam zde a Chci vypadat do toho, toto je můj vstup. Mám 1000 nebo tak nějak Stránky v telefonním seznamu. Toto je vstup do mého problému. A já chci najít něco Jako Mike Smith, takže přítele jejíž jméno a číslo doufejme, že v tomto adresáři. To je před dny buňky telefony, takže nemohu jen hledat to. Takže musím udělat to starý školu a vlastně hledání Tyto vstupy pro nějakou odpověď. A to se právě chystá odpověď být nazýván výstup. Takže vstup je telefonní seznam. Algoritmus je taková, jakou sadu kroky, které jsem použít k nalezení Mike Smith. A výstup je, doufejme, Telefonní číslo Mika Smithe. A to by pak byla jen Zástupce většiny jakéhokoliv problému aby si s sebou rukou vstupy a chtějí vyrábět výstupy. Takže než budeme uvažovat o proces podle kterého můžeme tento problém vyřešit, nálezu Mike Smith a něco takového, uvažujme první a že last-- vstupy a výstupy. Fyzicky, samozřejmě, vstupní zde Je celá řada papíru slepeny ve formě telefonního seznamu. Ale počítače, z course-- notebooků a stolní počítače a dokonce i telefony Tyto days-- to jsou elektronická zařízení. A na konci dne, co je jediný vstup do počítače? No, je to něco jako Tento napájecí kabel zde. I zapojit ho do zdi, a Získám tok elektronů, který mi umožňuje spuštění stroje. Nebo možná ty elektrony vytvořené prostřednictvím své baterie. Ale na konci dne, to je jediná věc, jít do mého notebooku. A ještě mnohem zajímavější látka je v konečném důsledku coming out, ať už prostřednictvím tiskárny nebo na obrazovce nebo audially nebo podobně. Takže pokud všichni máme jako naše Základní vstup do počítače je elektřina, tak jen elektrony dovnitř a ven, nebo, a tak jak můžeme použít tento vstup skutečně reprezentovat informace? Jinými slovy, jak se dostaneme z jednoduchého proudu elektřiny zastupování skutečné čísel nebo skutečné písmena nebo skutečné snímky na obrazovce nebo skutečných filmy nebo e-maily nebo libovolný počet z nich vyšší úrovně, koncepty chcete-li, že u konec dne nějak musí být uloženy v této elektronické mechanické zařízení s použitím pouze ty jednoduché ingredients-- elektrony dovnitř a ven? Takže se zdá, že, V nejjednodušší formě, jediný druh stavů Mám v mém světě, a proto na speak-- podmínky v mém world-- je buď Mám elektrony proudí elektřina tekoucí, nebo já ne-- tak dále, pryč. A pojďme formalizovat zapínat a vypínat, jako počítačový odborník může, jen s 1 a 0. Řekněme popsat některé svévolný ale konzistentní číslo k němu. 1 znamená, že na, 0 znamená vypnuto. Nebo můžete také prohlížet si toto jako pravými prostředky na a falešné prostředky. Dalo by se také udělat černý a bílé nebo červené a modré. Potřebujete k tomu jen dva popisovače. A počítač vědci Obecně stačí použít 0 a 1. Takže pokud je to ten případ, můj jediný abeceda se skládá z 0 a 1 je, jak bych mohl dostat do sudého počtu 2 v počítači, natož číslo 3 nebo písmeno abecedy nebo obraz nebo film? Jak můžeme nějak bootstrap Sami od tohoto základního principu z 0 a 1 je a ve skutečnosti představují něco zajímavého? Dobře, pojďme dát na tuto otázku přidržen na chvilku a zvážit něco snad známé, i když jste nepřemýšlela o že v každém detailu pro 10, 20, 30, 40, 50 více let. Tohle je co? Jak byste vyslovit, že? Není to chyták. Číslo, ale co je to? 1, 2, 3 nebo 123. A já se líbilo, jak jste řekl: 1, 2, 3, protože to je jeden způsob, jak ho vidíte. 1, 2, 3, to je sekvence ze tří symbolů. Je to obrázky, které jsme Nyní mají slova pro. A pokud jste tak nějak si je všechny spolu, typické lidské anglicky by se říci 123. A to je něco jako Vyšší úroveň koncept, cítí jako poměrně velkým počtem. Ale jak se tam dostaneme? No, může to být nějaká doba, kdy jste si myslel o tom takhle, ale zpátky v mém den, já druh naučil toto jako sloupci 1 je, že 10 je sloup a sloup 100 je. Tak, jak říká Lakisa, že je 1, 2, 3, ale je to také 123. Ale jak se dostaneme z bývalý druhé? No, měli byste zpravidla dělat v Sloupec 100 je, že mám 1. Takže to je jako říkat 100krát 1. A pak ve sloupci 10 je, mám 2. Takže to je jako říkat 10x 2. Ve sloupci 1 je, mám 3. Takže to je jako říkat 1 krát 3. A pokud přidám tyto věci společně, to samozřejmě, je 100 plus 10 a 3. A oh, to je důvod, proč jsem si to Vyšší úroveň Pojem 123. Je to jen základní matematika, přičemž tito symboly mají závaží na ně, pokud vás bude zástupného nebo sloupec hodnoty. A jednou jsem znásobit vše out, mám toto číslo. Tak, jak mnozí z vás vědí, jak mluvit binary-- 0 je a 1's-- jako počítač? OK, perfektní, nikdo, nebo nikdo z vás si myslí, vy. Ale já bych vám tvrdit, ve skutečnosti to vědí už. Jen musíme nějak vyladit naše mentální model, trochu. Ale proces je stejný. Dovolte mi, abych tohle odejít tam nahoru a Místo toho tahat toto dole na chvíli. Ve světě počítačů, máme jen 0 a 1 je. A tak to, co je změní se co? No, v mém lidském světě, desítková soustava, prosinec význam 10, Mám kolik číslic mám k dispozici? 10, že jo? 0 až 9, samozřejmě. A to je důvod, proč máme 10 má místo a 100 jeho místo. Je-li, že přichází? No, to je 10 k síle 0. To je o 10 k výkonu 1, 10 o síle 2, a tak dále. Prostě držet násobí sloupce o 10, rozjíždění jen s 1 v pravém ho zde. Takže ve světě počítačů, pouze v případě, mají binary-- bi význam 2-- nebo 0 a 1 je, my jen Opravdu je třeba změnit základ tohoto matematiky. Takže jinými slovy, teď prostě budeme mají sloupci 1 a the-- je-li to going-- sloupci 2 je, The 4 sloup, a možná i mimo ni. Proč tomu tak je? No, to je 2 do 0-tého výkonu. To je 2 1. To je 2 do 2, a tak dále. Takže zatímco tady máme 1, 10 je, 100 ze 1000, je, 10.000 je, 100.000 je, 1 milióny, a tak dále, zde máme 1, 2, 4, 8, 16, 32, 64. Prostě držet vynásobením 2, místo toho držet vynásobením 10. Takže teď, když cíl na ruka je zastupovat Čísla používající pouze 0 a 1 je, uvažujme, jak se tam dostat. To je samozřejmě, je vzor 0 0 0, ale jaké číslo koncepčně to představuje? No, 4x 0 plus 2 krát 0 Plus 1 krát 0, dodejme ty dohromady. 4 krát 0 je, samozřejmě, 0, a 2 krát 0 je, samozřejmě, 0 a 1 krát 0 je, samozřejmě, 0. Takže ach, to představuje Číslo my lidé znají jako 0 ° C. No, pojďme velmi Rychle rychle vpřed. Pokud jsem místo nezastupuje 0 0 0, ale pojďme udělat 1 0 1, to by mohlo být, jak Lakisa, dříve, by jen vyslovit to 1 0 1. Ale teď, jak jsme si ji na vyšší vyrovnat počet my lidé mohli znát? Takže to, co je toto číslo? Je to 5, počet známe jako 5. No, proč tomu tak je? No, můžeme opravdu jakýsi projít přes to metodicky 4x 1, 2 x 0, 1 krát 1. Přidat ty dohromady, takže To je 4 a 0 a 1. A to je skutečně 5. Tak už to začíná být nyní poněkud zdlouhavý dělat aritmetiku znovu a znovu. Ale proces je stejný. Jediná věc, která má změnilo v našem světě je, že naše sloupce 1, 2, 4, 8, 16, a tak dále, namísto 1, 10, 100, 1000. A to je jen proto, že naše abeceda má zmenšil od 0 do 9. jen 0-1. Tak jako malý kvíz zde, by jak Jste představitelem číslo 7 v binární? 0? No, 0, myslíš 0 0 0? Řekni to ještě jednou, Karina. Perfektní. Proč tomu tak je? Je to skutečně 4 a 2 plus 1. Tak dobré. Jak můžeme reprezentovat trochu another-- jak je to číslo 2? Blízko, ale pozpátku. Takže co je to? 4 plus 1, takže to je 5 znovu. Takže what's-- Je mi líto, Karina? 0 1 0. 0 1 0 2 by bylo, protože znovu, a to i pokud to nějak není vyskočit na vás, Jen si to spočítejte. 4 krát 0, 0, 2 krát 1 je 2, 1 krát 0 je 0. Takže toto je číslo, známe jako 2. Jak o počtu 8? Hm? Dobrý. Takže jsme trochu potřebovat další vyhrazené místo. Musíme 1 0 0 0. A to platí i pro našeho druhu ze staré školy desítkové soustavě. Jak si představují počet 1000? No, měli byste se zdají být druh v těžké místě, pokud vás požádat, abyste reprezentovat číslo 1000, protože i když dáváš jako 9 z nich, 9 z nich, 0 z nich, což je největší číslo máte, jste docela nedostane až 1000. Takže pokud vás 1,000, stačí další pozice, takže si můžete udělat 1 0 0 0, ergo číslo 1000. Takže teď, pojďme Pro tento druh koncepční diskuse zpátky do hardwaru, kde opět, vstupní byl jen tento malý napájecí kabel, elektřina dovnitř a teče ven. A tak, že budou zmapovány odtud tam, no, co opravdu potřebujeme? No, můžete myslet, že jsou uvnitř počítač, celá banda žárovek, jestli budeš. Jsou opravdu volal tranzistorů. A tranzistory jsou jen spínače která může být buď zapnutý nebo vypnutý. Takže si můžete myslet na tranzistor, který je na je umožnit elektřina proudit a tranzistor, který je pryč jako zastavování elektrické energie z tekoucí. A spíše než brát nad světly tady, proč ne já dělat tento druh z nového školního stylu. Takže to může být jedno, baterku bytí na jen stěží ačkoli. A to může být 0, a teď je to pryč. Takže použití tohoto fyzického zařízení I Nyní může představovat binární systém. Potřebuju jen dva stavy. Nezáleží na tom, jaké obarvit to je, nebo co to je. Záleží jen na tom, že mám jeden stát na jiný stát a vypnout. Takže používat svůj telefon tady, jak to mám představují počet známe jako 0? Nebo dát ekvivalentně, co Číslo jsem teď zastupuje? 0, protože zařízení je vypnuto. A kdybych to udělal? A teď, jak to mám představují číslo 2? Mohu si půjčit váš telefon Zde, jak jsme včera? Tak se podívejme, takže když chci reprezentovat číslo 2, je toto číslo 2? Ne. Jaké číslo jsem já náhodou představující tady? Jedná se vlastně o číslo 3. Takže, který z nich nechci vypnout? Černý telefon nebo-- dobře, pokud they're-- černý telefon nebo bílý telefon? Bílý telefon. Takže když jsem tuto funkci vypnout a my srovnejte ji tady, máme 1 na místa 2 a a 0 na místě 1. je. A tak jsem teď představující číslo 2. A to, samozřejmě, by byl počet 3, protože se obě z těchto světel jsou zapnuty. A budu tady zastavit, ale to dá rozum když chci reprezentovat číslo 4 nebo 8 nebo vyšší, Budu potřebovat více telefonů. Ale to je všechno, co se děje. Takže pokud jste někdy slyšeli, že Vnitřek je-- poděkovat vás-- počítače Je miliony tranzistorů, to je Jen miliony drobných malých přepínačů. A nejsou to lehké žárovky, které se zapínají zapnutí a vypnutí, ale nemají buď povolit elektřinu téct někam nebo zastavit. A tak je tu vaši dva states-- zapnout nebo vypnout, zapnout nebo vypnout. Takže bychom se zdají nyní mají tuto schopnost reprezentovat tento koncept, který Rádi bychom ve skutečném hardwaru. Ale všechno, co máme teď, je schopnost představovat čísla by se mohlo zdát. Tak jak jsme jít o reprezentovat písmen abecedy, které cítí se jako další druh funkci, kterou by chtěl přidat do moderního počítače Jakmile budete mít čísla? A skutečně, pokud se nad tím zamyslíte IT, historicky, počítače Byly zavedeny skutečně sloužit jako kalkulačky numericky. Ale samozřejmě, tito dny, oni dělají mnohem víc. Dokonce i když naběhnout, vy typicky vidět jedno nebo více slov. Tak jak se vám představují slova, pokud vše, co máme, je, opět, elektřina na konci den, nebo ekvivalentně 0 a 1 je? To jo. Jo, myslím, jsme trochu dělali to včera v nějaké formě, kde na nějakém místě, Myslím, že svévolně uvedl, že pokud chceme reprezentovat písmeno A, můžeme jen říkat, že 1. To bylo v kontextu kryptografie, kde jsme jen potřebovali nějaký kód, nějaký druh mapování. Takže možná bude zastoupena jako 1 a B budou zastoupeny jako 2, a Z budou zastoupeni jako 26, například. A pak jen Nevýhodou je, že když jsem bude kódovat písmena v mé e-maily nebo v mých textových zpráv jako čísla, vy všichni muset dohodnout použít Stejný soubor konvencí. A skutečně, svět udělal přesně to. Tam je systém na světě volal ASCII, American Standard Kód pro výměnu informací, což je prostě rozhodnutí o několik let Před že lidé stanoveno, že rozhodl, že se bude rovnat, ne 1, 2 a 26, a proto je to forth-- málo different-- ale 65, 66, 67. A budu vytáhnout graf za chvíli. Ale je to opravdu svévolný. Ale to nevadí že je libovolná. Svět má jen být konzistentní. Nyní, v poslední době, je tu něco milovník volal Unicode, protože světové druhu realizovaných po vynalézání počítačů, že je tu víc než dobře 256 symbolů na světě že bychom mohli chtít reprezentovat, zvláště když si představit Asijské jazyky a jiné symbologie kteří potřebují větší výraznost než vy vejde v nejčasnější verzi Tento kód, který byl nazýván ASCII. Takže Unicode skutečně umožňuje můžete použít více 0 je a 2. Především budete mít vyslechnutí Slovo bytů ve společnosti a dokonce jen včera. A byte je opět to, co? Co je to byte? Je to jen 8 bitů. Tak co to vlastně znamená? No, to znamená, že dříve, když jsme byli mluvíme o binární a byl jsem s použitím svévolně tři bity, když jsme byli mluví o binary-- místa 1 je, Na 2 je místem, a to place-- dobře 4, byte prostě znamená, že mluvíte není v jednotkách po třech, ale čtyři, pět, šest, sedm osm, což nám dává 8 je místo, 16 je, 32 je, 64 je a 128 let. Jinými slovy, trochu není všechno že užitečná měrná jednotka, protože je to jen jako jeden maličký údaj, zapnout nebo vypnout. Takže před několika lety, svět se rozhodlo, to je o něco výhodnější mluvit Podmínky bytů, osm věcí najednou. A tak tedy narodil ponětí o bajtu. A tak máme osm bitů zde. A ukázalo se také, pro podobné Důvody, svět se rozhodli let Před které k reprezentaci písmeno ASCII, budete používat jednotky z 8 bitů. Takže i když ne potřebují, že mnoho, ty jsi Vždy bude používat 8 bitů představují písmeno abecedy. A to je výhodné, protože pak pokud vás obdržet zprávu, která má 0 0 0 1 1 1 1 0 a následně další 1 1 1 0 1 0 0 1, takže pokud dostanete 16 bitů, svět může jen Předpokládejme, že první 8 jsou jedno písmeno a druhý 8 jsou další písmeno. Nezáleží na tom, kolik jich je. Je to prostě vadí, že jsme všichni konzistentní když jsme interpretaci těchto bitů. A to byl jen náhodný. To znamená, že něco, ale já ne opravdu přemýšlet o tom, co to znamená. Takže je to malou bílou lež. Původně ASCII ve skutečnosti používá pouze 7 bitů. A osmý bit volal rozšířený ASCII. Ale bod je nakonec stejný. Svět obecně standardizován na 8 bitů. Takže by to zdá být poněkud omezující, protože jen mohu představují kapitálu, kapitál B prostřednictvím kapitálového Z. Ale opravdu ne, když půjdu to-- je tu banda zdrojů on-line, například, asciitable.com Tento bude trochu ohromující na prvním místě. Ale budu poukázat co je zde důležité. To jen se stane be-- a budu walk-- podívejme se, jestli jdu sem. Zde je, v desetinné čárky sloupec, číslo 65. A v koloně dopisu pravá ruka znak, Chr, je písmeno A. A můžete ignorovat, prozatím, vše ve středu. To je hexadecimální, osmičkové a HTML kód. K této stránce se právě snaží hodit Mnoho informací na vás najednou. Ale vše, co zajímá je desetinná sloupec a sloupec charakter. Takže podle této logiky, co je číslo, které svět rozhodl představuje malé znak? Jo, 97. A právě plést případně mírně, jaký počet se svět rozhodl bude představovat číslo 1? Správně, protože we-- 49, zdá se, tady dole v levém dolním rohu. A teď, co mám na mysli? Tak to dopadá, že v počítačových systémech, je obecně základním rozdílem mezi číslem a charakteru. Číslo je věc, kterou bychom dozvěděl vyrůstat, když my jsme byli mimořádně mladí na základní škole. To, co jste počítat s tím. Ale postava je jen určitý tvar, piktogramy, tak říkajíc, na obrazovce. Nyní, my lidé nějak vidět něco, co vypadá takto. A my říkáme, oh, to je číslo dvě. Ale ne, to je jen symbol, který vypadá jako to, co známe jako číslo 2. A tak tam je to zásadní rozdíl mezi skutečnými čísly a znaky. Jedná se o číslo. Ale obecně, v kontext počítače, pokud se místo toho vidět něco takového quoted-- a vy ne vždy muset vidět, že citován, ale kvůli discussion-- pokud vidíte uvozovek čísla, nyní je to postava. Takže toto číslo 2 vespod kapota uvnitř počítače bude zastoupena se vzorem bitů, které představují počet 50 podle tabulky online. Nicméně, pokud počítači vidí jen tohle, tohle by být zastoupeny s vzor bitu 0 0 0 0 0 0 1 0. Vzhledem k tomu, by tento znak ve skutečnosti být zastoupeny as-- a nyní, Musím myslet trochu harder-- tak toto charakter by být zastoupeny s 0 0 1-- co potřebuji tady? 0 0 1 1 0 0 1 0. Jak jsem to udělal? No to je číslo 50, pokud vás množte se, že při použití těchto sloupců, To je číslo 2, a proto To je důvod, proč je tato dichotomie. A to je jen teaser nyní k funkcím které existují v programovacích jazycích že budeme ještě dnes dotknout krátce. V programovacích jazycích, máte obecně, ale ne vždy, věci volání různé datové typy. Jinými slovy, je programmer-- když on nebo ona píše, programátor dostane se rozhodnout, v jakém formát pro ukládání jeho nebo její data. Můžete buď ukládat data as syrové čísla, jako je číslo 2. Nebo můžete ukládat jako struny, nebo posloupnosti znaků že byste obecně vyjádřit citace ve vašem programovacím jazyku. Můžete mít věci called-- Budu zjednodušují a říkají jim real numbers-- tak čísel, která nejsou celá čísla, jako je číslo 2, ale počty rád 4.56. Takže reálná čísla mohou také mají desetinných míst, tak to je jiný zásadní kus dat v počítači. A pak dokonce můžete mít Jiné typy dat v klidu. Tak to je jen ukázka opravdu o nejjednodušší rozhodnutí designových že programátor by mohl aby pod kapotou. Tak jen ještě nějaké otázky? Takže pojďme se snažit, aby to trochu reálnější. Tento hardware není tolik v užívání ještě. Ale většina každý v této místnosti pravděpodobně vyrostl a stále používá pevné disky nějakým způsobem. I přesto, že většina již naše notebooky ne vybaven zařízením, které fungují jako je tato, Místo toho notebooky dnes všeobecně mají Solid State Drive s žádnými pohyblivými částmi. A který má tendenci být dražší, bohužel, ale trochu rychleji a je-- dobře, často mnohem rychleji, což je jeden z důvodů, proč. A také to není generují tolik tepla. To může být menší, takže je obecně čistý pozitivní. Ale to nám umožňuje mapovat trochu konkrétněji, co mluvíme o u 0 je a Úroveň 1 je nyní k fyzickému zařízení. To je jedna věc, pro mě to talk asi 0 a 1, pokud jde mého telefonu nebo abstraktně ve smyslu přepínačů, že zapíná a vypíná. Ale co pevných disků? Ve svých noteboocích, pokud máte starší jeden, nebo ve stolním počítači, nebo určitě v serverech Dnes, kde máte pevné disky, které mají terabytu prostoru, 4 TB prostoru, no co to znamená? Pevný disk s 1 terabyte kosmických prostředků tam je 1 bilion bajtů uvnitř ní nějakým způsobem, nebo ekvivalentně 8 bilionů bitů uvnitř. 1 terabyte by bylo 8 terabits nebo 1 bilion bitů, které znamená, že pokud máte těžké drive, máte nějak nebo další bilion 0 je a 1 je uvnitř ní. A pokud budeme stačí se podívat se na libovolný obrázek z pevného disku reprezentativní, to je to, co pevný Pohon by mohla typicky vypadat uvnitř. To, také, je něco jako starý gramofon hráč ale obecně se více záznamů uvnitř, tak na speak-- násobek tácy, jak se jim říká, kovové kruhové disky, a pak trochu čtecí hlava, podobně jako starý gramofon. A že čtecí hlava se pohybuje dozadu a tam a nějak čte bity. A co je na těchto tácy, a to i i když my lidé je nemůže vidět, a to buď ve skutečnosti nebo v tomto obrázku, tam je malinké magnetické částice. A i když jste dlouho zapomněli, jak funguje elektřina, magnetická částice která je nabitá všeobecně Má severní konec a na jih end-- tak severní a jižní. A tak se svět jen rozhodl před nějakým časem že, je-li magnetické protokol v zásadě je vyrovnán takhle, sever-jih, říkejme, že 1. Pokud je to místo na jih-sever, ať to jen zavolat, že je 0. A tak pokud máte na K dispozici bilion maličký magnetické particles-- a doufejme, hardware vynalézavost v Aby se otočit lidem kolem Jak vidíte fit-- Chcete-li představují spoustu 0 letech, vás stačí 8 magnetických částic všechny vyrovnány takhle. A pokud chcete reprezentovat Osm 1 je, stačí Potřebujeme 8 magnetických částic vyrovnaných zády k sobě k sobě takhle. Co mám na mysli touto Magnetické částice? Upřímně řečeno, všechny ty roky později, věc, která ještě přijde na mysl Je to chlap, pokud vás vyrostl s touto věcí. Toto je pro little-- ty unfamiliar-- Trochu dětství hračka, která má tento bezsrsté muže zde že má k dispozici všechny tyto drobné malé černé magnetické částice, které s sebou přináší. A pomocí tohoto červeného hůl, což je jen magnet, můžete mu nějak dát knír nebo obočí nebo vlasů nebo něco na něj. Takže ve skutečnosti, pokud bychom zoom v, například, toto je druh hry, kterou Můžete hrát s Wooly Willy. A to je jen říci, tito jsou mnohem větší magnetické částice než jsou ve skutečnosti na pevném disku, a mnohem méně magnetické částice. Ale pojďme skutečně vidět pak, pokud máte drobné magnetické částice v pevný disk, jak můžete vlastně používat ty reprezentovat data. [VIDEOPŘEHRÁVÁNÍ] -The Pevný disk je místo, kde vaše PC ukládá většinu svých trvalých dat. K tomu, data cestuje z RAM podél se softwarovými signálů, které Řekněte pevný disk, jak ukládat tato data. Obvody hnacího tvrdé překládat ty, signály na kolísání napětí. Ty zase ovládat tlačítka pevného disku pohybující se parts-- některé málo pohyblivých části vlevo v moderních počítačů. Některé z těchto signálů řídí motor, který se točí kovové potažené mísy. Vaše data jsou ve skutečnosti uložené na těchto plotnách. Další signály posunout čtecí / zapisovací hlavy číst nebo zapisovat data na tácy. Toto zařízení je tak přesné že lidský vlas ani nemohl procházet mezi hlavami a předení talíře. Přesto to všechno funguje v úžasné rychlosti. [END PŘEHRÁVÁNÍ] A můžete u vidět v zadní části videa, tam jsou obecně více mísy. A tak, že čtení hlava není jen čtení na vrchol. Je to něco jako tři nebo čtyři nebo více čtecí hlavy že pohyb takhle, čtení dat současně. Takže je tu spousta složitost a druh načasování který je zapojený do pevného disku. A věc se točí opravdu zašít rychle, takže je tu spousta složitosti. Ale pojďme přiblížit trochu hlouběji a vidět, kde jsou tyto magnetické částice a jak se dostáváme se na ně. [VIDEOPŘEHRÁVÁNÍ] -Nech Je pohled na to, co jsme právě viděli zpomaleně. Když krátký elektrický impulz je poslán do čtecí / zapisovací hlavy, to převrátí na malém elektromagnetické Na zlomek vteřiny. Magnet vytváří Pole, kterým se mění polarita malý, nepatrný část kovových částic který srst povrch každého tácu je. Vzor řada z nich nepatrný nabité zastavěné plochy na disku reprezentuje jediný bit údajů ve binární číslo systém používaný počítači. Nyní, pokud je aktuální odeslán jeden cesta přes čtecí / zapisovací hlavy, Tato oblast je polarizován v jednom směru. Je-li aktuální zaslána opačný směr, polarizaci je obrácen. Jak se vám data z pevného disku? Jen v opačném pořadí úkonů. Takže jsou to částice na disk, které se dostanou proud ve čtecí / zapisovací hlavy v pohybu. Dát dohromady miliony Tyto magnetizován segmenty, a máte soubor. Nyní kousky jednoho souboru může být roztroušených po celém tácy hnacím je, něco jako nepořádek papírů na vašem stole. Takže speciální navíc soubor obsahuje Trať, kde je všechno. Nenechte si přejete jste měli něco takového? [END PŘEHRÁVÁNÍ] Takže je zmíněno tam, snad, je toto téma ze včerejška výmazu. Při odstranění Soubor, včera jsme si řekli, že počítač vlastně dělá co, když táhnete něco do koše nebo popelnice? Je to prostě zapomene. Ale 0 a 1 je, magnetické částice které vypadají jako červené a modré věci zde, nebo moje ruka tady, jsou tam stále na pevném disku. A tak existuje software-- Norton Utilities a Yesteryear a další modernější software--, že právě prohledá celý pevný disk hledá na všechny ty 0 a 1 letech, neboť Ukazuje se, že většina souborů formáty-- Dokumenty aplikace Word, Excel soubory, obrázky, Video files-- všichni mají jisté vzory, které jsou běžné mezi nimi. Každé video soubor může mít jinou video, ale první několik bity jsou obvykle stejné. Nebo poslední několik bitů jsou obvykle stejné. A tak s vysokou pravděpodobností, se můžete podívat na ty vzory. A to i v případě, že soubor byl zapomenut, lze říci, s vysokou pravděpodobností, ale to vypadá jako dokumentu aplikace Word, nechá ji obnovit a un-zapomeň na to, jestli budeš. A tak to je, jak můžete obnovit Data, která je buď byli náhodně vymazány nebo odstraněny nebo úmyslně vypouští z jakéhokoliv účelům. Naproti tomu bezpečné mazání co dělá v souvislosti s obrázkem, jako je tento? Přesně tak, z nich dělá vše náhodně. Tak to nějak pohybuje některých jim dolů, některé z nich nahoru, ponechává některé z nich beze změny, a Obecně je náhodný šum z toho, nebo jen možná dělá všechno Them 0 nebo všechny z nich jeden je. A že také může obecně drhnout vaše data pryč. Takže vraťme se k otázce výpočetní myšlení, přičemž máme vzorce vstupy. A algoritmy dává jste výstupy nakonec. Zaměřujeme se nyní na vstupech a výstupy, protože teď jsem Tvrzení, že máme způsob představující vstupy a výstupy. Budeme jen používat binární. A bez ohledu na to, co jsme chtějí reprezentovat dnes, ať už je to číslo nebo písmeno nebo tisíce z nich v telefonním seznamu nebo obrázky nebo filmy, na konci ze dne, to vše 0 a 1 je. A tvrdím, že i když toto je super jednoduchý svět jen s 0 let a 1 je, můžeme postavit sami nahoru. A my jsme viděli jeden příklad že s písmeny tak daleko. Takže pojďme se nyní zaměřit na toto téma Střední přísada, algoritmus. A vraťme se k tomu Příkladem Mike Smith. Takže v tomto telefonním seznamu, které sice, nepoužíváme tak moc ne, je tu problém je třeba řešit. Chceme najít někoho, jako je Mike Smith. A co můžu udělat, aby se najít Miku? No, mohl bych prostě otevřít toto Kniha jazyce na první stránce, a uvědomit si, ach, jsem v sekci A. Mike tam není. Musím sekci S pro Smith. Takže jen držet otáčením jednu stránku najednou. Nech mě předstírat, že je to všechno bílé stránky a ne Zlaté stránky, protože nebudeme najít Mike ve Zlatých stránkách stejně. Ale já jsem v bílých stránkách. A teď jsem v sekci B. Ještě jsem ho našel. Tak jsem neustále zapínat jednu stránku najednou. Jedná se o algoritmus. Je to sada instrukcí pro řešení nějaký problém. Jinými slovy, podívejte se na strana, pokud Mike není na něm, otočit stránku a opakuje znovu a znovu a znovu, v ideálním případě dívat se dolů, jak to děláte. Takže je tento algoritmus, tento proces, je to tak? Promiňte. Ne, slyšel jsem nějaké čísla. OK, ale to je-- jo, je to určitě únavné. Stejně jako, budeme tu celý den, kdybych dál hledat Mika při této rychlosti. Ale dovolte mi tvrdí, že je to správné. Je to hloupé, ale je to správné. Na konci dne, pokud to mohlo trvat, Najdu Mika, jestli je tam a já věnovat pozornost. A já se nakonec dostanou jeho strana. A když dostanu příliš daleko, pokud I dostat do sekce T, pak mohu lehce optimalizovat a jen říct, hm, vše je hotovo. Já ani nemusíte ztrácet Čas jít do Z je. Ale to je velmi Lineární přístup, pokud vás bude velmi druh zleva doprava přístup, přímka. A její správné, ale pomalu. Tak jsem si pamatuju z základce, třídění z optimalizace z první srovnávač, kde jsem se naučil počítat ne o ty ale twos-- tak 2, 4, 6. Je to, mnohem těžší ano, ale teoreticky je to faster-- 8, 10, 12, 14, a tak dále. Jak se o tom algoritmu? Je to efektivnější? Je to rychlejší? Diváků: Je to efektivní. DAVID Malan: Jo, tak je to def-- je to doslova dvakrát tak rychle, za předpokladu, že I Nechápejte zakopl s mými prsty. To je dvakrát tak rychle, protože Já otočením o dva Stránky najednou místo jednoho, ale je to potenciálně ve správné, protože proč? Publikum: Ty skákání některé z nich. DAVID Malan: Dobře, co když se stane Mike které mají být sandwiched-- možná, když jsem později v telefonním seznamu, Mike se stane být sevřený mezi těmito dvěma stránkami, a já jen slepě přeskočit přes něj. Takže potřebujeme tam malou opravu. Jednou jsem narazila na úsek T, I nemůže jen tak s jistotou říci, jsme nenašli Mike Smith. Asi budu muset zdvojnásobit zpět. Nebo ve skutečnosti, jakmile se dostanu někoho s názvem S-N, místo S-M pro Smith, okamžitě bych mohl zdvojnásobit zpět, protože možná, že Byl na předchozí straně. Ale nemám zdvojnásobit zpět daleko. Teoreticky, když jsem to na pravé straně čas, jen jsem se vrátit o jednu stránku. Takže to přidáním jen jeden krok navíc. Tak jsem šel dvakrát tak rychle, ale mě to stálo jeden navíc stránku. Ale to cítí jako čistou výhru. Ale to není, jak většina lidí v tato místnost by tento problém vyřešit. Co by typický člověk, možná Před několika lety dělat, najít Mike Smith? Jo, nenašel Mika. Co mám dělat? Tak trochu blíž, ale já ano víš-- co je pravdivé informace o telefonním seznamu? Diváků: Je to sekvenční. DAVID Malan: Je to sekvenční. Je to podle abecedy. A tak když jsem v sekci M, Mike je jednoznačně na pravé straně, Mohu doslova roztrhat Problém v half-- je to obvykle snazší než to-- slza Problém v polovině a vyhodit, takže teď mám problém, který je již 1000 pages--, že bylo těžké, protože si myslím, že skutečně roztrhl telefonního seznamu to není time-- 1000 stran, ale 500. Takže problém je doslova poloviny tak velký. A to je docela přesvědčivé, protože s mými předchozími algoritmy, verze 1 a 2, byl jsem jen dělat problém jedna strana menší, dvě stránky menší včas. Zatímco nyní, udělal jsem to 500 Stránky menší najednou. OK, takže teď, Karim navrhuje že jdu do pravé poloviny. Takže já jdu hrubě do středu, plus mínus. A jestli jsem to udělal matematicky, Mohl bych jít přímo do středu. A teď si uvědomuji, oh, Jsem v sekci T. Vlastně jsem se jít příliš daleko. Ale můžu opět slzný Problém na polovinu, vyhodit. A moje bytů není tak velký. Je to jen, co, 256 stran nebo 250 Stránky, plus minus právě teď. Ale je to ještě mnohem více než jednu stránku nebo dvě stránky. A tak teď, jdu zhruba do středu. Oh, já nešla dost daleko dost nyní. Takže opakuji, opakovat, opakovat, Opakuji, až budu s nadějí zbývá jen jednou stránkou. Takže zve na otázku, jestli jsem začalo se zhruba 1000 stran, kolik kroků to trvalo mi s verzí 1 svého algoritmu? No, jestli Mike je v S část, v nejhorším případě, to je docela blízko konec abecedy. Takže v případě, že telefonní seznam má 1000 stránek, Najdu Mika v 1000 stránek, plus mínus. Možná je to jako 800 nebo tak, ale je to docela blízko k 1,000. Vzhledem k tomu, ve druhém algoritmus, kolik otáčet stránky maximálně bych mohl vyžadovat najít Mike Smith? K dispozici je 1000 stran, ale jsem dělá jim dva najednou. Dobře, takže max jako 500ish, protože když jsem projít celý telefonní seznam, na kterém místě, můžu zastavit. Ale můžu oholí několik tím, jen zastavení v sekci T. Ale je to v nejhorším případě 500 stran. Takže kolikrát mohu rozdělit 1,00o-page telefonní seznam na polovinu znovu a znovu a again-- od 1000 na 500 až 250 až 125? Jak dlouho předtím, než jsem narazila jednu stránku? Jo, je to o 10. V závislosti na zaoblení a tak, že je cca 10 stran celková potřeba být otočen nebo telefonní seznamy je třeba roztrhané. Tak to je docela silný. Začali jsme s problémem s 1000-stránkový ve všech třech těchto příběhů. Ale v první algoritmus, to trvalo mi, nejhorší případ, 1000 str zjišťuje, Miku. Druhý algoritmus, 500 Stránky najít Mika. Za třetí algoritmus, 10 stran najít Mika. A je to ještě víc silný, když si myslíte, o druhu opačného scénáře. Předpokládejme, že telefonní společnosti příštím rok možná sloučí dvě města spolu, a telefonního seznamu je najednou Tento silný, namísto toho, že, takže 2.000 stran namísto 1000. No, můj první algoritmus hledá Mike Smith v 2000-stránkové telefonní seznam, horším případě, že to bude trvat kolik strana změní v příštím roce? Telefonní seznam je 2,000 stran, tak-- no, ne jeden. V případě, že telefonní seznam je dvakrát tak tlustý První algoritmus, první algoritmus, 2000, že jo? V nejhorším případě, Mike je opravdu zavřít do konce knihy, takže je to 2.000 stránek zatáčky. Druhý algoritmus jde o dvojky, stejně jako 1000 stránek. Ale co v mém třetině a nejnovější algoritmus? V případě, že telefonní společnost zdvojnásobí počet stran od 1,000 do 2,000, kolik vícekrát potřebovat I slzný že kniha v polovině najít Miku? Diváků: Jen jeden. DAVID Malan: Ještě jeden, protože se o jednu stránku slza, Mohu doslova rozdělit a panuj, chcete-li, že problém v polovině odběr masivní sousto z ní. A tak toto je příklad Účinnost a pravděpodobně algoritmus s nimiž jsme všichni tak nějak intuitivně obeznámen. Ale je to jen za správné as mými dalšími algoritmy s tím vyladit pro druhý algoritmus, ale je to tak mnohem efektivnější. A ve skutečnosti, to je počítačový vědec, nebo naopak programátor, by obvykle dělat při psaní Kód je pokusit se zjistit, v pořádku, nechci my Program jen za správné, Také chci, aby to bylo efektivní a řešit problémy stejně. Představte si, že v reálném světě dnes, jako Google indexů, vyhledávání jako miliardami stránek, představte si, že oni používal první algoritmus najít kočky Mezi miliardu pages-- při pohledu na První strana ve své databázi, druhý, třetí, jen při pohledu pro kočku, hledá pro kočku. To je zatraceně pomalé by se mohlo zdát. Mohly by namísto toho použít něco volal binární vyhledávání, který Není coincidence-- bi což znamená dvě, jsme zachovat dělení něco 2, v half-- oni mohli použít binární vyhledávání a možná najít kočky ještě rychleji, nebo co to je hledáte. A upřímně řečeno, je tu i milovník algoritmy že dělat mnohem víc, než jen dělení věcí na polovinu aby se rychle najít informace. A budeme mluvit trochu o těch, po obědě dnes. Takže mi dovolte jen se snaží reprezentovat to. Nemusíme jít do jakýkoliv matematický nebo skutečných čísel. Můžeme o tom mluvit abstraktně. Ale dovolte mi navrhnout, pokud vás vedli diskusi nyní s inženýry navrhuje tento algoritmus a vy se snažíte, aby se vypočtená rozhodnutí, protože možná inženýr řekne vám, vím, co mohu implementovat lineární hledání v podobně dvou minut. Je to tak snadné. Binární vyhledávání není tak efektní, ale to bude, aby mě vzal jako 10 minut, tak, 5 krát delší. Je tu obchod tady, a to i pokud jde rozhodování o tom, jaký software psát. Píšete jednodušší algoritmus, který bude jen trvat dvě minuty? Nebo trávíte více času, 10 minut, psaní milovník algoritmus? Jak se rozhodnout, že takové otázky? Nebo byste mohli udělat to trochu reálnější. I říci svému nadřízenému, že to bude trvat me buď jeden týden nebo 10 týdnů k provedení software tímto způsobem, jak se rozhodnout, který algoritmus pro zelenou-světlo? Karim? Publikum: publikum, myslím. DAVID Malan: Publikum. Co myslíš tím publikem? Diváků: Pokud to jde které mají být použity uživateli kdo [neslyšitelný] uživatelů [neslyšitelné]. Ale jestli je to něco, co jste jen to pro sebe usnadnit problém, [Neslyšitelný] rychleji. DAVID Malan: Jo, je to rychlé a špinavá je dobrý způsob, jak to popsat. Ve skutečnosti, pokud jste popisující většinu svého času v grad škole, přičemž často časy, Napsal jsem špatný kód vědomě tak-- Alespoň, že to, jak jsem racionalizovat to-- vědomě tak, protože i když jsem psaní kódu že byl relativně pomalý provést, Byl jsem schopen psát kód sám dost rychle, výdaje jen pár minut nebo hodin není dnů. A ukázalo se, já občas potřeboval spát. Takže i když můj kód potřebný 8 hodiny běhat, dobře, že je v pořádku, Půjdu spát, zatímco to běží. Takže v té době, myslel jsem, že to velmi chytrý, i když zdánlivě propracoval mého PhD velmi pomalu. Ale hovořit o který je že, když jsem psali software pro ostatní lidi, kteří záleželo víc než já, no, s nimi čekat 8 hodin dostat zpět své výsledky vyhledávání není všechno, že přesvědčivé. A tak tráví více času vepředu psát software že je efektivnější, jako náš třetí algoritmus, Pravděpodobně je prospěšný pro uživatele v průběhu času. Takže to opravdu záleží více než Doba, jak tyto náklady se sčítají. Pokud se chystáte psát software ji jednou použít, Asi by bylo dobré udělat rychlé a špinavé, jak se říká. Jen to hodit dohromady. Je to kód, který uvádí do rozpaků vy, je to tak špatné, ale dostane úkol správně, i když to není efektivní. Naopak, budete trávit více času na něčem, si to tak akorát. A pak rozpouštěny v průběhu času, že přímé náklady času je pravděpodobně stojí za to, pokud budete mít optimalizace pro běžný případ. A vskutku, to je téma v programování, nebo počítačová věda více Obecně platí, že se snaží optimalizovat Není neobvyklé pro případ ale společné case-- jaká operace se bude dít znovu a znovu? Pokud budete mít miliardy uživatelů vyhledávání na svých webových stránkách, asi byste měli strávit další týdnů až před psaní lepší software, takže všichni vaši uživatelé těžit. Nyní se pojďme pokusit se zachytit tento A Trochu obrazově, ale ne tolik, numericky. Tak tady je prostě stará škola graf. A dovolte mi říci, že toto je čas. A nezáleží na tom, what-- Vlastně ne, není čas. Řekněme, že na druhé ose. Řekněme, že to je doba, a to je velikost problému. A počítačový vědec Možná obecně požadují to jen n. n je jako Naše go-proměnná, kde n je číslo, číslo n, a to je počet vstupů jakýmikoli máte. Takže v tomto případě je n počet stran. Tak to by mohlo být v 1000 tento případ jsme právě řekl. Takže čas může být jakákoli jednotka měření. Možná, že je to druhé. Možná, že je to dní. Možná, je to jako otočené stránky. Nezáleží. Ať už chcete počítat se tím, že bude čas, nebo náklady ekvivalentně. Takže s tím úplně prvním algoritmus, kdybych například, měl 1000-stránkový telefonní seznam, Jdu k tomu tečku tam, protože pokud je to 1000 stránek, trvalo zhruba 1000 otočených stran, plus mínus. A pak, pokud jsem měl 2000-stránkové telefonní seznam, a budu čerpat druhý dot tady, protože pro 2000 stran, Je to jako 2,000 sekundy nebo otáčet stránky nebo cokoliv jiného. A tak když jsem řekl dříve, je to druh lineárního vztahu, že bylo záměrné, protože jsem chtěla Později on-- právo now-- udělat tlustou čáru. Je to něco jako rovný linka vztah. Svah je 1/1, chcete-li. Mezitím, druhý algoritmus znamená, že pokud máte 1000 stránek a vy jste pomocí druhého algoritmu, kde jsem počítal od 2 let, soustružení dvě stránky najednou, měl bych kreslit tečka pod nebo nad mé původní tečkou? Diváků: Pod. DAVID Malan: Dole, protože, jak jsme viděli, trvá kratší dobu, polovinu tolik času. Takže tečka by měla být polovina tak vysoko, jako druhá. A stejný problém tady, to tečka by pravděpodobně měla být zhruba tam. A tak můj druhý algoritmus, podobně, má lineární vztah s časem. A můžeme čerpat ji jako takovou. Takže teď, třetí a poslední Algoritmus je trochu těžší čerpat. Ale intuitivně, jestli mám 1000 Stránky s mým třetím algoritmu to by mělo trvat mě jen jako 10 stupňů. A jestli mám 2,000 stránek s mým třetím algoritmu to by mě neberte 10 Kroky, ale 11, jen jeden. Takže budeme jen stěží bude vidět. A ukázalo se, pokud I přiblížit na to, že jsem bude přehánět na efekt, Tvar této linie, v konečném důsledku, není přímý line-- proto, že ve skutečnosti by to bylo, to bude vypadat víc líbí others-- je to vlastně křivka že pokud bychom přiblížit, se děje vypadat mnohem takhle. To-- dobře, OK, ignorovat tuto část. To byla moje pero jít z úhlu. Je to zakřivené linie, která je vždy roste, vždycky, vždycky, vždycky zvyšuje, ale jen stěží. A tak v průběhu času, máte Vztah, který je více takhle. Je to skoro vypadá rovně. Ale je to někdy tak pomalu roste. Ale pro téměř všechny body podél Váš osa x, vodorovná osa, to je méně než těch ostatních tratích. Takže to může být vztah n, přičemž pokud máte n stránek, vás vezme n sekund. To může být vztah n / 2. Máte n stránek, trvá jste n / 2 sekundy, polovina tolik. A to je logaritmická Vztah, který Pokud si vzpomínáte, log základnu 2 z n zachytí Tento druh růstu, tak říkajíc. Tak tohle je ten typ svatý grál mezi třemi z nich tady, protože je to prostě mnohem víc efektivní, ale pravděpodobně složitější provádět. Nějaké otázky? No dovolte mi, abych to udělat, ať me Otevře se textové okno Jen tak se můžeme pokusit formovat něco tady. Tak nech mě jít dopředu a hned implementovat tento algoritmus pro nalezení Mike Smith v kódu, chcete-li, pseudokód kód. Nebudu používat Java nebo C ++. Právě jdu používat druh Anglický-jako syntax, které jsme by obecně nazývají pseudocode kód. Tady mám prázdné okno. A já říkám kroku 1 velmi První algoritmus je vyzvednout telefonního seznamu. Krok 2 je otevřená kniha na první straně. Krok 3 bude podívat se na stránka pro Mike Smith. Pokud se na straně, volejte Miku. else turn stránky a přejděte ke kroku 3. Hotovo, řekněme. A tak to není úplně dokonalá, který uvidíme za chvíli. Ale pojďme zvážit, jaké koncepty jsem zde představen. Takže kroky 1 a 2 a 3 jsou do značné míry slovesa. Jsou to výroky, actions-- to udělat. A tak v programování jazyk, by jsme se obecně volejte jim prohlášení nebo funkce nebo postupy, Nazýváme je celá řada věcí. Ale jsou to jen actions-- to udělat. Krok 4 je zásadně odlišný, protože je to druh položení otázky. To říká, že jsme druh ze na rozcestí. Pokud Mike je na straně, volejte ho, tak doleva, chcete-li. A pokud ne, vraťte se k některým Jiný page-- nebo spíše líto, vrátit se do nějakého jiného kroku, který vyvolává nějaké kličky tvořící konstrukt. A děláme to znovu a znovu a znovu. A skutečně, víte co? To jo. else if na konci knihy zastávky. Takže potřebujeme druh třetiny stav, protože vás nemůže udržet otáčením stránek inzerát nauseum, protože nakonec budu narazila na konci knihy. A chyba v programu může být nepředvídali, že scénář. A pak už jen jsem si uvědomil, oh, počkat Okamžik, musím třetí scénář. Pokud jsem ze stran, I měli opravdu jen zastavit. Jinak je to nedefinovaná. Co se stane, když jsem udržet říkat otočit stránku a vrátit se, To je, když počítače zmrazit nebo havárie, když narazí některé neočekávané situace takhle. A teď, co Mike Smithův třetí algorithm-- zvednout telefonní seznam, otevřená kniha first-- na Ne, ne první tentokrát stránku, na middle-- oh, no, to by být druhý algoritmus. Řekněme přeskočit na třetí. Publikum: Oh, omlouvám se. DAVID Malan: To je v pořádku. Řekněme přeskočit na third-- open do středu a nyní hledat Mike Smith. pokud na straně, volejte Miku. A potom, co chceme říct, zde? jinak co? Můžeme to vyjádřit v mnoha různými způsoby. Neexistuje žádná správná odpověď. OK, ne-li ještě jednou, ale musíme be-- OK, my chceme rozdělit na dvě části, ale chceme jít doleva nebo doprava jít? Jak můžeme vyjádřit tuto myšlenku? No, v případě, že Mikova, ano, to je fér. Ale v pořádku, takže je to vlastně dobrý postřeh. To je v pohodě. Budeme pokračovat s touto logikou. Tak-- Diváků: Méně než polovinu. DAVID Malan: Jo. Takže else if stránka, budeme říkat, méně než Smith, vlevo Smith, then-- podívejme, je to bude komplikovat? else if strana pochází před Smithem, trhaly na polovinu, vyhodit toho polovina? Diváků: Myslel jsem, že byl [neslyšitelné]. DAVID Malan: slyším obě odpovědi. Diváků: Levý. DAVID Malan: OK, házet pryč levou polovinu, as Lakisa řekl dříve, levý poloviny, pak jsem trochu chtějí prostě jít to-- jdu na pravé straně. Nebo ekvivalentně, a udělal jsem trochu trochu nepořádek začátku tady, I účinně chci přejděte ke kroku 2 znovu, kde otevřena middle-- nebo open-- jo, řekněme, stránky do středu hřiště. A to řeší ji. Už to není kniha. Je to jen polovina knihy, tak otevřené strany do středu. else-- tam skoro byli. Krok 6, else if strana přichází poté, co Smith, trhat na polovinu, vyhodit pravou polovinu, přejděte ke kroku 2. jinak skončit, čtvrtý scénář, pokud nemáme počet stran se obrátit. Takže bychom mohli vyčistit to. A my jsme měli čistit to. To je velmi pseudocode kód, pokud jste ano, popis velmi vysoké úrovni. Ale to obecně zachytit myšlenku. A opět, v tomto případě jsme mají ponětí o stavu, větev, vidlička na silnici, čímž decision---li to, jít tudy, else if, jít tudy, else if, tudy. A to je velmi častý programovací techniky rozhodnout, jakým směrem jít, abych tak řekl. A máme také nějakou ze smyčky struktury, kde děláme něco znovu a znovu. Nyní se ukázalo, mnohem jako v tomto příkladu, bytí Super přesná je důležité. Ale také jsme viděli něco že držíme volání abstrakci. Co to znamená zvednout telefonní seznam? Jsme jen tak užívat za samozřejmost v této místnosti že má nějaký sémantický význam. Každý z nás tak nějak vím, oh, No, zvednout telefonní seznam. Co to vlastně znamená? No, to ve skutečnosti znamená prodloužení ruka, naklonil, prodloužit prsty, špetka knihu mezi prsty, vstát, přitáhne ruku směrem k sobě. A mohli bychom být opravdu pedantský o tom, Opravdu je mimořádně přesná pokud jde o to, co dělám. Ale všechny tyto kroky jsou kolektivně co to znamená zvednout telefonní seznam. A tak dříve, když jsem řekl, každý z těchto prvních dvou výkazech si lze představit jako postupovat nebo funkce, Opravdu to reprezentuje to, co jsme udržovat volání abstrakci. Je to jako na vysoké úrovni koncepční popis problému, který jde vlastně o poměrně málo kroků. A tak to také je opakující se téma v programování, kde bych mohl napsat program pomocí syntaxe jako tohle-- pick_up_phone_book (). A potom syntakticky, že jsem chystá něco ukrást od většiny programovacích jazyků. Nyní krok 1 vypadá ještě spíš jako funkce, jako programátor by se to nazvat. Vypadá to, že kód, který někdo dal název a vzhledem k tomu, se mi používat somehow-- v jiných Slova, co čára jsem zvýrazněné představuje funkce, které možná Ani jsem se realizovat sám. Někdo starší, moudřejší než já už přišel na to, jak vyjádřit myšlenku vyzvednutí telefonního seznamu. A je to jako pěti krocích jsem jen vychrlil, z vrcholu mé hlavy. Ale on nebo ona již byla provedena to dal ty několik kroků jméno, pick_up_phone_book. A závorkách je uveden jen to, co většina programátorů dělat na konci prohlášení, jako je tento. Nyní mohu postavit na jeho nebo její ramena a už nikdy, přemýšlet o tom, co to znamená vyzvednout telefonního seznamu. Mohu jen říct, zvednout telefonní seznam. A to je přesně to, co my všichni lidé tady udělal. Když jsme byli asi 1 letý, 2 roky starý, někdo musel nás učí, co to chtěl vyzvednout telefonního seznamu. A od té doby, jsme abstrahovat pryč od těch velice nezajímavé mechanické kroky. A my jen mít intuitivní chápání o tom, co to znamená vyzvednout telefonního seznamu. A můžete extrapolovat nyní na složitější things-- postavit budovu. Jako, pro některé lidi, že má ve skutečnosti význam. Dodavatelům, pro architekty, že má nějaký význam. A oni by vědět, co dělat, pokud Řekl jsem jít postavit budovu. Ale většina z nás v místnosti nemohl vypořádat se s touto úrovní abstrakce. Je potřeba říci nám líbí jdi lopata a jdi betonu a nehty kousky dřeva dohromady a cokoli jiného se podílí na stavbě budovy. A to proto, že nemáme dosud naprogramován tak, aby pochopili co to znamená postavit budovu. Nemáme tu abstrakci. Nemáme tuto funkci. A tak to, co uvidíte v programovací jazyky, obecně, zejména více moderních jazyků, jako je Java, PHP, Ruby a Python, jsou mnohem vyspělejší než starší jazyků, jako C a C ++ a přesto jiní. A tak přijdou s více Funkce postavena v roce. Více kód byl napsán lidé v minulosti že nyní můžeme volat nebo přivolat nebo použít, jak jsem naznačuje na s tím zvýrazní linii zde. A tak i když nemluvíme o programovacích jazycích jako takových, Jen pseudocode kódu, všechny myšlenky jsou stále v této diskusi. A ukázalo se, přesnost je Super důležitá, stejně jako abstrakce. A zkusme sdělit, že takto. Omylem jsem mohl zkažené Tento blikáním snímek na obrazovce předčasně. Ale dovolte mi požádat o statečné dobrovolníka, pokud vám nevadí, že přijít. To byste se v přední části kamera, pokud jste s tím OK. Chtěl by někdo přijít a dát pokyny svým kolegům tady? Prostě muset přijít sem a stát tady a říkat pár slov. Victoria se usmívá nejvíce a vyhnout se oči nejvíce. Byste byli ochotni jít nahoru? OK. A pokud se všichni na svých místech mohl vzít si kus šrotu papíru, jestli budeš. Linkovaný papír je v pořádku. Pojďte kolem tudy. Nebo některé z papíru, který jste dostali včera, ledajaký prázdný list papíru, kdybys mohl. A v případě, že nemáte žádné, stačí pokud byste mohli požádat svého souseda. Takže pro tuto chvíli, pro tento příklad, Victoria bude hrát roli programátor, inženýr, který potřebuje program všechny, as počítače, aby něco udělat. A uvidíme, jaké předpoklady se rozhodnete provést. Uvidíme, jak přesný se rozhodne být. A je-li tato demonstrace jde pedagogicky dobře, spousta chyb bude, že budeme pak použijte že jako příležitost k diskuzi. Ale výzva pro vás měl bylo vyhnout se ty chyby, být dobrý programátor. A tak náročný úkol po ruce, pokud byste rád chodit sem, je v přední části Victoria na obrazovce here-- a doufejme, že nikdo z vás pamatovat, když jsem blýskl na obrazovce. A ne otočit vůbec, protože tam je další obrazovky v této místnosti že mohu vypnout. Takže se nemusíte otočit. V přední části Victoria je tentýž výkřik. A její úkolem je nyní ti všechno na kus papíru, co k tomu. A uvidíme, na základě verbální pokyny sám, počítačový kód, chcete-li, jak přesné výkresy are-- vaše implementace jsou. Dávat smysl? Diváků: Jo. DAVID Malan: OK, vykonat. Diváků: nakreslit čtverec. [SMÍCH] DAVID Malan: A nikdo Otázky mohou být položeny. Může dělat jen to, co jste řekl. Jo, a pokud máte dnešní skluzavky otevře v kartě, nedívejte se na kartě. OK? Publikum: OK, nakreslete kruh. Slope-- mohu říci svahu? DAVID Malan: Až vás. Diváků: ve svahu. A trojúhelník. DAVID Malan: Dobře. A tady zůstat jen na chvíli. A já jdu přijít asi za chvíli. A není nutné dát své jméno na to. Nech mě jít kolem a sbírat své kresby, pokud vám nevadí, že trhá ven. Zde je to, co jsme se vrátili. Já to promítat na obrazovce. Vidím čtverec, kruh, svah, a trojúhelník. Takže tam jedna odpověď. A let's-- pokřiky. Děkuji. Tady je jiný sortiment, a jeden za ním. A tak se všichni zdají zachytit ducha. Děkuji. Je tu další, a tady je ještě jeden. Výklad svah je trochu jinak, trochu křivky. A nejbližší, buď z důvodu nádherné specifičnost, se kterou jsem popsáno, nebo možná trochu viděl, že předtím, je to skutečně Co Victoria byl vlastně popisovat. Ale teď, ti z vás, kteří Nedostal to úplně v pořádku, pojďme nabízejí některé námitky zde. Takže Victoria první řekl nakreslit čtverec. A teď, můžeme předpokládat, z důvodu dnes že každý ví, Jak nakreslit čtverec. Ale to není zcela jasné, že jo? Jak jinak byste mohli mít přilákalo náměstí, nebo tam, kde může být některé z nejasností Zde pro počítač? Publikum: Umístění a velikost. DAVID Malan: Místo, že jo? Všichni z vás měl papír nějakém tvaru, Obecně obdélníky, ale mírně různých velikostech. Ale určitě mohl vyvodit, pokud byste chtěli, velký čtverec, možná malý čtverec. Možná, že se otáčí. Nemyslím si, že jsme viděli, že. Ale mohlo to být ještě diamant podobně, ale přesto, přesto, matematicky čtverec. Takže to byl pravděpodobně nejednoznačný. Pak řekla, nakreslete kruh. Někteří z vás se to nakreslit vedle to, což není nerozumné, protože lidé mají tendenci si myslet, nebo číst zprava doleva ve většině jazyků, takže ne špatný odhad. Ale že kruh by mohl mít Byl uvnitř náměstí, mohlo být kolem čtverec, by mohlo být na jiném místě na list, takže pravděpodobně nejednoznačný. Sklon by mohl být možná přičemž nejvíce svobody verbálně s tím, co to znamená. A někteří z vás interpretovány že jako klikatou čarou nebo přímka nebo podobně. A pak trojúhelník, taky by mohl mít orientována v mnoha různými způsoby. Takže ve zkratce, dokonce s něčím, vám pohled a jsi jako, wow, tak jednoduchý, mohl dítě kreslit to, no ne Opravdu, pokud nejste super, super přesvědčivý a řekli počítači přesně to, co má dělat. Takže pokud jsme mohli, pokud máte další list papíru, pojďme zkusit to ještě jednou. A já jdu dát Victoria jedno Dalším příkladem na obrazovce zde. A opět, ne otočit a nedívejte se na vaše snímky. A já jí dám chvilku přemýšlet o tom, jak popsat to. Nedovolte jim vidět strach ve tvých očích. [SMÍCH] A opět, tentokrát pákový efekt Některé z těchto stánek s jídlem a pokusit se získat téměř každý alespoň správná odpověď. Publikum: OK, trvat kus papíru, podívejte se ve středu tohoto kusu papíru. Ve středu tohoto kusu papíru, nakreslit krychli. [SMÍCH] DAVID Malan: Co jsme se naučili? Byli jsme tak blízko. OK, opakuji, pokud mohl, pro každého. Diváků: Ve středu kus papíru, kreslit objekt, který vypadá jako krychle. DAVID Malan: OK, to je vše, co se do práce s. Dovolte mi, abych se analytický a ne tolik kritická, ale aby pohledávku že Victoria rozhodně Zdá se, že myšlení ve velmi abstrakce na vysoké úrovni, které není nepřiměřená. Protože jinak bychom byli všichni být dost dysfunkční, pokud bychom museli být někdy tak přesná se vším, co děláme ve světě. Ale řeč jdi do middle-- I myslel, že jsme byli na takové dobré cestě tam, stejně jako jít do samého středu stránky, a pak nakreslit krychli. Takže si myslí v abstrakci, protože ona je stále prohlížení co je na obrazovce skutečně kostka. Ale je tu tolik příležitostí pro interpretaci tam. A ve skutečnosti, tam je tolik Jiné způsoby, jak byste mohli vyjádřit To, co budu navrhovat za chvíli. Takže tady máme jednu inkarnaci z picture-- whoops-- jednom ztělesnění obrazu, takže Trochu tři rozměrnost k tomu, což je hezké. Tady je ještě jeden, kde máte Totéž, i když je to trochu otevřené krychle. Někteří lidé to trvalo trochu více ploché, dvourozměrné. A to je v pořádku. Takže tam, opravdu v střed papíru. Tenhle Myslím, že budete podobně, protože když jdeme sem, To je to, co popisoval. Takže teď mi dovolte, abych navrhnout jak jinak bychom mohli popsat tuto situaci. Zpět v den, jeden z nejvíce Běžnější způsoby, jak se učit programování Byl psát kód, píše linie instrukcí, které jsou řízeny trochu želva na obrazovce. Logo a další varianty bylo jméno jazyka. A želva žil ve světě. Takže předpokládám, že tento obdélníkový prostor je jeho svět. A vy byste začít tím, že assuming-- I opravdu nevím, jak k tomu želvy, takže pojďme to takhle. A pak, že má skořepinu a pak možná několik stop. Takže můžete mít tento malý postava na obrazovce. A předmětem tohoto programovací jazyk bylo přimět želvu jít nahoru, dolů, doleva, doprava a předložit své pero nebo vyzvednout jeho perem nahoru, aby mohl skutečně čerpat na obrazovce V této velmi rovné obdélníkové světě. Tak kde jsem myslel, že byste mohli jít, a kde byste měli zvážit potápění dolů psychicky při popisování Pokyny obecněji Já bych tvrdit, je dát své pero dole v middle-- a my zbavit želva, protože nemůžu zachovat přitáhla ho velmi dobře. A teď, jak jinak by mohl Říkám nakreslit krychli? No, mohli bychom říci něco jako remízu diagonální linie severovýchod, například, nebo v úhlu 45 stupňů směrem nahoru. A to by mohlo mě sem dostal. A jsem docela daleko od krychle. Ale teď, mohl bych něco říct jako otočit o 90 stupňů doleva a nakreslit čáru stejné délky severozápad. A mohl bych pokračovat s podobnými směrech. A to nebude snadné. A upřímně řečeno, pravděpodobně bychom tady už po dobu pěti minut. Ale možná bychom se dostali do něco, že na konci dne, přestane být kostka, ale my potápěl uvnitř této abstrakce jak to udělat na tak nízké Úroveň že nemůžete opravdu vidět, co děláte, dokud se celá to je ve skutečnosti tam na stránce. A tak to je obecná zásada, opět z programming-- této myšlenky abstrakce. Je to tak úžasně silný, protože znovu ona jen řekla, nakreslit krychli, které jsou všechny nás do značné míry by Grok velmi rychle. Rádi bychom prostě pochopit, OK, nakreslit krychli. Mohli bychom nevěděli orientaci, takže jsme mohli být trochu přesnější, ale můžeme obecně obraz nebo vědět, co je krychle. A to je užitečné, protože pokud pokaždé, když sedl jako programátor v klávesnici psát kód, pokud byste měli myslet na takové nízká úroveň, nikdo z nás by nikdy dostat udělat cokoliv. A jistě by nikdo z nás nyní proces psaní kódu. Bylo by to jako psaní 0 a 1 letech, což upřímně řečeno nebylo vše tak dávno Lidé psali kód 0 a 1 je. A my jsme velmi rychle přišli s Tyto vyšší úroveň languages-- C ++ a Java a další. Takže pojďme zkusit ještě jednou jen proto, aby otočit tabulky, takže každý z nás mají možnost přemýšlet v poněkud stejným způsobem. Mohli bychom získat ještě jeden dobrovolník tento čas přijít k tabuli a kreslit, ne recitovat? Jo, OK. Bene, pojď nahoru. A Ben, v tomto případě, jakmile vás čelit prkno, nevypadají vlevo, nevypadají dobře. Jen to, co vaše kolegům, aby vás tady říct. A pro všechny ostatní v pokoj, nyní jsou programátor. On je ten počítač. A obraz jsem zde zvolil v předstihu je to jeden tady. Jsou jen-- si myslí legrační vtip je vše. Tak by se někdo chtěl dobrovolník první instrukce nebo prohlášení, že by příkazové Benův pero? A budeme to dělat společně, možná jedna instrukce od každého člověka. Omlouvám se? Diváků: Nakreslete kruh. DAVID Malan: Nakreslete kruh Je to první věc, kterou jsem slyšel. Diváků: Up nahoru. DAVID Malan: Až nahoru. OK, můžeme nechat vymazat, vrátit zpět. A teď někdo jiný. Dan, měli byste být pohodlné nabízí další instrukce? Publikum: Jasně, kreslit střed ze spodní části kruhu, s small-- trochu malý prostor od toho, nakreslit přímku dolů na tři čtvrtinách cesty dolů desce mírném úhlu k levé straně. DAVID Malan: Dobrý. Diváků: pod mírným úhlem. DAVID Malan: Undo, Control-Z. OK. Andrew, chcete nabídnout up další instrukce? Diváků: Jistě. Ze spodní části této linie, další mírné angle-- whoops-- možná asi třetina délky [neslyšitelné] mírným úhlem dolů a se jako třetině délky [neslyšitelné]. Tak jo, od tohoto bodu, nakreslit čáru třetiny délky předchozí řádek dále vlevo. DAVID Malan: To jo? Přímka, to je v pořádku? OK, Olivier, chcete nabídnout až příští? Diváků: [neslyšitelné] z Spodní část kruhu, [neslyšitelné]. Čerpat na pravé straně z [neslyšitelný] centimetrů. [SMÍCH] DAVID Malan: Myslím, že budete muset převést to palce tady. Diváků: Zastavit. [SMÍCH] DAVID Malan: OK. [? Ara,?] Chcete nabídnout až příští? Diváků: Nakreslete [neslyšitelné] horní [neslyšitelné] stejné. [Neslyšitelné] kruh, kreslit na [Neslyšitelné] a čerpat [neslyšitelný]. DAVID Malan: OK, nic víc vrátit zpět. Udělejme ještě jeden nebo dva instrukce. Chris, chcete nabídnout jeden? Diváků: Na dně kruhu, [neslyšitelné] kreslit rovné čáry slopping dolů doleva [neslyšitelný]. DAVID Malan: OK. Andrew? did-- jsme Karim? Diváků: Od pravého linie, konec levého vedení, spodní, se chystáte jít pravdu stejně dlouhý jako tento řádek jste na, kreslení na právo [neslyšitelné]. [Neslyšitelné] stupňů, takže [neslyšitelné] stupně na pravé straně. DAVID Malan: Dobře. Pojďme pauza. Neotáčej ještě kolem. Pojďme pauza, a pojďme vyzkoušet jeden další pokus Než jsme se odhalit k Benovi co on byl kreslení. Můžete zamíchat Bena right-- nebo ve skutečnosti, no, ať to jen dát další deska, ještě lepší. Takže by někdo chtěl podnikem aby se více přístupu že Victoria vzal dříve, pokud mluvíme ve vyšší úrovni abstrakce a jen větě nebo dva popsat Bena co k tomu, aniž dostat se do plevelů, tak říkajíc, na to nižší úroveň? Victorie. [SMÍCH] Diváků: nakreslit postavu z kráčejícího muže. A jeho nohy a ruce musí být na pravé straně. DAVID Malan: OK, to je vše, co dostanete. Dobře. Proč ne my odhalit Benovi, co udělal. Tak potlesk. To byla ta nejtěžší možná. Takže i když mluvíme V poměrně hloupé, pokud jde asi jen kreslení Fotografie, snad budete může opravdu ocenit míru výraznost, že by mohlo být nutné aby říci počítači, co má dělat. A ve skutečnosti, že Ben byl schopen nakreslit tak rychle je trochu zákoně použitím jazyk, možná vyšší úroveň verze angličtiny, která umožňuje ho stačí použít slova, nebo slyšet slova od Victorie, že mu umožňují Tyto abstractions-- jen kreslit postava chůzi na right--, že druh má někteří sémantický význam pro to, aby není zdaleka tak zřejmé, když jste jen řka: dát své pero, kreslit doprava, kreslit doleva. A tak to taky, je velmi obyčejný v programování. To by se říci, že se jako velmi nízká úroveň jazyka, programování v 0 a 1, pokud budete. A to by byla vyšší úroveň programovací jazyk Java, nebo něco takového. Tak trochu zjednodušením, ale to je ten typ jako emocionální pocit, že cítíte, když pomocí jedné takové věci nebo jiný. Trochu frustrace zde potřebou Pro takovou přesností, ale příležitost být trochu volnější s Výklad zde. Ale samozřejmě, chyby může vzniknout jako výsledek. Pokud byste chtěli na home-- my nebude dělat toto jeden v class-- ale pokud chcete přivést tuhle domů, Myslel jsem, že bychom se ponořit do tohoto. Takže pokud byste chtěli zahrát Hra s vaší dalších významných nebo děti nebo podobně, vy se mohou těšit, že stejně. Tak pojďme do toho a podívejte se na jeden poslední věc, kterou zde pro počítačovou myšlení. A to nás přivádí k Johnovi Oliver, ne pro klip jste mohli vidět v noci, ale poněkud nedávném vydání. Několik měsíců zpět, Volkswagen trvalo docela dost ostré kritiky z jakého důvodu, pokud víte? Co se dostanou do problémů? Jo, tak oni emissions-- se snaží porazit emisí Testy v podstatě mají své auta znečišťují životní prostředí méně kdy byly testovány jejich auta a znečišťují životní prostředí více kdy nebyly testovány auta. A co je čím dál zajímavější ve světě, protože můžete mít odvozený z diskusí o jako--, co je to-- CarPlay, software Apple pro automobily a skutečnost, že mnoho z nás stále více mají dotykové obrazovky v našich autech, tam je děsivé množství softwaru v lidové auta dnes, což Upřímně otevírá zcela plechovku červů, když jde o bezpečnost a fyzické nebezpečí. Ale pro dnešek, pojďme soustředit se pouze to, co je zapojený do psaní softwaru která by mohla gamed systému. Pro definici jednotky Problém, pro ty, kteří neznají, pojďme se podívat na Johna Olivera. A pro ty, kteří znají Problém, pojďme se na to podívat v zábavném objektivu přes John Oliver stejně. Takže mi dovolte hit hrát na to, I myslím, tři minuty úvod. Sakra. [VIDEOPŘEHRÁVÁNÍ] -Auta-- DAVID Malan: Je zřejmé, na YouTube, it's-- - --the Nejchytřejší znaky Rychle a zběsile filmy. Tento týden, německý výrobce automobilů Volkswagen ocitlo ve středu skandálu potenciálně kriminální poměry. -Volkswagen Se připravuje o miliardy na pokutách, možné obvinění z trestného činu pro své manažery, as Společnost se omlouvá pro rigging 11 milionů vozů pomoci mu porazit zkoušky emisí. -Certain Modely dieselové byly navrženy s sofistikovaný software, který použité informace, včetně pozice volantu a vozidlem rychlost, aby se zjistilo auto bylo prochází měření emisí. Na základě této okolnosti, motor sníží toxické emise. Ale auto bylo zmanipulované do bypassu že když to bylo v provozu. Emise zvýšil 10 až 40 krát nad přijatelnou úroveň EPA. -Wow, 10 až 40 krát větší než EPA dovolí. To je ta nejhorší věc, Volkswagen kdy udělal, Je něco, co byste mohli říci, zda byste nikdy neslyšel o druhé světové války. Ale možná nejjistější známkou toho, jak mnoho problémů Volkswagen je, je, že lidé na samém Nejlepším hráčem již odstoupil. Generální ředitel rezignoval ve středu poté, usilovně snaží dělat škodě kontrolu, říkat on byl nekonečně líto, která znělo skvěle, dokud se ukázalo on byl jen 10% líto ale že zmanipulované ústa na uměle jeho sorriness. A mezitím Volkswagen USA Šéf měl omluvu vlastní. -Nech To být jasné, o tom, naše společnost byla nečestné. A v mých německých slov, my totálně podělal. Jo, ale naprosto šroubované up nejsou Německé práce. A německý jazyk má mnoho krásných frází popsat situace, stejně jako to, jako je [německý], což znamená, hrubě, smutek, který přichází z podnikání související lží, nebo [německý], který překládá jak hanbit ones otce zahrnující mraky benzínu. Je to krásný jazyk. Je to jen plaví z jazyka. A mimochodem, zatímco muže omluva může mít znělo upřímně, je třeba poznamenat, že mluví na oficiální zahájení party pro rok 2016 Volkswagen Passat, což znamená, že krátce Po omluvy, to řekl. Děkuji moc za návštěvu. Užijte si večer. Až příští je Lenny Kravitz. [MUSIC PŘEHRÁVÁNÍ] -OK, OK, ukončení svého omluva až příští Lenny Kravitz není křičet střízlivý lítosti. To křičí, jsme se zeptali Bon Jovi, a on řekl, že ne. Značka Volkswagen má byl těžce poškozen. A upřímně řečeno, jejich nová reklama Kampaň není zrovna nepomáhá. - [Německý], my ve Volkswagenu chtěli omluvit za klamání vás naše vozidla. [END PŘEHRÁVÁNÍ] DAVID Malan: Takže to byl oklikou of-- sorry-- to byl kruhový objezd způsob zavedení zásadní problém v softwaru, což je to, že je třeba detekovat určité podmínky. A tak otázka, na dosah ruky zde je, jak se auto potenciálně jak je implementována v softwaru těmito programátory, zjistí, že je to vlastně testuje? Takže bylo super jasné, co dělali byl, v prostředích, kde programátoři přišel auto bylo bytí testovány, se nějakým způsobem auta vypouštějí méně emisí, méně emise, takže méně toxické výpary a podobně. Ale když je to normálně jízdě na silnici, by to prostě vydávat tolik Znečištění, jak to chtěl. Tak jak bychom mohli psát pseudocode pro tento algoritmus? Jak bychom mohli psát pseudocode za software běžící v autě? Myslím, že v kostce, to vře až něco takového. pokud testuje, vypouštějí méně. jinde vyzařuje víc. Ale to je trochu příliš vysoké úrovni, že jo? Zkusme se do toho ponořit, co to abstrakce zkoušet prostředků. Jinými slovy, i když nevíš nic o autech, jaké otázky můžete požádat, aby se zjistilo, zda jste testuje, pokud jste auto? Jaké vlastnosti by mohly být předloží v případě, že vůz je vyšetřováno? Diváků: Zkušební zařízení. DAVID Malan: Zkušební zařízení. Takže pokud zkušební zařízení V blízkosti, pak vypouštějí méně. Tak jsem si dokázal představit realizaci že s nějakým druhem kamer nebo detekci co se děje kolem vás. A dovolte mi navrhnout, že prostě připadá příliš komplikovaná skutečně mít další hardware právě k tomuto účelu. Diváků: Pokud jste v park, pokud vaše digestoř je otevřen. DAVID Malan: V parku, nebo kapota otevřené, takže to je dobře. Diváků: A auto běží. DAVID Malan: Tak to je trochu více concrete-- a auto běží. Takže by to být konjunkce několik různých podmínek, chcete-li. Takže pokud je vůz v parku, a to i i když se jedná o velmi mechanická věc typicky, mohl bych představit psaní software, zejména proto, že je tu Často lehký tam v těchto dnech, Nemohl jsem si představit, že tam software, který dokáže dotaz posunovač nebo co ne, jste v parku, jsou jste v jednotce, jste v opačném pořadí. A mohu získat zpět, odpovědět, že je buď ano nebo ne tyto druhy otázek. A tak jsem mohl pravděpodobně také odpovědět Na takovou otázku, je kapota otevřená. Možná, že tam je nějaký druh senzoru že buď mi vrací 1 nebo 0, pravdivý nebo nepravdivý, kapota je otevřená. A pak auto běh, jsem mohl odhalit že nějak přes jakým mechanismem? Stejně jako, auto běží, já mohl zjistit, že je to tak, Nemohl jsem zjistit nějak že je vůz v pohybu? Diváků: RPM. DAVID Malan: Jo, takže je tu Vždy, že jehla, že řekne vám, kolik otáček za minute kola zažívají. A tak jsem se mohl dívat na to. A pokud to není 0, která pravděpodobně znamená, že je vůz v pohybu. Ale musíme být tam trochu opatrný, protože-- pojďme zjednodušit tohle-- kdybychom právě řekl, pokud auto běží, Nechceme jen vypouštějí méně, Chceme-li běží auto a to je právě testována. Takže existuje několik dalších přísady, které lidé předpokládali software dělá, z důvodu chybějící skutečné zdrojového kódu, můžete jen jakýsi vyvodit z fyzikální účinky auta co k čemu by mohlo být děje pod ním digestoř v softwaru. Takže pokud běží auto a možná, řekněme, zadní kola se nepohybuje, Může to být pouze orientační nějakého druhu testu? Co jsem narážel tady? Jo, možná, že je to na jednu z těchto válečkových věcí, kde stejně jako kola se otáčejí v přední nebo v zadní, V závislosti na tom, zda je to přední kolo nebo pohon zadních kol, takže polovina kol jsou v pohybu, ale Další dva nejsou, což Je to zvláštní situace v reálném světě. Pokud jedete na silniční, že by se nemělo stát. Ale pokud jste ve skladu na nějakém systému kladek pásu, která by mohla skutečně stát. Myslím, že lidé také navrhl, že možná, v případě, že auto je spuštěn a řízení kolečko nepohybuje, že také může být signál, protože to je rozumné jako rychle jsme na silnici. Ale i pak, člověk je pravděpodobně pohybující se trochu nebo rozhodně v průběhu několika sekund. Nebo průběhu minuta, šance jsou to není bude fixována v přesně stejnou pozici. Takže jinými slovy, může trvat odčítání, jste testuje, a rozebrat tuto funkci do těchto dílčích složek. A to je skutečně to, co je Volkswagen inženýři nějak udělal. Psali software vědomě zjistit, zda se testuje vůz, Proto vypouštějí méně, jinak emitují obvyklým způsobem. A problém i zde, je to, že software není něco, co můžete opravdu vidět, ledaže máte takzvaný zdrojový kód. Takže tam dva různé typy code-- alespoň dva různé typy kódu na světě. Je tu něco, co nazývá zdroj kód, který není nepodobné tomu, co jsme psali, zdrojový kód. To je zdrojový kód napsaný v jazyk s názvem pseudocode, což je prostě něco anglicky podobně. Neexistuje žádný formální definici. Ale C a Java, C ++, ty jsou všechny formální jazyky, které, když píšete v nich, co máte je textový soubor obsahující zdrojový kód. Ale je tu také něco svět volal strojový kód. A strojový kód, bohužel, Je jen 0 a 1 je. Takže strojový kód je co Stroje pochopit, samozřejmě. Zdrojový kód je to, co lidé rozumět. A obecně, ale ne Vždy, je program že programátor používá zdroj, který bere Kód a stáčí se do strojového kódu. A to je program obecně nazývá překladač. Takže váš vstup je zdrojový kód, Váš výstup je strojový kód, a kompilátor je kus software, který dělá tento proces. Takže to vlastně mapuje pěkně naše vstupy, algoritmy, výstupy. Ale to je velmi specifická ztělesnění z toho, což znamená, že, i když vlastníte jeden z Volkswagen je auta, která je vinu za tento stav, není to jako stačí otevřít kapuce nebo otevřít tento návod nebo hledat na zdrojový kód, protože v době, kdy dosáhne své auto v příjezdové cestě, už je to převede na 0 a 1 je. A je to velmi těžké, ne nemožné, ale velmi těžké sbírat nic moc ze jenom při pohledu na podkladových 0 a 1 je. Takže si můžete přijít na to, v konečném důsledku, pokud pochopit, jak stroj operates-- Intel inside-- jestli mi rozumíte Intel architektura, ale je to velmi časově náročné. A i tam, možná budete nebude moci vidět vše že kód může skutečně udělat. Případné dotazy týkající se tohoto nebo tohoto druh procesu obecněji? A skutečně, můžeme přivázat tuto diskuzi na včerejší diskuzi o Apple. I to je důvod, proč FBI nemůže jen tak jít a podívat se do telefonu podezřelého a najít řádky kódu, pro instance, které umožňují heslo nebo umožňují této 80-milisekund zpoždění. Vzhledem k tomu, v době, kdy je to Na ten chlapík iPhone, už je to převedeny na 0 a 1 je. Dobře, pojďme pauza zde pro naše podívejte se na výpočetní myšlení. Proč bychom si pauzu 15 minut. A když se vrátíme, zmíníme podívejte se na programování sama o sobě a začít mapovat některé z těchto pojmů na vysoké úrovni ke skutečnému, pokud hravý, programovací jazyk.