DAVID Malan: Dobro došli natrag, svakoga. Tako je jučer, vi ćete se sjetiti da je usredotočili smo se na tim temama ovdje. Tako smo imali četiri krovni topics-- privatnost, sigurnost i društvo; Internetske tehnologije; računalni oblak; i na kraju, web development. Da li netko imati propusnost ili vrijeme gledati malo Ivan Oliver sinoć? To je zapravo prilično zabavno, ako ne i malo zastrašujuće. Bilo kakva pitanja o bilo čemu smo učinili jučer? Bilo pojašnjenja? Bilo kakva pitanja koje želite napraviti sigurni smo dotaknuti danas u nekom obliku? Dakle, čistim škriljevca. Zato što je na dnevnom redu za danas? Pa sam mislio da ćemo se početi već danas s pogledom na ono što je općenito poznat i kao računalna thinking-- na rizik od oversimplifying, misleći kao i računalo, možda razmišljati kao inženjer, i pokušava početi organizirati svoje misli ili vam dati bolji osjećaj što je uključen u zapravo naređuje računalo učiniti nešto putem programiranja. A mi ćemo ga držati na prilično na visokoj razini, prilično engleski, ali pokušajte koristiti od upoznat primjeri formalizirati način ti bi ići oko rješavanja problema. A mi ćemo ponovno neki CS teme, kao apstrakcije, koji je došao do nekoliko puta jučer, algoritmi, a zatim prikaz. I to je mjesto gdje ćemo početi danas u samo jednom trenutku. Onda ćemo pogledati programiranje. Mi ćemo pogledati neke temeljni konstrukti s kojom bi mogli biti upoznati a možda čak i pronaći vrlo intuitivno. Mi ćemo gledati, u stvari, na programiranje uzoraka okruženje koje je vrlo pristupačna, jako razigran, a zapravo ciljano za mlađe od 12 i više godina. Mi ćemo provesti nekoliko minuta tamo a onda se stvari na nižu razinu i zapravo govoriti o nekim od algoritmi i strukture podataka, da tako kažemo, da je programeri obično koriste za rješavanje problema daleko više učinkovitije nego što možda biti u mogućnosti to učiniti bez njih zajedno. Onda nakon ručka ćemo pogledati na tehnološke dimnjaka, što je upravo fancy način govoreći: zbirke tehnologija da bi mogli koristiti za riješiti neki problem. A mi ćemo govoriti o abecede juha od jezika koji postoje today-- Java i Python i C ++ i PHP i Ruby i sve vrste drugih stvari. Mi ćemo se pogled na kratko na dizajn obrazaca. Programeri, tijekom vremena, usvojili metodologije koji imaju tendenciju da im pomogne riješiti probleme lakše. Kada početi vidjeti sebe pisanje ista vrsta koda i opet, ljudi formalizirati ta ponavljanja i pripisuju nazivi za njih a zatim ih koristiti i promovirati ih, u konačnici. A mi ćemo govoriti malo o mobilnim strategijama, kao što to znači da zapravo napraviti mobilne aplikacije ili mobilne web stranice. Da li to učiniti za Android? Da li to učiniti za iOS? Da li to učiniti za oba od njih? A što su ustupke? I onda na kraju, mi ćemo se web programiranje izgled, koji je je zajednički naziv zapravo opisuje u bilo koje vrijeme pišete softver koji je značilo da se izvoditi na webu, da li na telefone ili stolna ili prijenosna računala. Mi ćemo uzeti kratak pogled na baze podataka i dizajn u njemu, ako je samo zato što je gotovo bilo Zanimljivo web-based aplikacija ovih dana ima neku vrstu baze podataka. Inače, to bi samo biti statični sadržaj. I baza podataka omogućuje da napravite Promjene tijekom vremena, bilo da se sami ili od korisnika. A mi ćemo razmisliti o tome kako ste će ići o projektiranju da baza podataka i vrsta žargona koji bi mogli doći u jedan inženjer-a Rasprava na bijeloj ploči kada je zapravo provedbi aplikacija za prvi put. Kratko ćemo govoriti o API-ovi, korisne usluge koje možete koristiti da stoje na ramena drugih, bilo tvrtki ili pojedinci, i riješiti svoje vlastiti problemi brže. A onda ćemo poprskati možda malo s JavaScriptom, programski jezik koji se koristi kako u preglednicima ovih dana, ali i u poslužiteljima. A možda, mi ćemo ponovo, vrijeme dopusti, neki od praktičnih web stuff mi jučer i integrirati dva zajedno prije nego što smo odgoditi. Tako je s that-- što je ahead-- je Postoji li nešto nedostaje da vas Željeli bismo bili sigurni da ćemo umetnuti i dotaknuti u nekom trenutku. Ako je opruga na pamet, dovesti ga pred dugo. No, zašto ne bismo početi s pogledajte računalnom razmišljanja. I neka mi predlažemo da računalna razmišljanje je, opet, vrsta opisa na visokoj razini što računalni znanstvenik mogao učiniti. I doista, počnimo s tri sastojaka koji možda ići u računalnom razmišljanja. Ovo je samo jedan od načina da opisuje. Mi smo svakako mogli definirati to na bilo koji broj načina. Ali neka mi predloži, radi i danas, koji svjetskih problema, sve svjetske probleme, kad prilazi računalni znanstvenik mogao može promatrati kao što ćemo poziva ulaza, koji se treba da se uvodi u ono što ćemo nazvati algoritmi, koji je tada Prinos izlaza. Drugim riječima, cijeli Svijet rješavanja problema Tvrdim može destilirati u ove tri namirnice. Što mislim pod ulaza? Ulazi je upravo ono što si predao kako bi se riješio. Na primjer, ovdje je stari problem škola. Ako imam telefonski imenik ovdje i Želim pogledati nešto u nju, ovo je moj ulaz. Imam 1000 ili tako stranice u telefonski imenik. Ovo je ulaz za moj problem. I želim naći nešto kao što su Mike Smith, pa prijatelju čije ime i broj nadamo se u ovom adresaru. To je prije dana stanici telefon, tako da mogu ne samo potražiti. Dakle, moram to učiniti stara škola i zapravo za pretraživanje te ulazi za neki odgovor. I to je odgovor samo ide da se zove izlaz. Dakle, ulaz je telefonski imenik. Algoritam je god set koraci mogu koristiti kako bi pronašli Mike Smith. A izlaz je, nadamo se, Mike Smith je broj telefona. A to onda će biti samo Predstavnik većini bilo problema da s vama su uručio ulazi i želite proizvode izlaza. Dakle, prije nego što smatramo proces na koji možemo riješiti taj problem, pronalaženje Mike Smith i nešto kao to, Razmotrimo prvo i su last-- ulaza i izlaza. Fizički, naravno, ulaz ovdje je cijela hrpa papira slijepljena u obliku telefonski imenik. No, računala, od course-- prijenosna računala i stolna računala, pa čak i telefoni to days-- to su elektronički uređaji. I na kraju dana, što je jedini ulaz na računalo? Pa, to je nešto poput ovo napajanje ovdje. Ja ga uključite u zid, a JA dobiti protok elektrona, koja mi omogućuje da pokretanje stroja. Ili možda oni elektroni stvorena na način moje baterije. No, na kraju dana, to je jedina stvar koja ide u moj laptop. A toliko zanimljivo stvar je u konačnici izlazi, da li putem pisača ili zaslon ili audially ili slično. Dakle, ako svi imamo kao naš Temeljni ulaz na računalo je struja, pa samo elektroni ulaze i ili van, pa kako možemo koristiti taj ulaz zapravo predstavlja podatke? Drugim riječima, kako ćemo dobiti od jednostavnog toka struje da predstavlja stvarni brojevi ili stvarni slova ili stvarne slike na ekranu ili stvarne filmove ili e-mail ili bilo koji broj ovih Viši koncepti razini, ako hoćete, da, ako Kraj je dana nekako moraju biti pohranjeni u ovom elektronički mehanički uređaj koristeći samo one jednostavne ingredients-- elektroni ulaze i izlaze? Dakle, čini se da je, u najjednostavnijem obliku, jedina država Imam u mom svijetu, pa da speak-- uvjete u moj svijet-je ili Imam elektroni teku, struja teče, ili ja not-- tako dalje, off. I neka je formalizirati i isključivanje, kao računalni znanstvenik može, sa samo 1 i 0. Recimo samo opisati neke proizvoljne ali u skladu broj na njega. 1 znači dalje, 0 znači off. Ili možda i smatraju to pravi način na i lažni sredstva. Također se može napraviti crno bijela ili crvena i plava. Vi samo trebate dva opise. I računala Znanstvenici bi uglavnom samo koristiti 0 i 1. Dakle, ako je to slučaj, moja jedina abecede se sastoji od 0-a i 1-a, kako je bih mogao dobiti da se čak i broj 2 u računalo, a kamoli broj 3 ili slovo abecede ili slika ili film? Kako vrsta dizanje sami od ovog osnovnog principa od 0-a i 1-a i zapravo predstavlja nešto zanimljivije? Pa, neka je stavi na to pitanje na čekanju samo na trenutak i uzeti u obzir nešto nadam se upoznat, čak i ako niste stvarno mislio o na bilo pojedinosti za 10, 20, 30, 40, 50 više godina. To je što? Kako bi se izgovaraju to? Nije trik pitanje. Brojni, ali što je to? 1, 2, 3 ili 123. I ja sam volio kako si rekao 1, 2, 3, jer to je jedan od načina da ga gledaju. 1, 2, 3, to je slijed tri simbola. To je slika koju sada imaju riječi za. A ako na neki način ih sve pročitati zajedno, tipičan ljudski na engleskom jeziku bih 123. I to je neka vrsta viši pojam razini, osjeća kao razumno velikom broju. No, kako ćemo stići tamo? Pa, to bi moglo biti neko vrijeme jer ste sanjali o tome, kao što je ovaj, ali natrag u moj dan, ja vrsta saznaje što kolumne +1, a 10 je stupac, a od 100 stup. Dakle, kao Lakisa kaže, to je 1, 2, 3, ali je isto tako 123. No, kako smo dobili od bivši potonje? Pa, što bi obično učiniti u Kolona od 100-a, imam 1. Dakle, to je kao da kažeš 100 puta 1. A onda se u kolonu 10 a, Imam 2. Dakle, to je kao da kažeš 10 puta 2. U stupcu 1-a, imam 3. Dakle, to je kao da kažete 1 puta 3. A ako dodam te stvari zajedno, to, naravno, 100 plus 10 plus tri. I oh, to je razlog zašto sam se toga viša razina pojam od 123. To je samo osnovna matematika, pri čemu se ovi Simboli imaju utege na njih, ako vas će, rezervirano mjesto ili vrijednosti stupca. I kad sam umnožiti sve van, ja dobiti taj broj. Dakle, koliko od vas zna govoriti binary-- 0 a i 1's-- kao i računalo? OK, savršen, nitko, ili nitko od vas ne misliš. Ali ja bih ti tvrditi zapravo to znaju već. Mi samo trebate vrsta ugađanje naš mentalni model malo. No, proces je isti. Pusti me da odem ovaj tamo i umjesto povući ovaj dolje za trenutak. U svijetu računala, imamo samo 0-a i 1-a. I tako je stvar koja je će se promijeniti je što? Pa, u mom ljudskom svijetu, decimalni sustav, prosinac značenje 10, Imam koliko god brojeva na mom raspolaganju? 10, zar ne? 0 do 9, naravno. I to je razlog zašto imamo 10 je mjesto i 100-mjesto. Gdje se to dolazi? Pa, ovo je 10 na snazi ​​od 0. To je 10 na snagu od 1, 10 na moć 2, i tako dalje. Vi samo držati množenjem stupaca 10, počinje sa samo jednom u krajnju desnu se ovdje. Tako je u svijetu računala, ako samo imaju binary-- dvo značenje 2-- ili 0-a i 1-a, samo mi stvarno treba mijenjati baza te matematike. Dakle, drugim riječima, sada ćemo samo ima kolumnu u 1 i the-- gdje je to going-- kolumne 2-a, U 4 stup, a možda i šire. Zašto je to? Pa, ovo je dvoje od 0-og moći. Ovo je 2, 1. To je 2 do 2, i tako dalje. Dakle, dok ovdje imamo 1, 10 a, 100 a, 1.000 a, 10.000 a, 100.000-a, jedan milijuni, i tako dalje, ovdje imamo 1, 2, 4, 8, 16, 32, 64. Vi samo držati množenjem s 2, umjesto da zadrži pomnoži sa 10. Tako sada, ako je cilj na ruka za zastupanje brojevi koriste samo 0-a i 1-a, neka je uzeti u obzir kako smo se tamo. To je, naravno, je uzorak 0 0 0, ali ono broj konceptualno to predstavlja? Pa, 4 puta 0 plus 2 puta 0 plus 1 puta 0, dodajmo one zajedno. 4 puta 0 je, naravno, 0, plus 2 Vremenska 0 je, naravno, 0 plus 1 puta 0 je, naravno, 0. Dakle, ah, to predstavlja broj mi ljudi znaju kao 0. Pa, sad, neka je vrlo Brzo premotavanje prema naprijed. Ako sam umjesto toga ne predstavlja 0 0 0, ali neka je to 1 0 1, koja bi mogla biti kako Lakisa, ranije, bi samo 1 0 1 izgovoriti. Ali sada, kako ćemo ga odvesti na viši razini broj mi ljudi mogli znati? Pa što je ovo broj? To je 5, broj znamo kao 5. Pa, zašto je to tako? Pa, možemo zapravo vrsta hodati kroz njega metodički 4 puta 1, 2 puta 0, 1 puta 1. Dodaj oni zajedno, tako to je 4 plus 0 plus jedan. I to je, doista, 5. Dakle, to je sve malo zamorno sada i opet radi aritmetiku. No, proces je isti. Jedina stvar koja je promijenilo u našem svijetu je da naši stupci 1, 2, 4, 8, 16, i tako dalje, umjesto 1, 10, 100, 1000. A to je samo zato što je naša abeceda ima smanjio od 0 do 9 i samo 0-1. Dakle, kao malo kviz ovdje, kako bi što predstavlja broj 7 u binarnom? 0? Pa, 0, što znači 0 0 0? Reci to opet, Karina. Savršen. Zašto je to? To je učinkovito 4 plus 2 plus 1. Tako dobro. Kako ćemo predstavljati malo another-- kako o broju 2? Blizu, ali unatrag. Pa što je ovo? Je 4 plus 1, tako da je 5 ponovo. Tako what's-- Žao mi je, Karina? 0 1 0. 0 1 0 će biti 2, jer opet, čak i ako je to vrsta ne iskočiti na vas, samo učiniti math. 4 puta 0, 0, 2 puta 1 2, 1 puta 0 je 0. Dakle, ovo je broj znamo kao 2. Kako o broju 8? Hm? Dobro. Tako smo nekako treba još jedan rezervirano mjesto. Trebamo 1 0 0 0. I to je istina naše vrste stare škole decimalnog sustava. Kako predstavljaju broj 1000? Pa, čini se da vrsta u teškoj poziciji, ako vas pitati za zastupanje broj 1000, jer čak i ako se daju kao 9 od tih, 9 od njih, 0 od tih, što je najveći broj koji ste ima, nisi sasvim doći do 1000. Dakle, ako vas 1.000, trebate samo još jedna položaju, tako da možete napraviti 1 0 0 0, ergo broj 1000. Tako sada, neka je preslikati ovu vrstu konceptualni raspravu natrag na hardver, gdje se opet, ulaz je bio samo ovaj mali kabel za napajanje, struja dolaze i teče. I tako da bi se preslikati odavde tamo, dobro, što nam je zaista potrebno? Pa, možete misliti da su unutar jednog računalo, cijela hrpa žarulja, Ako hoćeš. Oni su stvarno Nazivaju tranzistora. I tranzistori su samo prebacuje koja može biti uključena ili isključena. Tako možete misliti na tranzistor koji je na dopušta struja teče i tranzistor koji je isključen kao zaustavljanje struja teče. I umjesto da nad svjetlima ovdje, zašto mi ne napraviti ovu vrstu nove školske stilu. Dakle, to bi moglo biti 1, svjetiljku što dalje, samo jedva ipak. A to može biti 0, a sada je isključen. Dakle, pomoću ovog fizičkog uređaja, sam Sada možete predstavlja binarni sustav. Trebam dvije države. Nije važno što boja je ili što je to. Sve što je bitno je da imam jedna država, a druga državna off. Dakle, koristeći svoj telefon ovdje, kako mogu predstavljaju broj znamo kako je 0? Ili stavi ekvivalentno, što Broj Am I predstavlja sada? 0, jer je uređaj isključen. I ako ja to učiniti? A sada, kako mogu predstavljaju broj 2? Mogu li posuditi vaš telefon Ovdje, kao što smo jučer? Pa da vidimo, pa ako želim da predstavljaju broj 2, to je broj 2? Ne. Koji broj sam ja slučajno predstavlja ovdje? To je zapravo broj 3. Zato što neki ne želim isključiti? Crni telefon or-- dobro, ako they're-- crni telefon ili bijeli telefon? Bijeli telefon. Dakle, ako sam to isključio i mi linija ga ovdje, imamo jedan U 2. mjestu i 0 u za 1 mjesto. I tako sam sad predstavlja broj 2. A to je, naravno, bio bi broj 3, jer sad oba ta svjetla su dalje. A ja ću stati ovdje, ali to ima smisla ako želim da predstavljaju broj 4 ili 8 ili noviji, Ja ću trebati više telefona. No, to je sve što se događa. Dakle, ako ste ikad čuli da unutar A- zahvaliti you-- računala milijune tranzistora, to je samo milijuni sitnih malih prekidača. A oni ne svjetlost lukovice koje uključivanje i isključivanje, ali oni ili ne dopuštaju struju teći negdje ili zaustavi. I tako ima svoje dvije states-- ili isključiti, uključiti ili isključiti. Tako smo se čini sada da imaju tu sposobnost da predstavljaju ovaj koncept koji željeli bismo u stvarnom hardver. No, sve što imamo je mogućnost da predstavljaju brojeve Čini se. Pa kako ćemo ići o predstavlja slova abecede, koje osjeća kao sljedeći vrste osobina koju bi htio dodati na modernom računalu nakon što su brojevi? I doista, ako mislite o tome IT, povijesno, računala uvedene su stvarno služiti kao Kada izračunate numerički. Ali, naravno, to dana, oni učiniti mnogo više. Čak i kad su dignuti, ti obično vide jednu ili više riječi. Pa kako se predstavljaju riječi, ako je sve što imate je, opet, električne energije na kraju od dan, ili ekvivalentno 0 a i 1-a? Da. Da, mislim, mi vrsta učinili to jučer u nekom obliku, gdje je u nekom trenutku, Mislim da samovoljno rekao je da, ako želimo da predstavljaju slovo A, upravo smo mogli nazvati u 1. Bilo je to u kontekstu kriptografije, gdje smo samo trebao nekakav kod, neka vrsta mapiranje. Dakle, možda će biti predstavljen kao 1 i B bit će prikazan kao 2, i Z će biti zastupljena kao 26, na primjer. A onda je jedini Upozoravamo vas da ako sam ide za kodiranje slova u moje e-mailove ili u mojim SMS poruka brojeva, sve što se složiti da koristite Isti skup konvencija. I doista, svijet je učinio upravo to. Tu je i sustav u svijetu pod nazivom ASCII American Standard Kod za razmjene informacija, koji je jednostavno rješenje prije nekoliko godina Prije da su ljudi napravili da odlučili da će biti jednak, a ne 1, 2 i 26, tako da je forth-- Malo different-- ali 65, 66, 67. A ja ću podići grafikon u samo jednom trenutku. Ali to je proizvoljna. No, to nije važno da je proizvoljna. Svijet mora samo biti dosljedan. Sada, u novije vrijeme, ima nešto raskošnije naziva Unicode, jer svjetske vrste od shvatio, nakon izmišljanje računala, da postoji više nego dobro 256 simboli u svijetu da smo možda žele zastupati, pogotovo kada se uvedu Azijski jezici i druge symbologies da je potrebno više ekspresivnost od vas može stati u najranijoj verziji ovaj kod, koji je nazvan ASCII. Dakle, Unicode zapravo omogućuje korištenje više 0 a i dva. Konkretno, drži Čuvši Riječ bajtova u društvu, pa čak i samo jučer. I bajt je ono opet? Što je bajt? To je samo 8 bita. Dakle, što to zapravo znači? Pa, to znači, ranije, kad smo bili govori o binarne i sam bio koristeći samovoljno tri bita kad smo bili govori o binary-- na 1 mjesto, U 2 je mjesto, a 4 je mjesto-- dobro, bajt samo znači da ste se govori ne u jedinicama tri, ali četiri, pet, šest, sedam i osam godina, što nam daje 8 mjesto, 16-a, 32-a, 64-a, a 128 je. Drugim riječima, što je nešto nije sve da je korisno jedinica mjere, jer to je samo kao jedan maleni malo podatak, ili isključiti. Dakle, prije nekoliko godina, svijet jednostavno odlučio to je malo više prikladan za razgovor u Uvjeti bajtova, osam stvari u isto vrijeme. I tako tako je rođena pojam bajt. I tako imamo osam bitova ovdje. I ispostavilo se, također, za slično Razlozi, svijet je odlučio godina Prije koji se predstavljaju ASCII pismo, ideš koristiti jedinice od 8 bitova. Dakle, čak i ako ne potrebno da se mnogi, ti si Uvijek ćete koristiti 8 bita predstavljaju slovo abecede. A to je zgodan, jer ako onda primiti poruku koja ima 0 0 0 1 1 1 1 0 nakon čega slijedi još jedan 1 1 1 0 1 0 0 1, tako da ako ste primili 16 bita, svijet jednostavno ne može pretpostaviti da je prvi 8 jedno slovo a drugi 8 su još jedno pismo. Nije bitno koliko ih ima. To je samo važno da svi smo dosljedni kada smo tumačenje tih bitova. A to je bio samo slučajan. To znači nešto, ali nisam zaista misle o tome što to znači. Dakle, to je mala bijela laž. Izvorno, ASCII zapravo koristi samo 7 bitova. I osmi malo je naziva prošireni ASCII. Ali stvar je, na kraju, isto. U svijetu općenito standardizirana na 8 bita. Tako će to činiti se biti malo ograničavanja, jer ja mogu samo predstavlja kapitalu, kapital B preko glavnog Z. Ali zaista ne, ako idem to-- postoji hrpa resursa mreži, na primjer, asciitable.com, ovaj će biti malo neodoljiv na prvom mjestu. Ali ja ću istaknuti ono što je važno ovdje. To se događa samo na be-- i ja ću walk-- da vidimo, ako idem ovamo. Ovdje je, u decimale stupac, broj 65. A na stupcu slovo desnog lik, Chr, je slovo A. A možete ignorirati, za sada, sve u sredini. To je heksadecimalni, oktalni i HTML koda. Na ovu stranicu samo pokušava baciti puno informacija na vas odjednom. Ali, sve mi je stalo je decimalni kolona i kolona karakter. Dakle, po toj logici, što je broj koji je svijet odlučila predstavlja mala slova a? Da, 97. I samo da se zbuniti potencijalno nešto, što broj je svijet odlučio bi predstavljalo broj 1? Upravo zato we-- 49, čini se ovdje, dolje u dnu lijevo. Sada, što mislim pod tim? Tako ispada da je u računalnim sustavima, općenito postoji temeljna razlika između broja i znaka. Niz je ono čemu saznaje odrastanja kada bili smo super mladi u osnovnoj školi. To je ono što vam je računati s. Ali lik je samo oblik, glif, da tako kažemo, na ekranu. Sada mi ljudi vidjeti kakve nešto što izgleda ovako. A mi reći, oh, to je broj dva. Ali ne, to je samo simbol koji izgleda kao što znamo kao broj 2. I tako je to temeljna razlika između stvarnih brojeva i znakova. To je broj. Ali općenito, u kontekst računalo, ako umjesto toga vidjeti nešto kao što je ovaj quoted-- a ne uvijek moram vidjeti što citirani, ali zbog discussion-- ako vidite citati oko broja, ovo je sada lik. Dakle, ovaj broj 2 ispod napa unutar računala će biti zastupljena s uzorkom bitova koji predstavljaju broj 50 prema tablici na internetu. Međutim, ako na računalu vidi samo ovo, ovo će biti zastupljena s uzorak bita 0 0 0 0 0 0 1 0. Budući da, ovaj lik bi zapravo biti zastupljena as-- i sada, Dobio sam razmišljati malo harder-- tako da je ovo lik će biti zastupljena s 0 0 1-- što mi treba ovdje? 0 0 1 1 0 0 1 0. Kako sam to učiniti? Pa to je broj 50, ako vas umnožiti ga pomoću ove stupce, ovo je broj 2, i tako to je razlog zašto postoji ova dihotomija. A to je samo jedan teaser za sada značajke koji postoje u programskim jezicima da ćemo se dotaknuti kratko kasnije danas. U programskim jezicima, imate općenito, ali ne uvijek, stvari pozvati različite vrste podataka. Drugim riječima, programmer-- kada on ili ona piše, programer dobiva odlučiti na koji format za pohranu svoje podatke. Možete pohranu podataka kao grubi podaci, kao što je broj 2. Ili možete pohraniti ih kao žice, ili nizove znakova da bi se općenito izraziti citati u svom programskom jeziku. Možete imati stvari called-- Ja ću uprostiti i zvati ih real numbers-- tako brojeva koji nisu cijeli brojevi poput broja 2, ali brojevi sviđa 4,56. Dakle, realni brojevi mogu također imaju decimalna mjesta, tako da je drugačija temeljna podatak u računalu. I onda čak možete imati druge vrste podataka i dalje. Dakle, to je samo teaser stvarno od najjednostavniji dizajnerske odluke da programer možda napraviti ispod haube. Dakle, bilo kakva pitanja samo još? Tako ćemo pokušati učiniti ovo malo realnije. Ovaj hardvera nije toliko u upotrebi više. No, gotovo svi u ovoj sobi vjerojatno odrastao sa i dalje koristi tvrdih diskova na neki način. Iako je većina naša prijenosna računala više ne imaju uređaje koji rade ovako, umjesto laptop danas općenito imaju SSD diskovi bez pokretnih dijelova. I to tendira biti skuplji, nažalost, ali malo brže i A- i, često, puno brže, što je jedan od razloga. A isto tako to ne stvara manje topline. To može biti i manji, tako da je općenito neto pozitivan. No, to nam omogućuje da mapirati malo konkretnije što govorimo o pri 0.-a i Razina 1 je sada na fizički uređaj. To je jedna stvar mi je govoriti oko 0-a i 1-a u pogledu mog telefona ili apstraktno u smislu od prebacuje se na i off. Ali što je s tvrdih diskova? U svojim prijenosnim računalima, ako imate stariji jedan ili na stolnom računalu, ili svakako u poslužiteljima Danas, u kojoj morate tvrdih diskova koji imaju terabajt prostora, 4 terabajta prostora, i što to znači? Tvrdi disk s 1 terabajt prostora sredstvima ima 1 trilijuna bajtova unutar nje nekako, ili ekvivalentno 8 bilijuna bitova unutra. 1 terabajt će biti 8 terabits ili 1 bilijuna bitova, koji znači ako imate teško pogon, morate nekako ili druge a trilijuna 0 a i 1 je unutar nje. A ako ćemo samo pogledati na proizvoljna slika hard disk zastupnik, to je ono što tvrdi Pogon može obično izgledaju iznutra. To je, također, vrsta kao stari gramofon igrač ali uglavnom s više zapisa unutra, tako da speak-- višestruki plate, kako se zovu, metalne kružne diskove, i zatim malo glava za čitanje, baš kao i stari gramofon. I to glava za čitanje seli natrag i naprijed i nekako čita bita. A što je na ovim plate, čak iako mi ljudi ne mogu vidjeti, bilo u stvarnosti ili na ovoj slici, ima sitne male magnetske čestice. A čak i ako ste dugo zaboravio kako struja radi, magnetske čestice koji je optužen općenito ima sjeverni kraj i jug end-- pa na sjever i jug. I tako je svijet samo odlučio je prije nekog vremena da, ako je magnetska protokol bitno usklađen ovako, sjever-jug, nazovimo to je 1. Ako je umjesto jug-sjever, neka je samo poziv da se 0. I tako, ako imate na odlagalište trilijuna maleni malo magnetska particles-- i nadamo se, hardver genijalnost u Kako bi se okrenuti onima koji su oko kao što vidite fit-- ako želite predstavljaju hrpu 0-ih, te samo je potrebno 8 magnetske čestice sva poredaju ovako. A ako želite da predstavlja Osam jedan je, samo potrebno 8 magnetske čestice poravnata natrag na leđa na leđa kao što je ovaj. Što mi znači od strane magnetske čestice? Iskreno, sve ove godine kasnije, Ono što i dalje pada na pamet je taj tip, ako vas Odrastao je s ovom stvari. To je little-- za oni unfamiliar-- mala igračka iz djetinjstva koje ima tu ćelav čovjek ovdje koji ima sve te male mala crna magnetske čestice koje dolaze s njim. I koristiti taj crveni stick, što je samo magnet, što mu je na neki način može dati brkove ili obrve ili kosu ili bilo što o njemu. Tako je, u stvari, ako ćemo uvećanje u, na primjer, to je vrsta igre koju mogu igrati sa wooly Willy. A to je samo reći, to mnogo su veće magnetske čestice nego su zapravo na hard disk, i daleko manje magnetske čestice. Ali neka se zapravo vidi onda ako nemate sitni magnetskih čestica u hard disk, kako se zapravo može koristiti one za predstavljanje podataka. [VIDEO PLAYBACK] -U Hard disk na kojem se vaš PC trgovinama većina njegovih stalnih podataka. Da biste to postigli, podatke putuje iz RAM-a uz programskih signala koji ispričati hard disk kako pohraniti te podatke. Disk krugovi prevesti onih signale u kolebanja napona. To, pak, kontrolira hard disk-a kreće parts-- neke od rijetkih kreće dijelovi lijevo u modernom računalu. Neke od signala upravljanje motorom, koji se vrti Metalizirana plate. Vaši podaci zapravo pohranjeni na tim plate. Ostali signali pomaknuti čitanja / pisanja glave čitati ili pisati podatke na plate. To mašinerija tako precizan da je ljudska kosa nije mogao ni proći između glave i vrti plate. Ipak, sve to radi na nevjerojatan brzinama. [END PLAYBACK] A možete vidjeti na Kraj rep video, tu su uglavnom više plate. I tako da je čitanje glava nije samo čitanje na vrhu. To je vrsta kao što su tri ili četiri ili više glava za čitanje taj korak kao što je ovaj, čitanje podataka istovremeno. Dakle, postoji mnogo složenost i vrsta vremena a koji je uključen u tvrdom disku. A stvar se vrti stvarno prokleto brzo, tako da je puno složenosti. Ali neka povećavanje malo dublje i vidjeti gdje su ti magnetske čestice i kako smo uzimajući u njih. [VIDEO PLAYBACK] -Let Je pogled na ono što smo upravo vidjeli usporeno. Kad kratki impuls struje se šalje na čitanje / pisanje glavu, to okreće na maleni magnetsko za djelić sekunde. Magnet stvara polje, koji se mijenja polarnost maleni, maleni Dio metalne čestice koji kaput površinu svake pladnju a. Obrazac serija tih sićušnih nabijeni do područja na disku predstavlja jedan bit podataka u binarni brojevni sustav koristi računala. Sada, ako je trenutna poslan jedan put kroz čitanje / pisanje glavu, je područje polarizirani u jednom smjeru. Ako je trenutni je poslan u iz suprotnog smjera, polarizacija je obrnuto. Kako ste dobili podatke s tvrdog diska? Samo preokrenuti proces. Tako da je čestica na disk koji bi dobili struju u glavi za čitanje / pisanje kreće. Sastaviti milijune ove magnetizirana segmenata, i dobili ste datoteku. Sada, komadi od jedne datoteke mogu biti raspršena po cijelom drive-a plate, vrsta kao što su nered radova na vašem stolu. Tako poseban dodatni datoteka čuva trag gdje je što. Ne želite li imali nešto kao to? [END PLAYBACK] Tako se aludira na tu, možda, koja tema od jučer za brisanje. Kada izbrišete file, jučer smo rekli da računalo zapravo radi što, kada vučete nešto u koš za smeće ili kantu za smeće? To jednostavno ga zaboravi. No, 0-a i 1-a, magnetske čestice da izgleda kao crvena i plava stvari ovdje, ili moja ruka ovdje, još uvijek postoji na tvrdom disku. I tako postoji softverskoj Norton Utilities i prošlost a drugi moderniji softverskoj da je upravo će skenirati cijeli hard disk u potrazi na sve one 0-ih i +1, jer to Ispada da je većina datoteka formats-- Word dokumente, Excel datoteke, slike, Video files-- svi imaju određene obrasci koji su zajednički među njima. Svaki video datoteka možda biti različite video, ali u prvih nekoliko bitovi su obično isti. Ili posljednjih nekoliko bitova su obično isti. I tako s velikom vjerojatnošću, možete tražiti one obrasce. A čak i ako je datoteka bila zaboravljena, možete reći s velikom vjerojatnošću, ali ovo izgleda kao Word dokument, nadamo se oporaviti i UN-zaboravi, Ako hoćeš. I tako to je kako možete oporaviti Podaci koji ni nije bilo slučajno izbrisane ili izbrisani ili namjerno izbrisan iz bilo kojeg razloga. S druge strane, sigurno brisanje što radi u kontekstu slike kao što je ovaj? Točno, što ih čini sve slučajna. Tako je vrsta poteze nekih od ih dolje, neki od njih se, ostavlja neke od njih je isti, a općenito čini slučajni šum iz nje, ili samo možda čini sve Them 0 je ili sve od njih +1. I da je općenito pročišćavati podatke daleko. Dakle, vratimo se sada na pitanje računalne razmišljanja, pri čemu imamo formula ulaza. I algoritmi daje što izlazi u konačnici. Usredotočeni smo sada na ulazima i izlazi, jer sada sam Tvrdnja da imamo način predstavlja ulaza i izlaza. Samo ćemo koristiti binarni. I bez obzira što smo žele da predstavljaju i danas, da li je broj ili slovo ili njihovi tisuća u telefonskom imeniku ili slike ili filmove, na kraju dana, sve je to 0-a i 1-a. A ja tvrdim da, iako je to je super jednostavan svijet sa samo 0 godina i 1-a, možemo se izgraditi. A vidjeli smo jedan primjer da sa slovima do sada. Tako ćemo se sada usredotočiti na to Srednji sastojak, algoritam. I vratimo se to Primjer Mike Smith. Tako je u ovom imeniku, koji se, istina, ne koristimo toliko više, postoji problem koji treba riješiti. Želimo naći nekoga kao što je Mike Smith. A što bi se moglo učiniti kako bi pronašli Mike? Pa, samo sam mogao otvoriti ovaj Knjiga, početi na prvoj stranici, i shvatiti, oh, ja sam u odjeljku A. Mike to ne postoji. Trebam S odjeljak za Smitha. Dakle, samo nastavi okrećući jednu stranicu u isto vrijeme. Dopustite mi da se pretvarati da je to sve bijele stranice, a ne žute stranice, jer nećemo naći Mike na bilo žute stranice. Ali ja sam u bijelim stranicama. I sad, ja sam u odjeljku B. Još uvijek nisam ga pronašao. Zato što se stalno okreće jednu stranicu u isto vrijeme. To je algoritam. To je skup uputa za rješavanje nekih problema. Drugim riječima, pogled na stranica, ako se Mike nije na njemu, okrenuti stranicu, a ponavlja opet i opet i opet, idealno gledajući kako to radite. Tako je ovaj algoritam, ovaj proces, zar ne? Oprostite. Ne, čujem neki brojevi. U redu, ali to is-- da, to je sigurno dosadan. Kao, mi ćemo biti ovdje cijeli dan ako sam držati obličje za Mikea na toj brzini. No, dopustite mi tvrde da je točna. To je glupo, ali to je točno. Na kraju dana, dok je to možda uzeti ću naći Mikea ako je on tamo i ja sam obraćao pažnju. A ja na kraju doći svoju stranicu. A ako mi se previše, ako Ja bi se na dijelu T, onda sam malo mogu optimizirati i samo reći, hm, sve učinjeno. Ne treba ni trošiti Vrijeme ide na Z-a. No, to je vrlo linearni pristup, ako vas će, vrlo vrsta s lijeva na desno pristup, ravna crta. A njegova točna, ali sporo. Tako se sjećam iz osnovne škole, sortiranje o optimizaciji iz prvog razreda, gdje sam naučila kako se ne računaju od onih već twos-- i 2, 4, 6, To je, puno je teže učiniti, ali u teoriji, to je faster-- 8, 10, 12, 14, i tako dalje. Kako o tom algoritmu? Je li učinkovitije? Je li brže? PUBLIKA: To je učinkovit. DAVID Malan: Da, tako je to def-- je doslovno dva puta brže, uz pretpostavku da nemojte se spotaknula se sa mojim prstima. To je dvostruko brže, jer Ja sam okreće kroz dva stranica odjednom, umjesto jednog, ali to je potencijalno u točno, jer zašto? PUBLIKA: Ti si preskakanje neke. DAVID Malan: U redu, što ako se dogodi Mike da se sandwiched-- možda kad sam kasnije u telefonskom imeniku, Mike se dogoditi da bude sendviču između ove dvije stranice, a ja samo slijepo preskočiti preko njega. Dakle, mi treba malo popraviti tamo. Jednom sam pogodio dio T, I Ne mogu samo pouzdano reći, nismo pronašli Mike Smith. Vjerojatno imam dvostruko vratiti. Ili u stvari, jednom sam doći do nekoga nazvan S-N, umjesto S-M za Smith, Odmah sam mogao udvostručiti natrag, jer možda je on bio je na prethodnoj stranici. Ali ja ne moram duplo vratiti daleko. U teoriji, ako sam to učiniti u pravo vrijeme vrijeme, samo sam se vratiti jednu stranicu. Dakle, to je dodao samo jedan dodatni korak. Tako sam otišao dva puta brže, ali to me cijene jedan dodatni stranicu. No, to se osjeća kao neto dobiti. No, to nije kako većina ljudi u ova soba bi riješio taj problem. Što bi tipična osoba, možda Prije nekoliko godina učiniti, naći Mike Smith? Da, nije našao Mike. Što da radim? Tako se malo bliže, ali ja know-- što je istina o telefonskom imeniku? PUBLIKA: To je sekvencijalni. DAVID Malan: To je sekvencijalni. To je abecedni. I tako ako sam u odjeljku M, Mike je očito u desno, Doslovno sam može suza problem je u half-- to je obično lakše nego that-- suza problem na pola i baci od sebe, tako da sada imam problem koji je više 1000 pages-- to je bilo teško, jer mislim da sam zapravo poderao telefonski imenik ovaj time-- ne 1.000 stranica, ali 500. Dakle, problem je doslovno upola velika. I to je prilično uvjerljiv, jer s mojim prethodnim algoritmima, verzija 1 i 2, bio sam samo što problem jedna strana manje, dvije stranice manje u isto vrijeme. Dok sada, napravio sam ga 500 Stranice manje sve odjednom. U redu, tako da sada, Karim predlaže da idem na desnoj polovici. Tako ću ići otprilike na sredini, više ili manje. A ako sam to učinio matematički, Mogao sam ići do sredine. A sada, Znam, oh, Ja sam u odjeljku T. Zapravo sam išao predaleko. Ali mogu, opet, suza Problem na pola, bacite ga. I moje bajtova ne kao velika. To je samo, što, 256 stranica ili 250 stranica, dati ili uzeti odmah. No, to je još uvijek daleko više od jedne stranice ili dvije stranice. I tako sada, idem otprilike na sredini. Oh, nisam išao sasvim dovoljno daleko sada. Dakle, ponavljam, ponoviti, ponavljati, Ponavljam, sve dok sam nadam napustio sa samo jednom stranicom. Tako da pozove na pitanje, ako sam započeo s oko 1.000 stranica, koliko koraka se to me odvesti s verzijom 1 mog algoritma? I, ako Mike u S dio, u najgorem slučaju, to je prilično blizu kraj abecede. Dakle, ako je telefon knjiga ima 1.000 stranica, Ja ću naći Mikea u 1.000 stranica, dati ili uzeti. Možda je to 800 ili tako, ali to je prilično blizu 1.000. Budući da je, u drugom Algoritam, koliko stranica okreće maksimalno možda sam zahtijevaju naći Mike Smith? Ima 1000 stranica, ali ja sam rade ih dva u isto vrijeme. Dobro, pa max poput 500ish, jer ako idem kroz cijeli telefonski imenik, u kojem trenutku, ne mogu zaustaviti. Ali mogu obrije nekoliko njih do samo zaustavljanje na dionici T. No, to je u najgorem slučaju 500 stranica. Pa koliko puta mogu podijeliti 1,00o stranice telefonskog imenika na pola opet i opet i again-- od 1000 do 500 do 250 do 125? Koliko dugo prije nego što sam pogodio jednu stranicu? Da, to je oko 10. Ovisno o zaokruživanja i slično, to je oko 10 stranica ukupno mora biti uključen ili telefonskih imenika moraju biti rastrgan. Dakle, to je prilično moćno. Počeli smo s problemom od 1000 stranica u sva tri od ovih priča. No, u prvom algoritmu, to me je, u najgorem slučaju, 1000 stranica okreće se naći Mike. Drugi algoritam, 500 Stranice naći Mike. Treće Algoritam, 10 stranica naći Mike. I to je još više moćno kad mislite o vrsti suprotnom scenariju. Pretpostavimo da telefonske tvrtke sljedeću godine možda spaja dva grada zajedno, a telefonski imenik je iznenada ova debela, umjesto toga da se, tako 2.000 stranice, umjesto 1.000. Pa, moj prvi algoritam traži Mike Smith je u 2000-stranice telefonskog imenika je, gori slučaj, to će potrajati koliko stranica okreće iduće godine? Telefonski imenik je 2.000 stranica, so-- dobro, ne još jedan. Ako je telefon knjiga je dvostruko debela u Prvi algoritam, prvi algoritam, 2000, zar ne? U najgorem slučaju, Mike stvarno zatvoriti do kraja knjige, tako da je 2.000 stranica okreta. Drugi algoritam ide po dvojke, kao što je 1000 stranica. Ali o tome u mom trećinu i najnovija algoritam? Ako je telefon tvrtke udvostručuje broj stranica od 1.000 do 2.000, koliko još puta trebam suza ta knjiga na pola kako bi pronašli Mike? PUBLIKA: Samo jedan. DAVID Malan: Samo još jedan, jer s jedne stranice suza, Doslovno sam može podijeliti i osvojiti, ako hoćete, da je problem u pola preuzimanju masivni ugriz iz nje. I tako to je primjer učinkovitost i nedvojbeno algoritam s kojima smo svi vrsta intuitivno upoznati. No, to je samo kao točna kao moje druge algoritme s tim ugađanje za drugi algoritam, ali to je tako mnogo učinkovitiji. A u stvari, ono što se računalo znanstvenik, ili pak programer, obično bi to prilikom pisanja kod je pokušati shvatiti, Sve je u redu, ja ne želim da moje program samo da je ispravan, Također želim da bude učinkovit i rješavanje problema dobro. Zamislite u stvarnom svijetu danas, kao što je Google indeksa, pretraživanja kao i milijardama stranica, zamislite da su koristi prvi algoritam za pronalaženje mačke među milijardu pages-- gleda na prva stranica u svojoj bazi podataka, drugi, treći, samo gleda za mačka, u potrazi za mačke. To je prilično darn usporiti da će to činiti. Oni su umjesto toga mogao koristiti nešto zove pretraživanje po binarnom, što Ne coincidence-- bi znači dva, mi zadržati dijeljenjem nešto u 2, u half-- oni mogu koristiti binarno pretraživanje i možda naći mačke čak i brže, ili što god to je da ste u potrazi za. I iskreno, ne postoji čak i ljubitelj algoritmi kako napraviti mnogo više nego samo dijeljenjem stvari u poluvremenu kako bi se pronašli informacije brzo. A mi ćemo govoriti malo o onima nakon ručka danas. Pa neka mi samo pokušati da predstavljaju ovaj. Ne trebamo ići u bilo matematike ili stvarni brojevi. Možemo razgovarati o tome u sažetku. No, neka mi samo predlagati, ako vas imali raspravu sada s inženjerima predlaganje ovaj algoritam a ti pokušavaš napraviti izračunat odluka, jer možda Inženjer kaže za vas, Znate što, ja mogu implementirati linearno pretraživanje u kao dvije minute. To je tako jednostavno. Pretraživanje po binarnom nije tako fancy, ali to će me odvesti kao 10 minuta, tako 5 puta duže. Tu je trgovina ovdje, čak u smislu odlučivanja što je softver za pisanje. Da li napisati jednostavniji algoritam, koji je upravo će vam dvije minute? Ili ćete potrošiti više vremena, 10 minuta, pisanje ljubitelj algoritam? Kako ste se odlučili tu vrstu pitanja? Ili te mogao učiniti nešto više stvaran. Kažem moj šef to će potrajati meni ni jedan tjedan ili 10 tjedna za provedbu softver na ovaj način, kako se odlučiti koji algoritam za zeleno svjetlo? Karim? PUBLIKA: Publika, valjda. DAVID Malan: Publika. Što misliš od strane publike? PUBLIKA: Ako to ide koji će se koristiti od strane korisnika koji [nečujan] od strane korisnika [nečujan]. Ali, ako je to nešto što si samo radi za sebe olakšati problem, [Nečujan] brže. DAVID Malan: Da, to je brzo i prljav je dobar način da se to opisati. U stvari, ako ste opisuje većinu svog vremena u postdiplomskog, pri čemu često puta, Napisao sam loše kod svjesno so-- u najmanju ruku, to je kako sam racionalizirati it-- svjesno, jer iako sam bio pisanje koda to je bilo relativno sporo izvršavaju, Bio sam u stanju napisati kod sebe prilično brzo, trošenje samo nekoliko minuta ili sati ne dana. I ispostavilo se, ja ponekad je potrebno da spavaju. Dakle, čak i ako je moj broj je potrebno 8 sata da pokreću, i to je u redu, Ja ću samo ići na spavanje dok to radi. Dakle, u to vrijeme, mislio sam da je to vrlo pametan, iako sam naizgled radio kroz moj dr vrlo sporo. No, suprotno tome da, ako su pisanja softvera za druge ljude koji važno više od mene, pa, ima ih čekati 8 sati do dobiti natrag svoje rezultate pretraživanja nije sve što je uvjerljiv. I tako je proveo više vremena unaprijed za pisanje softvera koji je učinkovitiji, kao što je naš treći algoritam, Vjerojatno koristi korisnicima tijekom vremena. Dakle, to stvarno ovisi više Vrijeme koliko ti troškovi zbrajaju. Ako ćeš biti pismeno Softver ga koristiti jednom, Vjerojatno možda i ne brzo i prljavo, kao što kažu. Samo ga baciti zajedno. To je kod koji embarrasses ti, to je tako loše, ali se dobiva posao ispunjavanja ispravno, iako to nije učinkovit. Isto tako, možete provesti više vremena na nešto, dobiti samo pravo. A onda amortizira tijekom vremena, da unaprijed trošak vremena vjerojatno je vrijedno, ako bi se optimizaciji za zajedničke slučaju. I doista, to je tema u programiranje ili informatika više općenito, pokušavaju optimizirati ne za neobičan slučaj no uobičajeni case-- ono što operacija će se i opet dogoditi? Ako ćeš imati milijarde korisnika traži na Vašoj web stranici, vjerojatno bi trebao provesti dodatni tjedna unaprijed pisanje bolji softver, tako da svi korisnici imati koristi. Sada, neka je pokušati uhvatiti ovo bude malo slikovito, ali ne toliko numerički. Dakle, ovdje je samo stara škola grafikon. I dopustite mi da kažem da je ovo vrijeme. I to ne smeta what-- Zapravo, ne, nije vrijeme. Stavimo da se na drugoj osi. Recimo da je ovo vrijeme, a to je veličina problem. A računalni znanstvenik Možda se općenito nazvati ovo samo n. n je kao naša go-to varijabla, gdje n je broj, broj n, a to je Broj kakvim ulaza imate. Tako da u ovom slučaju, n je broj stranica. Dakle, to bi moglo biti 1.000 slučaj smo upravo rekli. Dakle, vrijeme može biti bilo koja jedinica mjere. Možda, to je drugi. Možda, to je dan. Možda, to je kao okretanje stranice. Nije bitno. Što god želite brojati u, koji bit će vremena i košta ekvivalentno tome. Dakle, s tim prvi algoritam, ako ja, na primjer, imali 1000 stranica telefonskog imenika, Idem nacrtati točku tamo, jer ako je to 1.000 stranica, to je oko 1000 stranica okreće, više ili manje. A onda, ako sam imao 2000 stranica telefonski imenik, a ja ću nacrtati drugi dot ovdje, jer je za 2.000 stranica, to je kao 2.000 sekundi ili stranica okreće ili bilo što drugo. I tako, kada sam rekao ranije, to je vrsta linearna veza, to je bilo namjerno, jer sam htjela kasnije on-- pravo now-- povući crtu. To je vrsta ravno Odnos crta. Staza je 1/1, ako hoćete. U međuvremenu, druga algoritam rekao, ako imaš 1000 stranica a ti su koristili drugi algoritam, gdje sam brojati po 2 godina, okreće dvije stranice odjednom, trebao sam nacrtati dot ispod ili iznad moje izvorne točka? PUBLIKA: Ispod. DAVID Malan: Ispod, jer kao što smo vidjeli, je potrebno manje vremena, upola manje vremena. Dakle, točka bi trebala biti na pola kao visok kao drugi. A ista stvar ovdje, ova točka vjerojatno bi trebao biti otprilike tamo. I tako je moj drugi algoritam, na sličan način, ima linearni odnos s vremenom. A možemo ga izvući kao takve. Tako sada, treći i završni algoritam je malo teže izvući. No, intuitivno, ako sam dobio 1.000 stranica sa mog trećeg algoritam, to treba samo me kao 10 koraka. I ako imam 2.000 stranica uz moj treći algoritam, to bi trebalo me ne 10 koraci, ali 11, samo jedan više. Tako smo samo jedva ide da vidi ovo. I to ispada, ako Ja uvećanje na to, ja sam ide pretjerivati ​​za učinak, oblik toj liniji, u konačnici, nije ravna line-- jer, zaista, ako je bilo, to će izgledati više poput others-- to je zapravo zakrivljena linija da, ako smo povećali, ide da izgleda puno više kao što je ovaj. It-- dobro, OK, zanemarite ovaj dio. To je bio moj pero ide kuta. To je zakrivljena linija koja je uvijek raste, uvijek, uvijek, uvijek raste, ali tek jedva. I tako s vremenom, imate odnos koji je više ovako. To je gotovo izgleda ravno. No, to je sve tako sporo raste. Ali gotovo svim točkama uzduž Vaš x-osi, horizontalne osi, to je niža od one druge linije. Dakle, to bi moglo biti veza n, pri čemu, ako imate n stranica, vas vodi n sekundi. To bi moglo biti odnos n / 2. Imate n stranica, koje je potrebno što n / 2 sekunde, pola koliko. A to je logaritamska odnos, koji Ako se sjećate, log baze 2 od n bilježi ova vrsta rasta, da tako kažemo. Dakle, to je vrsta sveta gral među tri od njih ovdje, jer to je samo tako mnogo više učinkovit, ali vjerojatno složeniji provoditi. Ima li pitanja? Pa neka mi to učiniti, neka ja otvoriti prozor tekst samo tako možemo pokušati formalizirati nešto ovdje. Pa neka mi ići naprijed i sada implementirati ovaj algoritam za pronalaženje Mike Smith u kodu, ako hoćete, pseudokod kod. Neću koristiti Java ili C ++. Samo ću koristiti vrsta Engleski-kao sintakse, koje smo općenito bi nazvati pseudokod koda. Evo, imam prazan prozor. A ja govorim koraka 1 vrlo Prvi algoritam je pokupiti telefonski imenik. Korak 2 je otvorena knjiga na prvoj stranici. Korak 3 će biti pogledajte Stranica za Mike Smitha. Ako na stranici, nazovite Mike. drugi red stranica i idite na korak 3. Gotovo, recimo. I tako da nije baš savršen, što ćemo vidjeti u jednom trenutku. Ali neka se uzeti u obzir ono koncepti sam ovdje upoznao. Dakle korake 1 i 2 i 3 su prilično mnogo glagoli. Oni su izjave, actions-- to učiniti. I tako u programiranju jezik, što bi se općenito zovu ih izjave ili funkcije ili procedure, poziva ih bilo koji broj stvari. No, oni su samo actions-- to učiniti. Korak 4 nije bitno drugačija, jer je vrsta postavljanja pitanja. To govori da smo rod od na raskrižju. Ako je Mike je na stranici, nazovite ga, pa skrenuti lijevo, ako hoćete. A ako ne, vratite se na neki drugi page-- odnosno, ispričavam se, vratiti u nekom drugom koraku, izaziva neku vrstu petlje konstrukt. I mi to opet i opet i opet. I zapravo, znate što? Da. drugo, ako na kraju knjige stajališta. Zato moramo vrste trećine stanje, jer ti ne mogu držati okretanje stranica oglasa nauseum, jer na kraju, ja ću hit kraju knjige. A bug u programu moglo biti ne očekujući da je scenarij. A onda sam samo shvatio, oh, čekaj minute, trebam treći scenarij. Ako sam ja iz stranica, ja treba stvarno samo prestati. Inače, to je nedefinirani. Što će se dogoditi ako držim govoreći okrenuti stranicu i vratiti, To je kada računala zamrznuti ili pad, kada hit neki neočekivani situacija takva. Sada, što je Mike Smith je treći algorithm-- pokupiti telefonski imenik, otvorena knjiga za first-- se ne, ne prva stranica ovog puta, da middle-- oh, dobro, to bi biti drugi algoritam. Ajmo preskočiti na trećem. PUBLIKA: Oh, žao mi je. DAVID Malan: To je u redu. Ajmo preskočiti na third-- otvorenom na sredini, a sada traže Mike Smith. Ako na stranici, nazovite Mike. I onda ono što želimo reći ovdje? što? Možemo izraziti na bilo koji broj načina. Nema pravog odgovora. OK, ako ne opet, ali moramo be-- OK, mi želimo podijeliti na dva dijela, ali ne želimo ići lijevo ili otići u redu? Kako izraziti taj pojam? Pa, u Mike slučaju, da, to je fer. No, u redu, tako da je zapravo dobra stvar. To je u redu. Mi ćemo nastaviti s tom logikom. Tako-- PUBLIKA: Manje od pola. DAVID Malan: Da. Pa još ako je stranica, mi ćemo reći, manje od Smitha, s lijeve strane Smitha, then-- da vidimo, je to će zakomplicirati? drugo, ako stranica dolazi prije Smitha, suza na pola, bacaju koja polovica? PUBLIKA: Mislio sam to je [nečujan]. DAVID Malan: Ja sam čuo i odgovora. PUBLIKA: Lijeva. DAVID Malan: OK, bacati daleko je napustio pola, kao Lakisa rekao ranije, lijevo pol, onda sam nekako žele samo ići to-- idem na desno. Ili ekvivalentno, a ja sam malo malo je nered na početku ovdje Ja učinkovito želim ići opet korak 2, gdje otvoren za middle-- ili open-- Da, recimo samo, stranice u sredini. I to ga popravlja. To više nije knjiga. To je samo pola knjige, tako otvorene stranice na sredini. else-- bili gotovo tamo. Korak 6, inače ako stranica dolazi nakon Smitha, suza na pola, bacaju desnu polovicu, a zatim idite na korak 2. inače prestati, i četvrti scenarij ako nemamo stranice lijevo okrenuti. Tako smo mogli očistiti ovo gore. I mi bi trebali očistiti ovo gore. To je vrlo pseudokod broj, ako vas će, opis vrlo visokoj razini. No, to se općenito ne uhvatiti ideju. A, opet, u ovom scenariju, mi imaju ideju o stanju, grana, vilica na cesti, što decision-- ako se to, idi na ovaj način, drugo, ako se ide na ovaj način, drugo, ako se ide na taj način. A to je vrlo čest tehnika programiranja odlučiti u kojem smjeru ići, da tako kažemo. I mi također imaju neke vrste od petlje strukturu, u kojoj mi smo opet i opet radi nešto. Sada, što se ispostavilo, mnogo kao u ovom primjeru, bude super precizna je važno. Ali također sam vidio nešto da čuvamo zove apstrakcija. Što znači da pokupi telefonski imenik? Mi smo samo vrsta uzimajući zdravo za gotovo u ovoj sobi da da ima neki semantički smisao. Svi mi samo vrsta znam, oh, dobro, pokupiti telefonski imenik. Što to zapravo znači? Pa, to zapravo znači da proširi ruka, nadviti, proširiti prstima, prstohvat knjigu između prstiju, stand up, pull ruku prema sebi. A mogli smo biti jako pedantan o tome, stvarno se super precizna kao da ono što radim. No, sve te korake zajedno su što znači da pokupi telefonskog imenika. I tako ranije, kad sam rekao, svaki ova prva dva izvještaja može shvatiti kao nastavak ili funkcija, stvarno ona predstavlja ono što mi zadržati poziv apstrakciju. To je kao da na visokoj razini konceptualnog opis problema koji zapravo uključuje dosta koraka. I tako to, također, ponavljajući teme u programiranju, pri čemu bih mogao napisati program koristeći sintaksu kao što učinimo, pick_up_phone_book (). A onda sintaktički, ja sam ukrast nešto od većine programskih jezika. Sada, korak 1 izgleda još više kao funkciju, kao programer će ga nazvati. Izgleda da je kod tog nekoga je dao ime i dao mi koristiti somehow-- u drugom riječima, ono što je linija što sam istaknuo predstavlja funkcionalnost da možda Nisam ni provoditi sam. Netko stariji, mudriji od meni je već skužio kako se izraziti pojam branje gore telefonski imenik. I to je kao pet koraka sam upravo pogodio off, off vrhu moje glave. No, on ili ona se već provodi ovo je dao one u nekoliko koraka ime, pick_up_phone_book. A zagrade je upravo ono što većina programera to je na kraju izjave kao što je ovaj. Ja sada mogu stajati na njegov ili njezin Ramena i nikad više, razmišljati o tome što to znači pokupiti telefonski imenik. Mogu samo reći, pokupiti telefonski imenik. A to je upravo ono što svi od nas ljudi nije ovdje. Kad smo bili vjerojatno 1 godina, 2 godine stari, netko je morao da nas uče što je to mislio pokupiti telefonski imenik. I od tada, smo izdvojiti daleko od onih vrlo nezanimljivo Mehaničke mjere. A mi samo imati intuitivno razumijevanje što to znači pokupiti telefonski imenik. A možete ekstrapolirati sada više komplicirano things-- izgraditi zgradu. Kao, da neki ljudi, koji zapravo ima smisla. Za izvođača radova, arhitektima, koji ima neko značenje. I oni će znati što učiniti ako Rekla sam, idi izgraditi zgradu. No, većina nas u sobi nije mogao nositi se s tom razinom apstrakcije. Morate nam reći željeli ići dobiti lopatom i ići dobiti beton i noktiju komada drveta zajedno i sve ostalo sudjeluje u izgradnji zgrade. A to je zato što nemamo Još je programiran da razumiju što znači izgraditi zgradu. Mi nemamo tu apstrakciju. Mi nemamo tu funkcionalnost. I tako što ćete vidjeti u programski jezici, u cjelini, posebno više modernih jezika, kao što su Java, PHP, Ruby, i Python, oni su mnogo zreliji od starijih jezika, kao što su C i C ++ i još drugima. I tako oni dolaze s više funkcionalnost izgrađena. Više code je napisano ljudi u prošlosti da sada možemo nazvati ili pozove ili koristiti, kao što sam aludirati na s tim istaknute linije ovdje. I tako, iako mi ne govorimo o programskim jezicima po sebi, Samo pseudokod kod, sve od ideje su još uvijek u toj raspravi. I ispada preciznost super važno, kao što je apstrakcija. I pokušajmo komunikaciju koja na sljedeći način. Slučajno sam možda pokvaren to bljeskanjem slajd na zaslonu preuranjeno. No, dopustite mi da vas pitati za hrabrog dobrovoljca, ako vam ne smeta dolaze gore. Ti bi biti ispred kamera, ako ste u redu s tim. Hoće li netko doći i dati Upute za svoje kolege ovdje? Samo moram doći ovamo i stajati ovdje i reći nekoliko riječi. Victoria je nasmijana najviše i izbjegavanje oči najviše. Biste li bili spremni doći na gore? U REDU. A ako su svi ostali na svojim mjestima mogao uzeti jedan komad otpadnog papira, Ako hoćeš. Poravnati rad je u redu. Navratiti na ovaj način. Ili neki od papira koji što su jučer dao, samo bilo prazan list od papira, ako može. A ako nemaju, samo pitajte svog susjeda, ako može. Dakle, u ovom trenutku, za ovaj primjer, Victoria će igrati ulogu programer, inženjer, koji je treba vam programirati sve, kao računala, nešto učiniti. A vidjet ćemo što pretpostavke što se odlučite. Vidjet ćemo koliko je točna ona odabere da bude. A ako je to demonstracija ide pedagoški dobro, puno pogrešaka bit će, kako smo tada ćemo koristiti da kao priliku za raspravu. No, izazov za vas trebaju se izbjeći one pogreške, biti dobar programer. I tako je izazov pri ruci, ako ti bi volio da hodaju ovamo, se nalazi ispred Victoria na ekranu here-- i nadamo se, nitko od vas sjećam se kad sam se bljeskale na ekranu. I ne okreni na sve, jer postoji još jedan ekran u ovoj sobi da mogu isključiti. Dakle, ne okrenuti. Ispred Victoria je taj isti vrisak. A njezin posao je da vam reći sve na svom komadu papira što izvući. A vidjet ćemo, na temelju verbalne upute sama, računalni kod, ako hoćete, kako točno svoje crteže are-- vaše implementacije su. Ima smisla? PUBLIKA: Da. DAVID Malan: OK, izvršavati. PUBLIKA: Nacrtajte kvadrat. [SMIJEH] DAVID Malan: I nema pitanja mogu biti pitani. Mogu samo ono što ti se kaže. Oh, i ako imate današnji slajdova otvaranje na karticu, ne gledati na kartici. U REDU? PUBLIKA: OK, nacrtati krug. Slope-- mogu reći nagib? DAVID Malan: do vas. PUBLIKA: padini. A trokut. DAVID Malan: U redu. I ovdje ostati samo na trenutak. I ja ću doći okolo u samo jednom trenutku. I nema potrebe da stavi svoje ime na njemu. Dopustite mi da se oko sebe i skupljati svoje crteže, ako vam ne smeta suzenje ih. Ovdje je ono što smo se vratili. Ja ću ga projicirati na zaslon. Vidim kvadrat, krug, padini, a trokut. Tako da je jedan odgovor tamo. I let's-- ups. Hvala ti. Evo još jedan izbor, i jedan iza njega. Dakle, svi oni činiti se uhvatiti duh. Hvala ti. Postoji još jedan, pa evo još jedan. Tumačenje Nagib je malo drugačiji, malo curvy. A najbliži, bilo zato što je od divno specifičnost s kojom ste opisano, ili možda neka vrsta Vidio je to i prije, ovo je zaista što Victoria zapravo opisuje. Ali sada, oni od vas koji nije se to sasvim u redu, neka je ponuditi neke primjedbe ovdje. Dakle, Victoria prvo rekao nacrtati kvadrat. A sada, možemo pretpostaviti radi i danas da svatko zna kako nacrtati kvadrat. Ali to nije u potpunosti jasan, zar ne? Kako bi inače mogli imati nacrtan kvadrat, ili ako Možda neke od nejasnoća Ovdje za računalo? PUBLIKA: Položaj i veličina. DAVID Malan Location, zar ne? Svi vi imali papir nekom obliku, općenito pravokutnici, ali malo različite veličine. Ali ti sigurno mogao izvući, ako ste htjeli, veliki trg, možda maleni trg. Možda, to je bio okrenut prema van. Ne mislim da smo to vidjeli. Ali, to bi moglo biti više dijamant kao što je, ali ipak, ipak, Matematički kvadrat. Tako da je nedvojbeno jasan. Zatim je rekla: nacrtajte krug. Neki od vas nije ga izvući pored to, što nije nerazuman, jer ljudi imaju tendenciju da razmišljaju ili čitati Pravo na lijevo u većini jezika, tako da se ne loša pretpostavka. Ali to krug može imati bio unutar trga, mogao biti oko trg, mogao biti negdje drugdje na listu, tako da vjerojatno nejasan. Nagib je moglo biti, možda uzimajući najviše slobode i usmeno s tim što to znači. A neki od vas tumačiti to što je iskrivljena linija ili ravna linija i slično. A onda trokut, također, može imati usmjerena na bilo koji broj načina. Dakle, ukratko, čak i nešto što ti prvi pogled, a ti si kao, wow, pa jednostavno, dijete može nacrtati to, ali ne Stvarno, ako nisi super, super uvjerljiv i reci računalo točno što učiniti. Dakle, ako bismo mogli, ako imate još jedan list papira, neka je probati ovaj još jednom. A ja ću dati Victoria jedan Drugi primjer na zaslonu ovdje. I opet, ne okrenuti i ne gledati na slajdovima. A ja ću joj dati trenutak za razmišljati o tome kako bi se to opisalo. Nemojte dopustiti da ih vidim strah u očima. [SMIJEH] I opet, ovaj put poluga neke od tih takeaways i pokušati dobiti gotovo sve barem pravi odgovor. PUBLIKA: OK, uzeti komad papira, pogledaj u sredini taj komad papira. U sredini tog komada papira, nacrtati kocku. [SMIJEH] DAVID Malan: Što smo naučili? Bili smo tako blizu. U redu, ponoviti ako bi mogli, za svakoga. PUBLIKA: u sredini komad papira, nacrtati objekt, koji izgleda kao kocka. DAVID Malan: OK, to je sve što ste dobili za rad. Dopustite mi da se analitički a ne toliko kritična, ali da bi zahtjev da je Victoria definitivno Čini se da je razmišljanje u vrlo na visokoj razini apstrakcije, koje nije nerazuman. Jer inače, mi bi svi biti prilično disfunkcionalna, ako smo morali biti uvijek tako precizan sa svime što radimo na svijetu. But riječi idi na middle-- I. Mislili smo bili na tako dobrom putu tamo, kao i otići u samom središtu stranice, a zatim nacrtati kocku. Dakle, ona misli u apstrakcijama, jer je ona još uvijek gledate što je na ekranu kao doista kocka. No, postoji toliko mogućnosti za interpretaciju tamo. A u stvari, postoji toliko mnogo drugi načini mogli izraziti da, što ću predložiti u trenutku. Dakle, ovdje imamo jednu inkarnaciju od picture-- whoops-- jedan inkarnacija na slici, tako da Malo tri dimenzionalnosti na njega, što je lijepo. Evo još jedna, u kojoj imate isto, iako to je vrsta otvorenog kocke. Neki ljudi ga malo uzeo Više stan, dvodimenzionalni. I to je u redu. Tako da, doista u središte papira. Ovaj Mislim da će ti kao, jer ako idemo ovdje, to je ono što je opisuje. Tako sada, neka mi predložiti kako drugačije bismo mogli opisati ovu situaciju. Natrag u dan, jedan od najvažnijih više uobičajene načine kako bi naučili programiranje je pisati kod, piše linije uputama, koja je kontrolirala malo kornjača na ekranu. Logo i druge varijante ove bio je naziv za jezik. A kornjača živi u svijetu. Dakle, pretpostavimo tu pravokutnog Prostor je njegov svijet. A ti bi početi assuming-- I. ne znam kako se izvući kornjača, pa neka je to učiniti ovako. I onda on ima ljusku a onda možda neki stopala. Tako možete imati ovaj mali lik na ekranu. A cilj tome programski jezik bio da prisili kornjača ići prema gore, dolje, lijevo, desno i staviti svoje pero dolje ili pokupiti svoje pero gore, tako da on zapravo mogao izvući na zaslonu u ovoj vrlo ravnim pravokutnim svijetu. Dakle, gdje sam mislio da možda dolazite, i gdje bi trebali razmisliti o ronjenju dolje na mentalno kada opisuju Upute za općenitije, Ja bih tvrde, stavlja svoj pero dolje u middle-- a mi ćemo se riješiti kornjača, jer ja stvarno ne mogu držati ga crtanje vrlo dobro. A sada, kako još može Kažem nacrtati kocku? Pa, moglo bi se reći nešto poput izvlačenja dijagonalna linija sjeveroistoku, na primjer, ili pod kutom od 45 stupnjeva prema gore. I to bi me dobivši ovdje. I ja sam prilično daleko od kocke. Ali sada, mogao bih reći nešto kao i skrenite za 90 stupnjeva u lijevo i nacrtati liniju jednaka sjeverozapadno duljine. I ja sam mogao nastaviti sa sličnim smjerovima. A to neće biti lako. I iskreno, vjerojatno bi su ovdje već pet minuta. No, možda bi nam došao do nešto što je na kraju krajeva, završi kao kocka, ali mi zaronio unutar te apstrakcije to učiniti na takav nizak razina da ne mogu stvarno vidi ono što radite dok cijela Stvar je zapravo tu na stranici. I tako to je opće načelo, opet, programming-- ove ideje apstrakcije. To je tako divno moćna, jer opet, ona je samo rekla, nacrtati kocku, koja sve nas prilično mnogo bi zahvatite vrlo brzo. Mi bismo samo razumjeli, OK, nacrtati kocku. Mi možda ne znaju orijentaciju, kako bismo mogli biti malo precizniji, ali mi se općenito mogu zamisliti ili zna što je kocka. I to je korisno, jer ako svaki put kad sjeo je kao programer u tipkovnicu za pisanje koda, ako je razmišljati na takav niska razina, nitko od nas nikad neće dobiti ništa učinio. I svakako, nitko od nas ne bi uživati ​​u procesu pisanja koda. To bi bilo kao pisanje u 0 a i 1-ih, koji iskreno nije bilo tako davno ljudi su pisanje koda u 0 a i 1-a. I mi vrlo brzo došli do to viša razina languages-- C ++ i Java i drugi. Dakle, pokušajmo još jednom samo da Flip tablice, tako da smo svi mi imati priliku za razmišljanje u, a na isti način. Možemo li dobiti još jedan volonter ovo Vrijeme je da se do ploče i crtanje, ne izgovaraju? Da, u redu. Ben, hajde gore. I Ben, u ovom slučaju, kada vas lice odbora, ne gledaj lijevo, ne izgledaju dobro. Samo ono sto mi tvoje kolega ovdje ti. A za sve ostale u soba, sada su programer. On je računalo. A slika sam izabrao ovdje unaprijed je ovaj ovdje. Oni just-- oni misle: smiješno vic je sve. Tako bi se netko želio dobrovoljno prvu pouku ili izjava koje bi trebalo Command Benov olovka? A mi ćemo to učiniti zajedno, možda jedna instrukcija iz svake osobe. Žao mi je? PUBLIKA: Nacrtajte krug. DAVID Malan: Nacrtajte krug je prva stvar koju sam čuo. PUBLIKA: Do vrha. DAVID Malan: Do vrha. OK, možemo vam izbrisati, poništiti. A sada, netko drugi. Dan, će vam biti udoban nudi slijedeću uputu? PUBLIKA: Naravno, crtanje centar dna kruga, s small-- malo mali prostor od toga, povući ravnu crtu do tri četvrtine puta dolje brodu blagi kut na svoju lijevu stranu. DAVID Malan: Dobro. PUBLIKA: pod blagim kutom. DAVID Malan: Undo, kontrola-Z. U REDU. Andrew, želite ponuditi do sljedećeg nastave? PUBLIKA: Naravno. Iz dna toj liniji, daljnji lagani angle-- whoops-- možda oko trećina duljine [nečujan] pod blagim kutom prema dolje i poput trećinu duljine [nečujan]. Tako da, od tog trenutka, Crtanje linija za trećinu duljine prethodne linija i dalje u lijevo. DAVID Malan: To je u redu? Pravac, to je u redu? OK, Olivier, želite ponuditi do sljedeći? PUBLIKA: [nečujan] od Donji dio kruga, [nečujan]. Crtanje na desnoj strani od [nečujan] centimetara. [SMIJEH] DAVID Malan: Mislim da ćeš moraju pretvoriti to inča ovdje. PUBLIKA: Stop. [SMIJEH] DAVID Malan: U redu. [? Ara,?] Želite ponuditi do sljedeći? PUBLIKA: Crtanje [nečujan] gornja [nečujan] isti. [Nečujan] krug, crtanje na [Nečujan] i nacrtati [nečujan]. DAVID Malan: OK, nema više poništiti. Učinimo još jedan ili dva upute. Chris, želite ponuditi jednu? PUBLIKA: Na dnu kruga, [nečujan] privući jednaku liniju izboja dolje lijevo [nečujan]. DAVID Malan: U redu. Andrija? Mi did-- Karim? PUBLIKA: Počevši s desne linije, kraj lijeve linije dna, ti si idući u ići desno oko jednake duljine kao tu liniju ste na, crtanje na pravo [nečujan]. [Nečujan] stupnjeva, tako da [nečujan] stupnjeva na desnoj strani. DAVID Malan: U redu. Idemo pauze. Ne okreni još. Idemo pauzu, i neka je probati jedan drugi pokušaj prije nego što smo otkriti Benu ono što je on bio crtež. Može li shuffle Ben redu-ili zapravo, ne, neka je samo dati još jedna ploča, čak i bolje. Tako bi netko sada želio da se više pristupa da je Victoria je ranije, u kojem govorimo u višoj razini apstrakcije a u samo jednoj rečenici ili dva opisuju Benu što izvući bez uzimajući u korov, da tako kažemo, na to niža razina? Victoria. [SMIJEH] PUBLIKA: Nacrtajte lik od pješačke čovjeka. A noge i ruke mora biti s desne strane. DAVID Malan: OK, to je sve što ste dobili. U redu. Zašto ne možemo otkriti Benu što je učinio. Tako pljesak. To je bio najteži možda. Dakle, iako govorimo u prilično glupim terminima o samo crtanje slike, nadamo se da može stvarno poštovati stupanj ekspresivnost koje bi mogle biti potrebne kako bi se reći računalo što učiniti. A u stvari, činjenica da je Ben bio je u stanju privući to tako brzo je vrsta testamenta na korištenje jezik, možda viša razina verzija na engleskom, koji ga omogućuje samo koristiti riječi, ili čuti riječi od Victorije, koja mu omogućuju to abstractions-- samo izvući lik hoda do redu-ta vrsta ima neki semantičko značenje kako to da nije gotovo kao očito kada ste upravo govoreći, stavite olovku dolje, crtanje desno, crtanje na lijevoj strani. I tako to, također, vrlo čest u programiranju. To bi se reći da je poput vrlo niska razina jezika, programiranja u 0 a i 1-ih, ako će. A to će biti viša razina programski jezik u Javi, ili tako nešto. Malo je pojednostavljivanje, ali to je vrsta kao što su emocionalna osjećaj da se osjećate kada pomoću jedne vrste stvari ili drugi. Malo frustracije ovdje zbog potrebe za takvu preciznost, ali priliku da se malo blazi s tumačenje ovdje. Ali, naravno, kukci se može pojaviti kao rezultat. Ako želite na home-- smo neće učiniti ovaj jedan u class-- ali ako želite donijeti ovaj jedan dom, Mislio sam da ćemo zaroniti u to. Dakle, ako želite igrati ovu igra sa svojim značajnim drugim ili djecu ili slično, te možda uživati ​​u tome, kao dobro. Dakle idemo naprijed i pogledati jedan posljednji stvar ovdje za računalnu razmišljanja. A to nas dovodi do Ivana Oliver, a ne za kopče možda ste vidjeli sinoć, ali u nešto posljednje izdanje. Prije par mjeseci, Volkswagen je dosta oštra kritika što se dogodilo, ako znate? Što su dobili u nevolji za? Da, tako emissions-- oni su pokušavali pobijediti emisija testovi u biti a imaju automobili zagađuju okoliš manje kada su se testiraju svoje automobile i zagađuje okoliš više kad ne bi bile testirane automobile. A što je sve zanimljiviji u svijetu, kao što svibanj imati izvedeni od rasprava o da bismo mogli što je it-- CarPlay, Appleov softver za automobile te činjenica da su mnogi nas sve više ima touch screen u našim automobilima, tu je zastrašujuće količine softvera u ljudskim automobili danas, što iskreno otvara cijeli konzervu crva kad ga je u pitanju sigurnost i fizičku opasnost. No, za danas, neka je usredotočiti na samo ono što je uključen u pisanje softvera koje bi mogle imati gamed sustav. Za definiciju Problem, za one koji nisu upoznati, neka je pogledati John Oliver. A za one koji poznaju problem, pogledajmo to na zabavan leće preko John Oliver, kao dobro. Pa neka me pogodak igrati na ovome, ja mislim, tri minute uvod. Kvragu. [VIDEO PLAYBACK] -Automobili-- DAVID Malan: Očito, na YouTube, it's-- - --the najpametniji likovi Brzi i žestoki filmova. Ovaj tjedan, njemački proizvođač automobila Volkswagen se našla usred skandala u potencijalno kriminalne razmjere. -Volkswagen Se priprema za milijarde u kazni, moguće kaznene prijave po svojim rukovoditelji, kao i Tvrtka se ispričava za namještanje 11 milijuna automobila s pomoći da tuku ispitivanja emisija. -Certain Dizel modeli su dizajnirani sa sofisticiranim softverom koji korištene informacije, uključujući i položaj od volana i vozila brzine, kako bi se utvrdilo je automobil bio prolazi kroz testiranje emisija. Pod tim okolnostima, motor će smanjiti toksične emisije. Ali auto je namještena na obilaznici da, kad je vozi. Emisije porasla 10 do 40 puta iznad prihvatljive razine EPA. -Wow, 10 do 40 puta veći od EPA dopušta. To je najgora stvar Volkswagen je ikada učinio, je nešto što bi se moglo reći, ako nikad čuo za Drugog svjetskog rata. No, možda je najsigurniji znak koliko puno problema Volkswagen je u, je da ljudi na samom vrh su odstupio. Izvršni direktor podnio ostavku u srijedu nakon što je remećenje učiniti kontrola štete, rekavši kako je beskrajno žao, što Zvučalo je super dok se ispostavilo on je bio samo 10% žao ali je namještena usta da se umjetno napuhati svoje sorriness. A u međuvremenu, Volkswagenov SAD Glavni je imao ispriku za svoje. -Let Je biti jasno o tome, naša tvrtka je bila nepoštena. I u mojim njemačkim riječima, su potpuno pijan gore. -Da, Ali potpuno pijan se nisu njemački djela. I njemački jezik ima mnogo lijepih fraza opisati situacije baš kao što je ovaj, kao što su [NJEMAČKE], što znači grubo, tuga koja dolazi od poslovnih vezane laži, ili [NJEMAČKI], što znači kao sramote one oca koji uključuje oblaci benzina. To je prekrasan jezik. To samo plovi izvan jezik. I usput, dok je čovjekovo isprika je možda zvučao iskreno, to je vrijedno napomenuti da je govorio na službeni lansirati stranka za 2016 Volkswagen Passat, što znači da uskoro nakon što je rekao mi je, on je to rekao. ti -Thank jako došli. U večernjim satima. Do sljedeće je Lenny Kravitz. [MUSIC SVIRA] -OK, Ok, završava svoj Isprika s do iduće Lenny Kravitz ne vrištati trijezan kajanje. Ona vrišti, pitali smo Bon Jovi, a on je rekao ne. Volkswagenov brand ima bila teško oštećena. I iskreno, njihov novi oglas Kampanja nije točno pomaže. - [NJEMAČKI], mi u Volkswagen bih ispričati za vas obmanjuju sa naša vozila. [END PLAYBACK] DAVID Malan: Dakle, to je bio zaobilaznim putem of-- sorry-- to je kružni tok način uvođenje temeljni problem u softveru, a to je da vas trebaju otkriti određene uvjete. I zato je pitanje pri ruci ovdje je, kako se automobil potencijalno, kako ugraditi u softver tim programera, otkriti da je zapravo testira? Tako da se super jasan, što su radili je, u sredinama gdje programeri shvatio auto je bio testirani su na neki način napravio automobil emitiraju manje emisija, manje emisije, tako da manje toksičnih plinova i tako. No, kad je normalno vožnje na cesti, to bi samo emitirati koliko Onečišćenje kao što je želio. Pa kako bismo mogli pisati pseudokod za ovaj algoritam? Kako bismo mogli napisati pseudokod za softver koji se izvodi u autu? Mislim, u Ukratko, ne uzavre dolje na nešto ovako. ako se ispituje, emitiraju manje. inače emitira više. No, to je malo previsoka razina, zar ne? Pokušajmo roniti u tome što ova apstrakcija se testira sredstva. Drugim riječima, čak i ako ništa ne znate o automobilima, kakva pitanja možda pitati kako bi utvrdili je li ti se testira, ako si auto? Koje osobine bi moglo biti predstaviti, ako je automobil se testira? PUBLIKA: Testiranje opreme. DAVID Malan: Testiranje opreme. Dakle, ako ispitivanje opreme blizini, a zatim emitiraju manje. Tako sam mogao zamisliti provedbu da je s nekom vrstom kamere ili otkrivanje što je oko vas. I neka mi predloži da samo osjeća previše komplicirano da zapravo imate dodatni hardver samo za tu svrhu. PUBLIKA: Ako ste u park, ako je vaš kabinet je otvoren. DAVID Malan: U parku ili napa otvoren, tako da je dobro. PUBLIKA: I auto trčanje. DAVID Malan: Dakle, to je malo više concrete-- i auto trčanje. Tako će to biti veznik se od nekoliko različitih uvjeta, ako će. Dakle, ako je automobil u parku, pa čak i iako je to vrlo mehanička stvar obično, što sam mogao zamisliti pisanje softvera, pogotovo zato što postoji Često svjetlo tamo ovih dana, Mogao sam zamisliti da bude softver koji može ispitati pomak ili što ne, jeste li u parku, su što je u pogonu, jesi li u obrnutom smjeru. A ja mogu dobiti natrag odgovoriti da je to bilo da ili ne na one vrste pitanja. I tako sam mogao i vjerojatno odgovoriti pitanje kao što je poklopac motora otvoren. Možda postoji neka vrsta senzora da ili me vraća na 1 ili 0, istinito ili lažno, sjenilo je otvoren. A onda auto radi, mogao sam otkriti da nekako preko onoga što mehanizam? Kao, automobil je trčanje, sam mogao otkriti da je on, mogao sam otkriti nekako da se automobil kreće? Publika: RPMs. DAVID Malan: Da, tako je Uvijek da igla koja Govori vam koliko okretaja u minute kotači se suočili. I tako da sam mogao gledati na to. A ako to nije 0, to je vjerojatno znači da je vozilo u pokretu. No, moramo biti malo oprezni tamo, because-- idemo pojednostaviti učinimo ako mi samo rekao, ako auto radi, mi ne želimo da se samo emitiraju manje, želimo li auto radi i to se ispituje. Dakle, postoji nekoliko drugih Sastojci koji ljudi su pretpostavili softver radi, jer odsutnog stvarnog izvornog koda, možete samo nekako zaključiti iz fizički učinci automobila tome što Možda se događa ispod sjenilo u softver. Dakle, ako auto radi i možda, recimo, stražnji kotači ne mičući se, Možda to biti indikativno neke vrste testa? Što sam aludirati na ovdje? Da, možda, to je na jedan od onih valjak stvari, gdje se kao točkovi se okreću u prednjem ili stražnjem, ovisno o tome da li je prednji kotač ili pogon na stražnje kotače, tako da polovica kotača su se kreće, no druga dva nisu, što je čudan situacija u stvarnom svijetu. Ako ste vožnje na ceste, koje se ne bi trebalo dogoditi. Ali, ako ste u skladištu na nekoj vrsti sustava kolutova, da doista moglo dogoditi. Mislim da ljudi također predložio da možda, ako je auto radi i upravljanjem kotač ne kreće, da također mogu biti signal, jer to je razumno za kao se odmah na cesti. No, čak i tada, ljudski je vjerojatno kreće to malo ili svakako više od nekoliko sekundi. Ili tijeku minute, vjerojatno to nije će biti fiksiran u isti položaj. Tako drugim riječima, može potrajati substraction, Jeste li se testira, a razbiti tu funkcionalnost u ove sastavne tvari. I to je doista ono Volkswagen-a inženjeri nekako učinio. Oni su pisali softver svjesno otkriti ako je automobil koji se ispituje, Stoga emitiraju manje, ostalo emitiraju na uobičajeni način. A problem ovdje, također, je da softver nije nešto što stvarno može vidjeti, osim ako imate takozvani izvorni kod. Dakle, postoje dvije različite vrste code-- najmanje dva različita tipa koda u svijetu. Postoji nešto što se zove izvor broj, koji nije za razliku od onoga što smo pisali, izvorni kod. Ovo je izvorni kod napisan u jezik zove pseudokod, što je samo nešto engleskom slično. Nema formalna definicija toga. No, C i Java, C ++, oni Sve su formalni jezici koji, kad pišeš u njima, što imate je tekstualna datoteka koja sadrži izvorni kod. No, postoji i nešto u svijet naziva strojni kod. I stroj kod, na žalost, je samo 0-ih i +1. Dakle stroj kod je ono Strojevi za razumjeti, naravno. Izvorni kod je ono što ljudi razumiju. I općenito, ali ne uvijek postoji program koji programer koristi koja se izvor broj i pretvara ga u strojni kod. I to je program općenito naziva prevodilac. Dakle, vaš doprinos je izvorni kod, Vaš izlaz je stroj kod, a prevodilac je komad softver koji se taj proces. Dakle, ovo je zapravo preslikava lijepo da naši ulazima, algoritmi, izlazi. No, to je vrlo specifičan utjelovljenje toga, što će reći da je, čak i ako posjedujete jedan od Volkswagen-a automobila koji je kriv za to, to nije kao što možete samo otvoriti napa ili otvoriti korisnički priručnik ili gledati u izvornom kodu, jer je vrijeme doseže svoj automobil u svom prilazu, to je već bilo pretvoriti u 0 a i 1-a. I to je vrlo teško, ne i nemoguće, ali vrlo teško skupljati mnogo ništa od samo gledajući temeljne 0 a i +1. Dakle, možete ga shvatiti, u konačnici, ako te shvatiti kako stroj operates-- Intel inside-- ako ste razumjeli Intel arhitekturi, ali to je vrlo dugotrajan. A čak i tamo, možda neće biti u mogućnosti vidjeti sve da je kod zapravo može učiniti. Bilo kakva pitanja o tome ili ovaj vrsta procesa općenito? I zapravo, možemo vezati ovu raspravu na jučerašnjoj raspravi o Apple. To je, također, zašto FBI ne može jednostavno ići i gledati u telefon osumnjičenoga i pronaći linija koda, na Primjerice, da omogući zaporke ili omogućiti da se 80-milisekundu kašnjenja. Budući da je vrijeme da je Na kolega iPhone, to je već bilo pretvoriti u 0 a i 1-a. Pa, ovdje zastati za naše pogledajte računalnom razmišljanja. Zašto ne uzeti pauzu od 15 minuta. A kad se vratimo, mi ćemo pogledajte na programiranje sama i početi mapirati neke tih visokoj razini pojmova da stvarna, ako je zaigran, programski jezik.