DAVID Malan: Vitajte späť, všetci. Takže včera, budete pripomenúť, že sme sa zamerali na týchto témach tu. Takže sme mali štyri zastrešujúcej topics-- súkromie, bezpečnosť a spoločnosť; Internetové technológie; cloud computing; a nakoniec, vývoj webových aplikácií. Povedal niekto mať šírka pásma alebo doba sa pozerať trochu Johna Oliver minulú noc? Je to vlastne celkom zábavné, ak nie trochu desivé. Akékoľvek otázky na čokoľvek sme robili včera? Nejaké vysvetlenie? Akékoľvek otázky, ktoré chcete, aby sa istí, že sa dotýkame dnes v nejakej forme? Tak čistý štít. Takže to, čo je na programe dnes? Tak som si myslel by sme dnes začína s pohľadom na to, čo je všeobecne známy ako výpočtovej thinking-- na Riziko zjednodušujú, myslenie ako počítač, možno premýšľať ako inžinier, a snaží sa začať organizovať svoje myšlienky alebo aby vám lepší pocit čo sa podieľa na skutočnosti veliaci počítačový niečo urobiť prostredníctvom programovania. A my ho budeme držať pri docela na vysokej úrovni, do značnej miery anglicky, ale skúste použiť povedome príklady, ako formalizovať by si ísť o riešení problémov. A budeme znova nejaký SK témami, ako je abstrakcia, ktorý prišiel pár časov včera, algoritmy a potom reprezentácie. A to je miesto, kde začneme dnes za chvíľu. Potom sme sa pozrieme na programovanie. My sa pozrieme na niektoré základné pojmy s ktorou by mohla byť oboznámení a možno dokonca nájsť pomerne intuitívne. Pozrieme sa, v skutočnosti, pri programovaní vzorky Prostredie, ktoré je veľmi dobre prístupný, veľmi hravý, a naozaj cielené pre deti od 12 a hore. Budeme stráviť pár minút tam a potom vziať veci do nižšej úrovne a vlastne hovoriť o niektorých algoritmy a dátové štruktúry, tak povediac, že programátori zvyčajne používajú riešiť problémy ďaleko viac efektívnejšie, než si možno byť schopní robiť bez nich úplne. Potom po obede, budeme sa pozrieť v technologických komíny, čo je práve ozdobný spôsob, ako hovoriť kolekcia technológií že by ste mohli použiť na vyriešiť nejaký problém. A budeme hovoriť o abecede polievka z jazykov, ktoré existujú today-- Java a Python a C ++ a PHP a Ruby a všetky druhy ďalších vecí. Budeme sa krátko vzhľad v návrhových vzorov. Programátori, v priebehu času, prijali metodík ktoré majú tendenciu, aby im pomohla riešiť problémy ľahšie. Keď začnete vidieť sám seba písanie rovnaký druh kódu znova a znova, ľudia formálne tie opakovania Názvy a pripisujú im a potom ich používať a podporovať ich v konečnom dôsledku. A budeme hovoriť trochu o mobilných stratégiách, ako to, čo to znamená v skutočnosti aby mobilnú aplikáciu alebo mobilné webové stránky. Robíte to pre Android? Robíte to pre iOS? Robíte to pre oboch z nich? A aké sú kompromisy? A potom konečne, vezmeme webové programovanie vzhľad, ktorý je súhrnný termín Naozaj popisujúci kedykoľvek budete písať softvér, ktorý je chcel bežať na webe, či už na telefónoch alebo stolové počítače alebo notebooky. Vezmeme krátky pohľad na databáz a dizajn v ňom, aj keby len preto, že takmer akýkoľvek Zaujímavý webová aplikácia v týchto dňoch má nejaký druh databázy. V opačnom prípade by to proste byť statický obsah. A databázy umožňuje vykonávať zmeny v priebehu času, či už sami alebo od užívateľov. A budeme uvažovať, ako ste by ísť o navrhovaní že databázy a druh žargónu ktoré by mohli prísť v inžinier je diskusia na bielu tabuľu keď v skutočnosti sa vykonáva app prvýkrát. Budeme sa krátko hovoriť o API, užitočné služby ktoré môžete použiť na postaviť na ramená druhých, či už spoločnosti alebo jednotlivci, a vyriešiť váš vlastné problémy rýchlejšie. A potom budeme fušovať možná trochu s JavaScriptom, programovací jazyk, ktorý sa používa Obaja v prehliadačov v týchto dňoch, ale aj v serveroch. A možno, zmienime znova, čas dovolí, niektoré hands-on web, čo sme včera a integrovať dva dohromady, než sme odložiť. Takže s že-- čo je ahead-- je tam niečo chýba, že vás by rád, aby sa ubezpečil vložíme a dotknúť sa v určitom okamihu. Ak je to napadne, vychovať to netrvalo dlho. Ale prečo nie začneme s pozrite sa na výpočtovú myslenie. A dovoľte mi navrhnúť, aby výpočtovej myslenie je, opäť, druh popisu vysokej úrovni čo je to počítačový odborník mohol urobiť. A skutočne, začnime s tromi zložkami, ktoré Môžu ísť až do výpočtovej myslenia. To je len jeden spôsob, ako popisovať to. Mohli by sme iste definovať to v mnohých rôznymi spôsobmi. Ale dovoľte mi navrhnúť, V záujme dnes, že problémy sveta, všetky problémy sveta, pri oslovený počítačový odborník mohol byť považovaná za čo budeme volanie vstupy, ktoré je potrebné, aby sa privádza do toho, čo budeme nazývať algoritmy, ktoré potom výťažnosťou výstupy. Inými slovami, celá Svet riešenie problémov Tvrdím môže byť použitá destilovaná do Tieto tri zložky. Tak čo mám na mysli vstupy? Vstupy je práve to, čo ste podal na vyriešenie. Napríklad, tu je škola problém starý. Ak mám telefónny zoznam tu a Chcem vyzerať do toho, toto je môj vstup. Mám 1000 alebo tak nejako Stránka v telefónnom zozname. Toto je vstup do môjho problému. A ja chcem nájsť niečo Ako Mike Smith, takže priateľa ktorej meno a číslo dúfajme, že v tomto adresári. To je pred dňami bunky telefóny, takže nemôžem len hľadať to. Takže musím urobiť to starý školu a vlastne hľadanie Tieto vstupy pre nejakú odpoveď. A to sa práve chystá odpoveď byť nazývaný výstup. Takže vstup je telefónny zoznam. Algoritmus je taká, akú sadu kroky, ktoré som použiť na nájdenie Mike Smith. A výstup je, dúfajme, Telefónne číslo Mika Smitha. A to by potom bola len Zástupca väčšiny akéhokoľvek problému aby si so sebou rukou vstupmi a chcú vyrábať výstupy. Takže než budeme uvažovať o proces podľa ktorého môžeme tento problém vyriešiť, nálezu Mike Smith a niečo také, uvažujme prvý a že last-- vstupy a výstupy. Fyzicky, samozrejme, vstupné tu Je celý rad papiera zlepené vo forme telefónneho zoznamu. Ale počítača, z course-- notebookov a stolné počítače a dokonca aj telefóny Tieto days-- to sú elektronické zariadenia. A na konci dňa, čo je jediný vstup do počítača? No, je to niečo ako Tento napájací kábel tu. Aj zapojiť ho do steny, a Získam tok elektrónov, ktorý mi umožňuje spustenie stroja. Alebo možno tie elektróny vytvorené prostredníctvom svoje batérie. Ale na konci dňa, to je jediná vec, ísť do môjho notebooku. A ešte oveľa zaujímavejšie látka je v konečnom dôsledku coming out, či už prostredníctvom tlačiarne alebo na obrazovke alebo audially alebo podobne. Takže ak všetci máme ako naše Základný vstup do počítača je elektrina, tak len elektróny dovnútra a von, alebo, a tak ako môžeme použiť tento vstup skutočne reprezentovať informácie? Inými slovami, ako sa dostaneme z jednoduchého prúdu elektriny zastupovanie skutočné čísel alebo skutočné písmená alebo skutočné fotografie na obrazovke alebo skutočných filmy alebo e-maily alebo ľubovoľný počet z nich vyššej úrovne, koncepty ak chcete, že u koniec dňa nejako musia byť uložené v tejto elektronické mechanické zariadenia s použitím iba tie jednoduché ingredients-- elektróny dovnútra a von? Takže sa zdá, že, V najjednoduchšej forme, jediný druh stavov Mám v mojom svete, a preto na speak-- podmienky v mojom world-- je buď Mám elektróny prúdia elektrina tečúcou, alebo ja ne-- tak ďalej, preč. A poďme formalizovať zapínať a vypínať, ako počítačový odborník môže, len s 1 a 0. Povedzme popísať niektoré svojvoľný ale konzistentné číslo k nemu. 1 znamená, že na, 0 znamená vypnuté. Alebo môžete tiež prezerať si toto ako pravými prostriedky na a falošné prostriedkami. Dalo by sa tiež urobiť čierny a biele alebo červené a modré. Potrebujete k tomu len dva popisovače. A počítač vedci Všeobecne stačí použiť 0 a 1. Takže ak je to ten prípad, môj jediný abeceda sa skladá z 0 a 1 je, ako by som mohol dostať do párneho počtu 2 v počítači, nieto číslo 3 alebo písmeno abecedy alebo obraz alebo film? Ako môžeme nejako bootstrap Sami od tohto základného princípu z 0 a 1 je a v skutočnosti predstavujú niečo zaujímavé? Dobre, poďme dať na túto otázku podrží na chvíľku a zvážiť niečo snáď známe, aj keď ste nepremýšľala o že v každom detaile pre 10, 20, 30, 40, 50 viac rokov. To je čo? Ako by ste vysloviť, že? Nie je to chyták. Číslo, ale čo je to? 1, 2, 3 alebo 123. A ja sa páčilo, ako ste povedal: 1, 2, 3, pretože to je jeden spôsob, ako ho vidíte. 1, 2, 3, to je sekvencia z troch symbolov. Je to obrázky, ktoré sme Teraz majú slová pre. A ak ste tak nejako si ich všetky spolu, typické ľudské anglicky by sa povedať 123. A to je niečo ako Vyššia úroveň koncept, cíti ako pomerne veľkým počtom. Ale ako sa tam dostaneme? No, môže to byť nejaká doba, kedy ste si myslel o tom takto, ale späť v mojom deň, ja druh naučil toto ako stĺpci 1 je, že 10 je stĺp a stĺp 100 je. Tak, ako hovorí Lakis, že je 1, 2, 3, ale je to tiež 123. Ale ako sa dostaneme z bývalý druhej? No, mali by ste spravidla robiť v Stĺpec 100 je, že mám 1. Takže to je ako hovoriť 100krát 1. A potom v stĺpci 10 je, mám 2. Takže to je ako hovoriť 10x 2. V stĺpci 1 je, mám 3. Takže to je ako hovoriť 1 krát 3. A ak pridám tieto veci spoločne, to samozrejme, je 100 plus 10 a 3. A oh, to je dôvod, prečo som si to Vyššia úroveň Pojem 123. Je to len základné matematika, pričom títo symboly majú závažia na ne, ak vás bude zástupného alebo stĺpec hodnoty. A raz som znásobiť všetko out, mám toto číslo. Tak, ako mnohí z vás vedia, ako hovoriť binary-- 0 je a 1's-- ako počítač? OK, perfektné, nikto, alebo nikto z vás si myslí, vy. Ale ja by som vám tvrdiť, v skutočnosti to vedia už. Len musíme nejako vyladiť naše mentálne model, trochu. Ale proces je rovnaký. Dovoľte mi, aby som toto odísť tam hore a Namiesto toho ťahať toto dole na chvíľu. Vo svete počítačov, máme len 0 a 1 je. A tak to, čo je zmení sa čo? No, v mojom ľudskom svete, desiatková sústava, december význam 10, Mám koľko číslic mám k dispozícii? 10, že jo? 0 až 9, samozrejme. A to je dôvod, prečo máme 10 má miesto a 100 jeho miesto. Je-li, že prichádza? No, to je 10 k sile 0. To je o 10 na výkon 1, 10 o sile 2, a tak ďalej. Proste držať násobí stĺpca o 10, rozbiehanie len s 1 v pravom ho tu. Takže vo svete počítačov, iba v prípade, majú binary-- bi význam 2-- alebo 0 a 1 je, my len Naozaj je potrebné zmeniť základ tohto matematiky. Takže inými slovami, teraz jednoducho budeme majú stĺpci 1 a the-- ak je to going-- stĺpci 2 je, The 4 stĺp, a možno aj mimo nej. Prečo to tak je? No, to je 2 do 0-teho výkonu. To je 2 1. To je 2 do 2, a tak ďalej. Takže zatiaľ čo tu máme 1, 10 je, 100 zo 1000, je, 10.000 je, 100.000 je, 1 milióny, a tak ďalej, tu máme 1, 2, 4, 8, 16, 32, 64. Proste držať vynásobením 2, namiesto toho držať vynásobením 10. Takže teraz, keď cieľ na ruka je zastupovať Čísla používajúce iba 0 a 1 je, uvažujme, ako sa tam dostať. To je samozrejme, je vzor 0 0 0, ale aké číslo koncepčne to predstavuje? No, 4x 0 plus 2 krát 0 Plus 1 krát 0, dodajme tie dohromady. 4 krát 0 je, samozrejme, 0, a 2 krát 0 je, samozrejme, 0 a 1 krát 0 je, samozrejme, 0. Takže ach, to predstavuje Číslo my ľudia poznajú ako 0 ° C. No, poďme veľmi Rýchlo rýchlo vpred. Ak som miesto nezastupuje 0 0 0, ale poďme urobiť 1 0 1, to by mohlo byť, ako Lakis, skôr, by len vysloviť to 1 0 1. Ale teraz, ako sme si ju na vyššiu vyrovnať počet my ľudia mohli poznať? Takže to, čo je toto číslo? Je to 5, počet poznáme ako 5. No, prečo tomu tak je? No, môžeme naozaj akýsi prejsť cez to metodicky 4x 1, 2 x 0, 1 krát 1. Pridať tie dohromady, takže To je 4 a 0 a 1. A to je skutočne 5. Tak už to začína byť teraz trochu zdĺhavý robiť aritmetiku znova a znova. Ale proces je rovnaký. Jediná vec, ktorá má zmenilo v našom svete je, že naša stĺpce 1, 2, 4, 8, 16, a tak ďalej, namiesto 1, 10, 100, 1000. A to je len preto, že naša abeceda má zmenšil od 0 do 9. len 0-1. Tak ako malý kvíz tu, by ako Ste predstaviteľom číslo 7 v binárnej? 0? No, 0, myslíš 0 0 0? Povedz to ešte raz, Karina. Dokonalá. Prečo to tak je? Je to skutočne 4 a 2 plus 1. Tak dobré. Ako môžeme reprezentovať trochu another-- ako je to číslo 2? Blízko, ale pospiatky. Takže čo je to? 4 plus 1, takže to je 5 znova. Takže what's-- Je mi ľúto, Karina? 0 1 0. 0 1 0 2 by bolo, pretože znova, a to aj ak to nejako nie je vyskočiť na vás, Len si to spočítajte. 4 krát 0, 0, 2 krát 1 je 2, 1 krát 0 je 0. Takže toto je číslo, poznáme ako 2. Ako o počte 8? Hm? Dobre. Takže sme trochu potrebovať ďalšie vyhradené miesto. Musíme 1 0 0 0. A to platí aj pre nášho druhu zo starej školy desiatkovej sústave. Ako si predstavujú počet 1000? No, mali by ste sa zdajú byť druh v ťažkej mieste, ak vás požiadať, aby ste reprezentovať číslo 1000, pretože aj keď dávaš ako 9 z nich, 9 z nich, 0 z nich, čo je najväčší číslo máte, ste celkom nedostane až 1000. Takže ak vás 1,000, stačí ďalší pozície, takže si môžete urobiť 1 0 0 0, ergo číslo 1000. Takže teraz, poďme Pre tento druh koncepčné diskusie späť do hardvéru, kde opäť, vstupné bol len tento malý napájací kábel, elektrina dovnútra a tečie von. A tak, že budú zmapované odtiaľ tam, no, čo naozaj potrebujeme? No, môžete myslieť, že sú vo vnútri počítač, celá banda žiaroviek, ak chcete. Sú naozaj volal tranzistorov. A tranzistory sú len spínače ktorá môže byť buď zapnutý alebo vypnutý. Takže si môžete myslieť na tranzistor, ktorý je na je umožniť elektrina prúdiť a tranzistor, ktorý je preč ako zastavovanie elektrickej energie z tečúcej. A skôr ako brať nad svetlami tady, prečo nie ja robiť tento druh z nového školského štýlu. Takže to môže byť jedno, baterku bytia na len ťažko hoci. A to môže byť 0, a teraz je to preč. Takže použitie tohto fyzického zariadenia I Teraz môže predstavovať binárny systém. Potrebujem len dva stavy. Nezáleží na tom, aké zafarbiť to je, alebo čo to je. Záleží len na tom, že mám jeden stáť na iný štát a vypnúť. Takže používať svoj telefón tu, ako to mám predstavuje počet poznáme ako 0? Alebo dať ekvivalentne, čo Číslo som teraz zastupuje? 0, pretože zariadenie je vypnuté. A keby som to urobil? A teraz, ako to mám predstavujú číslo 2? Môžem si požičať váš telefón Tu, ako sme včera? Tak sa pozrime, takže keď chcem reprezentovať číslo 2, je toto číslo 2? Nie. Aké číslo som ja náhodou predstavujúce tu? Jedná sa vlastne o číslo 3. Takže, ktorý z nich nechcem vypnúť? Čierny telefón nebo-- dobre, ak they're-- čierny telefón alebo biely telefón? Biely telefón. Takže keď som túto funkciu vypnúť a my porovnajte ju tu, máme 1 na miesta 2 a a 0 na mieste 1. je. A tak som teraz predstavujúce číslo 2. A to, samozrejme, by bol počet 3, pretože sa obe z týchto svetiel sú zapnuté. A budem tu zastaviť, ale to dá rozum keď chcem reprezentovať číslo 4 alebo 8 alebo vyšší, Budem potrebovať viac telefónov. Ale to je všetko, čo sa deje. Takže ak ste niekedy počuli, že Vnútro je-- poďakovať vás-- počítača Je milióny tranzistorov, to je Len milióny drobných malých prepínačov. A nie sú to ľahké žiarovky, ktoré sa zapínajú zapnutie a vypnutie, ale nemajú buď povoliť elektrinu tiecť niekam alebo zastaviť. A tak je tu vašu dva states-- zapnúť alebo vypnúť, zapnúť alebo vypnúť. Takže by sme sa zdajú teraz majú túto schopnosť reprezentovať tento koncept, ktorý Radi by sme v skutočnom hardvéru. Ale všetko, čo máme teraz, je schopnosť predstavovať čísla by sa mohlo zdať. Tak ako sme ísť o reprezentovať písmen abecedy, ktoré cíti sa ako ďalší druh funkciu, ktorú by chcel pridať do moderného počítača Akonáhle budete mať čísla? A skutočne, ak sa nad tým zamyslíte IT, historicky, počítače Boli zavedené skutočne slúžiť sú kalkulačky numericky. Ale samozrejme, títo dni, oni robia oveľa viac. Dokonca aj keď nabehnúť, vy typicky vidieť jedno alebo viac slov. Tak ako sa vám predstavujú slová, ak všetko, čo máme, je, opäť, elektrina na konci deň, alebo ekvivalentne 0 a 1 je? Jo. Jo, myslím, sme trochu robili to včera v nejakej forme, kde na nejakom mieste, Myslím, že svojvoľne uviedol, že ak chceme reprezentovať písmeno A, môžeme len hovoriť, že 1. To bolo v kontexte kryptografia, kde sme len potrebovali nejaký kód, nejaký druh mapovanie. Takže možno bude zastúpená ako 1 a B budú zastúpené ako 2, a Z budú zastúpení ako 26, napríklad. A potom len Nevýhodou je, že keď som bude kódovať písmená v mojej e-maily alebo v mojich textových správ ako čísla, vy všetci musieť dohodnúť použiť Rovnaký súbor konvencií. A skutočne, svet urobil presne to. Tam je systém na svete volal ASCII, American Standard Kód pre výmenu informácií, čo je jednoducho rozhodnutie o niekoľko rokov Pred že ľudia stanovené, že rozhodol, že sa bude rovnať, nie 1, 2 a 26, a preto je to forth-- málo different-- ale 65, 66, 67. A budem vytiahnuť graf za chvíľu. Ale je to naozaj svojvoľný. Ale to nevadí že je ľubovoľná. Svet má len byť konzistentné. Teraz, v poslednej dobe, je tu niečo milovník volal Unicode, pretože svetové druhu realizovaných po vynaliezania počítačov, že je tu viac než dobre 256 symbolov na svete že by sme mohli chcieť reprezentovať, zvlášť keď si predstaviť Ázijské jazyky a iné symbológie ktorí potrebujú väčšiu výraznosť než vy vojde v najskoršie verzii Tento kód, ktorý bol nazývaný ASCII. Takže Unicode skutočne umožňuje môžete použiť viac 0 je a 2. Predovšetkým budete mať vypočutí Slovo bytov v spoločnosti a dokonca len včera. A byte je opäť to, čo? Čo je to byte? Je to len 8 bitov. Tak čo to vlastne znamená? No, to znamená, že skôr, keď sme boli hovoríme o binárne a bol som s použitím svojvoľne tri bity, keď sme boli hovorí o binary-- miesta 1 je, Na 2 je miestom, a to place-- dobre 4, byte jednoducho znamená, že hovoríte nie je v jednotkách po troch, ale štyri, päť, šesť, sedem osem, čo nám dáva 8 je miesto, 16 je, 32 je, 64 je a 128 rokov. Inými slovami, trochu nie je všetko že užitočná merná jednotka, pretože je to len ako jeden maličký údaj, zapnúť alebo vypnúť. Takže pred niekoľkými rokmi, svet sa rozhodlo, to je o niečo výhodnejšie hovoriť Podmienky bytov, osem vecí naraz. A tak teda narodil poňatie o bajtu. A tak máme osem bitov tu. A ukázalo sa tiež, pre podobné Dôvody, svet sa rozhodli rokov Pred ktoré k reprezentácii písmeno ASCII, budete používať jednotky z 8 bitov. Takže aj keď nie potrebujú, že veľa, ty si Vždy bude používať 8 bitov predstavujú písmeno abecedy. A to je výhodné, pretože potom ak vás dostať správu, ktorá má 0 0 0 1 1 1 1 0 a následne ďalší 1 1 1 0 1 0 0 1, takže ak dostanete 16 bitov, svet môže len Predpokladajme, že prvé 8 sú jedno písmeno a druhý 8 sú ďalšie písmeno. Nezáleží na tom, koľko ich je. Je to proste vadí, že sme všetci konzistentné keď sme interpretácii týchto bitov. A to bol len náhodný. To znamená, že niečo, ale ja nie naozaj premýšľať o tom, čo to znamená. Takže je to malú bielu lož. pôvodne ASCII v skutočnosti používa iba 7 bitov. A ôsmy bit volal rozšírený ASCII. Ale bod je nakoniec rovnaký. svet všeobecne štandardizovaný na 8 bitov. Takže by to zdá byť trochu obmedzujúce, pretože len môžem predstavujú kapitálu, kapitál B prostredníctvom kapitálového Z. Ale naozaj nie, keď pôjdem to-- je tu banda zdrojov on-line, napríklad, asciitable.com Tento bude trochu ohromujúce na prvom mieste. Ale budem poukázať čo je tu dôležité. To len sa stane be-- a budem walk-- pozrime sa, či idem sem. Tu je, v desatinnej čiarky stĺpec, číslo 65. A v kolóne listu pravá ruka znak, Chr, je písmeno A. A môžete ignorovať, zatiaľ, všetko v stredu. To je hexadecimálne, osmičkovej a HTML kód. K tejto stránke sa práve snaží hodiť Veľa informácií na vás naraz. Ale všetko, čo zaujíma je desatinná stĺpec a stĺpec charakter. Takže podľa tejto logiky, čo je číslo, ktoré svet rozhodol predstavuje malé znak? Jo, 97. A práve pliesť prípadne mierne, aký počet sa svet rozhodol bude predstavovať číslo 1? Správne, pretože we-- 49, zdá sa, tu dole v ľavom dolnom rohu. A teraz, čo mám na mysli? Tak to dopadá, že v počítačových systémoch, je všeobecne základným rozdielom medzi číslom a charakteru. Číslo je vec, ktorú by sme dozvedel vyrastať, keď my sme boli mimoriadne mladí na základnej škole. To, čo ste počítať s tým. Ale postava je len konkrétny tvar, piktogramy, tak povediac, na obrazovke. Teraz, my ľudia nejako vidieť niečo, čo vyzerá takto. A my hovoríme, oh, to je číslo dva. Ale nie, to je len symbol, ktorý vyzerá ako to, čo poznáme ako číslo 2. A tak tam je to zásadný rozdiel medzi skutočnými číslami a znakmi. Jedná sa o číslo. Ale všeobecne, v kontext počítače, ak sa namiesto toho vidieť niečo také quoted-- a vy nie vždy musieť vidieť, že spomenie, ale kvôli discussion-- ak vidíte úvodzoviek čísla, teraz je to postava. Takže toto číslo 2 naspodku kapota vnútri počítača bude zastúpená so vzorom bitov, ktoré predstavujú počet 50 podľa tabuľky online. Avšak, ak počítaču vidí len toto, toto by byť zastúpené s vzor bitu 0 0 0 0 0 0 1 0. Vzhľadom k tomu, by tento znak v skutočnosti byť zastúpené as-- a teraz, Musím myslieť trochu harder-- tak toto charakter by byť zastúpené s 0 0 1-- čo potrebujem tu? 0 0 1 1 0 0 1 0. Ako som to urobil? No to je číslo 50, ak vás množte sa, že pri použití týchto stĺpcov, To je číslo 2, a preto To je dôvod, prečo je táto dichotómia. A to je len teaser teraz k funkciám ktoré existujú v programovacích jazykoch že budeme ešte dnes dotknúť krátko. V programovacích jazykoch, máte všeobecne, ale nie vždy, veci volanie rôzne dátové typy. Inými slovami, je programmer-- keď on alebo ona píše, programátor dostane sa rozhodnúť, v akom formát pre ukladanie jeho alebo jej dáta. Môžete buď ukladať dáta as surové čísla, ako je číslo 2. Alebo môžete ukladať ako struny, alebo postupnosti znakov že by ste všeobecne vyjadriť citácie vo vašom programovacom jazyku. Môžete mať veci called-- Budem zjednodušujú a hovoria im real numbers-- tak čísel, ktorá nie sú celé čísla, ako je číslo 2, ale počty rád 4.56. Takže reálne čísla môžu tiež majú desatinných miest, tak to je iný zásadný kus dát v počítači. A potom dokonca môžete mať Iné typy dát v pokoji. Tak to je len ukážka naozaj o najjednoduchšie rozhodnutie dizajnových že programátor by mohol aby pod kapotou. Tak len ešte nejaké otázky? Takže poďme sa snažiť, aby to trochu reálnejšie. Tento hardvér nie je toľko v užívaní ešte. Ale väčšina každý v tejto miestnosti pravdepodobne vyrástol a stále používa pevné disky nejakým spôsobom. Aj napriek tomu, že väčšina už naše notebooky nie vybavený zariadením, ktoré fungujú ako je táto, Namiesto toho notebooky dnes všeobecne majú Solid State Drive so žiadnymi pohyblivými časťami. A ktorý má tendenciu byť drahšie, bohužiaľ, ale trochu rýchlejšie a je-- dobre, často oveľa rýchlejšie, čo je jeden z dôvodov, prečo. A tiež to nie je generujú toľko tepla. To môže byť menšie, takže je všeobecne čistý pozitívny. Ale to nám umožňuje mapovať trochu konkrétnejšie, čo hovoríme o u 0 je a Úroveň 1 je teraz k fyzickému zariadení. To je jedna vec, pre mňa to talk asi 0 a 1, pokiaľ ide môjho telefónu alebo abstraktne v zmysle prepínačov, že zapína a vypína. Ale čo pevných diskov? Vo svojich notebookoch, ak máte staršie jeden, alebo v stolnom počítači, alebo určite v serveroch Dnes, kde máte pevné disky, ktoré majú Terabytu priestoru, 4 TB priestoru, no čo to znamená? Pevný disk s 1 terabyte kozmických prostriedkov tam je 1 bilión bajtov vnútri nej nejakým spôsobom, alebo ekvivalentne 8 biliónov bitov vnútri. 1 terabyte by bolo 8 terabits alebo 1 bilión bitov, ktoré znamená, že ak máte ťažké drive, máte nejako alebo ďalší bilión 0 je a 1 je vnútri nej. A ak budeme stačí sa pozrieť sa na ľubovoľný obrázok z pevného disku reprezentatívny, to je to, čo pevný Pohon by mohla typicky vyzerať vnútri. To, tiež, je niečo ako starý gramofón hráč ale všeobecne sa viac záznamov vo vnútri, tak na speak-- násobok podnosy, ako sa im hovorí, kovové kruhové disky, a potom trochu čítacia hlava, podobne ako starý gramofón. A že čítacia hlava sa pohybuje dozadu a tam a nejako číta bity. A čo je na týchto podnosy, a to aj aj keď my ľudia ich nemôže vidieť, a to buď v skutočnosti, alebo v tomto obrázku, tam je maličké magnetické častice. A aj keď ste dlho zabudli, ako funguje elektrina, magnetická častice ktorá je nabitá všeobecne Má severný koniec a na juh end-- tak severnej a južnej. A tak sa svet len rozhodol pred nejakým časom že, ak je magnetické protokol v zásade je vyrovnaný takto, sever-juh, hovorme, že 1. Ak je to miesto na juh-sever, nech to len zavolať, že je 0. A tak ak máte na K dispozícii bilión maličký magnetické particles-- a dúfajme, hardware vynaliezavosť v Aby sa otočiť ľuďom okolo Ako vidíte fit-- Ak chcete predstavujú veľa 0 rokoch, vás stačí 8 magnetických častíc všetky vyrovnané takto. A ak chcete reprezentovať Osem 1 je, stačí Potrebujeme 8 magnetických častíc vyrovnaných chrbtom k sebe k sebe takto. Čo mám na mysli touto Magnetické častice? Úprimne povedané, všetky tie roky neskôr, vec, ktorá ešte príde na myseľ Je to chlap, ak vás vyrástol s touto vecou. Toto je pre little-- tie unfamiliar-- Trochu detstvo hračka, ktorá má tento bezsrsté muža tu že má k dispozícii všetky tieto drobné malé čierne magnetické častice, ktoré so sebou prináša. A pomocou tohto červeného palicu, čo je len magnet, môžete mu nejako dať fúzy alebo obočie alebo vlasov alebo niečo na neho. Takže v skutočnosti, ak by sme zoom v, napríklad, toto je druh hry, ktorú Môžete hrať s Wooly Willy. A to je len povedať, títo sú oveľa väčšie magnetické častice než sú v skutočnosti na pevnom disku, a oveľa menej magnetické častice. Ale poďme skutočne vidieť potom, ak máte drobné magnetické častice v pevný disk, ako môžete vlastne používať tie reprezentovať dáta. [Videoprehrávanie] -The Pevný disk je miesto, kde vaše PC ukladá väčšinu svojich trvalých dát. K tomu, dáta cestuje z RAM pozdĺž so softvérovými signálov, ktoré Povedzte pevný disk, ako ukladať tieto dáta. Obvody hnacieho tvrdé prekladať tie, signály na kolísanie napätia. Tie zase ovládať tlačidlá pevného disku pohybujúce sa parts-- niektoré málo pohyblivých časti vľavo v moderných počítačov. Niektoré z týchto signálov riadi motor, ktorý sa točí kovové potiahnuté misy. Vaše dáta sú v skutočnosti uložené na týchto platniach. Ďalšie signály posunúť čítacie / zapisovacie hlavy čítať alebo zapisovať dáta na tácky. Toto zariadenie je tak presné že ľudský vlas ani nemohol prechádzať medzi hlavami a pradenie taniere. Napriek tomu to všetko funguje v úžasnej rýchlosti. [END PLAYBACK] A môžete u vidieť v zadnej časti videa, tam sú všeobecne viac misy. A tak, že čítanie hlava nie je len čítanie na vrchol. Je to niečo ako tri alebo štyri alebo viac čítacie hlavy že pohyb takto, čítanie dát súčasne. Takže je tu veľa zložitosť a druh načasovanie ktorý je zapojený do pevného disku. A vec sa točí naozaj zašiť rýchlo, takže je tu veľa zložitosti. Ale poďme priblížiť trochu hlbšie a vidieť, kde sú tieto magnetické častice a ako sa dostávame sa na ne. [Videoprehrávanie] -Nechaj Je pohľad na to, čo sme práve videli spomalene. Keď krátky elektrický impulz je poslaný do čítacie / zapisovacie hlavy, to prevráti na malom elektromagnetické Na zlomok sekundy. magnet vytvára Poľa, ktorým sa mení polarita malý, nepatrný časť kovových častíc ktorý srsť povrch každého tácke je. Vzor mnohé z nich nepatrný nabité zastavanej plochy na disku reprezentuje jediný bit údajov vo binárne číslo systém používaný počítači. Teraz, ak je aktuálny odoslaný jeden cesta cez čítacie / zapisovacie hlavy, Táto oblasť je polarizovaný v jednom smere. Ak je aktuálna zaslaná opačný smer, polarizáciu je obrátený. Ako sa vám dáta z pevného disku? Len v opačnom poradí úkonov. Takže sú to častice na disk, ktoré sa dostanú prúd vo čítacie / zapisovacie hlavy v pohybe. Dať dohromady milióny Tieto magnetizované segmenty, a máte súbor. Teraz kúsky jedného súboru môže byť roztrúsených po celom podnosy hnacím je, niečo ako neporiadok papierov na vašom stole. Takže špeciálny navyše súbor obsahuje Trať, kde je všetko. Nenechajte si prajete ste mali niečo také? [END PLAYBACK] Takže je spomenuté tam, snáď, je túto tému zo včerajška výmazu. pri odstránení Súbor, včera sme si povedali, že počítač vlastne robí čo, keď ťaháte niečo do koša alebo popolnice? Je to jednoducho zabudne. Ale 0 a 1 je, magnetické častice ktoré vyzerajú ako červené a modré veci tu, alebo moja ruka tu, sú tam stále na pevnom disku. A tak existuje software-- Norton Utilities a Yesteryear a ďalšie modernejšie software--, že práve prehľadá celý pevný disk hľadá na všetky tie 0 a 1 rokoch, pretože Ukazuje sa, že väčšina súborov formáty-- Dokumenty programu Word, Excel súbory, obrázky, Video files-- všetci majú isté vzory, ktoré sú bežné medzi nimi. Každé video súbor môže mať inú video, ale prvé niekoľko bity sú zvyčajne rovnaké. Alebo posledný niekoľko bitov sú zvyčajne rovnaké. A tak s vysokou pravdepodobnosťou, sa môžete pozrieť na tie vzory. A to aj v prípade, že súbor bol zabudnutý, možno povedať, s vysokou pravdepodobnosťou, ale to vyzerá ako dokumentu programu Word, nechá ju obnoviť a un-zabudni na to, ak chcete. A tak to je, ako môžete obnoviť Dáta, ktoré je buď boli náhodne vymazané alebo odstránené alebo úmyselne vypúšťa z akéhokoľvek účely. Naproti tomu bezpečné mazanie čo robí v súvislosti s obrázkom, ako je tento? Presne tak, z nich robí všetko náhodne. Tak to nejako pohybuje niektorých im dole, niektoré z nich hore, ponecháva niektoré z nich bez zmeny, a Všeobecne je náhodný šum z toho, alebo len možno robí všetko Them 0 alebo všetky z nich jeden je. A že tiež môže všeobecne drhnúť vaše dáta preč. Takže vráťme sa k otázke výpočtovej myslenia, pričom máme vzorca vstupy. A algoritmy dáva ste výstupy nakoniec. Zameriavame sa teraz na vstupoch a výstupy, pretože teraz som Tvrdenie, že máme spôsob predstavujúce vstupy a výstupy. Budeme len používať binárne. A bez ohľadu na to, čo sme chcú reprezentovať dnes, či už je to číslo alebo písmeno alebo tisíce z nich v telefónnom zozname alebo obrázky alebo filmy, na konci z, to všetko 0 a 1 je. A tvrdím, že aj keď toto je super jednoduchý svet len ​​s 0 rokov a 1 je, môžeme postaviť sami hore. A my sme videli jeden príklad že s písmenami tak ďaleko. Takže poďme sa teraz zamerať na túto tému Stredná prísada, algoritmus. A vráťme sa k tomu Príkladom Mike Smith. Takže v tomto telefónnom zozname, ktoré síce, nepoužívame tak veľmi nie, je tu problém je potrebné riešiť. Chceme nájsť niekoho, ako je Mike Smith. A čo môžem urobiť, aby sa nájsť Miku? No, mohol by som jednoducho otvoriť toto Kniha jazyku na prvej stránke, a uvedomiť si, ach, som v sekcii A. Mike tam nie je. Musím sekciu S pre Smith. Takže len držať otáčaním jednu stránku naraz. Nechaj ma predstierať, že je to všetko biele stránky a nie Zlaté stránky, pretože nebudeme nájsť Mike v Zlatých stránkach rovnako. Ale ja som v bielych stránkach. A teraz som v sekcii B. Ešte som ho našiel. Tak som neustále zapínať jednu stránku naraz. Jedná sa o algoritmus. Je to sada inštrukcií pre riešenie nejaký problém. Inými slovami, pozrite sa na strana, ak Mike nie je na ňom, otočiť stránku a opakuje znovu a znovu a znovu, v ideálnom prípade pozerať sa dole, ako to robíte. Takže je tento algoritmus, tento proces, je to tak? Prepáčte. Nie, počul som nejaké čísla. OK, ale to je-- jo, je to určite únavné. Rovnako ako, budeme tu celý deň, keby som ďalej hľadať Mika pri tejto rýchlosti. Ale dovoľte mi tvrdí, že je to správne. Je to hlúpe, ale je to správne. Na konci dňa, ak to mohlo trvať, Nájdem Mika, či je tam a ja venovať pozornosť. A ja sa nakoniec dostanú jeho strana. A keď dostanem príliš ďaleko, ak Aj dostať do sekcie T, potom môžem ľahko optimalizovať a len povedať, hm, všetko je hotové. Ja ani nemusíte strácať Čas ísť do Z je. Ale to je veľmi Lineárne prístup, ak vás bude veľmi druh zľava doprava prístup, priamka. A jej správne, ale pomaly. Tak som si pamätám z základke, triedenie z optimalizácie z prvej porovnávač, kde som sa naučil počítať nie o tie ale twos-- tak 2, 4, 6. Je to, oveľa ťažšie áno, ale teoreticky je to faster-- 8, 10, 12, 14, a tak ďalej. Ako sa o tom algoritmu? Je to efektívnejšie? Je to rýchlejšie? Divákov: Je to efektívne. DAVID Malan: Jo, tak je to def-- je to doslova dvakrát tak rýchlo, za predpokladu, že I Nechápte zakopol s mojimi prstami. To je dvakrát tak rýchlo, pretože Ja otočením o dva Stránky naraz namiesto jedného, ​​ale je to potenciálne v správnej, pretože prečo? Publikum: Ty skákanie niektoré z nich. DAVID Malan: Dobre, čo keď sa stane Mike ktoré majú byť sandwiched-- možno, keď som neskôr v telefónnom zozname, Mike sa stane byť zovretý medzi týmito dvoma stránkami, a ja len slepo preskočiť cez neho. Takže potrebujeme tam malú opravu. Raz som narazila na úsek T, I nemôže len tak s istotou povedať, sme nenašli Mike Smith. Asi budem musieť vrátiť sa rovnakou cestou. Alebo v skutočnosti, akonáhle sa dostanem niekoho s názvom S-N, miesto S-M pre Smith, okamžite by som mohol zdvojnásobiť späť, pretože možno, že Bol na predchádzajúcej strane. Ale nemám zdvojnásobiť späť ďaleko. Teoreticky, keď som to na pravej strane čas, len som sa vrátiť o jednu stránku. Takže to pridaním len jeden krok navyše. Tak som šiel dvakrát tak rýchlo, ale ma to stálo jeden navyše stránku. Ale to cíti ako čistú výhru. Ale to nie je, ako väčšina ľudí v táto miestnosť by tento problém vyriešiť. Čo by typický človek, možno Pred niekoľkými rokmi robiť, nájsť Mike Smith? Jo, nenašiel Mika. Čo robím? Tak trochu bližšie, ale ja áno víš-- čo je pravdivé informácie o telefónnom zozname? Divákov: Je to sekvenčné. DAVID Malan: Je to sekvenčné. Je to podľa abecedy. A tak keď som v sekcii M, Mike je jednoznačne na pravej strane, Môžem doslova roztrhať Problém v half-- je to zvyčajne jednoduchšie ako to-- slza Problém v polovici a vyhodiť, takže teraz mám problém, ktorý je už 1000 pages--, že bolo ťažké, pretože si myslím, že skutočne roztrhol telefónneho zoznamu to nie je time-- 1000 strán, ale 500. Takže problém je doslova polovice tak veľký. A to je celkom presvedčivé, pretože s mojimi predchádzajúcimi algoritmy, verzia 1 a 2, bol som len robiť problém jedna strana menšie, dve stránky menšie v tom čase. Zatiaľ čo teraz, urobil som to 500 Stránky menšie naraz. OK, takže teraz, Karim navrhuje že idem do pravej polovice. Takže ja idem hrubo do stredu, plus mínus. A či som to urobil matematicky, Mohol by som ísť priamo do stredu. A teraz si uvedomujem, oh, Som v sekcii T. Vlastne som sa ísť príliš ďaleko. Ale môžem opäť slzný Problém na polovicu, vyhodiť. A moja bytov nie je tak veľký. Je to len, čo, 256 strán alebo 250 Stránky, plus mínus práve teraz. Ale je to ešte oveľa viac ako jednu stranu alebo dve stránky. A tak teraz, idem zhruba do stredu. Oh, ja nešla dosť ďaleko dosť teraz. Takže opakujem, opakovať, opakovať, Opakujem, až budem s nádejou zostáva len raz stránkou. Takže pozýva na otázku, či som začalo so zhruba 1000 strán, koľko krokov to trvalo mi s verziou 1 svojho algoritmu? No, či Mike je v S časť, v najhoršom prípade, to je celkom blízko koniec abecedy. Takže v prípade, že telefónny zoznam má 1000 stránok, Nájdem Mika v 1000 stránok, plus mínus. Možno je to ako 800 alebo tak, ale je to celkom blízko k 1,000. Vzhľadom k tomu, v druhom algoritmus, koľko otáčať stránky maximálne by som mohol vyžadovať nájsť Mike Smith? K dispozícii je 1000 strán, ale som robí im dva naraz. Dobre, takže max ako 500ish, pretože keď som prejsť celý telefónny zoznam, na ktorom mieste, môžem zastaviť. Ale môžem oholí niekoľko tým, len zastavenie v sekcii T. Ale je to v najhoršom prípade 500 strán. Takže koľkokrát môžem rozdeliť 1,00-page telefónny zoznam na polovicu znova a znova a again-- od 1000 na 500 až 250 až 125? Ako dlho predtým, než som narazila jednu stránku? Jo, je to o 10. V závislosti na zaoblenie a tak, že je cca 10 strán celková potreba byť otočený alebo telefónne zoznamy treba roztrhané. Tak to je celkom silný. Začali sme s problémom s 1000-stranový vo všetkých troch týchto príbehov. Ale v prvej algoritmus, to trvalo mi, najhorší prípad, 1000 str zisťuje, Miku. Druhý algoritmus, 500 Stránky nájsť Mika. Po tretie algoritmus, 10 strán nájsť Mika. A je to ešte viac silný, keď si myslíte, o druhu opačného scenára. Predpokladajme, že telefónne spoločnosti budúcom rok možno zlúči dve mestá spolu, a telefónneho zoznamu je naraz Tento silný, namiesto toho, že, takže 2.000 strán namiesto 1000. No, môj prvý algoritmus hľadá Mike Smith v 2000-stránkové telefónny zoznam, horšom prípade, že to bude trvať koľko strana zmení v budúcom roku? Telefónny zoznam je 2,000 strán, tak-- no, nie jeden. V prípade, že telefónny zoznam je dvakrát tak tučný Prvý algoritmus, prvý algoritmus, 2000, že jo? V najhoršom prípade, Mike je naozaj zavrieť do konca knihy, takže je to 2.000 stránok zákruty. Druhý algoritmus ide o dvojky, rovnako ako 1000 stránok. Ale čo v mojom tretine a najnovšie algoritmus? V prípade, že telefónne spoločnosť zdvojnásobí počet strán od 1,000 do 2,000, koľko viackrát potrebovať I slzný že kniha v polovici nájsť Miku? Divákov: Len jeden. DAVID Malan: Ešte jeden, pretože sa o jednu stránku slza, Môžem doslova rozdeliť a panuj, ak chcete, že problém v polovici odber masívne sústo z nej. A tak toto je príklad Účinnosť a pravdepodobne algoritmus s ktorými sme všetci tak nejako intuitívne oboznámený. Ale je to len za správne as mojimi ďalšími algoritmy s tým vyladiť pre druhý algoritmus, ale je to tak oveľa efektívnejšie. A v skutočnosti, to je počítačový vedec, alebo naopak programátor, by zvyčajne robiť pri písaní Kód je pokúsiť sa zistiť, v poriadku, nechcem my Program len za správne, Tiež chcem, aby to bolo efektívne a riešiť problémy rovnako. Predstavte si, že v reálnom svete dnes, ako Google indexov, vyhľadávanie ako miliardami stránok, predstavte si, že oni používal prvý algoritmus nájsť mačky Medzi miliardu pages-- pri pohľade na Prvá strana vo svojej databáze, druhý, tretí, len pri pohľade pre mačku, hľadá pre mačku. To je sakramentsky pomalé by sa mohlo zdať. Mohli by namiesto toho použiť niečo volal binárne vyhľadávanie, ktorý Nie je coincidence-- bi čo znamená dve, sme zachovať delenie niečo 2, v half-- oni mohli použiť binárne vyhľadávanie a možno nájsť mačky ešte rýchlejšie, alebo čo to je hľadáte. A úprimne povedané, je tu aj milovník algoritmy že robiť oveľa viac, než len delenie vecí na polovicu aby sa rýchlo nájsť informácie. A budeme hovoriť trochu o tých, po obede dnes. Takže mi dovoľte len sa snaží reprezentovať to. Nemusíme ísť do akýkoľvek matematický alebo skutočných čísel. Môžeme o tom hovoriť abstraktne. Ale dovoľte mi navrhnúť, ak vás viedli diskusiu teraz s inžiniermi navrhuje tento algoritmus a vy sa snažíte, aby sa vypočítaná rozhodnutie, pretože možno inžinier povie vám, viem, čo môžem implementovať lineárne hľadania v podobne dvoch minút. Je to tak jednoduché. Binárne vyhľadávanie nie je tak efektné, ale to bude, aby ma vzal ako 10 minút, tak, 5 krát dlhšia. Je tu obchod tu, a to aj pokiaľ ide rozhodovanie o tom, aký softvér písať. Píšete jednoduchšie algoritmus, ktorý bude len trvať dve minúty? Alebo trávite viac času, 10 minút, písanie milovník algoritmus? Ako sa rozhodnúť, že takéto otázky? Alebo by ste mohli urobiť to trochu reálnejšie. Aj povedať svojmu nadriadenému, že to bude trvať me buď jeden týždeň alebo 10 týždňov na vykonanie software týmto spôsobom, ako sa rozhodnúť, ktorý algoritmus pre zelenú-svetlo? Karim? Publikum: publikum, myslím. DAVID Malan: Publikum. Čo myslíš tým publikom? Divákov: Pokiaľ to ide ktoré majú byť použité užívateľovi kto [nepočuteľný] užívateľov [nepočuteľné]. Ale či je to niečo, čo ste len to pre seba uľahčiť problém, [Nepočuteľný] rýchlejšie. DAVID Malan: Jo, je to rýchle a špinavá je dobrý spôsob, ako to opísať. V skutočnosti, ak ste popisujúci väčšinu svojho času v grad škole, pričom často časy, Napísal som zlý kód vedome tak-- Aspoň, že to, ako som racionalizovať to-- vedome, pretože aj keď som písania kódu že bol relatívne pomalý vykonať, Bol som schopný písať kód sám dosť rýchlo, výdavky len pár minút alebo hodín nie je dní. A ukázalo sa, ja občas potreboval spať. Takže aj keď môj kód potrebný 8 hodiny behať, dobre, že je v poriadku, Pôjdem spať, kým to beží. Takže v tej dobe, myslel som, že to veľmi šikovný, aj keď zdanlivo prepracoval môjho PhD veľmi pomaly. Ale hovoriť o ktorý je že, keď som písali softvér pre ostatných ľudí, ktorí záležalo viac ako ja, no, s nimi čakať 8 hodín dostať späť svoje výsledky vyhľadávania nie je všetko, že presvedčivé. A tak trávia viac času vpredu písať softvér že je efektívnejšie, ako náš tretí algoritmus, Pravdepodobne je prospešný pre užívateľov v priebehu času. Takže to naozaj záleží viac ako Doba, ako tieto náklady sa sčítajú. Ak sa chystáte písať softvér ju raz použiť, Asi by bolo dobré urobiť rýchle a špinavé, ako sa hovorí. Len to hodiť dohromady. Je to kód, ktorý uvádza do rozpakov vy, je to tak zlé, ale dostane úlohu správne, aj keď to nie je efektívne. Naopak, budete tráviť viac času na niečom, si to tak akurát. A potom rozpúšťané v priebehu času, že priame náklady času je pravdepodobne stojí za to, ak budete mať optimalizácia pre bežný prípad. A vskutku, to je téma v programovanie, alebo počítačová veda viac Všeobecne platí, že sa snaží optimalizovať Nie je nezvyčajné pre prípad ale spoločné case-- aká operácie sa bude diať znova a znova? Ak budete mať miliardy užívateľov vyhľadávania na svojich webových stránkach, asi by ste mali stráviť ďalšie týždňov až pred písanie lepší softvér, takže všetci vaši užívatelia ťažiť. Teraz sa poďme pokúsiť sa zachytiť tento A Trochu obrazovo, ale nie toľko, numericky. Tak tu je proste stará škola graf. A dovoľte mi povedať, že toto je čas. A nezáleží na tom, what-- Vlastne nie, nie je čas. Povedzme, že na druhej osi. Povedzme, že to je doba, a to je veľkosť problému. A počítačový vedec Možno vo všeobecnosti požadujú to len n. n je ako Naše go-premenná, kde n je číslo, číslo n, a to je počet vstupov akýmikoľvek máte. Takže v tomto prípade je n počet strán. Tak to by mohlo byť v 1000 tento prípad sme práve povedal. Takže čas môže byť akákoľvek jednotka merania. Možno, že je to druhé. Možno, že je to dní. Možno, je to ako otočené stránky. Nezáleží. Či už chcete počítať sa tým, že bude čas, alebo náklady ekvivalentne. Takže s tým úplne prvým algoritmus, keby som napríklad, mal 1000-stranový telefónny zoznam, Idem k tomu bodku tam, pretože ak je to 1000 stránok, trvalo zhruba 1000 otočených strán, plus mínus. A potom, ak som mal 2000-stránkové telefónny zoznam, a budem čerpať druhý dot tu, pretože pre 2000 strán, Je to ako 2,000 sekundy alebo otáčať stránky alebo čokoľvek iného. A tak keď som povedal predtým, je to druh lineárneho vzťahu, že bolo zámerné, pretože som chcela Neskôr on-- právo now-- urobiť hrubú čiaru. Je to niečo ako rovný linka vzťah. Svah je 1/1, ak chcete. Medzitým, druhý algoritmus znamená, že ak máte 1000 stránok a vy ste pomocou druhého algoritmu, kde som počítal od 2 rokov, sústruženie dve stránky naraz, mal by som kresliť bodka pod alebo nad mojej pôvodnej bodkou? Divákov: Pod. DAVID Malan: Dole, pretože, ako sme videli, trvá kratší čas, polovicu toľko času. Takže bodka by mala byť polovica tak vysoko, ako druhá. A rovnaký problém tu, to bodka by pravdepodobne mala byť zhruba tam. A tak môj druhý algoritmus, podobne, má lineárny vzťah s časom. A môžeme čerpať ju ako takú. Takže teraz, tretí a posledný Algoritmus je trochu ťažšie čerpať. Ale intuitívne, či mám 1000 Stránky s mojím tretím algoritmu to by malo trvať ma len ako 10 stupňov. A či mám 2,000 stránok s mojím tretím algoritmu to by ma neberte 10 Kroky, ale 11, len jeden. Takže budeme len ťažko bude vidieť. A ukázalo sa, ak Aj priblížiť na to, že som bude preháňať na efekt, Tvar tejto línie, v konečnom dôsledku, nie je priamy line-- preto, že v skutočnosti by to bolo, to bude vyzerať viac páči others-- je to vlastne krivka že ak by sme priblížiť, sa deje vyzerať oveľa takto. To-- dobre, OK, ignorovať túto časť. To bola moja pero ísť z uhla. Je to zakrivené línie, ktorá je vždy rastie, vždy, vždy, vždy zvyšuje, ale len ťažko. A tak v priebehu času, máte Vzťah, ktorý je viac takhle. Je to skoro vyzerá rovno. Ale je to niekedy tak pomaly rastie. Ale pre takmer všetky body pozdĺž Váš os x, vodorovná os, to je menej ako tých ostatných tratiach. Takže to môže byť vzťah n, pričom ak máte n stránok, vás vezme n sekúnd. To môže byť vzťah n / 2. Máte n stránok, trvá ste n / 2 sekundy, polovica toľko. A to je logaritmické Vzťah, ktorý Ak si spomínate, log základňu 2 z n zachytí Tento druh rastu, tak povediac. Tak toto je ten typ svätý grál medzi tromi z nich tu, pretože je to jednoducho oveľa viac efektívny, ale pravdepodobne zložitejšie vykonávať. Nejaké otázky? No dovoľte mi, aby som to urobiť, nech me Otvorí sa textové okno Len tak sa môžeme pokúsiť formovať niečo tu. Tak nechaj ma ísť dopredu a hneď implementovať tento algoritmus pre nájdenie Mike Smith v kóde, ak chcete, pseudokód kód. Nebudem používať Java alebo C ++. Práve idem používať typ Anglický-ako syntax, ktoré sme by všeobecne nazývajú pseudocode kód. Tu mám prázdne okno. A ja hovorím kroku 1 veľmi Prvý algoritmus je vyzdvihnúť telefónneho zoznamu. Krok 2 je otvorená kniha na prvej strane. Krok 3 bude pozrieť sa na stránka pre Mike Smith. Ak sa na strane, volajte Miku. else turn stránky a prejdite na krok 3. Hotovo, povedzme. A tak to nie je úplne dokonalá, ktorý uvidíme za chvíľu. Ale poďme zvážiť, aké koncepty som tu predstavený. Takže kroky 1 a 2 a 3 sú do značnej miery slovesá. Sú to výroky, actions-- to urobiť. A tak v programovaní jazyk, by sme sa všeobecne volajte im vyhlásenie alebo funkcie alebo postupy, Nazývame je celý rad vecí. Ale sú to len actions-- to urobiť. Krok 4 je zásadne odlišný, pretože je to druh položenie otázky. To hovorí, že sme druh zo na rázcestí. Ak Mike je na strane, volajte ho, tak doľava, ak chcete. A ak nie, vráťte sa k niektorým Iný page-- alebo skôr ľúto, vrátiť sa do nejakého iného kroku, ktorý vyvoláva nejaké kľučky tvoriaci konštrukt. A robíme to znova a znova a znova. A skutočne, viete čo? Jo. else if na konci knihy zastávky. Takže potrebujeme druh tretiny stav, pretože vás nemôže udržať otáčaním stránok inzerát najmenších podrobností, pretože nakoniec budem narazila na konci knihy. A chyba v programe môže byť nepredvídali, že scenár. A potom už len som si uvedomil, oh, počkať Okamih, musím tretí scenár. Ak som zo strán, I mali naozaj len zastaviť. Inak je to nedefinovaná. Čo sa stane, keď som udržať hovoriť otočiť stránku a vrátiť sa, To je, keď počítače zmraziť alebo havárie, keď narazí niektoré neočakávané situácie takhle. A teraz, čo Mike Smithov tretej algorithm-- zdvihnúť telefónny zoznam, otvorená kniha first-- na Nie, nie prvý tentoraz stránku, na middle-- oh, no, to by byť druhý algoritmus. Povedzme preskočiť na tretiu. Publikum: Oh, ospravedlňujem sa. DAVID Malan: To je v poriadku. Povedzme preskočiť na third-- open do stredu a teraz hľadať Mike Smith. ak na strane, volajte Miku. A potom, čo chceme povedať, tu? inak čo? Môžeme to vyjadriť v mnohých rôznymi spôsobmi. Neexistuje žiadna správna odpoveď. OK, ak nie ešte raz, ale musíme be-- OK, my chceme rozdeliť na dve časti, ale chceme ísť doľava alebo doprava ísť? Ako môžeme vyjadriť túto myšlienku? No, v prípade, že Mikova, áno, to je fér. Ale v poriadku, takže je to vlastne dobrý postreh. To je v poriadku. Budeme pokračovať s touto logikou. tak-- Divákov: Menej ako polovicu. DAVID Malan: Jo. Takže else if stránka, budeme hovoriť, menej ako Smith, vľavo Smith, then-- pozrime, je to bude komplikovať? else if strana pochádza pred Smithom, trhali na polovicu, vyhodiť toho polovica? Divákov: Myslel som, že bol [nepočuteľné]. DAVID Malan: počujem obe odpovede. Divákov: Ľavý. DAVID Malan: OK, hádzať preč ľavú polovicu, as Lakis povedal skôr, ľavý polovice, potom som trochu chcú jednoducho ísť to-- idem na pravej strane. Alebo ekvivalentne, a urobil som trochu trochu neporiadok začiatku tu, Aj účinne chcem prejdite na krok 2 znova, kde otvorená middle-- alebo open-- jo, povedzme, stránky do stredu ihriska. A to rieši ju. Už to nie je kniha. Je to len polovica knihy, tak otvorené strany do stredu. else-- tam skoro boli. Krok 6, else if strana prichádza potom, čo Smith, trhať na polovicu, vyhodiť pravú polovicu, prejdite na krok 2. inak skončiť, štvrtý scenár, ak nemáme počet strán sa obrátiť. Takže by sme mohli vyčistiť to. A my sme mali čistiť to. To je veľmi pseudocode kód, ak ste áno, opis veľmi vysokej úrovni. Ale to všeobecne zachytiť myšlienku. A opäť, v tomto prípade sme majú poňatie o stave, vetva, vidlička na ceste, čím decision --- Ak to, ísť tadiaľ, else if, ísť tadiaľ, else if, tadiaľ. A to je veľmi častý programovacie techniky rozhodnúť, akým smerom ísť, aby som tak povedal. A máme aj nejakú zo slučky štruktúry, kde robíme niečo znovu a znovu. Teraz sa ukázalo, oveľa ako v tomto príklade, bytia Super presná je dôležité. Ale tiež sme videli niečo že držíme volanie abstrakciu. Čo to znamená zdvihnúť telefónny zoznam? Sme len tak užívať za samozrejmosť v tejto miestnosti že má nejaký sémantický význam. Každý z nás tak nejako viem, oh, No, zdvihnúť telefónny zoznam. Čo to vlastne znamená? No, to v skutočnosti znamená predĺženie ruka, naklonil, predĺžiť prsty, štipka knihu medzi prstami, vstať, pritiahne ruku smerom k sebe. A mohli by sme byť naozaj pedantská o tom, Naozaj je mimoriadne presná pokiaľ ide o to, čo robím. Ale všetky tieto kroky sú kolektívne čo to znamená zdvihnúť telefónny zoznam. A tak skôr, keď som povedal, každý z týchto prvých dvoch výkazoch si možno predstaviť ako postupovať alebo funkcie, Naozaj to reprezentuje to, čo sme udržiavať volanie abstrakciu. Je to ako na vysokej úrovni koncepčné popis problému, ktorý ide vlastne o pomerne málo krokov. A tak to aj je opakujúce sa téma v programovaní, kde by som mohol napísať program pomocou syntaxe ako tohle-- pick_up_phone_book (). A potom syntakticky, že som chystá niečo ukradnúť od väčšiny programovacích jazykov. Teraz krok 1 vyzerá ešte skôr ako funkcia, ako programátor by sa to nazvať. Vyzerá to, že kód, ktorý niekto dal názov a vzhľadom k tomu, sa mi používať somehow-- v iných Slová, čo čiara som zvýraznené predstavuje funkcie, ktoré možno Ani som sa realizovať sám. Niekto starší, múdrejší než ja už prišiel na to, ako vyjadriť myšlienku vyzdvihnutie telefónneho zoznamu. A je to ako piatich krokoch som len vychrlil, z vrcholu mojej hlavy. Ale on alebo ona už bola vykonaná to dal ty niekoľko krokov meno, pick_up_phone_book. A zátvorkách je uvedený len to, čo väčšina programátorov robiť na konci vyhlásenie, ako je tento. Teraz môžem postaviť na jeho alebo jej ramená a už nikdy, premýšľať o tom, čo to znamená vyzdvihnúť telefónneho zoznamu. Môžem len povedať, zdvihnúť telefónny zoznam. A to je presne to, čo my všetci ľudia tu urobil. Keď sme boli asi 1 ročný, 2 roky starý, niekto musel nás učí, čo to chcel vyzdvihnúť telefónneho zoznamu. A od tej doby, sme abstrahovať preč od tých veľmi nezaujímavé mechanické kroky. A my len mať intuitívne chápanie o tom, čo to znamená vyzdvihnúť telefónneho zoznamu. A môžete extrapolovať teraz na zložitejšie things-- postaviť budovu. Ako, pre niektorých ľudí, že má v skutočnosti význam. Dodávateľom, pre architektov, že má nejaký význam. A oni by vedieť, čo robiť, ak Povedal som ísť postaviť budovu. Ale väčšina z nás v miestnosti nemohol vysporiadať sa s touto úrovňou abstrakcie. Je potrebné povedať nám páči choď lopata a choď betónu a nechty kúsky dreva dohromady a čokoľvek iné sa podieľa na stavbe budovy. A to preto, že nemáme doteraz naprogramovaný tak, aby pochopili čo to znamená postaviť budovu. Nemáme tu abstrakciu. Nemáme túto funkciu. A tak to, čo uvidíte v programovacie jazyky, všeobecne, najmä viac moderných jazykov, ako je Java, PHP, Ruby a Python, sú oveľa vyspelejšie ako staršie jazykov, ako C a C ++ a napriek tomu iní. A tak prídu s viacerými Funkcia postavená v roku. Viac kód bol napísaný ľudia v minulosti že teraz môžeme volať alebo privolať alebo použiť, ako som naznačuje na s tým zvýrazní líniu tu. A tak aj keď nehovoríme o programovacích jazykoch ako takých, Len pseudocode kód, všetky myšlienky sú stále v tejto diskusii. A ukázalo sa, presnosť je Super dôležitá, rovnako ako abstrakcie. A skúsme oznámiť, že takto. Omylom som mohol pokazené Tento blikaním snímku na obrazovke predčasne. Ale dovoľte mi požiadať o statočnej dobrovoľníka, ak vám nevadí, že prísť. To by ste sa v prednej časti kamera, ak ste s tým OK. Chcel by niekto prísť a dať pokyny svojim kolegom tu? Jednoducho musieť prísť sem a stáť tu a hovoriť pár slov. Victoria sa usmieva najviac a vyhnúť sa oči najviac. By ste boli ochotní ísť hore? OK. A ak sa všetci na svojich miestach mohol vziať si kus šrotu papiera, ak chcete. Linajkový papier je v poriadku. Poďte okolo tadiaľ. Alebo niektoré z papiera, ktorý ste dostali včera, hocijaký prázdny hárok papiera, keby si mohol. A v prípade, že nemáte žiadne, stačí ak by ste mohli požiadať svojho suseda. Takže pre túto chvíľu, pre tento príklad, Victoria bude hrať rolu programátor, inžinier, ktorý potrebuje program všetkých, as počítače, aby niečo urobiť. A uvidíme, aké predpoklady sa rozhodnete vykonať. Uvidíme, ako presný sa rozhodne byť. A ak je táto demonštrácia ide pedagogicky dobre, veľa chýb bude, že budeme potom použite že ako príležitosť na diskusiu. Ale výzva pre vás mal bolo vyhnúť sa tie chyby, byť dobrý programátor. A tak náročná úloha po ruke, ak by ste rád chodiť sem, je v prednej časti Victoria na obrazovke here-- a dúfajme, že nikto z vás pamätať, keď som blysol na obrazovke. A nie otočiť vôbec, pretože tam je ďalší obrazovky v tejto miestnosti že môžem vypnúť. Takže sa nemusíte otočiť. V prednej časti Victoria je ten istý výkrik. A jej úlohou je teraz ti všetko na kus papiera, čo k tomu. A uvidíme, na základe verbálne pokyny sám, počítačový kód, ak chcete, ako presné výkresy are-- vaše implementácie sú. Dáva zmysel? Divákov: Jo. DAVID Malan: OK, vykonať. Divákov: nakresliť štvorec. [Smiech], DAVID Malan: A nikto Otázky môžu byť položené. Môže robiť len to, čo ste povedal. Jo, a ak máte dnešnej kĺzačky otvorí v karte, nepozerajte sa na karte. OK? Publikum: OK, nakreslite kruh. Slope-- môžem povedať svahu? DAVID Malan: Až vás. Divákov: vo svahu. A trojuholník. DAVID Malan: Dobre. A tu zostať len na chvíľu. A ja idem prísť asi za chvíľu. A nie je nutné dať svoje meno na to. Nechaj ma ísť okolo a zbierať svoje kresby, ak vám nevadí, že trhá von. Tu je to, čo sme sa vrátili. Ja to premietať na obrazovke. Vidím štvorec, kruh, svah, a trojuholník. Takže tam jedna odpoveď. A let's-- pokriky. Ďakujem. Tu je iný sortiment, a jeden za ním. A tak sa všetci zdajú zachytiť ducha. Ďakujem. Je tu ďalší, a tu je ešte jeden. Výklad svah je trochu inak, trochu krivky. A najbližší, buď z dôvodu nádherné špecifickosť, s ktorou som popísané, alebo možno trochu videl, že predtým, je to skutočne Čo Victoria bol vlastne popisovať. Ale teraz, tí z vás, ktorí Nedostal to úplne v poriadku, poďme ponúkajú niektoré námietky tu. Takže Victoria prvý povedal nakresliť štvorec. A teraz, môžeme predpokladať, z dôvodu dnes že každý vie, Ako nakresliť štvorec. Ale to nie je celkom jasné, že jo? Ako inak by ste mohli mať prilákalo námestie, alebo tam, kde môže byť niektoré z nejasností Tu pre počítač? Publikum: Umiestnenie a veľkosť. DAVID Malan: Miesto, že jo? Všetci z vás mal papier nejakom tvaru, Všeobecne obdĺžniky, ale mierne rôznych veľkostiach. Ale určite mohol vyvodiť, ak by ste chceli, veľký štvorec, možno malý štvorec. Možno, že sa otáča. Nemyslím si, že sme videli, že. Ale mohlo to byť ešte diamant podobne, ale napriek tomu, napriek tomu, matematicky štvorec. Takže to bol pravdepodobne nejednoznačný. Potom povedala, nakreslite kruh. Niektorí z vás sa to nakresliť vedľa to, čo nie je nerozumné, pretože ľudia majú tendenciu si myslieť, alebo čítať sprava doľava vo väčšine jazykov, takže nie zlý odhad. Ale že kruh by mohol mať Bol vnútri námestie, mohlo byť okolo štvorec, by mohlo byť na inom mieste na list, takže pravdepodobne nejednoznačný. Sklon by mohol byť možno pričom najviac slobody verbálne s tým, čo to znamená. A niektorí z vás interpretované že ako kľukatou čiarou alebo priamka alebo podobne. A potom trojuholník, taky by mohol mať orientovaná v mnohých rôznymi spôsobmi. Takže v skratke, dokonca s niečím, vám pohľad a si ako, wow, tak jednoduchý, mohol dieťa kresliť to, no nie Naozaj, ak nie ste super, super presvedčivý a povedali počítači presne to, čo má robiť. Takže ak sme mohli, ak máte ďalší list papiera, poďme skúsiť to ešte raz. A ja idem dať Victoria jedno Ďalším príkladom na obrazovke tu. A opäť, nie otočiť a nepozerajte sa na vaše snímky. A ja jej dám chvíľku premýšľať o tom, ako opísať to. Nedovoľte im vidieť strach v tvojich očiach. [Smiech], A opäť, tentoraz pákový efekt Niektoré z týchto stánok s jedlom a pokúsiť sa získať takmer každý aspoň správna odpoveď. Publikum: OK, trvať kus papiera, pozrite sa v stredu tohto kusu papiera. V strede tohto kusu papiera, nakresliť kocku. [Smiech], DAVID Malan: Čo sme sa naučili? Boli sme tak blízko. OK, opakujem, ak mohol, pre každého. Divákov: V stredu kus papiera, kresliť objekt, ktorý vyzerá ako kocky. DAVID Malan: OK, to je všetko, čo sa do práce s. Dovoľte mi, aby som sa analytický a nie toľko kritická, ale aby pohľadávku že Victoria rozhodne Zdá sa, že myslenie vo veľmi abstrakcie na vysokej úrovni, ktoré nie je neprimeraná. Pretože inak by sme boli všetci byť dosť dysfunkčné, ak by sme museli byť niekedy tak presná so všetkým, čo robíme vo svete. Ale reč choď do middle-- I myslel, že sme boli na takej dobrej ceste tam, rovnako ako ísť do samého stredu stránky, a potom nakresliť kocku. Takže si myslí v abstrakcii, pretože ona je stále prezeranie čo je na obrazovke skutočne kocka. Ale je tu toľko príležitostí pre interpretáciu tam. A v skutočnosti, tam je toľko Iné spôsoby, ako by ste mohli vyjadriť To, čo budem navrhovať za chvíľu. Takže tu máme jednu inkarnácii z picture-- whoops-- jednom stelesnenie obrazu, takže Trochu tri rozmerom k tomu, čo je pekné. Tu je ešte jeden, kde máte To isté, aj keď je to trochu otvorené kocky. Niektorí ľudia to trvalo trochu viac ploché, dvojrozmerné. A to je v poriadku. Takže tam, naozaj v stred papiera. Tento Myslím, že budete podobne, pretože keď ideme sem, To je to, čo popisoval. Takže teraz mi dovoľte, aby som navrhnúť ako inak by sme mohli opísať túto situáciu. Späť v deň, jeden z najviac Bežnejšie spôsoby, ako sa učiť programovania Bol písať kód, píše línie inštrukcií, ktoré sú riadené trochu korytnačka na obrazovke. Logo a ďalšie varianty bolo meno jazyka. A korytnačka žil vo svete. Takže predpokladám, že tento obdĺžnikový priestor je jeho svet. A vy by ste začať tým, že assuming-- I naozaj neviem, ako k tomu korytnačky, takže poďme to takto. A potom, že má škrupinu a potom možno niekoľko stôp. Takže môžete mať tento malý postava na obrazovke. A predmetom tohto programovací jazyk bolo prinútiť korytnačku ísť hore, dole, doľava, doprava a predložiť svoje pero alebo vyzdvihnúť jeho perom hore, aby mohol skutočne čerpať na obrazovke V tejto veľmi rovné obdĺžnikové svete. Tak kde som myslel, že by ste mohli ísť, a kde by ste mali zvážiť potápanie dole psychicky pri popisovaní pokyny všeobecnejšie Ja by som tvrdiť, je dať svoje pero dole v middle-- a my zbaviť korytnačka, pretože nemôžem zachovať pritiahla ho veľmi dobre. A teraz, ako inak by mohol Hovorím nakresliť kocku? No, mohli by sme povedať niečo ako remízu Šikmá čiara na severovýchod, napríklad, alebo v uhle 45 stupňov smerom nahor. A to by mohlo ma sem dostal. A som celkom ďaleko od kocky. Ale teraz, mohol by som niečo povedať ako otočiť o 90 stupňov doľava a nakresliť čiaru rovnakej dĺžky severozápad. A mohol by som pokračovať s podobnými smeroch. A to nebude ľahké. A úprimne povedané, pravdepodobne by sme tu už po dobu piatich minút. Ale možno by sme sa dostali do niečo, že na konci dňa, prestane byť kocka, ale my potápal vnútri tejto abstrakcie ako to urobiť na tak nízkej Úroveň že nemôžete naozaj vidieť, čo robíte, kým sa celá to je v skutočnosti tam na stránke. A tak to je všeobecná zásada, opäť z programming-- tejto myšlienky abstrakcie. Je to tak úžasne silný, pretože znova ona len povedala, nakresliť kocku, ktoré sú všetky nás do značnej miery by Grok veľmi rýchlo. Radi by sme jednoducho pochopiť, OK, nakresliť kocku. Mohli by sme nevedeli orientáciu, takže sme mohli byť trochu presnejší, ale môžeme všeobecne obraz alebo vedieť, čo je kocka. A to je užitočné, pretože ak zakaždým, keď sadol ako programátor v klávesnicu písať kód, ak by ste mali myslieť na také nízka úroveň, nikto z nás by nikdy dostať urobiť čokoľvek. A iste by nikto z nás teraz proces písania kódu. Bolo by to ako písanie 0 a 1 rokoch, čo úprimne povedané nebolo všetko tak dávno Ľudia písali kód 0 a 1 je. A my sme veľmi rýchlo prišli s Tieto vyššiu úroveň languages-- C ++ a Java a ďalšie. Takže poďme skúsiť ešte raz len preto, aby otočiť tabuľky, takže každý z nás majú možnosť premýšľať v trochu rovnakým spôsobom. Mohli by sme získať ešte jeden dobrovoľník tento čas prísť k tabuli a kresliť, nie recitovať? Jo, OK. Bene, poď hore. A Ben, v tomto prípade, akonáhle vás čeliť doska, nevyzerajú vľavo, nevyzerajú dobre. Len to, čo vaše kolegom, aby vás tu povedať. A pre všetkých ostatných v izba, teraz sú programátor. On je ten počítač. A obraz som tu zvolil v predstihu je to jeden tu. Sú jen-- si myslí legrační vtip je všetko. Tak by sa niekto chcel dobrovoľník prvej inštrukcie alebo vyhlásenie, že by príkazové Benov pero? A budeme to robiť spoločne, možno jedna inštrukcie od každého človeka. Prepáč? Divákov: Nakreslite kruh. DAVID Malan: Nakreslite kruh Je to prvá vec, ktorú som počul. Divákov: Up hore. DAVID Malan: Až hore. OK, môžeme nechať vymazať, vrátiť späť. A teraz niekto iný. Dan, mali by ste byť pohodlné ponúka ďalšie inštrukcie? Publikum: Jasne, kresliť stred zo spodnej časti kruhu, s small-- trochu malý priestor od toho, nakresliť priamku dole na tri štvrtinách cesty dole doske miernom uhle k ľavej strane. DAVID Malan: Dobrý. Divákov: pod miernym uhlom. DAVID Malan: Undo, Control-Z. OK. Andrew, chcete ponúknuť up ďalšie inštrukcie? Divákov: Iste. Zo spodnej časti tejto línie, ďalšie mierne angle-- whoops-- možná asi tretina dĺžky [nepočuteľné] miernym uhlom dole a sa ako tretine dĺžky [nepočuteľné]. Tak jo, od tohto bodu, nakresliť čiaru tretiny dĺžky predchádzajúcej riadok ďalej vľavo. DAVID Malan: To jo? Priamka, to je v poriadku? OK, Olivier, chcete ponúknuť až budúci? Divákov: [nepočuteľné] z Spodná časť kruhu, [nepočuteľné]. Čerpať na pravej strane z [nepočuteľný] centimetrov. [Smiech], DAVID Malan: Myslím, že budete musieť previesť to palca tady. Divákov: Zastaviť. [Smiech], DAVID Malan: OK. [? Ara ,?] Chcete ponúknuť až budúci? Divákov: Nakreslite [nepočuteľné] horná [nepočuteľné] rovnaké. [Nepočuteľné] kruh, kresliť na [Nepočuteľné] a čerpať [nepočuteľný]. DAVID Malan: OK, nič viac vrátiť späť. Urobme ešte jeden alebo dva inštrukcie. Chris, chcete ponúknuť jeden? Divákov: Na dne kruhu, [nepočuteľné] kresliť rovné čiary slopping dole doľava [nepočuteľný]. DAVID Malan: OK. Andrew? did-- sme Karim? Divákov: Od pravého línie, koniec ľavého vedenia, spodné, sa chystáte ísť pravdu rovnako dlhý ako tento riadok ste na, kreslenie na právo [nepočuteľné]. [Nepočuteľné] stupňov, takže [nepočuteľné] stupňa na pravej strane. DAVID Malan: Dobre. Poďme pauza. Neotáčaj ešte okolo. Poďme pauza, a poďme vyskúšať jeden ďalší pokus Než sme sa odhaliť k Benovi čo on bol kreslenie. Môžete zamiešať Bena right-- alebo v skutočnosti, no, nech to len dať ďalšie doska, ešte lepšie. Takže by niekto chcel podnikom aby sa viac prístupu že Victoria vzal skôr, pokiaľ hovoríme vo vyššej úrovni abstrakcie a len vete alebo dva popísať Bena čo k tomu, bez dostať sa do burín, tak povediac, na to nižšiu úroveň? Victorie. [Smiech], Divákov: nakresliť postavu z kráčajúceho muža. A jeho nohy a ruky musí byť na pravej strane. DAVID Malan: OK, to je všetko, čo dostanete. Dobre. Prečo nie my odhaliť Benovi, čo urobil. Tak potlesk. To bola tá najťažšia možná. Takže aj keď hovoríme V pomerne hlúpe, pokiaľ ide asi len kreslenie Fotografie, snáď budete môže naozaj oceniť mieru výraznosť, že by mohlo byť potrebné aby povedať počítaču, čo má robiť. A v skutočnosti, že Ben bol schopný nakresliť tak rýchlo je trochu zákone použitím jazyk, možno vyššiu úroveň verzia angličtiny, ktorá umožňuje ho stačí použiť slová, alebo počuť slová od Victorie, že mu umožňujú Tieto abstractions-- len kresliť postava chôdzi na right--, že druh má niektorí sémantický význam pre to, aby nie je zďaleka tak zrejmé, keď ste len povediac: dať svoje pero, kresliť doprava, kresliť doľava. A tak to taky, je veľmi obyčajný v programovaní. To by sa povedať, že sa ako veľmi nízka úroveň jazyka, programovanie v 0 a 1, ak budete. A to by bola vyššia úroveň programovací jazyk Java, alebo nieco podobne. tak trochu zjednodušením, ale to je ten typ ako emocionálne pocit, že cítite, keď pomocou jednej takejto veci alebo iný. Trochu frustrácie tu potrebou Pre takou presnosťou, ale príležitosť byť trochu voľnejšie s Výklad tu. Ale samozrejme, chyby môže vzniknúť ako výsledok. Ak by ste chceli na home-- my nebude robiť toto jeden v class-- ale ak chcete priviesť túto domov, Myslel som, že by sme sa ponoriť do tohto. Takže ak by ste chceli zahrať Hra s vašou ďalších významných alebo deti alebo podobne, vy sa môžu tešiť, že rovnako. Tak poďme do toho a pozrite sa na jeden posledný vec, ktorú tu pre počítačovú myslenie. A to nás privádza k Johnovi Oliver, nie pre klip ste mohli vidieť v noci, ale trochu nedávnom vydaní. Niekoľko mesiacov späť, Volkswagen trvalo celkom dosť ostrej kritiky z akého dôvodu, ak viete? Čo sa dostanú do problémov? Jo, tak oni emissions-- sa snažia poraziť emisií Testy v podstate majú svoje autá znečisťujú životné prostredie menej kedy boli testované ich auta a znečisťujú životné prostredie viac kedy neboli testované autá. A čo je čím ďalej zaujímavejšie vo svete, pretože môžete mať odvodený z diskusií o jako--, čo je to-- CarPlay, softvér Apple pre automobily a skutočnosť, že mnoho z nás stále viac majú dotykovej obrazovky v našich autách, tam je desivé množstvo softvéru v ľudovej autá dnes, čo Úprimne otvára úplne plechovku červov, keď ide o bezpečnosť a fyzické nebezpečenstvo. Ale pre dnešok, poďme sústrediť sa iba to, čo je zapojený do písania softvéru ktorá by mohla gamed systému. Pre definíciu jednotky Problém, pre tých, ktorí nepoznajú, poďme sa pozrieť na Johna Olivera. A pre tých, ktorí poznajú Problém, poďme sa na to pozrieť v zábavnom objektívu cez John Oliver rovnako. Takže mi dovoľte hit hrať na to, I myslím, tri minúty úvod. Dočerta. [Videoprehrávanie] -Cars-- DAVID Malan: Je zrejmé, na YouTube, it's-- - --the Najchytrejší znaky Rýchlo a zbesilo filmy. Tento týždeň, nemecký výrobca automobilov volkswagen ocitlo v stredu škandále potenciálne kriminálnej pomery. -Volkswagen Sa pripravuje o miliardy na pokutách, možné obvinenie z trestného činu pre svoje manažérov, as Spoločnosť sa ospravedlňuje pre rigging 11 miliónov vozidiel pomôcť mu poraziť skúšky emisií. -Certain Modely dieselové boli navrhnuté s sofistikovaný softvér, ktorý použité informácie vrátane pozície volantu a vozidlom rýchlosť, aby sa zistilo auto bolo prechádza merania emisií. Na základe tejto okolnosti, motor zníži toxické emisie. Ale auto bolo zmanipulované do bypassu že keď to bolo v prevádzke. Emisie zvýšil 10 až 40 krát nad prijateľnú úroveň EPA. -Wow, 10 až 40 krát väčšie ako EPA dovolí. To je tá najhoršia vec, Volkswagen kedy urobil, Je niečo, čo by ste mohli povedať, či by ste nikdy nepočul o druhej svetovej vojny. Ale možno najistejšia známkou toho, ako veľa problémov Volkswagen je, je, že ľudia na samom Najlepším hráčom už odstúpil. Generálny riaditeľ rezignoval v stredu po tom, usilovne snaží robiť škode kontrolu, hovoriť on bol nekonečne ľúto, ktorá znelo skvele, kým sa ukázalo on bol len 10% ľúto ale že zmanipulované ústa na umelo jeho sorriness. A medzitým Volkswagen USA Šéf mal ospravedlnenie vlastné. -Nechaj To byť jasné, o tom, naša spoločnosť bola nečestné. A v mojich nemeckých slov, my totálne podelal. Jo, ale úplne skrutkované up nie sú Nemecké práce. A nemecký jazyk má mnoho krásnych fráz popísať situácie, rovnako ako to, ako je [nemecký], čo znamená, hrubo, smútok, ktorý prichádza z podnikania súvisiace klamstiev, alebo [nemecký], ktorý prekladá ako hanbit ones otca zahŕňajúce mraky benzínu. Je to krásny jazyk. Je to len plaví z jazyka. A mimochodom, zatiaľ čo muža ospravedlnenie môže mať znelo úprimne, je potrebné poznamenať, že hovorí na oficiálne začatie party pre rok 2016 Volkswagen Passat, čo znamená, že krátko Po ospravedlnenia, to povedal. Ďakujem moc za návštevu. Užite si večer. Až budúci je Lenny Kravitz. [MUSIC PLAYBACK] -OK, OK, ukončenie svojho ospravedlnenie až budúci Lenny Kravitz nie je kričať triezvy ľútosti. To kričí, sme sa opýtali Bon Jovi, a on povedal, že nie. Značka Volkswagen má bol ťažko poškodený. A úprimne povedané, ich nová reklama Kampaň nie je práve nepomáha. - [Nemecký], my vo Volkswagene chceli ospravedlniť za klamanie vás naše vozidlá. [END PLAYBACK] DAVID Malan: Takže to bol okľukou of-- sorry-- to bol kruhový objazd spôsob zavedenie zásadný problém v softvéru, čo je to, že je potrebné zistiť určité podmienky. A tak otázka, na dosah ruky tu je, ako sa auto potenciálne ako je implementovaná v softvéri týmito programátorov zistí, že je to vlastne testuje? Takže bolo super jasné, čo robili bol, v prostrediach, kde programátori prišiel auto bolo bytia testované, sa nejakým spôsobom autá vypúšťajú menej emisií, menej emisie, takže menej toxické výpary a podobne. Ale keď je to normálne jazde na ceste, by to jednoducho vydávať toľko Znečistenie, ako to chcel. Tak ako by sme mohli písať pseudocode pre tento algoritmus? Ako by sme mohli písať pseudocode za softvér bežiaci v aute? Myslím, že v kocke, to vrie až niečo také. ak testuje, vypúšťajú menej. inde vyžaruje viac. Ale to je trochu príliš vysokej úrovni, že jo? Skúsme sa do toho ponoriť, čo to abstrakcie skúšať prostriedkov. Inými slovami, aj keď nevieš nič o autách, aké otázky môžete požiadať, aby sa zistilo, či ste testuje, ak ste auto? Aké vlastnosti by mohli byť predloží v prípade, že vozidlo je vyšetrovaných? Divákov: Skúšobné zariadenie. DAVID Malan: Skúšobné zariadenie. Takže ak skúšobné zariadenie V blízkosti, potom vypúšťajú menej. Tak som si dokázal predstaviť realizáciu že s nejakým druhom kamier alebo zisťovanie čo sa deje okolo vás. A dovoľte mi navrhnúť, že jednoducho pripadá príliš komplikovaná skutočne mať ďalšie hardware práve na tento účel. Divákov: Ak ste v park, ak vaše digestor je otvorený. DAVID Malan: V parku, alebo kapota otvorené, takže to je dobre. Divákov: A auto beží. DAVID Malan: Tak to je trochu viac concrete-- a auto beží. Takže by to byť konjunkcia niekoľko rôznych podmienok, ak chcete. Takže ak je vozidlo v parku, a to aj aj keď sa jedná o veľmi mechanická vec typicky, mohol by som predstaviť písanie softvér, najmä preto, že je tu Často ľahký tam v týchto dňoch, Nemohol som si predstaviť, že tam softvér, ktorý dokáže dotaz posunovač alebo čo nie, ste v parku, sú ste v jednotke, ste v opačnom poradí. A môžem získať späť, odpovedať, že je buď áno alebo nie tieto druhy otázok. A tak som mohol pravdepodobne tiež odpovedať Na takúto otázku, je kapota otvorená. Možno, že tam je nejaký druh senzora že buď mi vracia 1 alebo 0, pravdivý alebo nepravdivý, kapota je otvorená. A potom auto beh, som mohol odhaliť že nejako cez akým mechanizmom? Rovnako ako, auto beží, ja mohol zistiť, že je to tak, Nemohol som zistiť nejako že je vozidlo v pohybe? Divákov: RPM. DAVID Malan: Jo, takže je tu Vždy, že ihla, že povie vám, koľko otáčok za minute kola zažívajú. A tak som sa mohol pozerať na to. A ak to nie je 0, ktorá pravdepodobne znamená, že je vozidlo v pohybe. Ale musíme byť tam trochu opatrný, protože-- poďme zjednodušiť tohle-- keby sme práve povedal, ak auto beží, Nechceme len vypúšťajú menej, Ak chceme beží auto a to je práve testovaná. Takže existuje niekoľko ďalších prísady, ktoré ľudia predpokladali softvér robí, z dôvodu chýbajúcej skutočnej zdrojového kódu, môžete len akýsi vyvodiť z fyzikálne účinky autá čo k čomu by mohlo byť deje pod ním digestor v softvéri. Takže ak beží auto a možno, povedzme, zadné kolesá sa nepohybuje, Môže to byť iba orientačné nejakého druhu testu? Čo som narážal tu? Jo, možno, že je to na jednu z týchto valčekových vecí, kde rovnako ako kolesá sa otáčajú v prednej alebo v zadnej, V závislosti na tom, či je to predné koleso alebo pohon zadných kolies, takže polovica kolies sú v pohybe, ale Ďalšie dva nie sú, čo Je to zvláštna situácia v reálnom svete. Ak idete na cestné, že by sa nemalo stať. Ale ak ste v sklade na nejakom systéme kladiek pásu, ktorá by mohla skutočne stať. Myslím, že ľudia tiež navrhol, že možno, v prípade, že auto je spustený a riadenie koliesko nepohybuje, že tiež môže byť signál, pretože to je rozumné ako rýchlo sme na ceste. Ale aj potom, človek je pravdepodobne pohybujúce sa trochu alebo rozhodne v priebehu niekoľkých sekúnd. alebo priebehu minúta, šance sú to nie je bude fixovaná v presne rovnakú pozíciu. Takže inými slovami, môže trvať odčítanie, ste testuje, a rozobrať túto funkciu do týchto čiastkových zložiek. A to je skutočne to, čo je Volkswagen inžinieri nejako urobil. Písali softvér vedome zistiť, či sa testuje vozidlo, Preto vypúšťajú menej, inak emitujú obvyklým spôsobom. A problém aj tu, je to, že softvér nie je niečo, čo môžete naozaj vidieť, ibaže máte takzvaný zdrojový kód. Takže tam dva rôzne typy code-- aspoň dva rôzne typy kódu na svete. Je tu niečo, čo nazýva zdroj kód, ktorý nie je nepodobné tomu, čo sme písali, zdrojový kód. To je zdrojový kód napísaný v jazyk s názvom pseudocode, čo je proste niečo anglicky podobne. Neexistuje žiadny formálny definíciu. Ale C a Java, C ++, tie sú všetky formálne jazyky, ktoré, keď píšete v nich, čo máte je textový súbor obsahujúci zdrojový kód. Ale je tu aj niečo svet volal strojový kód. A strojový kód, bohužiaľ, Je len 0 a 1 je. Takže strojový kód je čo Stroje pochopiť, samozrejme. Zdrojový kód je to, čo ľudia rozumieť. A všeobecne, ale nie Vždy, je program že programátor používa zdroj, ktorý berie Kód a stáča sa do strojového kódu. A to je program všeobecne nazýva prekladač. Takže váš vstup je zdrojový kód, Váš výstup je strojový kód, a kompilátor je kus softvér, ktorý robí tento proces. Takže to vlastne mapuje pekne naše vstupy, algoritmy, výstupy. Ale to je veľmi špecifická stelesnenie z toho, čo znamená, že, aj keď vlastníte jeden z Volkswagen je autá, ktorá je vinu za tento stav, nie je to ako stačí otvoriť kapucňa alebo otvoriť tento návod alebo hľadať na zdrojový kód, pretože v čase, keď dosiahne svoje auto v príjazdovej ceste, už je to prevedie na 0 a 1 je. A je to veľmi ťažké, nie nemožné, ale veľmi ťažké zbierať nič moc zo len pri pohľade na podkladových 0 a 1 je. Takže si môžete prísť na to, v konečnom dôsledku, ak pochopiť, ako stroj operates-- Intel inside-- či mi rozumiete Intel architektúra, ale je to veľmi časovo náročné. A aj tam, možno budete nebude môcť vidieť všetko že kód môže skutočne urobiť. Prípadné otázky týkajúce sa tohto alebo tohto druh procesu všeobecnejšie? A skutočne, môžeme priviazať túto diskusiu na včerajšej diskusii o Apple. Aj to je dôvod, prečo FBI nemôže len tak ísť a pozrieť sa do telefónu podozrivého a nájsť riadky kódu, pre inštancie, ktoré umožňujú heslo alebo umožňujú tejto 80-milisekúnd oneskorenie. Vzhľadom k tomu, v čase, keď je to Na ten chlapík iPhone, už je to prevedené na 0 a 1 je. Dobre, poďme pauza tu pre naše pozrite sa na výpočtovú myslenie. Prečo by sme si pauzu 15 minút. A keď sa vrátime, zmienime pozrite sa na programovanie sama o sebe a začať mapovať niektoré z týchto pojmov na vysokej úrovni k skutočnému, ak hravý, programovací jazyk.