DAVID Malan: Dobrodošel nazaj, vsi. Torej včeraj, se spomnite, da je smo se osredotočili na teh temah tukaj. Tako smo imeli štiri splošni topics-- zasebnost, varnost in družbo; internetne tehnologije; računalništvo v oblaku; in na koncu, spletni razvoj. Je kdo ima pasovne širine ali čas gledati malo John Oliver sinoči? To je pravzaprav zelo zabavno, če ne malo zastrašujoče. Vsa vprašanja o ničemer smo včeraj? Vsa pojasnila? Vsa vprašanja, ki si želijo, da bi prepričani, da se bomo dotaknili danes v neki obliki? Torej, nov začetek. Torej, kaj je na dnevnem redu danes? Pa sem mislil, da bi začeli danes s pogledom na tisto, kar je na splošno znan kot računsko thinking-- na tveganje oversimplifying, razmišljanja kot računalnik, morda razmišljati kot inženir, in poskuša začeti organizirati svoje misli ali da vam boljši občutek kaj je vključen v dejansko poveljujoči računalnik nekaj storiti s pomočjo programiranja. In bomo obdržati na precej visoki ravni, precej angleščina, vendar poskusite z uporabo pozna primeri, da formalizirajo, kako bi lotili reševanja problemov. In bomo ponovno nekaj CS teme, kot so abstrakcije, ki je prišel nekaj krat včeraj, algoritmi, in nato predstavitev. In to je, če bomo začeli danes vsak trenutek. Potem bomo si oglejte programiranja. Si bomo ogledali nekaj temeljni konstrukti s katero bi biti seznanjeni in morda celo našli precej intuitivno. Si bomo pogledali, v resnici, pri načrtovanju vzorca okolje, ki je zelo dostopna, zelo igriv in tudi ciljno za otroke, stare 12 let in več. Bomo porabili nekaj minut tam in potem se stvari na nižjo raven in dejansko govori o nekaterih algoritmi in podatkovne strukture, tako rekoč, da programerji običajno uporabljajo za reševanje problemov veliko več učinkovito, kot bi morda biti sposoben narediti brez njih v celoti. Potem po kosilu, bomo lahko ogledali na tehnologije nizov, ki je pravkar fancy način rekel zbirke tehnologij ki jih lahko uporabite za rešili nekaj težav. In bomo govorili o abecedi juha iz jezikov, ki obstajajo today-- Java in Python in C ++ in PHP in Ruby in vse vrste drugih stvari. Mi bomo ogledali kratko na načrtovalski vzorci. Programerji, v daljšem časovnem obdobju, imajo sprejete metodologije ki se nagibajo da bi jim pomagali reševanje problemov lažje. Ko začnete videti sebe pisanje iste kode znova in znova, ljudje formalizirati teh ponovitev in pripisujejo imena nanje in jih nato uporabili in spodbuja jih, na koncu. In bomo govorili malo o mobilnih strategij, kot kaj to pomeni, da dejansko da mobilno aplikacijo ali mobilni spletni strani. Ali si to naredil za Android? Ali je to za iOS? Ali je to za oba tistih? In kaj so kompromisi? In potem na koncu, mi pa bomo poglej spletno programiranje, ki je skupni izraz Res bi vsak čas pišete programsko opremo, ki je pomenilo, da deluje na spletu, ali na telefonih ali namizni ali prenosni računalniki. Si bomo na kratko ogledali podatkovne baze in oblikovanje njem, pa čeprav le zato, ker skoraj vsak zanimiva spletna aplikacija v teh dneh je nekakšno baze podatkov. V nasprotnem primeru bi bilo Samo statična vsebina. In baza podatkov vam omogoča, da spremembe v daljšem časovnem obdobju, bodisi sami ali pri uporabnikih. In bomo razmisliti, kako vas bi šel o oblikovanju ta zbirka podatkov in vrste žargonu da bi lahko prišel v inženir je Razprava na tablo ko dejansko izvajanje aplikacija prvič. Bomo na kratko govorili o API, uporabne storitve ki jo lahko uporabite, da stojijo na ramena drugih, ali podjetja ali posamezniki, in rešiti vaš lastne težave hitreje. In potem bomo umazali morda bit z JavaScript, programski jezik, ki se uporablja tako v brskalnikih v teh dneh, pa tudi v strežnikih. In morda bomo ponovno, čas dopušča, nekaj hands-on web stuff mi včeraj in povezovala dve skupaj preden prekine. Torej z that-- kaj je ahead-- je kaj manjka, da vas bi radi, da bi bili prepričani smo vstaviti in se dotikajo na neki točki. Če je vzmeti na misel, da bi se jo kmalu. Toda zakaj ne začnemo z poglej računskega mišljenja. In mi predlagal, da računalniška razmišljanje je, še enkrat, vrsta opisa na visoki ravni kaj bi lahko računalniški znanstvenik narediti. In res, začnimo s tremi sestavinami, ki bi šel v računskega razmišljanja. To je samo eden od načinov, da opisuje. Lahko bi zagotovo opredeliti To na noben številne načine. Ampak naj predlaga, zavoljo danes, da svetovne probleme, vse svetovne probleme, ko je obrnil računalniški znanstvenik bi obravnavati kot tisto, kar bomo klic vhodi, ki je treba, da se dovaja v kar pokličem algoritmi, ki potem razpadejo izhode. Z drugimi besedami, celoten svet zahtevka za reševanje problemov I lahko destilirana v Te tri sestavine. Torej, kaj mislim s vhodov? Vhodi je samo tisto, kar ste izročil, da bi rešili. Na primer, tukaj je star problem šola. Če imam telefonski imenik tu in Hočem, da si nekaj v njej, to je moj vložek. Imam 1000 ali tako Strani v imeniku. To je prispevek k moj problem. In želim, da bi našli nekaj kot so Mike Smith, tako prijatelja katere ime in številka upajmo, da v tem imeniku. To je pred dnevi celice telefonov, tako da lahko ne samo iskati. Tako da sem moral storiti je stara šole in dejansko iskanje ti vložki za nek odgovor. Ta odgovor je le, da bo da se imenuje izhod. Torej, vhod je telefonski imenik. Algoritem je glede na nabor koraki uporabljam, da bi našli Mike Smith. In izhod je, upajmo, Mike Smith je telefonska številka. In to potem bi bilo prav predstavnik večine nobenih težav, da se pri vas levičarje vhodi in želim, da ustvarjajo rezultate. Torej, preden menimo proces s katerim lahko rešimo ta problem, iskanje Mike Smith in nekaj takega, pa menijo, da je prva in se last-- vhodi in izhodi. Fizično, seveda vložek tukaj je cel kup papirja zlepimo v obliki imenika. Toda računalniki, od course-- prenosne računalnike in namizni računalniki in celo telefoni ti days-- to so elektronske naprave. In na koncu dneva, kaj edini vhod z računalnikom? No, to je nekaj podobnega Ta napajalni kabel tukaj. Sem ga priključite v steno, in Dobim tok elektronov, ki mi omogoča, da zaženete stroj. Ali morda ti elektroni ustvarjena s pomočjo moje baterije. Vendar ob koncu dneva, ki je Edina stvar, ki gredo v svoj laptop. In tako zelo zanimivo stvar je na koncu prihajajo ven, ali s pomočjo tiskalnika ali zaslon ali slušnega ali podobno. Torej, če je vse, kar imamo, kot je naša temeljni prispevek k računalniku je elektrika, tako da samo elektroni gredo v in ali out, in tako, kako lahko uporabimo ta vnos dejansko predstavlja podatke? Z drugimi besedami, kako bomo dobili iz preprostega pretoka električne da predstavlja dejansko številke ali dejanske črk ali dejanske slike na zaslonu ali dejanski filme ali e-pošte ali poljubno število teh koncepti višji ravni, če hočete, da bi glede na Konec dneva nekako so se shranijo v to elektronska naprava za mehanski uporabljajo samo tiste preproste ingredients-- elektronov, ki prihajajo v in iz nje? Tako da se zdi, da je V najpreprostejši obliki, edina vrsta držav Imam v svetu, tako da speak-- pogojev v mojem world-- je bodisi Imam elektroni teče, elektrika teče, ali jaz not-- tako naprej, off. In kaj je formalizirati in izklop, kot računalniški znanstvenik lahko, s samo 1 in 0. Naj samo opisujejo nekatere samovoljno ampak stalno število nanjo. 1 pomeni za, 0 pomeni off. Ali si lahko ogledate tudi, da je to pravi način za in lažni sredstva. Lahko bi tudi to black beli ali rdeči in modri barvi. Vi šele potreba dva deskriptorjev. In a računalniški znanstveniki bi večinoma samo uporabo 0 in 1. Torej, če je temu tako, moj edini abecede je sestavljen iz 0 in 1 je, kako Lahko bi morda dobili celo število 2 v računalniku, kaj šele številka 3 ali črka abecede ali sliko ali film? Kako smo nekako Bootstrap sami od tega temeljnega načela od 0 in 1 je in dejansko predstavljajo nekaj bolj zanimivega? No, kaj je dal na to vprašanje na čakanju za nekaj trenutkov in upoštevati nekaj upajmo pozna, tudi če ste res ni pomislil v nobenem podrobno za 10, 20, 30, 40, 50 več let. To je, kaj? Kako bi se izgovarjajo, da je? Ne gre za vprašanje trik. Številni, ampak kaj je to? 1, 2, 3 ali 123. In mi je bilo všeč, kako ste rekli, 1, 2, 3, ker je to eden od načinov, da si. 1, 2, 3, je zaporedje treh simbolov. Je slike, ki jih Zdaj imajo besede za. In če nekako jih vse prebral skupaj tipična človeška v angleščini bi rekel 123. In to je neke vrste višja koncept ravni, počuti kot razmeroma veliko število. Toda kako bomo to dosegli? No, morda nekaj časa, saj da ste razmišljali o tem, kot je ta, ampak nazaj v mojih časih sem nekako to naučil kot stolpcu 1 je, da 10 je stolpec in stolpec 100 je. Tako kot pravi Lakisa je 1, 2, 3, vendar je tudi 123. Toda kako priti iz Nekdanja za slednje? No, saj bi običajno storiti v stolpec 100, sem imel 1. Torej, to je, kot pravijo, 100 krat 1. In potem v 10 je stolpec, imam 2. Torej, to je, kot pravi 10-krat 2. V stolpcu 1 je, imam 3. Torej, to je, kot pravijo 1 krat 3. In če dodam te stvari skupaj, to seveda je 100 plus 10 plus 3. In oh, zato sem dobil to Višja stopnja pojem 123. To je samo osnovne matematične, pri čemer ti Simboli imajo uteži z njimi, če vas bo ograda ali vrednosti stolpca. In ko sem pomnožiti vse ven, sem dobil to številko. Torej, koliko znaš govoriti binary-- 0 in 1's-- kot računalnik? OK, odlično, nihče, ali nihče od vas, da si naredil. Ampak jaz bi ti trdijo, pravzaprav to vedo že. Vedeti pa je treba nekako poteg naš mentalni model, malo. Vendar je postopek popolnoma enak. Naj pusti tole gor in namesto da bi to uspe dol za trenutek. V svetu računalnikov, imamo samo 0 in 1 je. In tako stvar, ki je bo spremenilo je, kaj? No, v mojem človeškem svetu, decimalni sistem, december pomen 10, Imam koliko številk imam na voljo? 10, kajne? 0 do 9, seveda. In zato imamo 10 je mesto in 100 v mesto. Če je ta prihaja? No, to je 10 do moči 0. To je 10 do moči 1, 10 z močjo 2, in tako dalje. Vi kar naprej množenjem stolpce za 10, speljevanju s samo 1 v skrajnem desnem eni tukaj. Tako v svetu računalniki, če ste le imajo binary-- dvo pomen 2-- ali 0 in 1 je, samo Res je treba spremeniti baza tega matematike. Torej, z drugimi besedami, zdaj pa bom samo imajo na 1 v stolpec in the-- če je to going-- stolpcu 2 na, stolpec 4 je, in morda še dlje. Zakaj je tako? No, to je 2 z 0-th moči. To je .2 1. To je 2 do 2, in tako naprej. Torej, ker tukaj imamo 1, 10-ih, 100 je, 1000 je, 10.000 je, 100.000 je, 1 milijone, in tako naprej, tukaj imamo 1, 2, 4, 8, 16, 32, 64. Vi samo ne pomnoži z 2, namesto da se pomnoži z 10. Zdaj, če je cilj na roke je predstavljati številke, ki uporabljajo samo 0 in 1 je, kaj menijo, kako priti do tja. To je seveda vzorec 0 0 0, vendar kaj več konceptualno ne predstavlja? No, 4 krat 0 plus 2 krat 0 plus 1 krat 0, pa dodamo tiste skupaj. 4-krat 0 je seveda 0 plus 2 krat 0 je, seveda, 0 plus 1 krat 0 je seveda 0. Torej, ah, to predstavlja Številka smo ljudje poznamo kot 0. No, zdaj, to prepušča zelo hitro previjanje naprej. Če sem namesto tega ne predstavlja 0 0 0, ampak naredimo 1 0 1, da bi lahko kako Lakisa, prej, bi jo 1 0 1 samo izgovori. Toda zdaj, kako se za višje raven številko smo ljudje lahko vedeli? Torej, kaj je ta številka? To je 5, število poznamo kot 5. No, zakaj je to? No, smo lahko res nekako sprehod skozi to metodično 4-krat 1, 2-krat 0, 1 krat 1. Dodajanje tistih skupaj, tako To je 4 plus 0 plus 1. In to je, seveda, 5. Torej, to je že malo dolgočasno zdaj znova in znova delajo aritmetično. Vendar je postopek popolnoma enak. Edina stvar, ki je spremenilo v našem svetu je, da so naši stolpci 1, 2, 4, 8, 16, in tako naprej, namesto 1, 10, 100, 1000. In to samo zato, ker ima naša abeceda skrčil od 0 do 9 samo 0-1. Tako malo kviz tukaj, bi kako ti predstavljajo število 7 v binarno? 0? No, 0, misliš 0 0 0? Reci še enkrat, Karina. Popolna. Zakaj je tako? To je dejansko 4 plus 2 plus 1. Tako dobro. Kako predstavljajo malo another-- kako približno številko 2? Blizu, vendar nazaj. Torej, kaj je to? Je 4 plus 1, tako da je 5 še enkrat. Torej what's-- Žal mi je, Karina? 0 1 0. 0 1 0 bi bilo 2, saj še celo če nekako ne skoči ven na vas, pač matematika. 4-krat 0, 0, 2-krat 1 je 2, 1 krat 0 je 0. Torej je to število poznamo kot 2. Kako o številu 8? Hm? Dobro. Tako smo nekako potrebujemo še eno ogrado. Potrebujemo 1 0 0 0. In to je res naše vrste stare šole decimalni sistem. Kako si predstavljajo število 1000? No, zdi se, da se nekako v težkem položaju, če vas prosim, da predstavljajo številka 1000, ker tudi če daš sebe kot 9 izmed njih, 9 izmed njih, 0 teh, ki je največja številka, ki jo imajo, nisi čisto priti do 1.000. Torej, če vas 1000, morate samo še ena položaj, tako da lahko naredite 1 0 0 0, ergo številko 1000. Zdaj, kaj je zemljevid te vrste konceptualna razprava nazaj na strojni opremi, kjer je spet bil vhod tik ta mali električni kabel, elektrika prihaja in teče ven. In tako za to, da se preslika iz tukaj tam, no, kaj res potrebujemo? No, lahko si misliš, da so notranjost računalnik, cel kup žarnic, če hočete. Oni res poklical tranzistorjev. In tranzistorji so samo stikala da lahko bodisi vklopite ali izklopite. Torej si lahko predstavljate tranzistor, ki je na dovoli, da elektrika teče in tranzistor, ki je off kot ustavitev električne energije iz teče. In namesto da bi čez luči tukaj, zakaj nisem naredil te vrste novega šolskega slog. Torej je to lahko 1, svetilka da je na, komaj čeprav. In to je lahko 0, in zdaj je off. Torej, z uporabo te fizične naprave, I Sedaj lahko predstavljajo binarni sistem. Potrebujem samo dveh držav. Ni važno, kaj barvanja je ali kaj je to. Pomembno je le, da imam ena država na in druga država off. Torej z mojim telefonom tukaj, kako I predstavljajo število poznamo kot 0? Ali so se enakovredno, kar Število am I predstavljajo zdaj? 0, ker je naprava izklopljena. In če bi to naredili? In zdaj, kako I predstavlja število 2? Si lahko sposodim telefon tukaj, kot smo včeraj? Torej, da vidimo, tako da, če hočem, da predstavlja številka 2, je ta številka 2? No. Koliko sem jaz po naključju predstavlja tukaj? To je dejansko število 3. Torej, katero ne želim izklopiti? Črni telefon or-- dobro, če they're-- črn telefon ali beli telefon? Bela telefon. Torej, če je ta možnost izklopljena in mi vrstica je čez tu, imamo 1 V zadnjih 2 kraja in 0 v 1 je mesto. In tako sem zdaj predstavlja število 2. In to Seveda bi bilo število 3, ker zdaj obe luči vklopljena. In bom ustaviti tukaj, vendar je razumljivo če želim, da predstavljajo številka 4 ali 8 ali novejši, Bom potreboval več telefonov. Ampak to je vse, kar se dogaja. Torej, če ste že kdaj slišali, da Notranjost a-- hvala you-- računalnik je na milijone tranzistorjev, ki je le na milijone drobcenih stikal. In oni ne svetlobe žarnice, ki vklop in izklop, vendar pa dovolil elektrike teči nekje ali zaustaviti. In zato je svoje dve states-- vklopiti ali izklopiti, vklopiti ali izklopiti. Zato bi se zdi zdaj da imajo te sposobnosti da predstavlja ta koncept, ki bi radi v dejanske strojne opreme. Toda vse, kar imamo zdaj, je sposobnost da predstavljajo številke, da bi se zdi. Torej, kako bomo šli o zastopa črke abecede, ki počuti kot naslednji vrste funkcijo, ki jo bi želeli dodati sodoben računalnik ko imate številke? In res, če pomislite it, zgodovinsko, računalniki so bili uvedeni v resnici služijo kot kalkulatorji številčno. Seveda pa to dni, pa še veliko več. Tudi ko škorenj ki gre gor, si običajno videti eno ali več besed. Torej, kako si predstavljajo besede, Če vse, kar imate, je, še enkrat, elektrika konec izmed dan, ali ekvivalentno 0 in 1 je? Ja. Ja, mislim, smo nekako naredili To je včeraj v neki obliki, kjer je na neki točki, Mislim, da sem samovoljno je dejal, da, če želimo, da predstavljajo črka A, bi lahko samo pokliči, da je 1. Je bilo v okviru kriptografiji kjer smo samo potrebno nekakšno kodo, nekakšen kartiranja. Tako bo mogoče A predstavljal kot 1, in B bo predstavljena kot 2, in Z bo predstavljala kot 26, npr. In potem je samo opozorilo, da če sem gre za kodiranje črk v mojo e-pošto ali v mojih besedilnih sporočil kot številke, ki jih vsi se strinjati, da uporabite Isti niz konvencij. In res, svet je naredil točno to. Je sistem na svetu imenovani ASCII, American Standard Nabor za izmenjavo informacij, ki je preprosto odločitev nekaj let nazaj, da so ljudje, ki da odločil, da je A bo enaka, ne 1, 2 in 26, ter tako forth-- da je malo different-- ampak 65, 66, 67. In bom dvigni grafikon vsak trenutek. Ampak to je samovoljna. Ampak to ni pomembno da je poljubna. Na svetu je samo biti dosledni. Zdaj, v zadnjem času, je nekaj Ljubitelj imenuje Unicode, ker je na svetu naravi od spoznal, po izumljanja računalnikov, da obstaja več kot dobro 256 simboli na svetu da bi si želimo, da predstavljajo, še posebej, ko se uvede Azijski jeziki in druge simbologije da potrebujejo več ekspresivnost kot vas mogoče vgraditi v prvi različici Ta koda, ki je bil imenovan ASCII. Torej Unicode dejansko omogoča vas, da uporabite več 0 in 2. Še posebej, boste obdržali zaslišanju beseda bajtov v družbi in celo samo včeraj. In bajt je tisto, kar še enkrat? Kaj je bajt? To je le 8 bitov. Torej, kaj to v resnici pomeni? No, to pomeni, prej, ko smo bili govorimo o dvo- in sem bil z uporabo samovoljno treh bitov, ko smo bili Govorimo o binary-- z 1 kraja, na 2 je kraj, in je place-- dobro 4 bajt samo pomeni, da ste v pogovoru Ne v enotah treh ampak štiri, pet, šest, sedem osem, kar nam daje 8 je mesto, 16 je, 32 je, 64 je, in 128 je. Z drugimi besedami, malo ni vse da je koristno merska enota, zato, ker je tako kot eni mali podatek, ali off. Torej, pred nekaj leti, svet le odločil, je nekoliko bolj priročno govoriti v Pogoji bajtov, osem stvari naenkrat. Tako torej se je rodil pojem bajt. In tako imamo osem bitov tukaj. In se je izkazalo, tudi za podobne Razlogi, svet odločila let Pred da predstavljajo črke ASCII, boste uporabili enote 8 bitov. Torej, tudi če ne potrebujejo, da je veliko, si vedno bo za uporabo 8 bitov predstavljajo črko abecede. In to je priročno, ker potem, če vas prejmejo sporočilo, ki je z rezultatom 0 0 0 1 1 1 1 0 sledijo druga 1 1 1 0 1 0 0 1, tako da, če ste prejeli 16 bitov, svet lahko samo predpostavimo, da sta prva 8 ena črka in drugi 8, so še eno pismo. Ni važno, koliko jih je. To je samo pomembno, da vsi smo dosledni ko smo razlagi teh bitov. In to je bila le naključno. To pomeni nekaj, vendar nisem res misliš o tem, kaj to pomeni. Torej, to je majhna bela laž. Prvotno je ASCII dejansko uporablja samo 7 bitov. In osmi bit imenovano razširjeno ASCII. Ampak bistvo je, navsezadnje, enako. V svetu na splošno standardiziran na 8 bitov. Torej bi bilo to zdi, da se malo omejitev, saj bi le lahko predstavljajo kapitalske A, kapital B s kapitalskimi Z. Ampak res ne, če grem to-- tam je kup virov spletu, na primer, asciitable.com, to se bo nekoliko prepričljivo na prvem mestu. Ampak bom poudariti kaj je pomembno tukaj. To samo zgodi, da be-- in bom walk-- da vidimo, če grem tja. Tukaj je, v decimalno stolpec številka 65. In na stolpec pisma desnem značaj, Chr, je črka A. In lahko prezreti, za zdaj, vse, kar je v sredini. To je šestnajstiški, osmiško in HTML kodo. Za tem mestu je samo poskuša vreči veliko informacij na vas naenkrat. Toda vse, kar skrbi je decimalni stolpec in stolpec značaj. Torej po tej logiki, kaj je številko, da svet se je odločila, predstavlja male leto? Ja, 97. In samo zamenjati morda nekoliko, kaj več se je svet odločil, bi pomenilo številko 1? Prav, ker we-- 49, se zdi tu dol v spodnjem levem kotu. Zdaj, kaj mislim s tem? Tako se izkaže, da v računalniških sistemih, obstaja splošno Bistvena razlika med številom in naravo. Število je stvar, ki jo naučil odraščanja, ko smo bili zelo mladi v osnovni šoli. To je stvari, ki jih računajo s. Toda lik je samo oblika, A pismenka, tako rekoč, na zaslonu. Zdaj smo pri ljudeh nekako glej nekaj, kar izgleda takole. In smo rekli, oh, da je število 2. Ampak ne, to je samo simbol, ki izgleda kot tisto, kar poznamo kot številka 2. In tako da je to temeljna razlika med dejanskimi številkami in črkami. To je številka. Ampak na splošno, v ozadje računalnika, Če namesto tega vidite kaj takega quoted-- in ne boste vedno morali videti, da je navedeno, vendar pa zaradi discussion-- če vidiš narekovaje številko, To je zdaj značaj. Torej, ta številka 2 pod pokrov notranjosti računalnika bi bila prikazana z vzorcem bitov, ki predstavljajo število 50 glede na grafikonu na spletu. Vendar, če je računalnik Samo to vidi v tem bi bila prikazana z vzorec bitov 0 0 0 0 0 0 1 0. Ker bi to znak dejansko as-- in zdaj zastopa Moram razmišljati malo harder-- tako da ta znak bi se predstavljal z 0 0 1-- kaj moram tu? 0 0 1 1 0 0 1 0. Kako sem to naredil? No to je številka 50, če vas ga pomnožite z uporabo te stolpce, To je številka 2, itd To je razlog, zakaj je ta dihotomija. In to je samo teaser zdaj za funkcije ki obstajajo v programskih jezikih da bomo dotaknili kratko kasneje danes. V programskih jezikov, imate na splošno, vendar ne vedno, stvari pokličite različne vrste podatkov. Z drugimi besedami, programmer-- ko on ali ona je pisanje, programer dobi, da odloči, v kakšni format za shranjevanje svoje podatke. Lahko shranjevanje podatkov, kot surove številke, kot so število 2. Ali jih lahko shranite kot strune, ali zaporedja znakov da bi na splošno izraziti z citati v vašem programskem jeziku. Lahko imaš stvari called-- Bom preveč poenostaviti in jih imenujemo real numbers-- tako številk, ki niso cela števila, kot so število 2, vendar številke všeč 4.56. Torej realne številke lahko tudi imajo decimalnih mest, tako da je druga temeljna podatek v računalniku. In potem lahko celo druge vrste podatkov še. Torej, to je samo teaser res za najenostavnejši konstrukcijskih odločitev da programer morda da pod pokrovom. Torej, kakšna vprašanja samo še? Torej, kaj je poskusil, da bi to malo bolj realno. Ta strojna oprema ni toliko več v uporabi. Vendar je večina vsi v tej sobi verjetno odraščal in še vedno uporablja trde diske na nek način. Čeprav je večina naši prenosniki niso več imajo naprave, ki delujejo tako, namesto laptops danes splošno imajo polprevodniške pogone brez gibljivih delov. In to kaže, da je dražje, žal, ampak nekoliko hitrejša in a-- dobro, pogosto, veliko hitreje, kar je eden od razlogov. In prav tako ne proizvaja toliko toplote. To je lahko manjša, tako da je splošno neto pozitiven. Toda to nam omogoča, da preslikati malo bolj konkretno, kaj govorimo o na: 0 je in Stopnja 1 je sedaj na fizične naprave. To je ena stvar, ki mi govori okoli 0 in 1 v smislu mojega telefona ali abstraktno v smislu od stikala pa na in izven. Kaj pa trde diske? V svojih prenosnih računalnikov, če imate starejši eno, ali v namiznem računalniku, ali gotovo v strežnikih Danes, kjer ste trdih diskov, ki imajo terabajt prostora, 4 TB prostora, dobro, kaj to pomeni? Trdi disk s 1 terabajt vesoljskih sredstev tam je 1 bilijon bajtov notranjost je nekako, ali enakovredno 8 trilijonov bitov znotraj. 1 TB bi bil 8 terabitov ali 1 bilijon bitov, ki pomeni, če imate težko Kombinacije, ki ste jih nekako ali druga milijarda 0 je in 1 je znotraj njega. In če bomo le poglejte na poljubna slika trdega diska zastopnik, to je tisto, kar trdi Pogon lahko običajno videti kot notranjost. Tudi ta je nekako kot stari gramofon predvajalnik vendar na splošno z več zapisov v notranjosti, tako da speak-- multiple plošče, kot oni poklical, kovinske krožne diski, in Nato malo branje glava podobno kot stari gramofon. In to branje glava pomakne nazaj in naprej in nekako se glasi bitov. In kaj je na teh plošče, čeprav čeprav smo ljudje ne morejo videti, bodisi v resnici ali te slike, tam je drobne majhne magnetne delce. In tudi, če ste dolgo pozabil, kako deluje elektrika, magnetni delec ki se zaračuna na splošno je severni del in jug end-- tako severno in južno. In tako je svet samo odločil, nekaj časa nazaj da če magnetna protokol bistvu je usklajena, kot je ta, sever-jug, recimo, da je v 1. Če je namesto jug-sever, kaj je samo klic, da je 0. In tako, če imate na voljo bilijon mali magnetni particles-- in upajmo, strojna oprema iznajdljivost v Da bi flip ljudi okrog kot vidite fit-- če želite predstavljajo cel kup 0-ih, vas potrebujejo samo 8 magnetnih delcev Vse usklajena, kot je ta. In če želite, da predstavlja Osem 1-ih, ki ste jo pravkar Potrebujemo 8 magnetne delce poravnanima back to back to back, kot je ta. Kaj mislim z magnetni delci? Odkrito povedano, vsa ta leta kasneje, stvar, ki je še vedno pride na misel je ta tip, če vas odraščal s to rečjo. To je little-- za tiste unfamiliar-- malo otroštvo igrača, ki je to brez dlake človek tukaj da ima vse te mali črni magnetni delci, ki pridejo z njim. In z uporabo tega rdečo palico ki je le magnet, si ga lahko nekako dajo brke ali obrvi ali dlake ali kaj na njem. Torej, v bistvu, če smo povečavo v, na primer, ta je vrsta igre, ki jo lahko igrajo z Woolyja Willy. In to je samo reči, ti so precej večji magnetni delci kot so dejansko na trdem disku, in veliko manj magnetnih delcev. Ampak kaj je dejansko videli potem, če imate, drobni magnetni delci v trdi disk, kako lahko dejansko uporabiti tiste, ki predstavljajo podatke. [VIDEO PREDVAJANJE] -V Trdi disk, če vaš PC hrani večino svojih stalnih podatkov. Da bi to dosegli, podatke potuje od RAM-a ob s programskimi signali, da povej trdega diska, kako te podatke shraniti. Pogonski vezja trde prevesti tistih signale v nihanjem napetosti. To, v zameno nadzor trdi disk je premikanje parts-- nekaj redkih gibljejo deli levo v sodobnem računalniku. Nekateri signalov krmiljenje motorja, ki se vrti-kovino prevlečene plošče. Vaši podatki so dejansko shranjene na teh plošč. Drugi signali premakniti branje / pisanje glave brati ali pisati podatke o plošče. Ta tehnika je zelo natančna da je človeški las ne bi niti prehod med glavami in predenje plošče. Kljub temu, da vse skupaj deluje na grozen hitrosti. [END PREDVAJANJE] In lahko vidimo na zadnji del videa, obstaja splošno več plošče. In tako, da bere glava ne samo branje vrh. To je nekako kot tri ali štiri ali več bralnih glav da je poteza, kot je ta, branje podatkov hkrati. Torej je veliko zahtevnost in vrsta časovnega ki je vključena v trdem disku. In stvar se vrti res darn hitro, tako da je veliko kompleksnosti. Ampak kaj je povečati malo globlje in videti, kje so ti magnetni delci in kako se bomo dobili na njih. [VIDEO PREDVAJANJE] pogled -Naj se na tisto, kar smo samo videl v počasnem posnetku. Ko kratek impulz električne pošlje branje / pisanje glave, se obrne na majhnem elektromagnetnim za delček sekunde. Magnet ustvarja polje, ki se spreminja polarnost majhen, majhen Del kovinski delci ki plašč površino vsaki plošči je. Vzorec niz teh drobnih napolnjene do območja na disku predstavlja enojno malo podatkov v binarno število sistem, ki ga računalniki uporabljajo. Zdaj, če je trenutna je poslala pot skozi branje / pisanje glave, površina je polarizirano v eni smeri. Če je trenutni pošlje nasprotno smer polarizacija je obrnil. Kako si dobil podatke na trdem disku? Samo povratne proces. Torej, to je delce na disk, da bi dobili tok v branje / pisanje glavo premika. Skupaj milijone ti namagneten segmenti, in imaš datoteko. Sedaj lahko deli eno datoteko lahko razpršeni po vsem pogonu na plošče, nekako kot nered referatov na vaši mizi. Tako posebna dodatna datoteka hrani tir, kjer je vse. Ali ne želiš, da bi nekaj takega? [END PREDVAJANJE] Tako se namiguje, da obstaja, morda je da je tema od včeraj izbrisa. Ko se brisanje datoteka, včeraj smo rekli da računalniški resnici počne kaj, ko povlečete nekaj v koš ali smeti? To je preprosto pozabi. Toda 0 in 1 je, magnetni delci da je izgledal rdeče in modre stvari tukaj, ali mi roko tukaj, so še vedno tam na trdem disku. In tako obstaja software-- Norton Utilities in minulih in druge bolj moderno software--, da je samo bo skeniranje celotnega trdega diska je videti na vseh tistih 0-ih in 1 ja, saj je Izkazalo se je, da je večina formats-- datoteka Word dokumente, Excelove datoteke, slike, video files-- imajo nekatere Vzorci, ki so pogosti med njimi. Vsak video datoteke morda biti drugačen video, vendar je prvi več bitov so običajno isti. Ali zadnjih nekaj bitov so ponavadi enaki. In tako z veliko verjetnostjo, si lahko ogledate za tiste vzorce. In tudi če je datoteka pozabljena, lahko rečemo, z veliko verjetnostjo, ampak to izgleda kot Wordov dokument, upamo, da si opomore in un-pozabi, če hočete. In tako to je, kako lahko obnovite podatkov, ki je bodisi že po naključju izbrisati ali izbrisati ali namerno črta za kakršen koli namen. Nasprotno, varno brisanje počne kaj V okviru slike, kot je ta? Točno, jih naredi vse naključno. Torej je nekako premika nekaj jih dol, nekateri od njih gor, zapusti nekatere od njih spremenile, in običajno naredi naključno hrup iz nje, ali pa morda naredi vse Tisti 0 ali vse od njih 1 je. In da je tudi lahko na splošno drgnjenje svoje podatke proč. Torej, kaj je zdaj vrnemo k vprašanju računanja razmišljanja, pri čemer imamo vhode formule. In algoritmi daje ti izhodi na koncu. Osredotočeni smo zdaj na vložke in izhodi, ker zdaj sem zahtevek imamo način predstavlja vhodov in izhodov. Mi smo le, da bo za uporabo binarno. In ne glede na to, kar smo želijo, da predstavlja danes ali je številka ali črka ali njihovi tisoč v imeniku ali slike ali filme, na koncu na dan, da je vse 0 in 1 je. In trdim, da, čeprav je to je zelo preprost svet s samo 0-ih in 1 je lahko gradimo sami gor. In smo videli en primer da s črkami tako daleč. Torej, kaj je osredotočil zdaj o tem srednji sestavina, algoritem. In vrnimo k temu Primer Mike Smith. Torej, v tem imeniku, ki je sicer, ne toliko več uporabljati, tam je problem treba rešiti. Želimo, da bi našli nekoga, kot je Mike Smith. In kaj lahko storim, da bi našli Mike? No, jaz bi samo odprla to knjiga, začeti na prvi strani in zavedaš, oh, sem v oddelku A. Mike ni tam. Rabim del S za Smith. Torej samo vrtite eno stran naenkrat. Naj se pretvarjamo, da je vse to belih strani in ne rumene strani, ker ne bomo našli Mike v rumenih straneh anyway. Ampak sem v belih strani. In sedaj sem v oddelku B. Še vedno nisem našel. Zato sem vrtite eno stran naenkrat. To je algoritem. Je niz navodil za reševanje nekaj težav. Z drugimi besedami, poglej stran, če Mike ni na njem, obrniti stran in ponavlja znova in znova in znova, v najboljšem primeru je videti tako, kot ste to počeli. Torej, to je algoritem, ta postopek, pravilna? Žal mi je. Ne, sem slišal nekaj nos. OK, vendar je is-- ja, to je gotovo dolgočasno. Kot, bomo cel dan, če sem naprej išče Mika pri tej hitrosti. Ampak naj trdijo, da je pravilna. To je neumno, ampak je res. Na koncu dneva, dokler se morda da bom najti Mike, če je notri in sem pozoren. In sem na koncu doseže svoj stran. In če dobim preveč, če Pridem na oddelek T, potem sem lahko nekoliko optimizirali in samo reči, hm, vse narejeno. Jaz sploh ne potrebujete za odpadke Čas bo na Z-jev. Ampak to je zelo linearni pristop, če vas bo zelo vrsta od leve proti desni pristop, ravna črta. In njegova pravilna, vendar počasi. Tako se spomnim iz osnovne šole, vrsta od optimizacije iz prvega grader, kjer sem se naučila, kako se ne šteje s tistimi, ampak twos-- do 2, 4, 6. To je A, veliko težje narediti, ampak v teoriji, da je faster-- 8, 10, 12, 14, in tako naprej. Kaj pravite na to algoritem? Ali je bolj učinkovito? Je hitrejši? OBČINSTVO: To je učinkovit. DAVID Malan: Ja, tako da je def-- je dobesedno dvakrat hitreje, ob predpostavki, da ne dobijo spotaknil s prsti. To je dvakrat hitreje, saj Sem obračanja prek dveh Strani naenkrat namesto enega, ampak je potencialno pravilno, saj zakaj? OBČINSTVO: Ti si preskoči nekaj. DAVID Malan: Ja, kaj pa če Mike zgodi se sandwiched-- morda, ko sem kasneje v imeniku, Mike zgodi, da bo stisnjena med tema dvema stranema, in sem slepo preskočite. Zato moramo malo popraviti tam. Ko sem udaril del T, I ne samo z gotovostjo reči, nismo našli Mike Smith. Verjetno podvojiti nazaj. Ali v resnici, ko sem dosegel nekoga imenovan S-N, namesto S-M za Smith Takoj sem lahko podvoji nazaj, ker je morda on je bil na prejšnji strani. Ampak nimam daleč dvojno nazaj. V teoriji, če sem to naredil na desni Tokrat sem se vrnete na prejšnjo stran. Torej, to je dodal le en dodaten korak. Tako sem šla dvakrat hitreje, vendar me je stalo eno dodatno stran. Ampak, da se počuti kot neto zmago. Vendar to ni kako večina ljudi v Ta soba bi rešila ta problem. Kaj bi tipična oseba, morda Pred nekaj leti naredili, da bi našli Mike Smith? Ja, ni našel Mike. Kaj naj naredim? Tako bi dobili malo bližje, ampak jaz know-- kaj je res o telefonskem imeniku? OBČINSTVO: To je zaporedno. DAVID Malan: To je zaporedno. To je po abecedi. In zato, če sem v delu M, Mike je očitno v desno, Lahko dobesedno raztrga problem v half-- je ponavadi lažje kot that-- solza problem na pol in ga vrgel proč, tako da zdaj imam problem, ki je ni več 1000 pages--, da je bilo težko, ker mislim, da sem dejansko tore imenik to time-- ne 1.000 strani, ampak 500. Torej problem je dobesedno pol tako velika. In to je zelo prepričljiv, saj z mojih prejšnjih algoritmov, različica 1 in 2, sem kar samo problem ena stran manjše, dve strani manjši ob času. Ker zdaj, sem ga 500 Strani manjši naenkrat. OK, tako da zdaj, Karim predlaga da sem šel na desni polovici. Tako da sem šel v grobem do srede, gor ali dol. In če bi to storil matematično, Lahko bi šel naravnost v sredino. In zdaj se zavedam, oh, Sem v oddelku T. Pravzaprav sem si šel predaleč. Ampak lahko, še enkrat, trgajo problem na pol, ga vrgel proč. In moji bajti ni tako velika. To je samo, kaj, 256 strani, ali 250 strani, gor ali dol zdaj. Ampak to je še vedno precej več kot eno stran ali dve strani. In zdaj, grem približno na sredini. Oh, nisem šel čisto dovolj daleč zdaj. Torej ponavljam, ponavljanje, ponavljanje Ponavljam, dokler sem upajmo ostane samo eno stran. Tako, da vabi na vprašanje, če sem je začel s približno 1000 strani, koliko korakov je trajalo me z različico 1 mojega algoritma? No, če Mike je v S odsek, v najslabšem primeru, to je zelo blizu Konec abecede. Torej, če je imenik 1.000 strani, Poiskal bom Mike v 1.000 strani, gor ali dol. Morda je kot 800 ali tako, vendar to je zelo blizu 1.000. Ker je v drugem algoritem, koliko Stran izkaže maksimalno morda sem zahteva, da bi našli Mike Smith? Tam je 1000 strani, vendar sem jih dva dela naenkrat. Dobro, max kot 500ish, ker če grem skozi celoten imenik, na kateri točki, ne morem ustaviti. Ampak lahko obrije nekaj jih samo ustavi na odseku T. Ampak to je v najslabšem primeru 500 strani. Torej, kolikokrat lahko razdeli 1,00o-stran imenika na pol znova in spet in again-- iz 1000 na 500 do 250 do 125? Kako dolgo, preden sem se udaril eno stran? Ja, to je okoli 10. Odvisno od zaokroževanja in podobno, to je približno 10 strani skupna potreba se obrnili ali imenikov treba raztrgana. Tako, da je zelo močna. Začeli smo s problemi, 1000, stran V vseh teh treh zgodb. Ampak v prvi algoritem tako, me je, v najslabšem primeru, 1.000 strani izkaže, da bi našli Mike. Drugi algoritem, 500 strani, da bi našli Mike. Tretji algoritem, 10 strani, da bi našli Mike. In to je še bolj močni, ko misliš, da glede vrste nasprotne scenarija. Denimo, da podjetje telefonsko naslednjem leto morda združuje dve mesti skupaj, in telefonski imenik je nenadoma ta debela, namesto tega, da tako 2.000 strani namesto 1000. No, moj prvi algoritem išče Mike Smith v telefonskem imeniku na 2000 straneh, slabše tako, da se dogaja, da se koliko strani zavije v naslednjem letu? Telefonski imenik je 2.000 strani, SO- dobro, ne ena. Če imenik dvakrat debela v Prvi algoritem, prvi algoritem, 2000, kajne? V najslabšem primeru, Mike je res blizu konca knjige zato je 2.000 stran obrne. Drugi algoritem bo s dvojke, kot 1000 strani. Kaj pa v mojem tretjino in najnovejši algoritem? Če telefonsko podjetje podvoji Število strani, od 1.000 do 2.000, koliko krat moram trgati da je knjiga na pol, da bi našli Mike? OBČINSTVO: Samo eno. DAVID Malan: Samo še eno, ker z eno stran solza, Lahko dobesedno razdeli in osvojiti, če hočete, da je problem v pol sprejemanju velik ugriz iz nje. In tako je to primer učinkovitost in verjetno algoritem s katero smo vsi nekako intuitivno pozna. Ampak to je samo kot pravilne kot mojih drugih algoritmov s tem poteg za Drugi algoritem ampak to je tako veliko bolj učinkovit. In v resnici, kaj računalnik znanstvenik, ali pa programer, bi običajno storili pri pisanju koda poskušali ugotoviti, Vse je v redu, ne želim, moj Program samo, da je pravilna, Prav tako želim, da bi bilo učinkovito in reševanje problemov dobro. Predstavljajte si, da v realnem svetu danes, kot so Google indeksov, iskanj kot milijard strani, predstavljaj si, če uporabljen prvi algoritem za iskanje mačke Med milijarde pages-- gledaš prva stran v njihovi bazi podatkov, drugi, tretji, samo iščejo za mačko, ki išče mačka. To je precej darn počasi se zdi. Lahko bi namesto tega uporabite nekaj imenuje binarno iskanje, ki Ni coincidence-- bi torej dva smo obdržati nekaj delimo v 2, v half-- ki bi jih lahko uporabili binarno iskanje in morda našli mačk še hitreje, ali karkoli že je, ki ga iščete. In odkrito povedano, da je celo luksuznih algoritmi da narediti veliko več kot le delitev stvari na pol da bi našli informacije hitro. In bomo govorili malo o tistih, po kosilu danes. Torej mi samo poskusite predstavljati to. Nam ni treba iti v vsaka math ali dejanske številke. Lahko govorimo o tem abstraktno. Ampak naj le predlaga, če vas so ob razpravi zdaj z inženirji predlaga ta algoritem in skušate narediti izračunano odločitev, ker morda inženir pravi za vas, vam Veš kaj, lahko izvaja načrt linearno iskanje v kot dveh minutah. Tako enostavno je to. Binarni iskanje ni tako fancy, ampak to se dogaja, da me kot 10 minut, tako 5-krat toliko časa. Tam je blagovna tod tudi v smislu odločanja kaj je programska oprema za pisanje. Ali pišete enostavnejši algoritem, ki bo samo peljal dve minuti? Ali pa boste porabili več časa, 10 minut, pisanje Ljubitelj algoritem? Kako ste se odločili, da se vrste vprašanje? Lahko pa bi bilo malo bolj realno. Povem šefu, da bo trajalo me niti en teden ali 10 tednov za izvajanje programske opreme na ta način, kako se odločite, kateri algoritem za zeleno svetlobo? Karim? OBČINSTVO: Občinstvo, mislim. DAVID Malan: publika. Kaj mislite s publiko? OBČINSTVO: Če bo ki jih uporabniki uporabili ki [neslišno], ki jih uporabniki [neslišno]. Ampak, če je to nekaj, kar si samo delaš zase olajšati težave, [Neslišno] hitreje. DAVID Malan: Ja, to je hitro in umazan je dober način, da ga opisali. V bistvu, če ste opisuje veliko svojega časa v grad šoli, pri čemer pogosto krat, Napisal sem slabo kodo zavestno SO- vsaj tako sem racionalizirati it-- zavestno tako, ker čeprav sem bil pisanje kode da je bil relativno počasen za izvedbo, Bil sem sposoben napisati kodo sam zelo hitro, porabe le nekaj minut ali ur ne dni. In se je izkazalo, da Občasno je potrebno zaspati. Torej, tudi če je moja koda potrebno 8 ur za vožnjo, tudi to je v redu, Bom šel spat, medtem ko teče. Torej v času, ko sem mislil, da je to zelo pameten, čeprav sem očitno delal preko mojega dr zelo počasi. Toda nasprotje, ki je da, če bi bilo pisanje programske opreme za druge ljudi, ki važno bolj kot mene, no, ob njih čakati 8 ur na dobili nazaj svoje rezultate iskanja sploh ni tako prepričljiv. In tako porabi več časa spredaj za pisanje programske opreme da je bolj učinkovito, bolj kot naš tretji algoritem, Verjetno koristi uporabnikov v daljšem časovnem obdobju. Torej je res odvisno preko Čas, kako ti stroški ujemajo. Če bo treba pisati programska oprema, ki jo uporabljajo enkrat, Verjetno lahko tudi storiti hitro in umazano, kot pravijo. Samo vrgel skupaj. To je koda, ki spravlja v zadrego ste, da je tako slabo, vendar je to delo pravilno opravljeno, čeprav to ni učinkovito. Nasprotno, boste porabili več časa na nekaj, dobil je ravno prav. In potem amortizira v daljšem časovnem obdobju, da vnaprej stroški časa je verjetno smiselno, če boste obdržali optimizacijo za skupno primera. In res, da je tema programiranje, ali računalništva več na splošno, poskuša optimizirati ne za občasni primeru pogosta pa case-- kaj operacija se bo znova zgodilo? Če boste imeli milijarde uporabnikov iščejo na vaši spletni strani, verjetno bi jo porabili dodatnih tednov do pred pisanjem boljšo programsko opremo, tako da vse svoje uporabnike koristi. Zdaj pa poskusimo ujeti to a malo slikovno, vendar ne toliko številčno. Torej, tukaj je samo stara šola grafikon. In naj povem, da je ta čas. In ni važno what-- dejansko, ne, ni časa. Oglejmo čaka, da na drugi osi. Recimo, da je to čas, in to je velikost problema. In računalniški znanstvenik lahko na splošno imenujemo to samo n. n je podobno naš go-spremenljivka, kjer n je število, n število, in to je Število koli vložkov, ki jih imate. Tako da v tem primeru je n število strani. Torej bi bilo 1.000 v v primeru smo pravkar povedali. Torej čas je lahko katera koli merska enota. Mogoče, da je druga. Mogoče, da je dni. Mogoče, da je kot stran obrne. Ni važno. Karkoli želite, da računajo s tem, da bo čas, ali pa stane ekvivalentno. Torej, s tem zelo prvi algoritem, če I, na primer, je imel imenik na 1000 straneh, Bom naredi piko tam, ker če je 1000 strani, je trajalo približno 1.000 stran obrne, gor ali dol. In potem, če sem imel 2000-stran imenika, in bom pripraviti sekundo dot tukaj, ker je za 2.000 strani, je kot 2.000 sekundah ali stran obrne ali karkoli. In tako, ko sem že rekel, da je nekako linearno zvezo, da je bilo namerno, ker sem želel kasneje on-- pravica now-- potegniti črto. To je nekako ravno linija odnos. Naklon je 01/01, če hočete. Medtem, drugi algoritem je rekel, če imaš 1.000 strani in si s pomočjo drugega algoritma, kjer sem šteje za 2 let, obračanje dve strani naenkrat, bi moral narisati piko spodaj ali zgoraj moj prvotni piko? OBČINSTVO: Pod. DAVID Malan: Spodaj, saj, kot smo videli, traja manj časa, pol toliko časa. Torej mora biti pika polovico tako visoka kot drugi. In ista stvar tukaj, je ta pika bi bilo verjetno približno tam. In tako je moj drugi algoritem, podobno, ima linearno zvezo s časom. In jo lahko pripravi kot take. Torej sedaj, tretja in zadnja algoritem je malo težje pripraviti. Vendar intuitivno, če imam 1.000 strani z moje tretje algoritem, da bi mi bo všeč samo 10 korakov. In če imam 2.000 strani z mojim tretjim algoritem, mora me ne 10 koraki, ampak 11, samo ena več. Tako da smo komaj videli to. In se izkaže, če I povečati na to, da sem gre pretiravati za učinek, oblika od te črte, na koncu, ni ravno line-- saj, res, če bi bilo, da bi bilo videti bolj všeč others-- je pravzaprav Krivulja da, če povečate, se bo da si veliko več kot to. It-- dobro, OK, prezre ta del. To je bil moj pero dogaja kota. To je Krivulja, ki je vedno narašča, vedno, vedno, vedno povečuje, vendar le komaj. In to v času, imate odnos, ki je več kot to. Videti je skoraj naravnost. Ampak to je zelo počasi narašča. Toda skoraj vseh točkah vzdolž Vaše x-osi, vodoravna os, je nižji od tistih drugih progah. Torej bi to razmerje n, pri čemer, če imate n strani, ti n sekund traja. To je lahko razmerje n / 2. Imate n strani, je potrebno si n / 2 sekundi, pol toliko. In to je logaritmično odnos, ki Če se spomnimo, se prijavite osnove 2 n posname ta vrsta rasti, tako rekoč. Torej je to neke vrste sveto gral med tremi od teh tukaj, ker to je samo toliko bolj učinkovita, vendar verjetno bolj zapletena izvajati. Kakšno vprašanje? No, povej mi to, kaj mi odpre okno z besedilom Samo tako bomo lahko poskusite formalizira nekaj tukaj. Zato naj gredo naprej zdaj in izvajanje tega algoritem za iskanje Mike Smith v kodi, če hočete, psevdokoda koda. Ne bom uporabljati Java ali C ++. Jaz sem le, da bo za uporabo neke vrste Angleščina podobno sintakso, ki smo jo bi na splošno imenujemo psevdokoda kodo. Tukaj imam prazno okno. In jaz pravim korak 1 od zelo Prvi algoritem poberem imenik. 2. korak je odprta knjiga na prvo stran. 3. korak bo pogled na Stran Mike Smith. Če je na strani, pokličite Mike. drug zavoj stran in pojdite na korak 3. Storiti, recimo. In zato ni čisto popoln, ki jih bomo videli v trenutku. Ampak kaj je razmisliti, kaj koncepti sem tu predstavil. Torej koraka 1 in 2 in 3 so precej glagoli. Oni so izjave, actions-- to. In tako v programiranju jezik, bi se mi na splošno jim klic izjave ali funkcije ali postopki, jih pokličete poljubno število stvari. Ampak oni so samo actions-- to. Korak 4 je bistveno drugačen, saj to je nekako sprašujem. To je rekel, da smo nekako z na odcepu. Če Mike je na strani, pokličite ga, tako levo, če hočete. In če ne, pojdite nazaj na nekatere drugi page-- ali ne, žal, nazaj na drugo stopnjo, ki povzroča neke vrste Looping konstrukt. In mi to znova in znova in znova. In pravzaprav, veste kaj? Ja. drugega, če na koncu knjige stop. Zato moramo nekakšen tretji stanje, saj vas ne more obdržati obračanjem strani oglas nauseum, ker na koncu, bom udaril konec knjige. In napaka v programu lahko ne pričakujemo, da scenarij. In potem sem spoznal, oh, počakajte minuto, moram tretji scenarij. Če sem iz strani, sem bi bilo res samo ustaviti. Sicer pa je neopredeljenih. Kaj se bo zgodilo, če bom obdržati rekoč obrniti stran in nazaj, To je, ko računalniki zamrznitev ali nesreči, ko ste zadeli nekatere nepričakovana situacija, kot je ta. Zdaj pa, kaj pa Mika Smith tretji algorithm-- pick up imenika, odprta knjiga za first-- za ne, ne prva stran ta čas, da middle-- oh, dobro, da bi je drugi algoritem. Naj samo preskočiti na tretji. OBČINSTVO: Oh, žal mi je. DAVID Malan: To je v redu. Naj samo preskok na third-- open na sredini in sedaj iščejo Mike Smith. če na strani, pokličite Mike. In potem, kaj hočemo tukaj povedati? še kaj? To lahko izrazimo v kateri koli številne načine. Ni pravilen odgovor. OK, če ne že spet, vendar moramo be-- OK, si želimo razdeliti na dva dela, ampak želimo iti levo ali pa desno? Kako izraziti ta pojem? No, v primeru, Mike, ja, da je pošteno. Ampak OK, tako da je pravzaprav dobra točka. To je vredu. Bomo nadaljuj s to logiko. SO- OBČINSTVO: Manj kot polovica. DAVID Malan: Ja. Torej, še če stran, bomo rekli, manj kot Smith, na levi strani Smith, then-- poglejmo, je To bo zapletlo? else if stran pride pred Smith, solza na pol, mečejo polovica? OBČINSTVO: Mislil sem da je [neslišno]. DAVID Malan: slišim oba odgovora. OBČINSTVO: Levo. DAVID Malan: OK, vrgel stran levo polovico, kot Lakisa že rekel, z leve strani pol, potem pa sem nekako želijo, da pojdi to-- grem na desno. Ali enakovredno, in sem malo malo nered začetka tukaj, Sem dejansko želijo pojdite na korak 2 spet, kjer je odprta za middle-- ali open-- ja, recimo, strani na sredini. In to ga določa. To ni več knjige. To je samo polovica knjige, tako odprte strani na sredini. else-- so skoraj tam. Korak 6, else if strani prihaja po Smith, raztrga na pol, mečejo desno polovico, potem pa pojdite na 2. korak. drug izhod, četrti scenarij, če nimamo strani levo obrniti. Torej bi lahko to čiščenje. In moramo očistiti to gor. To je zelo psevdokoda kodo, če vas bo, opis zelo visoki ravni. Vendar pa na splošno zajame idejo. In, še enkrat, v ta scenarij, smo ima pojem pogoj, veja, vilice v cestnem prometu, zaradi česar decision-- če to gre na ta način, else if, pojdi na ta način, else if, gredo v to smer. In to je zelo pogost programiranje tehnika odločiti, v katero smer iti, tako rekoč. In imamo tudi nekakšno od zanka strukturo, v kateri delamo vedno znova nekaj. Zdaj pa se je izkazalo, veliko kot v tem primeru, pri čemer super natančno je pomembno. Vendar smo videli tudi nekaj da se držimo kliče abstrakcijo. Kaj to pomeni, da poberem telefonski imenik? Mi smo le nekako ob za odobrena v tej sobi da ima ta neko semantično pomen. Vsi mi samo nekako vedeti, oh, dobro, dvigni imenik. Kaj to v resnici pomeni? No, to res pomeni razširitev roko, skloniš, razširi prste, ščepec knjigo med prsti, stand up, potegnite roko k sebi. In smo lahko res Pedantan o tem, Res pa super natančna o tem, kaj delam. Toda vse te korake skupaj so kaj to pomeni, da poberem telefonski imenik. In tako že prej, ko sem rekel, vsak teh prvih dveh izjav si lahko predstavljamo kot nadaljuje ali funkcija, res predstavlja tisto, kar smo da kliče abstrakcijo. To je kot visoki ravni konceptualne opis problema, ki dejansko pomeni kar nekaj korakov. In tako tudi to je ponavljajoče teme v programiranju, s katerim sem lahko napisati program uporabo sintakse kot this-- pick_up_phone_book (). In potem skladenjsko sem bo ukradel nekaj od večine programskih jezikov. Zdaj, korak 1 izgleda še Več kot funkcijo kot programer bi ga poklical. Izgleda, da koda, da nekdo je dal ime in dana se mi, da uporabljajo somehow-- v drugih besede, kar je linija sem izpostavil predstavlja funkcionalnosti, ki morda Nisem niti izvajati sam. Nekdo starejši, modrejši od me že pogruntal kako izraziti pojem dvigovanja telefonski imenik. In to je kot petih korakih sem raztresena off, off vrhu moje glave. Ampak on ali ona že izvajajo to je tistih nekaj korakov ime, pick_up_phone_book. In oklepajev samo tisto, kar večina programerjev narediti konec izjav, kot je ta. Zdaj se lahko postavi na njegovo ali njeno ramena in nikoli več, razmišljati o tem, kaj to pomeni da poberem telefonski imenik. Lahko samo rečem, dvigni imenika. In to je točno, kaj vse nas ljudje storili tukaj. Ko smo bili verjetno 1 letnik, stara 2 leti, nekdo je moral nas učijo, kaj je pomenilo, da poberem telefonski imenik. In vse od takrat, smo odvzete stran od tistih, ki zelo nezanimivo mehanske koraki. In smo samo imeti intuitivno razumevanje kaj pomeni pick up telefonski imenik. In lahko ekstrapolirati zdaj bolj zapleten things-- izgradnje objekta. Kot, da nekateri ljudje, da ima dejansko pomen. Izvajalcem, arhitektov, da ima nek smisel. In bi vedeli, kaj storiti, če Rekel sem, pojdi izgradnje objekta. Vendar je večina izmed nas v prostoru ne bi se ukvarjajo s to stopnjo abstrakcije. Morate povedati, nam je všeč go dobil lopata in pojdi na beton in nohtov kosov lesa skupaj in karkoli drugega je vključen v izgradnjo stavbe. In to zato, ker nismo še ni bil programiran, da razumejo kaj to pomeni za gradnjo stavbe. Nimamo to abstrakcijo. Nimamo te funkcije. In kaj boste videli v programskih jezikov na splošno, predvsem bolj moderni jeziki, kot so Java, PHP, Ruby in Python, oni so veliko bolj zrel od starejših jezikih kot C in C ++ in še druge. In tako so prišli z več funkcionalnost zgrajena leta. Več koda je napisana ljudje v preteklosti da se lahko zdaj pokličete ali pokliče ali uporabo, kot sem namigovali na s tem poudarila linijo tukaj. In tako kljub temu, da ne govorimo o programskih jezikih na sebi, Samo psevdokoda kodo, vse ideje so še vedno v tej razpravi. In se izkaže, je natančnost super pomembno, saj je abstrakcija. In poskusimo sporoči, da je, kot sledi. Sem morda nehote razvajen to z utripanjem diapozitiv na zaslonu prezgodaj. Ampak naj zaprosi za pogumne prostovoljca, Če vas ne moti prihajajo. Ti bi ispred Fotoaparat, če ste v redu s tem. Bi kdo rad prišel gor in dati navodila za svojimi kolegi tukaj? Samo, da pridejo sem in stati tukaj in reči nekaj besed. Victoria je nasmejan najbolj in izogibanje oči najbolj. Bi bili pripravljeni, da pridejo gor? V REDU. In če vsi ostali na svojih sedežih bi vzeti kos odpadnega papirja, če hočete. Podložen papir je v redu. Pridi na ta način. Ali nekatere papirja ti so imeli včeraj, samo vsak prazen list papirja, če bi lahko. In če ne boste imeli, samo vprašajte svojega soseda, če bi lahko. Torej, v tem trenutku, za ta primer, Victoria se dogaja, da igra vlogo programer, inženir, ki je Treba si programirati vse, kar računalniki, nekaj narediti. In bomo videli, kaj predpostavke ste se odločili, da. Bomo videli, kako natančno se odloči, da bo. In če je to dokaz gre pedagoško dobro, veliko napak bodo, da bomo nato uporabili da kot priložnost za razpravo. Toda izziv bi smeli je, da bi se izognili te napake, je dober programer. In tako izziv pri roki, če ti bi rad, da hodi tja, je pred Victoria na zaslonu here-- in upam, da nihče od vas se spomniš, ko sem zasvetil na zaslonu. In ne obrne na vse, saj tam je še en zaslon v tej sobi da lahko izklopite. Torej ne obrne. Pred Victoria je isti krik. In njena naloga zdaj je, da vam povem vse na svojem kosu papirja, kaj pripraviti. In bomo videli, na podlagi verbalne navodila sam, računalniški program, če hočete, kako točno vaše risbe are-- vaše izvedb so. Smiselno? OBČINSTVO: Ja. DAVID Malan: OK, izvršiti. OBČINSTVO: Nariši kvadrat. [SMEH] DAVID Malan: In ne Vprašanja se lahko vprašal. Lahko storite le to, kar ste povedali. Oh, in če imate današnji diapozitive Odpri v zavihku, ne glej na kartici. V REDU? OBČINSTVO: OK, narisali krog. Slope-- lahko rečem pobočju? DAVID Malan: do vas. OBČINSTVO: pobočju. In trikotnik. DAVID Malan: V redu. In ostal tu le za trenutek. In bom prišel približno vsak trenutek. In ni treba, da dajo svoje ime na njem. Naj pridejo okoli in zbira svoje risbe, Če vas ne moti jih trgajo ven. Tukaj je tisto, kar smo dobili nazaj. Bom projekt na zaslonu. Vidim, kvadrat, krog, pobočje, in trikotnik. Tako da je bil en odgovor tam. In let's-- Ops. Hvala. Tu je še en izbor, in eno za njo. Tako so vsi videti, da zajemanje duh. Hvala. Obstaja še en, in tukaj je še eden. Razlaga naklon je malo drugačen, malo ukrivljenih. In v katerem je bodisi zaradi izmed čudovito posebnost, s katero ste opisano, ali pa si nekako videl, da prej, to je res Kaj Victoria dejansko opisuje. Toda zdaj, tiste, ki ni dobil čisto prav, pa ponujajo nekaj pripomb tukaj. Torej Victoria najprej dejal narisati kvadrat. In zdaj, lahko sklepamo, zavoljo danes da vsi vedo, kako narisati kvadrat. Ampak to še ni povsem jasno, kajne? Kako drugače bi lahko imeli potegniti trg, ali če morda nekaj nejasnosti tukaj za računalnik? OBČINSTVO: Lokacija in velikost. DAVID Malan: Kraj, kajne? Vsi, ki ste imeli papir neke oblike, splošno pravokotniki, vendar nekoliko različnih velikosti. Ampak zagotovo bi bili pripravljeni, če si hotel, velik kvadrat, morda majhen kvadrat. Mogoče je bilo zavrteti. Ne verjamem, da smo videli, da. Vendar pa bi bilo bolj diamant podobno, vendar še vedno, kljub temu, matematično kvadrat. Tako, da je bil verjetno dvoumen. Potem je rekla, narisali krog. Nekateri od vas si ga pripravi ob to, kar ni nerazumno, ker ljudje mislijo ali brati od desne proti levi v večini jezikov, tako da ne slaba ugibati. Toda to krog bi lahko je znotraj kvadrata, bi bilo okrog kvadrat, bi bila na drugem mestu na listu, tako da verjetno dvoumna. Slope bi lahko bil morda pri čemer največ svoboščin verbalno s tem, kaj to pomeni. In nekateri od vas razlagati je kot vijugasto črto ali ravna črta ali podobno. In potem trikotnik, preveč, bi lahko je usmerjen v poljubnem številu načinov. Torej na kratko, tudi z nečim, si pogleduje in ste kot, wow, tako preprosta, bi otrok pripravi tega tudi ne res, če ste super, super prepričljiv in povej računalnik točno, kaj naj naredim. Torej, če bi lahko, če imate en list papirja, kaj je poskusiti še enkrat. In bom dal Victoria eno Drugi primer na zaslonu tukaj. In spet, ne obrni in ne pogled na vaše diapozitive. In bom ji trenutek za razmišljati o tem, kako opisati to. Ne dovolite, da vidim strah v tvojih očeh. [SMEH] In še enkrat, tokrat vzvod nekatere od teh takeaways in poskusite dobiti skoraj vse vsaj pravi odgovor. OBČINSTVO: OK, vzemite kos papirja, poglejte sredi tega kosa papirja. Sredi tega kosa papirja, narišite kocko. [SMEH] DAVID Malan: Kaj smo se naučili? Bili smo tako blizu. OK, ponovi, če bi lahko, za vsakogar. OBČINSTVO: Na sredini kos papirja narišite predmet, ki izgleda kot kocke. DAVID Malan: OK, to je vse dobiš za delo z. Dovolite mi, da je analitično in ne toliko pomembno, ampak da zahtevek da Victoria vsekakor Zdi se, da razmišljanje v zelo odvzemi na visoki ravni, ki ni nesmiselno. Ker drugače, bi bili vsi precej disfunkcionalna, Če smo morali biti še tako natančna z vsem, kar počnemo v svetu. Ampak pravijo, pojdite na middle-- I mislili, da smo na tako dobri poti tam, kot iti v samem središču strani, in nato pripravi kocko. Torej, ona je razmišljanje z odvzemi, ker je še vedno si kaj je na zaslonu, kot dejansko kocka. Vendar pa je toliko možnosti za razlago tam. In v resnici, tam je tudi veliko drugih načinov, kako lahko izražajo to, kar bom predlagala v trenutku. Torej, tukaj imamo eno inkarnacijo od picture-- whoops-- enega inkarnacija slike, tako da malo tri dimenzionalnost z njim, kar je lepo. Tukaj je še ena, kjer imate Enako, čeprav je nekako odprto kocke. Nekateri ljudje ga je malo bolj ravna, dvodimenzionalna. In to je v redu. Torej, res v Središče papirja. Tale mislim, da bom podobno, ker če gremo tukaj, To je tisto, kar jo je opisal. Torej, zdaj, naj predlagajo, kako drugače smo lahko opisali ta položaj. Nazaj v dan, eden izmed najbolj bolj pogosti načini, da se učijo programiranja je za pisanje kode, piše linije navodil, da je imela malo želva na zaslonu. Logotip in druge variante to je ime jezika. In želva živela v svetu. Torej predvidevam to pravokotne Prostor je njegov svet. In bi začeli z assuming-- I res ne vem, kako pripraviti želvo, tako da je to, kot je ta. In potem je dobil lupino in potem morda nekaj metrov. Tako lahko to malo še znak na zaslonu. In je predmet tega programski jezik je prisilila želva iti gor, dol, levo, desno in postaviti svoje pero ali pick svoje pero up, da bi mu dejansko pripravi na zaslonu V tem zelo plosko pravokotne svetu. Torej, kje sem mislil, da bi šel, in kje bi morali razmisliti potapljanje navzdol za duševno pri opisovanju Navodila bolj na splošno, Jaz bi zahteva, ki je dal svoj pero v middle-- in bomo znebili želva, ker ne morem zares naj ga pripravi zelo dobro. In zdaj, bi lahko kako drugače Pravim narisati kocko? No, lahko bi rekli nekaj podobnega žrebanje diagonalno linija severovzhod, na primer, ali na 45 stopinj navzgor. In da bi me prišel sem. In sem precej daleč od kocki. Toda zdaj, lahko rečem nekaj kot obrniti za 90 stopinj v levo in narišite črto enako severozahodno dolžine. In sem lahko še naprej s podobnimi smereh. In to ne bo enostavno. In odkrito povedano, mi verjetno bi so tukaj že pet minut. Ampak mogoče bi bi prišel do nekaj, kar se na koncu dneva, konča pa kocka, vendar smo končal znotraj te abstrakcije to narediti na tak nizko raven, da ne more zares glej, kaj delaš, dokler celotna Stvar je pravzaprav tam na strani. In tako je to splošno načelo, še enkrat, od programming-- to idejo abstrakcije. To je tako čudovito močan, ker še enkrat, je pravkar rekel, narisati kocko, ki je vse nas precej bi zelo hitro grok. Mi bi samo razumel, OK, narisati kocko. Morda ne vedo usmerjenost, tako da bi se lahko malo bolj natančno, vendar pa lahko na splošno sliko ali veste, kaj je kocka. In to je koristno, ker če vsakič, ko sedel kot programer na tipkovnici napisati kodo, če bi morali razmišljati na tak nizko raven, nihče od nas bi kdaj dobili kaj storiti. In seveda, bi nihče od nas uživajo proces pisanja kode. To bi bilo, kot je pisanje v 0 in 1-ih, ki odkrito rečeno ni bilo vse tako dolgo nazaj ljudje so pisanje kode v 0 in 1 je. In smo zelo hitro prišli do ti višji nivo languages-- C ++ in Java in drugi. Torej, poskusimo to bolj enkrat samo flip tabel, tako da vse nas imajo priložnost za razmislek V namesto na enak način. Lahko dobimo še eno prostovoljca to Čas je, da pride do plošče in sestavi, ne recitirati? Ja, v redu. Ben, pridi gor. In, Ben, v tem primeru, ko vas obraz ploščo, ne poglej levo, ne videti v redu. Le to, kar je vaš kolegi tukaj povedati. In za vse ostale v soba, zdaj so programer. On je računalnik. In slika sem tukaj izbral vnaprej je tale tukaj. Oni samo-- razmišljajo na smešno šalo je vse. Zato bi nekdo rad prostovoljec prvo navodilo ali izjavo, da bi morali Ukaz Benova pero? In bomo to storili skupaj, morda eno navodilo od vsakega posameznika. Žal mi je? OBČINSTVO: Nariši krog. DAVID Malan: Nariši krog je prva stvar, ki sem slišal. OBČINSTVO: Up top. DAVID Malan: Up top. OK, mi vam lahko izbrišete, razveljaviti. In zdaj nekdo drug. Dan, bi morali biti udoben ponuja naslednjo navodila? OBČINSTVO: Seveda, pripravi center na dnu kroga, z small-- malo majhnem prostoru od tega, risanje ravne črte do tri četrtine poti navzdol krovu rahel kot na levi. DAVID Malan: Dobro. OBČINSTVO: Rahlo kota. DAVID Malan: Undo, Control-Z. V REDU. Andrew, želite ponuditi do naslednjega navodil? OBČINSTVO: Seveda. Na dnu te črte, še rahlo angle-- whoops-- morda približno tretjino dolžine [neslišno] rahlim kotom navzdol in kakor tretjine dolžine [neslišno]. Torej, ja, od te točke, potegnemo črto tretja dolžine prejšnji linija nadalje levo. DAVID Malan: To je v redu? Premica, ki je v redu? OK, Olivier, ki jih želite darovati naslednji? OBČINSTVO: [neslišno] iz Dno kroga, [neslišno]. Risanje na desni strani z [neslišno] centimetrov. [SMEH] DAVID Malan: Mislim, da boš morali spremeniti, da je centimetrov tukaj. OBČINSTVO: Stop. [SMEH] DAVID Malan: OK. [? Ara,?] Hočeš darovati naslednji? OBČINSTVO: Nariši [neslišno] Zgornji [neslišno] enaki. [Neslišno] krog, pripravi na [Neslišno] in sestaviti [neslišno]. DAVID Malan: OK, ni več razveljaviti. Naredimo eno ali dve več navodil. Chris, ki jih želite ponuditi enega? OBČINSTVO: Na dnu kroga, [neslišno] pripraviti enako postavo slopping navzdol na levi [neslišno]. DAVID Malan: OK. Andrew? Mi did-- Karim? OBČINSTVO: Od pravo linijo, Konec levega linije, dno, ste šli prav glede enake dolžine kot to črto ste, risanje na pravica [neslišno]. [Neslišno] stopinj, tako da [neslišno] stopinje na desni strani. DAVID Malan: V redu. Poglejmo premor. Ne obračajte še okoli. Oglejmo premor, in kaj je poskusite en drug poskus preden smo razkrili, da Ben kaj mu je bilo risanje. Lahko shuffle Ben do right-- ali dejansko, no, pa si daj drug svet, še bolje. Torej bi nekdo zdaj rad vzeti več pristopa da je Victoria se je prej, kjer govorimo na višji ravni abstrakcije in v samo stavka ali dva opisati z Benom kaj pripraviti brez dobili v plevelov, tako rekoč na to nižjo raven? Victoria. [SMEH] OBČINSTVO: Nariši sliko za hojo človeka. In noge in roke morajo biti na desni strani. DAVID Malan: OK, to je vse dobiš. V redu. Zakaj ne bi razkrila, da Ben, kaj je naredil. Torej aplavz. To je bil najtežji morda. Torej, čeprav govorimo V dokaj neumno pogoji o samo risanje slike, upajmo, da lahko resnično cenijo stopnjo izraznost, da bi bilo potrebno da bi povedal, računalnik, kaj storiti. In v resnici, je dejstvo, da je Ben je lahko to pripraviti tako hitro je neke vrste dokaz, da se z uporabo jezik, morda višja stopnja različica angleškega jezika, ki ga omogoča samo z besedami, ali slišal besede od Victoria, ki mu omogočajo ti abstractions-- samo pripravi številka hoja na right--, da je vrsta nekateri semantični pomen, ki mu to ni Skoraj kot očitno, ko ste pravkar pravijo, da vaš pero, pripravi v desno, pripravi na levi strani. In tako tudi to je zelo pogosta pri programiranju. To bi rekli, da je kot zelo nizko raven jezika, programiranje v 0 in 1 je, če bo. To pa bi bila višja stopnja programskem jeziku Java, ali nekaj takega. Malo poenostavljanje, ampak to je neke vrste, kot so čustvene občutek, da se počutite, ko z eno vrsto stvari ali drugo. Malo frustracije tu potreba za tako natančnost, temveč možnost, da se malo zguba z razlaga tukaj. Seveda, hrošče lahko nastanejo kot posledica. Če želite v home-- smo ne bo ta v class-- ampak če bi želeli bi to moštvo, Mislil sem, da bi se potopili v to. Torej, če želite, da igrajo to Igra v dvoje ali otroci ali podobno, si lahko uživajo tudi to. Torej, gremo naprej in pogled na eno zadnjih stvar tukaj za računskega mišljenja. In to nas pripelje do Janeza Oliver, ne za posnetek ste morda videli sinoči, vendar v nekoliko nedavni izdaji. Nekaj ​​mesecev nazaj, Volkswagen je zelo malo neprebojnimi čemu, če veš? Kaj so dobili v težavah za? Ja, tako emissions-- so skušali premagati emisij Testi, ki jih v bistvu imajo svoje avtomobili onesnažujejo okolje manj ko so se testira svoje avtomobile in onesnažujejo okolje bolj ko se niso bili testirani avtomobili. In kaj je bolj zanimivo v svetu, saj bi se lahko sklepalo iz razprav like--, kar je it-- CarPlay, programsko opremo Apple za avtomobile in dejstvo, da je veliko nas bolj imajo zaslone na dotik v naših avtomobilih, tam je zastrašujoče znesek programske opreme iz Ljudske avtomobili danes, ki je odkrito odpira povsem pločevinko črvi, ko gre za varnost in fizičnim tveganjem. Ampak danes, kaj je osredotočiti na samo tisto, kar je vpleten v pisanje programske opreme da bi lahko gamed sistema. Za opredelitev problem, za tiste, ki ne poznajo, pa si oglejte John Oliver. In za tiste, ki poznajo problem, da je pogled na to na zabaven objektiv prek John Oliver, kot tudi. Torej me udaril igra o tem, da mislim, tri minute uvod. Prekleto. [VIDEO PREDVAJANJE] -Cars-- DAVID Malan: Očitno je, da na YouTube, it's-- - --the najpametnejši znakov hitro in Furious filmov. Ta teden, Nemški avtomobilski Volkswagen znašla v sredini škandal potencialno kazniva razmerja. -Volkswagen Je Utrjevanje za več milijard v glob, morebitne kazenske ovadbe za svoje vodstvo, saj družba opravičuje za vrvja 11 milijonov avtomobilov pomagalo premagati preskuse emisij. -določeni Dizelski modeli so bili zasnovani s prefinjeno programsko opremo, ki Rabljeni informacije, vključno s položajem volana in vozila hitrost, za določitev avto je bil v postopku testiranja emisij. V skladu s to okoliščino, motor bi zmanjšali strupenih emisij. Vendar je bil avto opremljene za obvoznico da ko je vozi. Emisije povečal od 10 do 40 krat nad sprejemljivo raven EPA. -Wow, 10 do 40-krat večja od EPA dovoljuje. To je najslabša stvar Volkswagen je kdaj naredil, je nekaj, kar bi lahko rekli, če ne bi nikoli slišali druge svetovne vojne. Ampak mogoče najzanesljivejši znak, kako veliko težav Volkswagen je, je, da ljudje na zelo top so odstopil. Direktor odstopil v sredo po kodiranja storiti nadzorovanje škode, pravijo, da je bil neskončno žal, ki zvenel super, dokler se je izkazalo je bil le 10% žal vendar so opremljene usta umetno napihuje svoje sorriness. In medtem, Volkswagen ZDA Glavni imela opravičilo svojega. -Naj Je bilo jasno, o tem, naše podjetje je bilo nepošteno. In v mojih nemških besed, smo so popolnoma zajebali. Ja, ampak popolnoma zajebali se niso nemška dela. In nemški jezik Ima veliko lepih stavkov za opis situacije, tako kot je ta, kot [Nemčija], kar pomeni približno, žalost, ki prihaja od povezanih poslovnih laži, ali [Nemčija], kar pomeni kot sramotenja posameznikovo očeta, ki vključuje oblaki bencina. To je lep jezik. Samo pluje off jezika. In mimogrede, medtem ko je ta človek je opravičilo morda zvenel iskreno, je treba omeniti, da je bil govor na uradni začetek stranka za leto 2016 Volkswagen Passat, kar pomeni, da v kratkem Po rekel mi je, da je to rekel. Hvala lepa za prihod. Uživajte večer. Up Naslednja je Lenny Kravitz. [GLASBA] -OK, OK, se konča vaš opravičilo z največ Naslednja Lenny Kravitz ne scream trezen kesanja. To kriči, smo prosili Bon Jovi, in je rekel ne. Znamka Volkswagen je bila hudo poškodovana. In odkrito povedano, njihov novi oglas akcija ni ravno pomagal. - [Nemčija], smo na Volkswagen bi rad opravičiti za vas vara z naša vozila. [END PREDVAJANJE] DAVID Malan: Torej, to je bila krožišče način of-- sorry-- to je krožišče način uvedbo temeljni problem v programski opremi, ki je, da vas potrebujejo za odkrivanje določene pogoje. In tako je vprašanje pri roki tukaj je, kako se avto potencialno kot se izvaja v programski opremi ti programerji, ugotovila, da je to dejansko testirali? Tako, da je super jasno, kaj so počeli je bil, v okoljih, kjer programerji pogruntal avto je pa testirajo, so nekako na avto oddaja manj emisij, manj emisije, zato manj strupeni hlapi in podobno. Toda, ko je ponavadi vožnjo po cesti, da bi samo oddajajo toliko onesnaževanja, kot je želela. Torej, kako bi lahko napisati psevdokoda za ta algoritem? Kako bi lahko napisali psevdokoda za programsko opremo, ki teče v avtu? Mislim, na kratko, zavre navzdol, da kaj takega. če se preskuša, oddajajo manj. drug oddaja več. Ampak to je malo previsoka raven, kajne? Poskusimo se potopite v tem, kaj je to abstrakcija, da so preizkušene načine. Z drugimi besedami, tudi če veš nič o avtomobilih, kakšne vrste vprašanj Morda vas prosim, da se ugotovi, če Bili ste testirali, če ste avto? Katere značilnosti lahko predstavi, če je avto, ki se preskuša? OBČINSTVO: testiranje opreme. DAVID Malan: testiranje opreme. Torej, če testna oprema v bližini, nato pa oddajajo manj. Tako sem mogel predstavljati izvajanju da z neke vrste fotoaparatov ali odkrivanje, kaj je okoli vas. In mi predlagala, da Samo čuti preveč zapletena dejansko imajo dodatne strojno opremo samo za ta namen. OBČINSTVO: Če ste v park, če je vaša napa je odprt. DAVID Malan: V parku ali hood odprta, tako da je dobro. OBČINSTVO: In avto teče. DAVID Malan: Torej, da je malo več concrete-- in avto teče. Torej bi bilo to konjunkcija malo drugačni pogoji, če hočete. Torej, če je avto v parku, in celo čeprav je to zelo mehansko stvar običajno, sem lahko zamisliti pisanje programske opreme, še posebej zato, ker je Pogosto lahke tam te dni, Sem mogel predstavljati, da bi bilo programska oprema, ki lahko poizvedbo transformator ali kaj ne, si v parku, so ste v pogonu, si v obratnem vrstnem redu. In lahko dobim nazaj odgovorili, da je ali da ali ne na tiste vrste vprašanj. In tako sem lahko verjetno tudi odgovorili vprašanje, kot je pokrov odprt. Mogoče, da je neke vrste senzorja da niti mi daje nazaj 1 ali 0, pravilna ali napačna, pokrov je odprt. In potem avto deluje, bi lahko zaznal da nekako po kakšnem mehanizmu? Kot, avto teče, I lahko zazna, da je na, sem lahko zazna nekako da se avto premika? Občinstvo: RPM. DAVID Malan: Ja, tako da je vedno, da je igla, ki vam pove, koliko obratov na minute kolesa doživljajo. In tako sem lahko poglej to. In če to ni 0, da verjetno pomeni, da je avto premika. Vendar moramo biti malo tam previdni, because-- pa poenostaviti this-- če smo pravkar rekel, če avto teče, ne želimo samo oddajajo manj, želimo, da če avto teče in to je, ki se preskuša. Torej, obstaja nekaj drugih sestavine, da ljudje so predpostavili, programsko opremo počne, zaradi odsotnega dejansko izvorno kodo, lahko le nekako sklepati iz fizikalne učinke avtomobila glede tega, kaj Morda se dogaja pod pokrov v programski opremi. Torej, če avto teče in morda, recimo, zadnja kolesa ne premika, to lahko kaže neke vrste test? Kaj sem namiguje na tu? Ja, mogoče, da je na eno od teh valjev stvari, kjer kot kolesa se obračajo spredaj ali zadaj, glede na to, da je sprednje kolo ali pogon na zadnja kolesa, tako da polovica koles se gibljejo, vendar druga dva nista, ki je čudno stanje v resničnem svetu. Če ste vožnjo na v cestnem prometu, da ne bi smelo zgoditi. Ampak, če ste v skladišču na neke vrste sistem valja, ki bi lahko res zgodi. Mislim, da ljudje predlagal tudi, da je mogoče, če avto teče in krmiljenje kolo brez premika, da Tudi je lahko signal ker je to smiselno kot takoj izvajati na cesti. Toda tudi takrat, človek je verjetno to se gibljejo malo ali gotovo v nekaj sekundah. Ali teku minute, verjetnost, da je ne dogaja, da se fiksira v popolnoma enak položaj. Torej z drugimi besedami, lahko substraction, Ste se preskuša, in razčleniti to funkcionalnost V te sestavne sestavine. In to je res tisto, kar Volkswagen inženirji nekako naredil. Napisali so programsko opremo zavestno odkriti, če je vozilo, ki se preskuša, zato oddajajo manj, ostalo oddajajo na običajen način. In problem tudi tukaj, je, da je programska oprema ni nekaj, kar bi lahko res videli, če imate tako imenovano izvorno kodo. Torej je dva različna tipa code-- vsaj dve različni vrsti kode na svetu. Obstaja nekaj, kar ti vir Koda, ki ni v nasprotju s kakšnimi smo bili pisanjem izvorne kode. To je izvorna koda napisana v jezik se imenuje psevdokoda, ki je le nekaj angleško-podobnega. Ni formalna definicija tega. Vendar C in Java, C ++ tistih so vse uradne jezike, da ko pišete v njih, kaj imate je besedilna datoteka, ki vsebuje izvorno kodo. Obstaja pa tudi nekaj v svet imenuje stroj kodo. In strojni kodi, žal, je samo 0 in 1 je. Torej strojni kodi, je kaj stroji razumeli, seveda. Izvorna koda je tisto, kar ljudje razumejo. In na splošno, ne pa tudi vedno obstaja program da programer uporablja, da je vir kodo in jo pretvori v strojno kodo. In, da je program na splošno imenujemo prevajalnik. Torej vaš vnos je izvorna koda, vaša proizvodnja je strojni kodi, in prevajalnik je kos programska oprema, ki pa ta proces. Torej, to dejansko karte lepo, da naši vhodi, algoritmi, izhodi. Ampak to je zelo specifična inkarnacija od tega, kar pomeni, da, tudi če ste lastnik enega od Volkswagen avtomobile, ki je kriv za to, to ni všeč, si lahko samo odprete hood ali uporabnikovo priročnik odpreti ali iskati Na izvorni kodi, saj s časom doseže svoj avto v svojem dvorišču, to je že pretvori v 0 in 1 je. In to je zelo težko, ne pa nemogoče, vendar zelo težko zbral veliko kaj iz samo da si na podlaga 0 in 1-jev. Tako da lahko ugotovimo, v končni fazi, če boste razumeli, kako stroj operates-- Intel inside-- če razumete Intel arhitektura, ampak to je zelo zamudno. In tudi tam, boste morda ne bo mogel videti vse da se lahko koda dejansko narediti. Vsa vprašanja o tem, ali je to vrsta postopka bolj splošno? In dejansko smo lahko tie to razpravo na včerajšnji razpravi Apple. Tudi to je razlog, zakaj FBI ne more samo pojdi in poglej v osumljenca telefon in najti vrstic kode, za primer, ki omogočajo geslo ali omogočajo, da 80 milisekund zamudo. Ker do takrat, ko je na kolegi iPhone, to je že pretvori v 0 in 1 je. No, premor tukaj za naše poglej računskega mišljenja. Zakaj ne vzamemo 15 minut odmora. In ko se vrnemo, bomo si oglejte programiranje sama po sebi in začeti na zemljevid nekatere konceptov teh visoki ravni do dejanskega, če igriv, programski jezik.