DAVID Humala: Tere tulemast tagasi, kõigile. Nii eile, siis meenutan, et keskendusime neid teemasid siin. Seega oli meil neli üldist topics-- privaatsust, turvalisust ja ühiskonna Interneti-tehnoloogiate; cloud computing; ja lõpuks, veebi arengut. Kas keegi on ribalaius või aeg vaadata veidi John Oliver eile õhtul? See on tegelikult päris naljakas, kui mitte natuke hirmutav. Kõik küsimused midagi me tegime eile? Iga selgitusi? Kõik küsimused, mis sa tahad teha Kindlasti me puudutame täna mingis vormis? Nii puhtalt lehelt. Mis siis päevakorda täna? Nii et ma arvasin, et me tahaks hakata täna kus pilk on üldiselt tuntakse arvutuslikke mőtlesin-- juures riski liialt, mõtlemine nagu arvuti, ehk mõtlemine nagu insener ja püüab alustada korraldada oma mõtteid või teile parema tunde Mis on seotud tegelikult ülem arvuti midagi teha teel programmeerimine. Ja me hoida seda päris kõrgel tasemel, päris palju inglise, kuid proovige kasutada tuttavaid näiteid formaliseerida, kuidas siis oleks minna probleemide lahendamisel. Ja kordame mõned CS teemasid, nagu veevõtu mis tuli paar korda eile algoritmid ning seejärel esitus. Ja see, kui hakkame täna üks hetk. Siis me vaatleme programmeerimine. Võtame pilk mõned põhiliste konstruktsioonide kellega võib olla tuttav ja võib isegi leida üsna intuitiivne. Me vaatame, tegelikult juures proovi programmeerimine keskkond, mis on väga kättesaadav, väga mänguline ja tegelikult suunatud vanuses 12 ja üles. Me veeta paar minutit seal ja seejärel võtta asju madalamal tasemel ja tegelikult rääkida mõned algoritmide ja andmestruktuuride niiöelda, et programmeerijad kasutavad tavaliselt lahendada probleeme palju efektiivselt kui võite oleks võimalik teha ilma neid täielikult. Siis pärast lõunat, me võtame pilk tehnoloogiafirmade korstnad, mis on lihtsalt fancy viis öelda kogud tehnoloogiad et sa võiksid kasutada, et lahendada mingi probleem. Ja me räägime tähestik supp keeles, mis on olemas today-- Java ja Python ja C ++ ja PHP ja Ruby ja igasugu muid asju. Me vaatleme lühidalt kell disaini mustreid. Programmeerijad, aja jooksul, on vastu metoodika mis kipuvad aidata neil lahendada probleeme kergemini. Kui hakkate näha ennast kirjalikult samasugune kood uuesti ja uuesti, inimesed vormistavad need kordused ja omistada nimed neile ja siis neid kasutada ja edendada, lõpuks. Ja me räägime natuke mobiilsete strateegiaid, nagu mida see tähendab, et tegelikult teha mobiilirakendusega või mobiiltelefoni veebilehel. Kas sa seda Android? Kas sa seda iOS? Kas sa seda nii nende? Ja millised on kompromisside? Ja siis lõpuks, me võtame vaata veebi programmeerimine, mis on üldtermin tõesti kirjeldab igal ajal sa kirjutada tarkvara, mis on mis käivituvad veebis kas telefonis või töölaudade või sülearvutid. Võtame lühiülevaate andmebaaside ja disaini seal, kui ainult sellepärast peaaegu iga Huvitav veebipõhine rakendus nendel päevadel on mingi andmebaasi. Vastasel juhul lihtsalt olla staatiline sisu. Ja andmebaas võimaldab teha muutub aja jooksul, kas ise või kasutajatelt. Ja loeme, kuidas läheks umbes projekteerimisel andmebaasi ja millist kõnepruuki mis võivad tulla inseneri arutelu Wideboard kui tegelikult rakendatakse Rakenduse esmakordselt. Räägime lühidalt API, kasulikke teenuseid mida saab kasutada seista õlgadele teised, kas ettevõtted või üksikisikute ja lahendada oma omad probleemid kiiremini. Ja siis me võõpama ehk natuke JavaScript, programmeerimiskeel, mida kasutatakse nii brauserid nendel päevadel, vaid ka serverite. Ja võib-olla, jagame vaadata, kui aeg seda võimaldab, mõned käed-veebivärk me eile ja integreerida kaks kokku enne kui me edasi lükata. Nii selle-- mis on ahead-- on midagi puudu, et sa tahaks veenduda, et me sisestada ja puudutada mingil ajahetkel. Kui see Mõtlen, tuua see üles enne pikk. Aga miks me ei alata vaadata arvutuslikke mõtlemist. Ja andke mulle ettepaneku, et arvutuslikke mõtlemine on jällegi omamoodi kõrgetasemelise kirjeldus Mis arvuti teadlane võiks teha. Ja tõepoolest, alustame kolme koostisosi, mis Võib minna arvutuslikke mõtlemist. See on vaid üks viis kirjeldada seda. Me võiks kindlasti määratleda Seda mitmel viisil. Aga andke mulle ettepaneku, huvides täna et maailma probleeme, kõik maailma probleemidele, kui lähenes arvuti teadlane võiks vaadelda, mida jagame kõne sisendid, mis vajate söödetakse, mida me nimetame algoritme, mis siis annavad väljundit. Teisisõnu, kogu maailma probleemide lahendamise Väidan saab destilleeritakse Nende kolme koostisosi. Mida ma mõtlen sisendite? Sisendid on just see, mida sa oled meheks et lahendada. Näiteks siin vana kooli probleem. Kui mul on telefoniraamatus siin Tahan vaadata sinna midagi, see on minu panus. Mul on 1000 või nii lehekülge telefoniraamat. See on sisendiks minu probleem. Ja ma tahan, et leida midagi nagu Mike Smith, seega sõbrale kelle nimi ja number on loodetavasti see aadressiraamatus. See on enne päeva raku telefonid, nii et ma ei saa lihtsalt otsida. Nii et ma pean seda vana kool ja tegelikult otsingut Nende sisendite mõned vastus. Ja see vastus on lihtsalt läheb mida nimetatakse väljundi. Nii sisend on telefoniraamatus. Algoritm on ükskõik komplekt samme ma kasutan leida Mike Smith. Ja väljund on loodetavasti Mike Smith telefoninumber. Ja see siis oleks just esindaja kõige mingeid probleeme et sinuga on käega sisendite ja tahavad toota väljundeid. Nii et enne vaatleme protsessi mille abil saame seda probleemi lahendada, leida Mike Smith ja midagi sellist, Vaatleme esimest ja last-- sisendid ja väljundid. Füüsiliselt muidugi sisend siin on terve hunnik paberit kokku liimitud kujul telefoniraamat. Aga arvutit, neist course-- sülearvutid ja lauaarvutid ja isegi telefone Nende days-- need on elektroonilised seadmed. Ja lõpus päeval, mis on ainus sisend arvuti? Noh, see on midagi sellist See toitejuhe siin. Ma ühendage see seina ja Ma saan voolu elektronid, mis võimaldab mul sõida. Või äkki need elektronid loodud viis mu aku. Aga lõpus päeval, see on ainus asi läheb minu sülearvuti. Ja nii palju huvitavaid värk on lõppkokkuvõttes tuleb välja, kas teel printer või ekraani või audially vms. Nii et kui kõik on meil kui meie põhiline sisend arvutile on elektrit, nii lihtsalt elektronid läheb ja ega välja, ja siis kuidas me kasutame, et sisend tegelikult esindavad informatsiooni? Teisisõnu, kuidas me saame alates lihtsast elektrienergia voog kuni esindavad tegelikku numbrid või tegelik kirjad või tegeliku kujutised ekraanil või tegeliku filme või e-kirju või ükskõik kui paljud neist kõrgema tasandi mõisted, kui soovite, et sel Päeva lõpuks kuidagi tuleb ladustada selles elektroonilise mehaaniline seade kasutades ainult neid lihtsaid ingredients-- elektronid tulevad sisse ja välja? Nii tundub, et kõige lihtsamal kujul, Ainuke Ühendriigid Mul on minu maailma, nii kuni speak-- tingimused minu world-- on kas Mul on elektronid voolavad, elekter voolav, või ma not-- nii edasi, välja. Ja olgem vormistama ja välja lülitada, kui arvuti teadlane väe vaid 1 ja 0. Ütleme nii kirjeldada suvalise aga järjekindel number ta. 1 tähendab kohta, 0 tähendab välja. Või te võite vaadata ka seda, kui tõsi vahendite kohta ja vale vahendit. Sa võid teha ka musta ja valge või punane ja sinine. Teil on vaja ainult kahte kirjeldustega. Ja arvuti teadlased üldiselt lihtsalt kasutada 0 ja 1. Nii et kui see on nii, mu ainus tähestik on koosnevad 0 tema ja 1-, kuidas kas ma võib-olla saan isegi number 2 arvutit, rääkimata arv 3 või täht või pilt või filmi? Kuidas me justkui alglaadimisel end antud põhimõte 0 s ja 1-ja tegelikult esindavad midagi huvitavat? Noh, paneme selle küsimuse ootel hetk ja kaaluda midagi loodetavasti tuttav, isegi kui te pole tõesti mõelnud seda mingil detail 10, 20, 30, 40, 50 rohkem aastat. See on mis? Kuidas hääldada seda? Ei konksuga küsimus. Mitmed, kuid mis see on? 1, 2, 3 või 123. Ja mulle meeldis, kuidas sa ütlesid 1, 2, 3, sest see on üks viis vaadates. 1, 2, 3, see on järjestus Kolme sümboleid. See on pildid, mis me Nüüd on olemas sõnad. Ja kui sa omamoodi lugeda neid kõiki koos, tüüpiline inimese inglise ütleks 123. Ja see on omamoodi kõrgema taseme mõiste, tundub mõistlikult suur number. Aga kuidas me sinna jõuame? Noh, see võib olla mõnda aega, kuna olete mõelnud niimoodi, Aga tagasi minu päev, ma Selline õppinud seda kui 1-veerus 10 s kolonn, ja 100 andmeveeru. Nii nagu Lakisa ütleb, on 1, 2, 3, aga see on ka 123. Aga kuidas me saame endine viimane? Noh, sa oleksid tavaliselt teha 100 sammas, mul on 1. Nii et nagu öelda 100 korda 1. Ja siis 10 veerg, mul on 2. Nii et nagu öelda 10 korda 2. Aastal 1 veerg, mul on 3. Nii et nagu öelda 1 korda 3. Ja kui ma lisan need asjad kõik see koos muidugi 100 pluss 10 pluss 3. Ja oh, sellepärast ma selle kõrgema taseme mõistet 123. See on lihtsalt põhilised matemaatika, kusjuures need sümbolitel on kaalu neile, kui te siis, kohatäiteväljaga või veeru väärtused. Ja kui ma korrutan kõike välja, ma saan selle numbri. Niisiis, kuidas paljud teist teavad, kuidas rääkida binary-- 0 tema ja 1's-- nagu arvuti? OK, täiuslik, keegi, või ükski te arvate, mida te teete. Aga ma väita, sa tegelikult teavad seda juba. Me lihtsalt vaja mingi näpistama meie vaimne mudel natuke. Kuid see protsess on täpselt sama. Las ma jätta see sinna üles ja asemel tõmmake see maha hetkekski. Tänapäeva maailmas arvuteid, meil on ainult 0-ja 1-. Ja nii asi see on muutu on mis? Noh, minu inimese maailmas, detsimaalsüsteem kahanda tähenduses 10 Mul on mitu numbrit minu käsutuses? 10, eks? 0 kuni 9, muidugi. Ja sellepärast on meil 10 koht ja 100 koht. Kus on see pärit? Noh, see on 10 astmes 0. See on 10 astmes 1, 10 võimu 2 ja nii edasi. Sa muudkui korrutades oma veerud 10, alustades maha vaid 1 parempoolses siin. Nii maailmas arvutite, kui sa ainult on binary-- bi tähendus 2-- või 0-ja 1-, me lihtsalt tõesti vaja muuta baasi, et matemaatika. Nii teisisõnu, nüüd me lihtsalt on 1 sammas ja the-- kus on see going-- 2 veeru, 4 veeru, ja võib-olla ka väljaspool. Miks nii? Noh, see on 2, 0-nda võimu. See on 2, siis 1. See on 2 kuni 2, ja nii edasi. Nii et siin on meil 1, 10 s, 100-ndatel, 1000-ndatel, 10000 s, 100000 ndatel, 1 miljoneid, ja nii edasi, siin meil 1, 2, 4, 8, 16, 32, 64. Sa muudkui korrutades 2, selle asemel, et hoida korrutades 10. Nüüd, kui eesmärgiks on Samas on esindada numbrit kasutades ainult 0-ja 1-, Vaatleme, kuidas me sinna jõuame. See muidugi on mustri 0 0 0, aga mis number kontseptuaalselt see esindab? Noh, 4 korda 0 pluss 2 korda 0 pluss 1 korda 0, lisame need kokku. 4 korda 0 on muidugi 0, pluss 2 korda 0 on muidugi 0 pluss 1 korda 0 on muidugi 0. Nii ah, see moodustab number meie, inimesed teavad, kui 0. Noh, nüüd, lähme väga kiiresti kiiresti edasi. Kui ma mitte ei esinda 0 0 0, kuid teeme 1 0 1, mis võiks olla, kuidas Lakisa, varem oleks lihtsalt hääldada 1 0 1. Aga nüüd, kuidas me seda suurem Kohalikuks number meie, inimesed tunneksid? Mis siis on see number? See on 5 arvu me teame kui 5. Noh, miks see nii on? Noh, on meil tegelikult omamoodi kõndida läbi metoodiliselt 4 korda 1, 2 korda 0, 1 korda 1. Lisa need koos, nii See on 4 pluss 0 + 1. Ja see on tõesti 5. Nii Läheb veidi tüütu nüüd teeme aritmeetiline uuesti ja uuesti. Kuid see protsess on täpselt sama. Ainuke asi, mis on muutis meie maailma on see, et meie kolonnid on 1, 2, 4, 8, 16, ja nii edasi, selle asemel, 1, 10, 100, 1000. Ja see on ainult sellepärast, et meie tähestik on kahanenud 0 kuni 9, et lihtsalt 0: 1. Nii nagu väike viktoriin siin, kuidas oleks sa esindama arvu 7 kahendsüsteemis? 0? Noh, 0, sa mõtled 0 0 0? Ütle seda uuesti, Karina. Täiuslik. Miks nii? See on tegelikult 4 + 2 + 1. Nii hea. Kuidas me esindame vähe another-- kuidas number 2? Sulge, kuid tahapoole. Mis see on? Kas 4 + 1, nii et see on 5 uuesti. Nii what's-- Vabandust, Karina? 0 1 0. 0 1 0 oleks 2, sest uuesti, isegi kui see omamoodi ei hüppa välja ennast, lihtsalt ei matemaatikat. 4 korda 0, 0, 2 korda 1 on 2, 1 korda 0 on 0. Nii et see on number me teame kui 2. Kuidas number 8? Hm? Väga hea. Nii me sellist vaja veel kohatäide. Meil on vaja 1 0 0 0. Ja see on tõsi meie omamoodi vana kooli detsimaalsüsteem. Kuidas esindama arvu 1000? Noh, siis tundub olevat selline sitke kohapeal Kui küsida, et esindada arvu 1000, sest isegi kui te ennast nagu Neist 9, 9 neist, 0 neist, mis on suurim number, mida on, et sa ei ole päris saada kuni 1000. Nii et kui sa 1000, siis tuleb lihtsalt teine asendis, nii et seda saab teha 1 0 0 0, ergo arv 1000. Nüüd, olgem map selline kontseptuaalne arutelu tagasi riistvara, kus jällegi sisend oli lihtsalt see väike toitekaabel, elekter tulevad ja voolab. Ja nii ette, et kaardistada siit seal, noh, mida me tegelikult vajame? Noh, sa ei mõtle seda sees arvuti, terve hunnik lampe, kui soovite. Nad tõesti nn transistorid. Ja transistorid on vaid lülitub mis võib olla kas sisse või välja. Nii et sa ei mõtle transistor see on on võimaldada elektri voolu ja transistori, mis on välja peatus- elekter voolab. Ja mitte võtta üle tuled siin Miks ma ei tee seda omamoodi Uute kooli stiilis. Nii et see võib olla 1, taskulamp olemisega, vaid vaevu küll. Ja see võib olla 0, ja nüüd on välja lülitatud. Nii kasutavad seda füüsilise seadmega, ma saab nüüd esindavad kahendsüsteemi. Ma lihtsalt vaja kahte riiki. See ei ole oluline milliseid värvi see on või mis see on. Kõik, mis loeb on see, et mul on ühe riigi kohta ja teise riigi välja. Nii kasutades oma telefoni siin, kuidas ma esindama arvu me teame, kui 0? Või pane kirja panduna, mida number ma esindavad nüüd? 0, kuna seade on välja lülitatud. Ja kui ma seda teen? Ja nüüd, kuidas ma esindama arvu 2? Kas ma saan laenata telefon siin, nagu me tegime eile? Vaatame, nii et kui ma tahan esitada number 2, on see number 2? Ei. Mis number ma kogemata esindavad siin? See on tegelikult number 3. Nii Kumba ma tahan välja lülitada? Must telefon või-- hästi, kui they're-- must telefoni või valge telefon? Valge telefon. Nii et kui ma seda välja lülitada ja me line see üles siia, meil on 1 et 2 koht ja 0 on 1 koht. Ja nii ma olen nüüd esindavad number 2. Ja see, Loomulikult oleks number 3, sest nüüd on mõlemad need tuled põlevad. Ja ma siin peatuda, kuid siis loogiline kui ma tahan esindada number 4 või 8 või kõrgem, Ma lähen vaja rohkem telefonid. Aga see on kõik, mis toimub. Nii et kui te olete kunagi kuulnud, et sees a-- tänada sina-- arvutis on miljoneid transistore, mis on lihtsalt miljoneid tilluke lülitid. Ja nad ei ole kerge pirnid, et sisse ja välja lülitada, kuid nad kas lubavad elekter voolata kusagil või peatamiseks. Ja nii seal oma kaks states-- sisse või välja, sisse või välja. Nii et me tundub nüüd on see võime esindada seda kontseptsiooni, mis tahaksime tegelik riistvara. Aga kõik on meil nüüd on võimalus esindada numbrid tundub. Niisiis, kuidas me minna esindavad tähestiku tähti, mis tundub järgmise omamoodi funktsioon tahaks lisada kaasaegse arvuti kui sul on numbrid? Ja tõepoolest, kui sa arvad see ajalooliselt arvutid toodi tõesti teenida kui kalkulaatorid numbriliselt. Aga muidugi, need päeva, nad teevad palju rohkem. Isegi kui nad käivitamisel, siis tavaliselt näha ühe või mitu sõna. Niisiis, kuidas sa esindavad sõnad, kui pead on jällegi elektrit lõppu päevas või samaväärselt 0 tema ja 1-? Jah. Jah, ma mõtlen, me mingi tegime eile mingis vormis, kus mingil hetkel, Ma arvan, et ma omavoliliselt ütles, et kui me tahame esindada täht A, me võiks lihtsalt helistada, et 1. See oli kontekstis krüptograafia, kus me lihtsalt vaja mingi kood, mingi kaardistamine. Nii võib-olla on esindatud nii 1, ja B on esindatud kui 2, ja Z on esindatud kui 26, näiteks. Ja siis ainult hoiatus, et kui ma olen läheb kodeerida tähed minu e-posti või minu tekstisõnumeid numbreid, siis kõik olema nõus kasutama samad konventsioonid. Ja tõepoolest, maailma on teinud just nii. On süsteem maailmas nimetatakse ASCII, American Standard Infovahetuse, mis on lihtsalt otsuse mõned aastad tagasi, et inimestel teha, et otsustas, et läheb võrdsed, ei 1, 2 ja 26, ja nii forth-- see on vähe erinevalt-- aga 65, 66, 67. Ja ma tõmba diagrammi hetk. Aga see on meelevaldne. Aga see ei ole oluline et see meelevaldne. Maailmas on lihtsalt olla järjekindel. Nüüd viimasel ajal seal on midagi Kasvataja nimetatakse Unicode, sest maailma omamoodi realiseeritud pärast leiutamine arvutid, et seal on rohkem kui hästi 256 sümbolite maailma et meil võiksid esindada eriti siis, kui kasutusele Aasia keelte ja muud symbologies et on vaja rohkem ekspressiivsust kui sa mahub esimesel versioon Selle koodiga, mida kutsuti ASCII. Nii Unicode tegelikult võimaldab Teil kasutada 0-ja 2. Eelkõige hoiate ära kuulanud Sõna baiti ühiskonnas ja isegi ainult eile. Ja bait ongi jälle? Mis on bait? See on lihtsalt 8 bitti. Mida see tegelikult tähendab? Noh, see tähendab, varem, kui olime räägi kahe- ja olin kasutades omavoliliselt kolm bitti, kui olime räägi binary-- 1 koht, 2 koha ja 4 on place-- hästi, bait lihtsalt tähendab, et sa räägid mitte ühikutes kolm, kuid nelja, viie, kuue, seitsme kaheksa, mis annab meile 8 koht, 16-ndatel, 32-ndatel, 64-ndatel ja 128 s. Teisisõnu, natuke ei ole kõik et kasulik mõõtühik, sest see on nagu üks tilluke infoelemendi sisse või välja. Nii mõned aastad tagasi maailma just otsustanud see on veidi mugavam rääkida poolest baiti, kaheksa asju korraga. Ja nii Nii sündis mõiste bait. Ja nii on meil kaheksa bitti siin. Ja selgub ka, et sarnaste põhjustel maailmas otsustas aastat tagasi, et esindada ASCII kirja, sa lähed kasutada ühikut 8 bitti. Nii et isegi kui sa seda ei tee vaja, et paljud, et sa oled alati saab kasutada 8 bitti esindavad täht. Ja see on mugav, sest siis kui sul teade, et on 0 0 0 1 1 1 1 0 järgneb teine ​​1 1 1 0 1 0 0 1, nii et kui te saate 16 bitti, maailm saab lihtsalt eeldada, et esimese 8 on üks täht ja teine ​​8 on teine ​​täht. Ei ole oluline, kui palju on. See lihtsalt on tähtis, et me oleme kõik järjekindel kui me tõlgendamisel need bitid. Ja see oli lihtsalt juhuslikult. See tähendab midagi, aga ma ei tõesti mõelda, mida see tähendab. Nii et see on väike hädavale. Algselt ASCII tegelikult kasutatakse ainult 7 bitti. Ja kaheksandal bitt on nimetatakse laiendatud ASCII. Aga asi on lõpuks sama. Maailmas üldiselt standardiseeritud 8 bitti. Nii et see tundub olevat vähe piirata, sest ma saan ainult esindavad kapitali A kapitali B läbi kapitali Z. Aga tõepoolest mitte, kui ma lähen mina-- seal on hunnik vahendeid Internetis, näiteks asciitable.com see saab olema natuke valdav alguses. Aga ma meelde mis on oluline siin. See lihtsalt juhtub olla-- ja ma walk-- vaatame, kui ma lähen siin. Siin on koma veeru number 65. Ja parempoolses tulbas kirjas iseloomu, Chr, on kirjas A. Ja sa ei saa eirata, nüüd, kõik keskel. See on kuueteistkümnesüsteemis kaheksand ja HTML koodi. Et see sait on lihtsalt üritab visata palju teavet teile kohe. Aga kõik me hoolime on koma kolonni ja iseloomu kolonni. Nii selle loogika, mis on arvu, et maailma on otsustanud esindab väiketähed a? Jah, 97. Ja just segadusse potentsiaalselt veidi, Mis number on maailma otsustanud kujutaks number 1? Õige, sest we-- 49, tundub Siin korras all vasakul. Nüüd, mida ma mõtlen, et? Nii selgub, et arvutisüsteemides, seal on üldiselt põhiline erinevus vahel arvu ja iseloomu. Mitmed on asi, mida me õppinud kasvab, kui olime super noored algkool. See on asju, mida loota koos. Aga märk on lihtsalt kuju järgi tähemärkide, nii-öelda ekraanil. Nüüd meil inimestel omamoodi näha midagi, mis näeb välja selline. Ja me ütleme, oh, see on number 2. Aga ei, see on lihtsalt sümbol, mis näeb välja nagu me teame, sest number 2. Ja nii pole see olulist erinevust Tegeliku numbreid ja tähti. See on number. Aga üldiselt, et kontekstis arvutiga Kui te selle asemel näha midagi sellist quoted-- Ja sa ei pea alati on seda näha tsiteeritud kuid pärast discussion-- kui näed jutumärgid number, see on nüüd märk. Nii et see number 2 all kapuutsi sees arvutis oleks esindatud mustriga bittide et esindama arvu 50 vastavalt kaardi online. Siiski, kui arvuti lihtsalt näeb seda, see oleks esindatud koos muster natuke 0 0 0 0 0 0 1 0. Arvestades, see märk oleks tegelikult esindab kui-- ja nüüd, Ma sain mõelda natuke harder-- nii et see märk oleks esindatud 0 0 1-- mida ma pean siin? 0 0 1 1 0 0 1 0. Kuidas ma seda teen? Noh see on number 50, kui te korrutada see läbi, kasutades need sambad, see on number 2 jne Sellepärast on see dihhotoomia. Ja see on lihtsalt teaser nüüd omadused mis eksisteerivad programmeerimiskeelte et me puudutada põgusalt hiljem täna. Programmeerimiskeeltes, Teil on üldiselt kuid mitte alati, asjad helistada erinevat tüüpi andmeid. Teisisõnu, et programmer-- kui ta kirjutab, programmeerija saab otsustada, millised vormingus salvestada oma andmed. Sa võid kas poest andmeid Numbrid, nagu number 2. Või saab salvestada neid stringe, või märkide jadasid et teil oleks üldiselt väljendada koos hinnapakkumisi oma programmeerimiskeelt. Sul võib olla asju nimetaks Ma lihtsustavad ja helista neile tõeline numbers-- nii numbreid ei ole täisarvud nagu number 2, kuid numbrid nagu 4.56. Nii tegelik arv võib olla ka on peale koma, nii see on teine ​​põhiline tükk andmed arvutisse. Ja siis saate isegi muud andmed tüüpi veel. Nii et lihtsalt teaser tõesti on lihtsaim disaini otsuseid et programmeerija võiks teha all kapuuts. Nii tekib küsimusi veel? Nii proovime teha see veidi rohkem reaalne. See riistvara ei ole nii palju enam ei kasutata. Aga kõige kõik selles ruumis ilmselt kasvas üles ja kasutab kõvakettad mingil moel. Kuigi enamik Meie sülearvutid enam on seadmed, mis töötavad nagu see, asemel sülearvutid täna üldiselt on tahkes olekus kõvakettad puuduvad liikuvad osad. Ja mis kipub olema kallim, kahjuks, kuid natuke kiiremini ja a-- hästi, tihti palju kiiremini, mis on üks põhjustest. Ja ka seda ei juhtu tekitada sama palju soojust. See võib olla väiksem, nii et see on üldiselt net positiivne. Kuid see võimaldab meil kaardistatakse vähe konkreetsemalt, mida me räägime juures 0-ja 1 taseme nüüd füüsilise seadmega. See on üks asi mulle rääkida umbes 0 tema ja 1-näol minu telefoni või abstraktselt poolest lülitid on sisse ja välja. Aga kõvakettad? Oma sülearvutid, kui teil on vanem üks või arvutist, või kindlasti serverid täna, kus sa pead kõvakettad, mis on teratavun ruumi, 4 TB ruumi, hästi, mida see tähendab? Kõvaketas 1 terabyte ruumi vahendid seal on 1 triljon baiti sees on kuidagi, või samaväärselt 8000000000000 bitti sees. 1 terabaidi oleks 8 terabits või 1 triljon bitti, mis tähendab, et kui sul on raske sõita, siis on kuidagi või muu triljonit 0 tema ja 1-sid sees on. Ja kui me lihtsalt võtta pilk suvalise pildi kõvaketas esindaja, see on see, mida raske sõita võib tavaliselt nägema sees. Ka see on selline nagu vana fonograaf mängija kuid üldiselt Mitme kirje sees, nii et kuni speak-- mitu Vaagnad, nagu neid kutsutakse, metallist ümmarguse ketta ja siis veidi lugemist pea, palju nagu vana grammofon. Ja et lugemispea liigub tagasi edasi ja kuidagi loeb bitti. Ja mis on nende Vaagnad, isegi Kuigi meie, inimesed ei näe neid, kas tegelikult või seda pilti, seal on väike väike magnet osakesi. Ja isegi kui te pole kaua unustanud, kuidas elektritööd, magnetpulberproovi mis on laetud üldiselt on põhja lõpuks ja lõuna väljatöötamiseni nii põhja ja lõuna suunas. Ja nii maailmas lihtsalt otsustas mõni aeg tagasi et kui magnetilise protokoll sisuliselt on joondatud niimoodi, põhja-lõuna, nimetame, et 1. Kui see on mitte põhjast lõunasse, Kutsume et 0. Ja kui sul on Teie käsutuses triljoni tilluke magnet particles-- ja loodetavasti riistvara leidlikkust Selleks, et klapp need ümber nagu näete fit-- kui soovite esindavad terve hunnik 0 tema, siis lihtsalt vaja 8 magnetilisi osakesi kõik joondatud niimoodi. Ja kui sa tahad esindada Kaheksa 1-, sa lihtsalt pea 8 magnetilisi osakesi joondatud tagasi seljad niimoodi. Mida ma mõtlen, mida magnetilisi osakesi? Ausalt, kõik need aastat hiljem asi, mis tuleb ikkagi minu arvates see kutt, kui sa kasvas üles koos seda asja. See on little-- eest need unfamiliar-- vähe lapsepõlve mänguasi, mis on see karvadeta mees siin mis on kõik need tilluke must magnetilisi osakesi, mis sellega kaasneb. Ja kasutades, et punane pulk, mis on lihtsalt magnet, saab omamoodi anna talle vuntsid või kulmude või karvade või midagi teda. Nii et tegelikult, kui me suurendada in, näiteks, see on selline mäng sa saab mängida villane Willy. Ja see on ainult ütlevad, need on tunduvalt suuremad magnetilisi osakesi kui on tegelikult kõvaketas, ja palju vähem magnetilisi osakesi. Kuid olgem tegelikult näha siis, kui sul on väike magnet osakesi kõvaketas, kuidas tegelikult võite kasutada neid andmete esitamiseks. [VIDEO PLAYBACK] -The Kõvaketas on koht, kus arvuti kauplustes enamiku oma andmete püsivaks. Selleks, et andmeid liigub RAM mööda tarkvara signaale, mis ütlevad kõvaketas, kuidas salvestada et andmeid. Kõvaketas vooluringid tõlkida need signaali pinge kõikumine. Need omakorda kontrollida kõvaketta liigub osa- mõned vähesed liikuv osad jäänud kaasaegse arvuti. Mõned signaalid kontrollida mootori, mis keerleb metalliga kaetud Vaagnad. Teie andmed on tegelikult salvestatud need Vaagnad. Teised signaalid liikuda lugeda / kirjutada pea lugeda või kirjutada andmed Vaagnad. See masin on nii täpne et juustest ei saanud isegi vahelt pead ja ketramine Vaagnad. Kuid see kõik töötab kohutav kiirusel. [END PLAYBACK] Ja näed juures saba lõpus video, seal on tavaliselt mitu Vaagnad. Ja nii, et lugedes pähe ei ole lihtsalt lugemise tippu. See on selline nagu kolm või nelja või enamat lugemise juhid et liikuda niimoodi, lugedes andmeid üheaegselt. Nii et palju keerukust ja omamoodi ajastus mis on seotud kõvaketas. Ja asi on ketramine tõesti paganama kiiresti, nii et seal on palju keerulisemaks. Kuid olgem suurendada veidi sügavamale ja vaata, kus on need magnetilised osakesed ja kuidas me saada neid. [VIDEO PLAYBACK] -Lähme Pilk meie just nägin aegluubis. Kui lühikese impulsi elektrit saadetakse lugeda / kirjutada pea, see Peegeldab on väike elektromagnetilise jaoks sekundi murdosa jooksul. Magnet tekitab valdkonnas, mis muudab polaarsust pisike, pisike osa metalli osakesi mis karva iga taldrik pinnale. Muster seeria neid pisikesi laetud alade ketas tähistab ühe natuke andmeid kahendarvuna süsteem, mida kasutavad arvutid. Nüüd, kui praegune saadetakse üks tee läbi lugeda / kirjutada pea, valdkonnas polarisatsioon ühes suunas. Kui praegune saadetakse vastupidises suunas, polarisatsiooni vastupidine. Kuidas sa saad andmeid kõvakettalt kustutama? Just vastupidine protsess. Nii et see on osakesed kohta ketas, mis saada praeguse on lugeda / kirjutada pea liigub. Pane kokku miljoneid Nende magnetiseeritud segmentide ja sul on fail. Nüüd tükki ühe faili võib olla laiali üle ketta Vaagnad selline nagu segadus pabereid laual. Nii eriline lisafaile hoiab peal, kus kõik on. Kas sa ei soovi sa olid midagi sellist? [END PLAYBACK] Nii on vihjatud seal, võibolla on et teema eile kustutamise. Kui kustutate faili, eile ütles et arvuti tegelikult teeb Mis siis, kui te tõmmake midagi prügikasti või prügikasti? See lihtsalt unustab ta. Aga 0-ja 1-, magnetosakesed mis näevad välja nagu punane ja sinine asju siin, või minu arm siin on ikka veel seal kõvakettale. Ja nii on olemas software-- Norton Utilities ja ajastu ja teiste moodsamate software-- et lihtsalt skaneerida kogu kõvaketta vaadates üldse need 0-ja 1-, sest see Selgub, et kõige faili formats-- Wordi dokumente, Excel faile, pilte, video files-- kõigil on teatud mustreid, mis on levinud nende seas. Iga videofaili võiks olla erineva video, kuid esimeste bitti on tavaliselt sama. Või viimase mitu bitti on tavaliselt sama. Ja nii suure tõenäosusega, saate otsida neid mudeleid. Ja isegi kui fail on unustatud, sa ei saa öelda suure tõenäosusega, kuid see näeb välja nagu Word dokument, laseb seda tagasi ja un-unusta seda, kui soovite. Ja nii see on, kuidas saate taastada andmed, mis on kas olnud kogemata kustutatud või kustutatakse või tahtlikult kustutada mingil eesmärgil. Seevastu turvaline kustutamine mida teeb kontekstis pilt niimoodi? Täpselt, muudab nad kõik juhuslik. Nii et see omamoodi liigub mõned neid maha, mõned neist üles jätab mõned neist muutumatuks, ja Üldiselt teeb juhusliku müra välja, või lihtsalt võibolla muudab kõik neid 0-või neid kõiki 1-sid. Ka see võib üldiselt nühkima oma andmeid ära. Nii saab tagasi nüüd teema arvutusvõimsust mõtlemine, kusjuures meil valem sisendeid. Ja algoritme annab sa väljastab lõpuks. Keskendume nüüd sisendite ja väljundeid, sest nüüd ma nõue on meil võimalus esindavad sisendid ja väljundid. Me lihtsalt kavatse kasutada binaarse. Ja ükskõik, mida me soovi esindada täna kas see on number või täht või tuhandeid sellest telefoniraamat või pilte või filme, lõpus päev, see on kõik 0-ja 1-. Ja ma väita, et kuigi see on super lihtne maailmas vaid 0 tema ja 1-, saame ehitada end üles. Ja me oleme näinud üks näide et tähtede siiani. Nii saab keskenduda nüüd sellele keskelt koostisosa, algoritm. Ja olgem tagasi selle Näiteks Mike Smith. Nii et selles telefoniraamat, mis küll, me ei kasuta nii palju enam, seal on probleem, mis tuleb lahendada. Me tahame, et leida keegi nagu Mike Smith. Ja mida võiks teha, et leida Mike? Noh, ma võiks lihtsalt avada seda raamat, algavad esimesel lehel, ja mõistavad, oh, ma olen sektsioon. Mike ei ole seal. Vajan S osast Smith. Nii lihtsalt hoida keerates ühe lehekülje korraga. Las ma teeselda, et see kõik on Valgeid lehti ja mitte kollased leheküljed, sest me ei leia Mike kollased leheküljed niikuinii. Aga ma olen valged lehed. Ja nüüd, ma olen B jagu. Ma ei ole veel leidnud teda. Nii et ma hoida keerates ühe lehekülje korraga. See on algoritm. See on juhistega lahendamiseks mingi probleem. Teisisõnu vaadata Kui leht Mike ei ole see, keera lehte ja kordused uuesti ja uuesti ja uuesti, ideaalis alla vaadates kui sa teed seda. Nii on see algoritm, Selle protsessi õige? Vabandust. Ei, ma kuulen mõned numbrid. OK, aga see on-- jaa, see on kindlasti tüütu. Nagu me siin kogu päeva, kui ma hoida otsin Mike sellel kiirusel. Aga las ma väita, et see on õige. Tobe, aga see on õige. Lõpus päeval, kui see võiks võtta, siis ma leida Mike, kui ta on seal ja ma pöörates tähelepanu. Ja ma lõpuks jõuda oma lehele. Ja kui ma saan liiga kaugele, kui Ma saan T paragrahvi siis ma saan veidi optimeerida ja lihtsalt öelda, hm, kõik tehtud. Ma isegi ei vaja raisata aega läheb Z. Kuid see on väga lineaarse lähenemise kui te on väga omamoodi vasakult paremale lähenemine, sirge. Ja selle õige, kuid aeglane. Nii et ma mäletan algkool, omamoodi ja optimeerimise alates esimese teehöövel, kus õppisin lugema ei poolt ones vaid twos-- nii 2, 4, 6. See on A, palju raskem teha, kuid teoreetiliselt on see faster-- 8, 10, 12, 14, ja nii edasi. Kuidas sellega algoritm? Kas see on tõhusam? Kas see on kiirem? Publik: See on väga tõhus. DAVID Humala: Jah, nii see def-- see sõna otseses mõttes kaks korda kiiremini, eeldades, ma Ärge saage kompastumisen mu sõrmed. See on kaks korda kiirem, sest Ma keerates läbi kahe lehekülge korraga, mitte üks, vaid see on potentsiaalselt õige, sest miks? Publik: Sa vahele mõned. DAVID Humala: Õigus, mis siis, kui Mike juhtub tuleb sandwiched-- võibolla kui ma olen hiljem telefoniraamatus, Mike juhtub olema vahele need kaks lehekülge, ja ma lihtsalt pimesi vahele üle. Seega on meil vaja veidi fix olemas. Kui ma tabanud T osas ma ei saa lihtsalt kindlalt väita, me ei leidnud Mike Smith. Ma ilmselt kahekordistub tagasi. Või tegelikult, kui ma jõuan keegi nimega S-N asemel S-M Smith, kohe, ma võiks kahekordistada tagasi, sest äkki ta oli eelmisel leheküljel. Aga ma ei pea kahekordistada nii kaugele tagasi. Teoreetiliselt, kui ma seda õigel aega, ma lihtsalt tagasi minna üks lehekülg. Nii see on, lisades ainult üks lisatööd. Nii et ma olen läinud kaks korda kiiremini, kuid see maksab mulle üks ekstra lehel. Aga mis tunne on võidusumma. Kuid see ei ole, kuidas enamik inimesi Selles ruumis oleks seda probleemi lahendada. Mis oleks tüüpiline inimene, võibolla Paar aastat tagasi teha, leida Mike Smith? Jah, ei leidnud Mike. Mida teha? Nii et saada veidi lähemale, kuid ma ju küll-- mis on tõsi umbes telefoniraamat? Publik: See on järjestikune. DAVID Humala: See on järjestikune. See on tähestikulises. Ja kui ma olen M paragrahvi Mike on selgelt paremale, Ma sõna otseses mõttes pisar probleemi half-- see on tavaliselt lihtsam kui selle-- pisar Probleemi pooleks ja see ära visata, nii et nüüd, mul on probleem, mis on enam 1000 pages--, et oli raske, sest ma arvan, et ma tegelikult tore telefoniraamatust see AEG_ ei 1000 lehekülge, kuid 500. Nii et probleem on sõna otseses mõttes kaks korda väiksem. Ja see on päris veenvad, sest minu eelmise algoritmide versioon 1 ja 2, olin vaid muudab probleemi ühe lehekülje väiksemad, kaks lehekülge väiksemad korraga. Arvestades nüüd, ma tegin seda 500 lehti väiksemate kõik korraga. OK, nii et nüüd, Karim ettepaneku et ma lähen paremale poole. Nii et ma lähen umbes keskele, anda või võtta. Ja kui ma seda matemaatiliselt, Ma võiks minna paremale äärele. Ja nüüd, ma mõistan, oh, Ma olen T jagu. Ma tegelikult ei lähe liiga kaugele. Aga ma ei saa jällegi, pisar Probleem pooleks, see ära visata. Ja minu baiti ei ole nii suur. See on ainult, mida, 256 lehekülge või 250 lehekülgi, anda või võtta kohe. Aga see on ikka nii rohkem kui ühe lehekülje või kaks lehekülge. Ja nii nüüd ma lähen umbes keskele. Oh, ma ei lähe päris kaugele nüüd. Nii et ma kordan, kordan, kordan, korrata, kuni ma loodetavasti jäänud vaid üks lehekülg. Nii et küsimuse, kui ma algas umbes 1000 lehekülge, kui palju samme kulus mul versioonist 1 minu algoritm? Noh, kui Mike on S lõigul, halvimal juhul see on üsna lähedal lõppu tähestikus. Nii et kui telefoniraamatus on 1000 lehekülge, Ma leian Mike jooksul 1000 lehekülge, anda või võtta. Võib-olla see on nagu 800 või nii, kuid see on üsna lähedal 1000. Arvestades, et teine algoritm, kui palju lk pöördub maksimaalselt võiks ma vaja leida Mike Smith? Seal on 1000 lehekülge, kuid ma olen teed neid kahte korraga. Õige, nii max nagu 500ish, sest kui ma lähen läbi kogu telefoniraamat, sel hetkel ma ei saa peatada. Aga ma ei saa maha ajama mõne poolt lihtsalt peatudes T jagu. Aga see halvimal juhul 500 lehekülge. Nii mitu korda ma saan jagada 1,00o-leheküljeline telefoniraamat veel poole ja jälle ja again-- alates 1000 kuni 500 kuni 250-125? Kui kaua, enne kui ma tabanud üks lehekülg? Jah, see on umbes 10. Sõltuvalt ümardamine ja selline, see on umbes 10 lehekülge kokku tuleb välja või telefoni raamatuid tuleb rebenenud. Nii et on päris võimas. Alustasime 1000-leheküljeline probleem kõik need kolm lugu. Aga esimeses algoritmi, see võttis mind, halvimal juhul 1000 lk Selgub, et leida Mike. Teine algoritm, 500 lehekülge leida Mike. Kolmandaks algoritm, 10 lehekülge leida Mike. Ja see on isegi rohkem võimas, kui te arvate, umbes omamoodi vastupidine stsenaarium. Oletame, et telefoni firma kõrval aasta võibolla ühendab kaks linna koos, ja telefoniraamatus on äkki Selle paks, selle asemel, et nii 2000 lehekülge asemel 1000. Noh, minu esimene algoritm otsib Mike Smith on 2,000-leheküljeline telefoniraamat, Halvima, see läheb võtma mitu lehekülge muutub järgmisel aastal? Telefoniraamat on 2000 lehekülge, so-- hästi, ei ole veel üks. Kui telefoniraamatus on kaks korda nii paks aastal esimene algoritm, esimene algoritm, 2000, eks? Halvimal juhul Mike on tõesti lähedal raamatu lõpus, nii et see on 2,000 lehepööramised. Teine algoritm läheb teel rühmades, nagu 1000 lehekülge. Aga kuidas minu kolmas ja viimaste algoritm? Kui telefoni firma kahekordistab lehekülgede arv 1000 kuni 2000, mitu korda ma pean kiskuma see raamat pooleks leida Mike? Publik: Lihtsalt üks. DAVID Humala: Veel üks, sest ühe lehekülje pisar, Ma sõna otseses mõttes jagada ja vallutada, kui soovite, et probleem pooleks võtmist suur hammustada välja. Ja nii see on näide tõhusust ja väidetavalt algoritmi millega me kõik oleme omamoodi intuitiivselt tuttav. Aga see on lihtsalt nii õige kui minu teisi algoritme selle näpistama eest teine ​​algoritm, aga see on nii palju tõhusamaks. Ja tegelikult, mida arvuti teadlane, või omakorda programmeerija, oleks tavaliselt teha, kui kirjalikult kood on proovida aru saada, Olgu, ma ei taha, et minu Programm lihtsalt olla õige, Samuti tahan, et see oleks tõhus ja lahendada probleeme ka. Kujutage ette, reaalses maailmas, nagu Google indeksid, otsingud nagu miljardeid lehekülgi, kujutage ette, kui nad kasutatakse esimest algoritmi leida kassid seas miljardit pages-- vaadates esimesel leheküljel oma andmebaasi, Teise, kolmanda, lihtsalt otsin kass, kes otsivad kass. See on päris darn aeglane tundub. Nad võiksid selle asemel kasutada midagi nimetatakse binaarne otsing, mis ole coincidence-- bi tähendab kahe oleme hoida jagades midagi 2 in half-- nad võiksid kasutada binaarne otsing ja võibolla leida kassid isegi kiiremini, või mis iganes see on, mida te otsite. Ja ausalt öeldes pole isegi Kasvataja algoritmid et teha palju rohkem kui lihtsalt jagades asjad poole et leida teavet kiiresti. Ja me räägime natuke nende kohta, pärast lõunat täna. Nii et lubage mul lihtsalt proovida esindama seda. Me ei pea minema mis tahes matemaatika või tegelikku arvu. Me ei saa rääkida abstraktselt. Aga las ma ettepaneku, kui te olid võttes arutelu nüüd inseneridega ettepaneku seda algoritmi ja sa üritad teha arvutatud otsuse sest äkki insener ütleb teile, tean, mida ma ei rakendama lineaarne otsingule nagu kaks minutit. Nii lihtne see ongi. Binary otsing ei ole nii fancy, kuid see saab mind nagu 10 minutit, nii 5 korda pikem. Seal on kaubanduse siin, isegi nii otsustada, millist tarkvara kirjutada. Kas sa kirjutada lihtsam algoritm, mis lihtsalt võtab sind kaks minutit? Või sa veeta rohkem aega, 10 minutit, kirjalikult Kasvataja algoritm? Kuidas otsustada, et selline küsimus? Või siis võiks teha seda veidi rohkem reaalne. Ma ütlen oma boss see aega võtab mulle kas nädal või 10 nädalat rakendada tarkvara sel viisil, kuidas sa otsustada, mida algoritmi roheline valgus? Karim? Publik: Publik, ma arvan. DAVID Humala: publik. Mida sa mõtled, mida publik? Publik: Kui see läheb kasutatavad kasutajad kes [kuuldamatu] kasutajate poolt [kuuldamatu]. Aga kui see on midagi, mida sa oled lihtsalt teeme ise hõlbustada probleem, [Kuuldamatu] kiiremini. DAVID Humala: Jah, see on kiire ja määrdunud on hea võimalus seda kirjeldada. Tegelikult, kui sa oled kirjeldades palju minu aega grad kooli, mille sageli korda, Kirjutasin halb kood teadlikult so-- Vähemalt see on, kuidas ma ratsionaliseeritud see-- teadlikult nii, sest kuigi olin kirjalikult koodi see oli suhteliselt aeglane täita, Mul oli võimalus kirjutada kood ise päris kiire, kulutusi vaid mõne minuti või tundi ei päevadel. Ja selgus, ma aeg-ajalt vaja magada. Nii et isegi kui mu koodi vaja 8 tundi joosta, ka see on hea, Ma lihtsalt magama minna, kui ta jookseb. Nii et ajal, ma arvasin, et see oli väga tark, kuigi ma ilmselt töötas läbi minu PhD väga aeglaselt. Aga vastupidist, mis on et kui ma kirjutamise tarkvara teistele inimestele, kes Olulised rohkem kui mina, noh, võttes neid ootama 8 tundi saada tagasi oma otsingutulemustes ei ole nii veenvad. Ja nii veedavad rohkem aega Esiplaanil kirjutada tarkvara mis on tõhusam, rohkem nagu meie kolmas algoritm, ilmselt kasu kasutajatele aja jooksul. Nii see tõesti oleneb üle aega, kuidas need kulud tõusta. Kui sa lähed tuleb kirjalikult tarkvara kasutada seda üks kord, Tõenäoliselt võib sama hästi teha kiire ja räpane, nagu öeldakse. Lihtsalt viska koos. See on kood, mis ehmatab teile, see on nii halb, kuid see saab tööd teha õigesti, kuigi see ei ole tõhus. Vastupidi, kui kulutada rohkem aega midagi, saad selle õige. Ja siis amortiseeritakse aja jooksul, et algul kulu aega on ilmselt mõttekas, kui te ei hoia optimeerides ühise juhul. Ja tõepoolest, see on teema programmeerimise või arvuti teadust üldiselt, püüdes optimeerida mitte haruldane juhtum kuid ühise case-- mida operatsioon juhtub ikka ja jälle? Kui sa lähed on miljardeid kasutajate otsivad oma veebilehel, siis tuleb ilmselt kulutada rohkem nädalat kuni ees kirjalikult parem tarkvara nii et kõik kasutajad saavad. Nüüd proovime jäädvustada see on vähe piltlikult, kuid mitte nii palju numbriliselt. Nii et siin on lihtsalt vana kooli diagrammi. Ja lubage mul öelda, et see on aeg. Ja see ei ole oluline what-- tegelikult ei ole, pole aega. Paneme et teisel teljel. Oletame, et see on aeg, ja see on suurus probleem. Ja arvuti teadlane võib üldjuhul kõne See lihtsalt n. n on nagu poppe varieeruv, kus n on number, n number, ja see on arvu iganes sisendid sul on. Nii antud juhul n on lehekülgede arv. Nii oleks 1,000 Juhul me lihtsalt ütlesin. Nii aeg võib olla mis tahes mõõtühik. Võib-olla on see teine. Võib-olla on see päeva. Võib-olla see on nagu lehepööramised. Ei ole oluline. Mida iganes sa tahad lugema, et siis on aeg või hind samaväärselt. Nii, et kõige esimene algoritm, kui ma näiteks oli 1000-leheküljeline telefoniraamat, Ma lähen punkti joonistamiseks seal, sest kui see on 1000 lehekülge, kulus umbes 1000 lehekülge selgub, anda või võtta. Ja siis kui mul oli 2000-leheküljeline telefoniraamat, ja ma lähen juhtida teist dot siin, sest 2000 lehekülge, see on nagu 2,000 sekundit või lehekülje muutub või mis iganes. Ja nii kui ma ütlesin, et see on selline lineaarne seos, see oli tahtlik, sest ma tahtsin hiljem nüüd-- õige now-- piiri tõmmata. See on selline sirge line suhe. Tõus on 1/1, kui soovite. Vahepeal teist algoritmi ütles, et kui sul 1000 lehekülge ja kasutad teist algoritmi kus ma loendatud 2 s, keerates kaks lehekülge korraga, peaks Juhin dot alla või üle oma esialgse dot? Publik: allpool. DAVID Humala: Allpool sest nagu me nägime, see võtab vähem aega, poole vähem aega. Nii dot olema pool nii kõrgele kui teine. Ja sama asi siin, see täpp peaks arvatavasti umbes seal. Ja nii minu teine ​​algoritm samamoodi on lineaarne seos ajaga. Ja me saame teha seda sellisena. Nüüd, kolmas ja viimane algoritm on natuke raskem juhtida. Aga intuitiivselt, kui mul 1000 lehekülgi minu kolmas algoritm, see võtab aega vaid mulle nagu 10 sammu. Ja kui mul 2000 lehekülge minu kolmas algoritm, see peaks mind ei 10 samme, kuid 11, vaid üks. Nii et me vaevu näeme seda. Ja selgub, kui Ma suumida, ma olen läheb liialdada efekti, kuju, et liin lõpuks ei ole sirge LINE sest tõepoolest oleks see, see näeks välja rohkem nagu others-- see on tegelikult Kaarjoon et kui me suurendada, läheb otsima palju nagu see. See-- hästi, OK, seda eirata osa. See oli mu sulepea läheb nurga. See on kõverjoon, mis on alati suureneb, alati, alati, alati suurenenud, kuid üksnes napilt. Ja nii ajas, siis on suhe, mis on rohkem nagu see. See peaaegu tundub sirge. Aga see on kunagi nii aeglaselt kasvab. Aga peaaegu kõik punktid mööda oma x-telje, horisontaalse telje, see on madalam kui teistel liinidel. Nii et see võib olla seos n, kusjuures kui teil on n lehekülge, viib teid n sekundit. See võib olla suhe n / 2. Sul on n lehekülgi, mis kulub sa n / 2 sekundit, pool nii palju. Ja see on logaritmiline suhe, mis Kui te mäletate, logaritm alusel 2 n lööb Sellise kasvu, nii rääkida. Nii et see on omamoodi püha Graal hulgast need kolm siin, sest see on lihtsalt nii palju tõhus, kuid vaieldamatult keerulisem rakendada. Kas küsimusi on? Noh, las ma teen seda, las mul avada teksti aknas lihtsalt nii saame proovida vormistama siin midagi. Nii et lubage mul minna nüüd ja rakendavad seda algoritmi leidmiseks Mike Smith koodi kui soovite, pseudokoodi koodi. Ma ei kavatse kasutada Java või C ++. Ma lihtsalt kasutada omamoodi Inglise-like süntaks, mida me üldjuhul helistada pseudokoodi koodi. Siin on mul tühi aken. Ja ma väidan 1. etappi väga Esimene algoritm on kiirenemist telefoni raamat. Samm 2 on avatud raamat esilehel. Samm 3 saab vaadata lehel Mike Smith. Kui leheküljel, helistada Mike. teine ​​omakorda lehele ja jätkake 3.. Valmis, oletame. Ja nii see ei ole päris täiuslik, mida me näeme hetkel. Kuid olgem kaaluma, milliseid mõisted Olen siin tutvustatud. Nii samme 1 ja 2 ja 3 on päris palju tegusõnu. Nad avaldused, actions-- seda teha. Ja nii programmeerimise keel, oleksime üldiselt nimetame neid väiteid või funktsioonid ja protseduurid, helista neile igal mitmeid asju. Aga nad lihtsalt actions-- seda teha. 4. etapp on täiesti erinev, sest see on selline küsimuse esitamist. See ütleb me oleme omamoodi ning kell teelahkmele. Kui Mike on lehel helistada talle, et keerata vasakule, kui soovite. Ja kui ei, siis mine tagasi mõned teiste page-- või pigem kahju, tagasi minna mõne teise sammu, mis kutsub esile mingi kordaminelooping ehitada. Ja me teeme seda uuesti ja uuesti ja uuesti. Ja tegelikult, tead mis? Jah. else if lõpus raamat peatus. Seega peame mingi kolmas tingimus, sest sa ei saa hoida keerates lehele reklaami nauseum, sest lõpuks, ma tabas raamatu lõpus. Ja viga programm võib olla ei oota, et stsenaarium. Ja siis ma lihtsalt aru, oh oota minut, mul on vaja kolmas stsenaarium. Kui ma olen läbi lehekülgi, ma peaks tõesti lihtsalt lõpetada. Muidu on määratlemata. Mis juhtub, kui ma saan öeldes uuelt lehelt ja tagasi minna, see, kui arvutid külmutada või krahhi, kui vajutad mõned ootamatud olukord niimoodi. Nüüd, kuidas Mike Smithi kolmas algorithm-- kiirenemist telefoni raamat, avatud raamatut first-- kuni Ei, mitte esilehel seekord kuni middle-- oh, noh, et suudaksime on teine ​​algoritm. Olgem lihtsalt vahele kolmandale. Publik: Oh, vabandust. DAVID Humala: See on hea. Olgem lihtsalt vahele jätta third-- avatud keskastme ja nüüd otsida Mike Smith. Kui leheküljel, helistada Mike. Ja siis mida me tahame öelda? muidu mis? Me võime avaldada seda igal mitmel viisil. Ei ole õige vastus. OK, kui mitte veel, kuid me peame olla-- OK, me ei taha jagada kaheks, kuid kas me tahame minna vasakule või minna eks? Kuidas me väljendada, et mõiste? Noh, Mike juhul, jah, see on õiglane. Aga OK, nii et see on tegelikult hea koht. See on hea. Me jätkame seda loogikat. So-- Publik: Vähem kui poole võrra. DAVID Humala: Jah. Nii teine, kui leht on, siis me ütleme, vähem kui Smith, vasakul Smith, then-- vaatame, on See läheb keeruliseks? teine, kui lehel on enne Smith, pisar poole, visata millest pool? Publik: Ma arvasin see oli [kuuldamatu]. DAVID Humala: ma kuulen nii vastuseid. Publik: Vasaku. DAVID Humala: OK, visata ära jäänud poole, kui Lakisa ütlesin, vasak poole, siis ma sellist taha lihtsalt minna mina-- ma lähen paremale. Või võrreldavalt ja tegin natuke natuke jama alguse siin, Ma tegelikult tahavad jätkake 2. taas kus avatud middle-- või open-- Jah, ütleme lihtsalt, lehekülgi keskel. Ja see fikseerib ta. See ei ole enam raamatut. See on ainult pool raamatut, nii avatud lehekülgi keskel. else-- olid peaaegu kohal. 6. etapp, teine, kui lehele tuleb pärast Smith, pisar pooleks visata paremal pool, Seejärel jätkake 2.. teine ​​loobuda, neljanda stsenaariumi kui meil ei ole lehti vasakule keerata. Nii saame puhastada see üles. Ja me peaksime puhastada see üles. See on väga pseudokoodi koodi, kui te tahet, väga kõrgel tasemel kirjeldus. Aga see ei üldiselt tabada idee. Ja jällegi, et see stsenaarium, me on mõiste tingimus, filiaal, käitumisviisi, mis muudab decision-- kui see, minna seda teed, muud, kui minna seda teed, muud, kui minna nii. Ja see on väga levinud programmeerimise tehnikat otsustada, mis suunas minna, kui nii võib öelda. Ja meil on ka mingi ning silmukoiminen struktuur, kus me teeme midagi, ikka ja jälle. Nüüd selgub, palju nagu selles näites, on super täpne on oluline. Aga me oleme näinud ka midagi et me peame helistades võtmiseks. Mis see tähendab, et kiirenemist telefoni raamat? Me lihtsalt selline, võttes iseenesestmõistetavaks selles ruumis et see on mingi semantiline tähendus. Kõik me lihtsalt selline tea, oh, noh, kiirenemist telefoni raamat. Mida see tegelikult tähendab? Noh, see tegelikult tähendab laiendada Samas kummarduda, laiendada sõrmed, näputäis raamat sõrmede vahel, püsti, tõmba käsi enda poole. Ja me võiks tõesti pedantne sellest, tõesti on super täpne et mida ma teen. Aga kõik need sammud ühiselt on mida see tähendab kiirenemist telefoni raamat. Ja nii varem, kui ma ütlesin, iga Nende kahe esimese avaldused võib vaadelda kui jätkata või funktsiooni tõesti see näitab, mida me hoiab helistades võtmiseks. See on nagu kõrge kontseptuaalset kirjeldus probleem, et tegelikult hõlmab üsna vähe samme. Ja nii see ka on korduvad teema programmeerimine, kusjuures ma võiks kirjutada programm kasutades süntaksit nagu see-- pick_up_phone_book (). Ja siis süntaktiliselt, ma olen läheb varastada midagi enamik programmeerimiskeeli. Nüüd, samm 1 näeb veel rohkem nagu funktsioon, programmeerijana kutsuksin ta. Tundub koodi, et keegi on andnud nime ja antud mulle kasutada somehow-- teistes sõnad, mida joon Olen esile esindab funktsionaalsust, et äkki Ma isegi ei rakendada ise. Keegi vanem, targem mul juba arvasin kuidas väljendada mõiste pealevõtmine telefoniraamat. Ja see on nagu viis sammu ma lihtsalt tabas, välja ülalt mu peas. Aga ta on juba rakendatud see andis neile mitu sammu Nime pick_up_phone_book. Ja Sulgudes on just see, mida enamik programmeerijaid teha lõpus avaldused niimoodi. Ma nüüd ei seisa oma õlad ja mitte kunagi enam, mõelda, mida see tähendab kiirenemist telefoni raamat. Ma lihtsalt öelda, kiirenemist telefoni raamat. Ja see on täpselt see, mida meile kõigile inimestele siin tegime. Kui olime ilmselt 1 aastane, 2-aastane, keegi oli õpetada meile, mida see tähendas kiirenemist telefoni raamat. Ja sellest ajast siis, oleme ammutatud ära omadest väga ebahuvitav mehaaniliste etappidega. Ja me lihtsalt olla intuitiivne mõistmine mida see tähendab, et kiirenemist telefoni raamat. Ja saab ekstrapoleerida nüüd keerulisem things-- ehitada maja. Nagu, et mõned inimesed, et tegelikult on tähendus. Töövõtjatele, arhitektide, et on mingi tähendus. Ja nad teavad, mida teha, kui Ma ütlesin, mine ehitada maja. Aga enamik meist ruumis ei suutnud tegeleda, et abstraktsiooni tasemel. Sa pead meile meeldib minema saada kühveldada ja mine saada betooni ja küünte puutükid kokku ja mida iganes muud on kaasatud hoone ehitus. Ja see on, sest meil ei ole veel programmeeritud mõista mida tähendab ehitada maja. Meil ei ole selle võtmiseks. Meil ei ole selle funktsionaalsust. Ja mis siis näete programmeerimiskeeli üldiselt eriti rohkem kaasaegsete keelte, nagu Java, PHP, Ruby ja Python, nad palju küpsem kui vanemad keeles nagu C ja C ++ ja veel teised. Ja nii nad tulevad rohkem funktsionaalsust ehitatud. Rohkem kood on kirjutatud inimesed minevikus et me saame nüüd helistada või kutsuda või kasutada, sest ma vihjab kell seda esile rea siin. Ja nii, kuigi me ei räägi umbes programmeerimiskeeli per se, lihtsalt pseudokoodi koodi, on kõik ideed on veel, et arutelu. Ja selgub, täpsus super oluline, kuna on abstraktsioon. Ja proovime Sellekohane järgmiselt. Ma kogemata võis rikkuda see vilkuv slaidi ekraanil enneaegselt. Aga lubage mul küsida vapper vabatahtlike, kui te ei pahanda tulemas. Sa oleks ees kaamera, kui sa oled OK sellega. Kas keegi tahaks tulla ja anda juhiseid oma kolleegidele siin? Lihtsalt pea tulema siia ja seista siin ja öelda mõned sõnad. Victoria naeratab kõige ja vältides minu silmis kõige rohkem. Kas te oleksite nõus tulema üles? OKEI. Ja kui kõik teisedki oma istekohta võiks võtta tükk vanapaberit, kui soovite. Vooderdatud paberi on hea. Tule ümber niimoodi. Või mõned paberi sa said eile lihtsalt mingi tühja lehte paberist, kui saaksid. Ja kui sa ei ole, lihtsalt küsi oma naabri, kui saaksid. Nii et hetkel, et Selles näites Victoria hakkab mängima rolli programmeerija, insener, kes peab programmi te kõik, kuna arvutid, midagi teha. Ja me näeme, mida oletusi sa otsustad teha. Me näeme, kuidas täpselt ta valib olla. Ja kui see tutvustamise läheb pedagoogiliselt hästi, palju vigu tehakse, et me siis kasuta et kui võimalust aruteluks. Aga väljakutse sa peaksid olla, et vältida neid vigu, hea programmeerija. Ja nii väljakutse käepärast, kui soovite meeldis käia siin, ees on Victoria ekraanil siin-- ja loodetavasti keegi teist mäletan seda kui ma vilgub ekraanil. Ja ei pööra ümber üldse, sest seal on teine ​​ekraan selles ruumis et ma saan välja lülitada. Nii ei pööra ümber. Ees Victoria on see, et sama naerukoht. Ja tema töö on praegu öelda kõik Teie paberitüki juhtida. Ja me näeme, mis põhineb suulised juhtnöörid üksi arvuti koodi, kui soovite, kuidas täpselt oma jooniste are-- oma rakendusi on. On loogiline? Publik: Jah. DAVID Humala: OK, teostada. Publik: Ruudu joonistamiseks. [NAER] DAVID Humala: Ja no võidakse esitada küsimusi. Kas ainult seda, mida sa ütlesid. Oh, ja kui sul on tänapäeva slaidid avaneb tab, ei vaata oma sakk. OKEI? Publik: OK, joonistada ringi. Slope-- ma oskan öelda kalle? DAVID Humala: sinust. Publik: kalle. Ja kolmnurk. DAVID Humala: Hea küll. Ja siia jääda hetkeks. Ja ma lähen tulla ümber hetk. Ja pole vaja panna oma nime peal. Lubage mul tulevad ümber ja koguda oma joonised kui te ei pahanda pisaravool neid. Siin on, mida me saime tagasi. Ma projitseerida see ekraanile. Näen ruut, ring, kalle, ja kolmnurk. Nii et oli üks vastus olemas. Ja let's-- whoops. Aitäh. Siin on veel üks valik, ja üks taga. Nii nad kõik tunduvad lüüa vaimus. Aitäh. Seal on teine, ja siin on veel üks. Kalle tõlgendus on natuke erinev, veidi käänulised. Ja lähim, kas sellepärast, Imeline eripära, mille olete kirjeldatud, või äkki sa sellist nägin seda enne, see on tõepoolest mida Victoria oli tegelikult kirjeldab. Aga nüüd, neile, kes ei saa seda päris õige, olgem pakuvad vastuväiteid siin. Nii Victoria esimese ütles Ruudu joonistamiseks. Ja nüüd, me ei saa eeldada huvides täna et igaüks teab kuidas juhtida ruut. Aga see ei ole täielikult selge, eks? Kuidas muidu oleks teil joonistatud ruudu, või kui Võib olla mõned ebaselgused siin arvuti? Publik: asukoht ja suurus. DAVID Humala: asukoht, eks? Kõik te oli paber mõne kuju, üldiselt ristkülikutena, kuid veidi erineva suurusega. Aga sa kindlasti oleks saanud, kui sa tahtsid, suur kandiline, võib-olla väike ruut. Võib-olla oli see pööratud. Ma ei arva, et me nägime seda. Aga see oleks võinud olla rohkem teemant nagu, kuid siiski, siiski Matemaatiliselt ruut. Nii et oli väidetavalt ebamäärane. Siis ta ütles, joonistada ringi. Mõned teist ei joonistada kõrval see, mis ei ole mõistlik, sest inimestel kipuvad arvama, või lugeda paremalt vasakule enamikus keeltes, nii et ei ole halb arvata. Aga see ring võiks olla olnud ruudu sees, oleks võinud ümber ruut, oleks võinud mujal lehel, et väidetavalt ebamäärane. Kalle oleks võinud olla võttes kõige vabadusi verbaalselt mida see tähendab. Ja mõned teist tõlgendada see väändunud joon või sirge vms. Ja siis kolmnurk, liiga, võib olla on orienteeritud väga mitmel viisil. Lühidalt öeldes, isegi midagi, mis te pilk ja sa oled nagu, wow, nii lihtne, laps võiks juhtida sellele, samuti ei tõesti, kui sa oled super, super veenev ja ütleb arvuti täpselt, mida teha. Nii et kui me võiks, kui teil on teise paberilehe, olgem proovige seda veel kord. Ja ma annan Victoria ühe Teises näites ekraanil siin. Ja jälle, ei pööra ümber ja ei vaata oma slaidid. Ja ma annan tema hetk mõtlema, kuidas kirjeldada seda. Ära lase neil näha hirm oma silmad. [NAER] Ja jälle, seekord võimendav mõned neist takeaways ja üritavad peaaegu kõik vähemalt õige vastus. Publik: OK, võta paberile, otsida keskel, et paberile. Keset et tükk paberist, joonistada kuubik. [NAER] DAVID Humala: Mida oleme õppinud? Me olime nii lähedal. OK, korrata, kui sa võiksid kõigile. Publik: In keskel paberile, juhtida objekt, mis näeb välja nagu kuubik. DAVID Humala: OK, see on kõik saad töötada. Lubage mul olla analüütiline ja mitte niivõrd kriitiline, kuid teha nõude et Victoria kindlasti Tundub, et mõelda väga kõrge veevõtu, mis ei ole mõistlik. Sest muidu, olime kõik päris düsfunktsionaalne, kui pidime kunagi nii täpne koos teeme maailma. Aga öelda minna middle-- ma arvasin, et me sellise häid seal, nagu minema väga keskel lehe ja seejärel teha kuubik. Nii ta mõtleb ka veevõtu, sest ta on ikka vaadata Mis ekraanil nagu ka kuup. Aga seal on nii palju võimalusi tõlgendamise seal. Ja tegelikult, seal on nii palju muid võimalusi, mida võiks väljendada et mis ma ettepaneku hetkel. Nii et siin on meil üks kehastus on picture-- whoops-- üks kehastus pilt, nii et väike kolme dimensionality, et see, mis on kena. Siin on veel üks, kus teil on Sama, kuigi see on selline avatud kuubik. Mõned inimesed võtsid seda veidi rohkem korter, kahedimensionaalne. Ja see on hea. Nii et tõepoolest on keskel paberile. See, mida ma arvan, et sa nagu, sest kui me läheme siin See on see, mida ta kirjeldab. Nüüd lubage mul ette näha, kuidas mujal me võiks kirjeldada seda olukorda. Juba järgmisel päeval, üks kõige sagedamini võimalust õppida programmeerimine oli kirjutada koodi, kirjutab rida juhiseid, et kontrollitud vähe kilpkonn ekraanil. Logo ja muud variandid selle oli keele nimetus. Ja kilpkonn elas maailmas. Nii arvan, et see ristkülikukujuline ruumi on tema maailm. Ja sa hakkaks assuming-- ma tõesti ei tea, kuidas juhtida kilpkonn teeme siis seda niimoodi. Ja siis ta sai kesta ja siis võib-olla mõned jalad. Nii võite olla see väike märk ekraanil. Ja objektiks programmeerimiskeele oli sundida kilpkonn minna üles, alla, vasakule, paremale ja panna oma pliiatsi maha või vali oma pliiatsi üles et ta võiks tegelikult juhtida ekraanil Selles väga lame nelinurkne maailma. Nii et kui ma arvasin, et sa võiksid olla läheb, ja kus sa peaksid kaaluma sukeldumine alla vaimselt kirjeldamisel juhiseid üldisemalt Ma väita, on panna oma pliiatsi allapoole middle-- ja me vabaneda kilpkonn, sest ma ei saa tõesti hoida joonistus teda väga hästi. Ja nüüd, kuidas muidu saaks Ma ütlen juhtida kuubik? Noh, me võiksime öelda midagi viigiga diagonaal kirdes, näiteks või 45-kraadise nurga all ülespoole. Ja mis oleks saanud mind siin. Ja ma olen päris kaugel kuubik. Aga nüüd, ma ei ütle midagi nagu keerata 90 kraadi vasakule ja tõmmata joon võrdse pikkusega loodesse. Ja ma võiks jätkata sarnaste suundades. Ja see ei kavatse olla lihtne. Ja ausalt öeldes, me ilmselt siin olnud viis minutit. Aga võib-olla oleksime saanud selle midagi, lõpus päeval, jõuab on kuubik, kuid me sukeldus sees, et abstraktsiooni seda teha nii madala tasandil, et te ei saa tõesti vaata, mida sa teed, kuni kogu Asi on tegelikult olemas lehel. Ja nii see on üldine põhimõte, jälle on programming-- seda ideed võtmiseks. See on nii imeliselt võimas, sest jällegi ta lihtsalt ütles, joonistada kuubik, mis kõik meil päris palju oleks grok väga kiiresti. Me lihtsalt aru, OK, joonistada kuubik. Me ei pruugi teada orientatsiooni, nii et me võiks olla veidi täpsem, kuid me saame üldiselt pilt või ei tea, mida kuubik on. Ja see on kasulik, sest kui iga kord, kui istus nagu programmeerija klaviatuuril kirjutada koodi, kui sa pidid mõtlema sellise madalal tasemel, keegi meist kunagi saada midagi teha. Ja kindlasti, keegi meist ei oleks nautida protsessi kirjalikult koodi. Oleks nagu kirjutab 0 tema ja 1-, mis ausalt öeldes ei olnud kõik, mis ammu Inimestel olid kirjalikult koodi 0 tema ja 1-. Ja me väga kiiresti tulid Nende kõrgem languages-- C ++ ja Java ja teised. Nii proovime seda veel kord lihtsalt flip lauad, nii et me kõik on võimalus mõelda üsna samamoodi. Kas me saame veel üks vabatahtlike seda aega kuni juhatuse ja juhtida, ei etlema? Jah, OK. Ben, tule üles. Ja Ben, sel juhul, kui olete nägu laual, ei vaata vasakule, ei tundu õige. Ainult seda, mida teie kolleegid siin öelda. Ja kõigile mujal ruumi, siis nüüd on programmeerija. Ta on arvuti. Ja pildi olen valinud siin eelnevalt on see üks siin. Nad lihtsalt-- nad mõelnud naljakas nali on kõik. Nii oleks see keegi meeldib vabatahtlikuna esimene õpetus või kinnitus, et peaks Käsk Ben sulepea? Ja me teeme seda ühiselt, võib-olla üks juhise iga inimene. Mul on kahju? Publik: Joonista ring. DAVID Humala: Joonista ring on esimene asi, mida ma kuulnud. Publik: Up top. DAVID Humala: kuni top. OK, me ei saa teile kustutada, tühistada. Ja nüüd, keegi teine. Dan, kas te oleksite hubane pakkudes järgmise juhise? Publik: Muidugi, juhtida keskus põhja ringi, koos small-- vähe väikese ruumi, et joonistada sirge alla kolme neljandikku teed mööda pardal väikese nurga all vasakule. DAVID Humala: Hea. Publik: kerge nurga all. DAVID Humala: Undo, Control-Z. OKEI. Andrew, et soovid kuni järgmise juhise? Publik: Muidugi. Alt, et joon, veel veidi angle-- whoops-- võibolla umbes kolmandiku pikkuse [kuuldamatu] kerge nurga alla ja nagu kolmandik pikkus [kuuldamatu]. Nii et jah, sellest hetkest alates, tõmmata joon kolmanda pikkusest eelmise line edasi vasakule. DAVID Humala: See OK? Sirge, mis on OK? OK, Olivier, mida soovid pakkuda kuni järgmise? Publik: [kuuldamatu] alates põhja ringi, [kuuldamatu]. Joonista paremal kohta [kuuldamatu] sentimeetrit. [NAER] DAVID Humala: Ma arvan, et sa lähed on teisendada see on tolli siin. Publik: Stopp. [NAER] DAVID Humala: OK. [? Ara,?] Soovite pakkuda kuni järgmise? Publik: Joonista [kuuldamatu] ülemise [kuuldamatu] sama. [Kuuldamatu] ringi, juhtida [Kuuldamatu] ja juhtida [kuuldamatu]. DAVID Humala: OK, enam tagasi võtta. Teeme veel üks või kaks juhiseid. Chris, mida soovid pakkuda üks? Publik: Allosas Ringi, [kuuldamatu] juhtida võrdne line slopping allapoole vasakule [kuuldamatu]. DAVID Humala: OK. Andrew? Me did-- Karim? Publik: Alates õigus line, lõpuks vasakule joon, alumine, sa lähed minema paremale umbes sama pikk kui selle joone sa oled, joonistus õigus [kuuldamatu]. [Kuuldamatu] kraadi, nii et [kuuldamatu] kraadi paremale küljele. DAVID Humala: Hea küll. Olgem pausi. Ära pööra ümber veel. Olgem pausi, ja olgem proovida ühe teise katse enne kui me avaldada Ben mida ta on joonistus. Kas te shuffle Ben right-- või tegelikult, no olgem lihtsalt teile teine ​​pardal, isegi parem. Nii peaks keegi nüüd meeldi võtma rohkem lähenemisviisi et Victoria võttis varem, kus me räägime kõrgema abstraktsiooni ning just lause või kaks kirjeldada Ben Mis teha ilma sattumist umbrohu nii-öelda selles madalamal tasemel? Victoria. [NAER] Publik: Piirra käimine mees. Ja tema jalad ja käed olema paremal küljel. DAVID Humala: OK, see on kõik saad. Hästi. Miks me ei avaldada Ben, mida ta tegi. Nii aplausi. See oli kõige raskem olla. Nii et kuigi me räägime üsna rumal terminid umbes lihtsalt joonistus pildid, loodetavasti sa võib tõesti hindan määral ekspressiivsus, mis võib olla vajalik et öelda, arvuti, mida teha. Ja tegelikult asjaolu, et Ben oli võimalik teha seda nii kiiresti on omamoodi märk kasutades keeles, võibolla kõrgemal tasemel versiooni inglise keeles, mis võimaldab tal lihtsalt kasutada sõnu, või kuulda sõnu Victoria, et võimaldada tal Nende abstractions-- lihtsalt juhtida näitaja jalgsi right-- et mingisugune on mõned semantiline tähendus see, et ei ole peaaegu sama selge kui sa lihtsalt öeldes, pane pliiats maha, joonistada paremale juhtida vasakule. Ja nii ka see on väga levinud programmeerimine. See oleks öelda, et nagu väga madal keeles, programmeerimine aastal 0 tema ja 1-, kui soovite. Ja see oleks kõrgemal tasemel keel programmeerimine Java, või midagi sellist. Natuke järeleandmisi, kuid see on omamoodi nagu emotsionaalne tunne, et te tunnete, kui kasutades üht sellist asja või teise. Natuke frustratsiooni siin vajadus Sellise täpsusega, kuid võimaluse olema veidi vabam koos tõlgendamise siin. Aga muidugi, putukad võib tekkida. Kui soovite at koju-- me ei tee seda üks class-- aga kui soovite tuua see koju Ma arvasin, et meil oleks sukelduda seda. Nii et kui soovite, et mängida seda mängu oma teised olulised või lapsed vms, siis võib nautida, et hästi. Nii saab minna ja vaadata viimast asi siin arvutuslikke mõtlemist. Ja see toob meid John Oliver, mitte clip Te olete näinud eile kuid mõnevõrra viimastel küsimus. Paar kuud tagasi, Volkswagen võttis üsna natuke Vastuseis miks, kui sa tead? Mida nad hädas? Jah, nii emissions-- nad püüdsid võita heitkoguste katsete sisuliselt kelle autod saastavad keskkonda vähem kui nende autod olid testitakse ja saastavad keskkonda rohkem kui autot ei testita. Ja mis on üha enam huvitav maailmas, sest teil võib olla kaudse alates arutelud like-- mis on see-- CarPlay, Apple'i tarkvara autod ja asjaolu, et paljud meist üha puuteekraanid meie autod, seal on hirmutav summa Tarkvara inimeste autod täna, mis ausalt avaneb terve ussipesa kui tegemist on julgeoleku ja füüsilise ohu. Aga täna, olgem keskenduda just see, mida on seotud kirjutamise tarkvara mis oleks võinud gamed süsteemi. Suhe määratlusest probleem, neile võõras, Võtame pilk John Oliver. Ja neile tuttav probleem, vaatame seda lõbusal objektiiv kaudu John Oliver samuti. Nii et lubage mul tabanud mängida, ma arvan, kolmeminutilise sissejuhatus. Pagan võtaks. [VIDEO PLAYBACK] -Cars-- DAVID Humala: Ilmselt YouTube'is it's-- - --the Targem tähemärki Fast and Furious filme. Sel nädalal Saksa autotootja Volkswagen sattus keset skandaali kriminaalselt proportsioonides. -VOLKSWAGEN On karastav miljardeid trahve, võimalik kriminaalsüüdistus selle juhid, kuna Ettevõtte vabandab taglase 11 miljonit autosid aidata tal võita heitmete katsed. -Certain Diisel mudelid olid mõeldud kogenud tarkvara, mis Kasutatud teavet, sealhulgas positsiooni rooli ja sõiduki kiirust, et teha kindlaks, auto oli toimumas Heitmekatseid. Vastavalt sellele asjaolule, mootori vähendaks mürgiseid heitmeid. Aga auto oli võltsitud ümbersõit et kui ta sõidab. Heide kasvas 10 kuni 40 korda üle vastuvõetav EPA taset. -Wow, 10 kuni 40 korda suurem kui EPA lubab. See on kõige hullem asi Volkswagen on kunagi teinud, on midagi, mida võiks öelda, kui sa polnud kunagi kuulnud II maailmasõda. Aga võib-olla kõige kindlam märk sellest, kuidas palju vaeva Volkswagen on, on see, et inimesed on väga top on astus. Tegevjuht astus kolmapäeval pärast püüdvat teha kahju kontrolli, öeldes, et ta oli lõputult kahju, mis kõlas suur, kuni selgus ta oli ainult 10% kahju kuid oli lavastatud tema suu kunstlikult tema sorriness. Ja vahepeal Volkswageni USA peatoimetaja oli vabandus enda. Vaatame selgeks selle, Meie firma oli ebaaus. Ja minu saksa sõnad, me on täiesti silmamunad. Jah, kuid täiesti kruvitud kuni ei ole Saksa teoseid. Ja saksa keeles on palju ilusaid lauseid kirjeldada olukordi nagu see, nagu [Saksa], mis tähendab umbes, kurbus, mis tuleb äri seotud valesid, või [Saksa], mis tähendab kui häbistamine need isa kaasates pilved bensiini. See on ilus keel. See lihtsalt seilab välja keelel. Ja muide, samal ajal, et mehe vabandus võib olla kõlas siiras, see on väärt märkimist, et ta kõneles ametlik käivitada poole 2016 Volkswagen Passat, mis tähendab, et varsti Pärast öeldes kahju, ta ütles, et see. Tänan teid väga palju tulemas. Naudi õhtul. Järgmiseks on Lenny Kravitz. [MUSIC MÄNGIB] -OK, OK, lõpetades oma vabandust kuni järgmise Lenny Kravitz ei naerukoht kaine kahetsuse. See karjub, küsisime Bon Jovi, ja ta ütles ei. Volkswageni brändi on on tugevalt kahjustatud. Ja ausalt öeldes oma kuulutus Kampaania ei ole täpselt aidata. - [Saksa], meil on Volkswagen sooviks vabandada petavad teid Meie sõidukeid. [END PLAYBACK] DAVID Humala: Nii see oli veeri of-- sorry-- See oli Kierrellen kasutusele põhiprobleem tarkvara, mis on see, et sa vaja tuvastada teatud tingimustel. Ja nii küsimus käepärast siin on, kuidas auto potentsiaalselt kui rakendada tarkvara Nende programmeerijad, tuvastada, et see on tegelikult uuritakse? Nii oleks super selge, mida nad teevad oli keskkondades, kus programmeerijad arvasin auto oli olles testitud, nad kuidagi tehtud auto paisata vähem heitgaase vähem heitmeid, et vähem mürgine suits ja selline. Aga kui see on tavaliselt liikluses, see oleks lihtsalt paisata nii palju reostuse kuna soovis. Niisiis, kuidas me saaksime kirjutada pseudokoodi selle algoritmi? Kuidas saaksime kirjutada pseudokoodi tarkvara töötab auto? Ma mõtlen, lühikokkuvõte, see keeb alla midagi sellist. kui testitakse, tekitavad vähem. muidu eritab rohkem. Aga see on natuke liiga kõrge, eks? Proovime sukelduda, mida see võtmiseks on testitud vahendeid. Teisisõnu, isegi kui te ei tea midagi autod, milliseid küsimusi Võib küsida, et teha kindlaks, kas sa testitakse, kui sa oled auto? Millised omadused võivad olla esitada, kui auto on testitud? Publik: testimise seadmed. DAVID Humala: testimise seadmed. Nii et kui testimise seadmed lähedal, siis tekitavad vähem. Nii et ma võiks ette kujutada rakendamisel et mingi kaamerad või avastamiseks, mis ümberringi toimub. Ja andke mulle ettepaneku, et lihtsalt tundub liiga keeruline tegelikult on täiendavaid riistvara lihtsalt selleks. Publik: Kui sul park, kui teie kapuuts on avatud. DAVID Humala: Park või kapoti lahti, nii et see on hea. Publik: Ja auto töötab. DAVID Humala: Nii et natuke rohkem concrete-- ja auto töötab. Nii et see oleks koos ühe paari erinevates tingimustes, kui soovite. Nii et kui auto on park, ja isegi kuigi see on väga mehaaniline asi Tavaliselt suutsin kujutada, kirjutamise tarkvara, eriti kuna seal on sageli kerge seal nendel päevadel, Ma ei suutnud ette kujutada, et oleks tarkvara, mis saab päringu käigukangi või mida mitte, on teil park on teid sõita, on sul tagurpidi. Ja ma saan seb vastata, mis on kas jah või no neid erinevaid küsimusi. Ja nii ma võiks samuti vastata küsimus, nagu on kapoti lahti. Võib-olla, seal on mingi andur et kas annab mulle tagasi 1 või 0, õige või vale, kapuuts on avatud. Ja siis auto töötab, ma võiks avastada et kuidagi selle kaudu, mida mehhanism? Nagu, auto töötab, ma võiks avastada, et see on sisse lülitatud, ma saaksin avastada kuidagi et auto liigub? Publik: RPM. DAVID Humala: Jah, nii et seal on alati, et nõela näitab, mitu pööret minut rattad on tekkinud. Ja nii ma võiks vaadata seda. Ja kui see ei ole 0, et ilmselt tähendab auto liigub. Aga me peame olema natuke ettevaatlik seal, because-- olgem lihtsustada see-- kui me just ütles, kui auto töötab, me ei taha lihtsalt tekitavad vähem, me tahame, kui auto töötab ja see on testitud. Nii on mõned teised koostisosi, mis inimesed on hüpotees, tarkvara teeb, kuna puudub tegelik lähtekoodi saad ainult mingi tuletada füüsiline mõju auto kohta, mida võiks toimub all kapoti tarkvara. Nii et kui auto töötab ja võib-olla, ütleme, tagumised rattad ei liigu, võiks see olla soovituslik mingi test? Mida ma vihjab siin? Jah, võib-olla, et see on üks nende rull asju, kus nagu rattad on pöördunud ees või taga, sõltuvalt sellest, kas see on esiratta või tagaveoga, nii poole rattad liiguvad, kuid Ülejäänud kaks ei ole, millega on imelik olukord reaalses maailmas. Kui sa oled sõidu kohta tee, mis ei tohiks juhtuda. Aga kui sa oled ladu mingisugune rulli süsteem, mis võivad ette tulla. Ma arvan, et inimesed ka ettepaneku, et äkki, kui auto töötab ja rool Ratta ei liigu, et Ka võib olla signaal, sest see on mõistlik nagu kohe maantee. Aga isegi siis, inimese on ilmselt liigub see natuke või kindlasti mõne sekundi vältel. Või käigus minutis, koefitsiendid on see ei ole läheb fikseeritakse täpselt samas asendis. Nii teisisõnu, me võib võtta lahutamise, sa testitakse ja murda, et funktsionaalsus neisse komponent koostisosi. Ja see on tõesti see, mida Volkswageni insenerid kuidagi tegi. Nad kirjutasid tarkvara teadlikult tuvastada, kui auto on testitud, Seega tekitavad vähem, teine paisata tavalisel viisil. Ja probleem ka siin on see, et tarkvara ei ole midagi, mida saab tõesti näha, kui sul on nn lähtekood. Nii et kaks erinevat liiki code-- vähemalt kahte erinevat tüüpi kood maailmas. Seal on midagi, mida nimetatakse allikas kood, mis ei ole erinevalt oleme olnud kirjalikult, lähtekoodi. See on lähtekoodi kirjutatud keeles nimetatakse pseudokoodi, mis on lihtsalt midagi inglise moodi. Ei ole ametlik mõiste ta. Aga C ja Java, C ++, need kõik ametlikud keeled, mis, kui kirjutad neile, mida te olete on tekstifail, mis sisaldab lähtekoodi. Kuid on olemas ka midagi maailma nimetatakse masina koodi. Ja masin koodi kahjuks on lihtsalt 0-ja 1-. Nii masinkoodi, mida masinad aru, muidugi. Lähtekood on see, mida inimesed mõistavad. Ja üldiselt, kuid mitte alati, on saade et programmeerija kasutab, mis võtab allikas koodi ja muudab see masin koodi. Ja see programm on üldiselt nimetatakse tõlkija. Nii et teie panus on lähtekoodi, oma väljund on masin koodi ja koostaja on tükk tarkvara, mis teeb selle protsessi. Nii see tegelikult kaardistab kenasti Meie sisendid, algoritme, väljundid. Aga see on väga konkreetne kehastus Selle, mis tähendab, et isegi kui sa ise üks Volkswageni autod, mis on süüdi selles, see ei meeldi võid lihtsalt avada kapuutsi või avada kasutusjuhend või otsida lähtekoodi, sest selleks ajaks ta jõuab oma auto oma sõiduteele see on juba olnud ümber 0-ja 1-. Ja see on väga raske, ei ole võimalik, aga väga raske välja noppida palju midagi kõigest vaadates aluseks 0 tema ja 1-. Nii saab sellest aru saada, lõpuks, kui saate aru, kuidas masin operates-- Intel inside-- kui sa aru Intel arhitektuur, aga see on väga aeganõudev. Ja isegi siis, võite ei saa näha kõike et kood saab tegelikult teha. Küsimusi selle või selle Selline protsess üldisemalt? Ja tegelikult, me ei seo see arutelu eilne arutelu Apple. Ka see on põhjus, miks FBI ei saa lihtsalt mine ja vaata kahtlustatava telefon ja leida rida koodi jaoks Näiteks, et võimaldada parool või lubada, et 80-millisekundi viivitusega. Kuna selleks ajaks on kohta kaaslased iPhone, see on juba olnud muundada 0 tema ja 1-sid. Noh, Peatun siin meie vaadata arvutuslikke mõtlemist. Miks me ei võta 15 minutit vaheaega. Ja kui me tagasi, jagame heita pilk programmeerimine ise ja alustada kaardistada mõned Nende kõrge mõisted tegeliku, kui mänguline, programmeerimiskeelt.