DAVID MALAN: Tervetuloa takaisin, kaikille. Joten eilen, sinun muistaa että keskityimme näistä aiheista täällä. Joten meillä oli neljä yleistä topics-- yksityisyys, turvallisuus ja yhteiskunta; internet-teknologioita; pilvilaskenta; ja lopulta, web-kehitystä. Onko kellään kaistanleveys tai aika katsella vähän John Oliver viime yönä? Se on oikeastaan ​​aika huvittavaa, jos ei hieman pelottavaa. Kaikki kysymykset mitään teimme eilen? Täsmentänyt? Kaikki kysymykset, jotka haluat varma, että me käsitellä tänään jossakin muodossa? Joten puhtaalta pöydältä. Joten mitä esityslistalla tänään? Joten ajattelin olimme alkaa tänään kanssa katsomaan mitä yleensä tunnettu laskennallinen thinking-- at riski oversimplifying, ajattelu kuten tietokoneen, ehkä ajatella kuin insinööri, ja yrittää alkaa järjestää ajatuksiasi tai antaa sinulle paremman käsityksen mitä mukana varsinaisessa komentava tietokone tehdä jotain Poiketen ohjelmointia. Ja pidämme sitä melko korkea, melko paljon Englanti, vaan yrittää käyttää tuttujen esimerkkejä virallistaa miten voit mennä noin ratkaista ongelmia. Ja me uudelleen joitakin CS aiheita, kuten abstraktio, joka tuli pari kertaa eilen, algoritmeja, ja sitten edustus. Ja siellä me aloitamme tänään vain hetken. Sitten me katsomaan ohjelmoinnin. Me katsomaan joitakin perustavanlaatuinen konstruktioita jolla saatat tuntea ja ehkä jopa löytää melko intuitiivinen. Me tarkastelemme, itse asiassa, at näytteen ohjelmointi ympäristö, joka on hyvin saatavilla, hyvin leikkisä, ja todellakin kohdennettu 12-vuotiaille ja ylöspäin. Tulemme viettää muutaman minuutin siellä ja sitten ottaa asiat alemmalle tasolle ja oikeastaan ​​puhua joistakin algoritmit ja tietorakenteet, niin sanotusti, että ohjelmoijat käyttävät yleensä ratkaista ongelmia paljon tehokkaammin kuin saatat pystyä tekemään ilman niitä kokonaan. Sitten lounaan jälkeen, me katsomaan at teknologia kasana, joka on vain hieno tapa sanoa kokoelmien teknologioiden että saatat käyttää ratkaista joitakin ongelmia. Ja me puhumme aakkoset keitto kielten olemassa today-- Java ja Python ja C ++ ja PHP ja Ruby ja kaikenlaisia ​​muita asioita. Me katsomaan hetkeksi suunnitteluun malleja. Ohjelmoijat, ajan mittaan, on hyväksytty menetelmät jotka pyrkivät auttamaan heitä ratkaisemaan ongelmia helpommin. Kun alkaa nähdä itse kirjoittamista samanlaista koodia uudestaan ​​ja uudestaan, ihmiset virallistaa kyseiset toistoja ja suoda nimet heille ja sitten käyttää niitä ja edistää niitä, lopulta. Ja me puhumme hieman noin mobiili strategioita, kuin mitä se tarkoittaa todella tee mobiilisovelluksen tai mobiilisivuston. Teet sen Android? Teet sen iOS? Teet sen molemmille näistä? Ja mitkä ovat kompromisseja? Ja sitten lopuksi, otamme Katso Web-ohjelmointi, joka on yhteisnimitys todella kuvaavat tahansa kirjoittaa ohjelmisto, joka on tarkoitus ajaa verkossa, joko puhelimet tai työasemia tai kannettavia tietokoneita. Otamme lyhyt katsaus tietokannat ja suunnittelu siinä, jos vain koska melkein mitään mielenkiintoinen web-pohjainen sovellus näinä päivinä on jonkinlainen tietokannan. Muussa tapauksessa se olisi vain olla staattisia kohteita. Ja tietokannan avulla voit soittaa muuttuu ajan myötä, onko itse tai käyttäjiä. Ja harkitsemme, miten menisi noin suunnittelussa tietokantaan ja sellaista jargon jotka saattavat tulla esiin insinöörin keskustelun valkoinen lauta kun todellisuudessa täytäntöön Sovelluksen ensimmäistä kertaa. Me puhua lyhyesti API, hyödyllisiä palveluja että voit seistä olkapäät toisten, ovatko yritykset tai henkilöille, ja ratkaisemaan omat ongelmansa nopeammin. Ja sitten me harrastella kenties hieman JavaScript, ohjelmointikieli, jota käytetään molemmat selaimet näinä päivinä, mutta myös palvelimissa. Ehkä käymme uudelleen, aika sallii, joitakin käytännön web tavaraa me eilen ja yhdistää kaksi yhdessä ennen kuin lykätä. Joten that-- mitä ahead-- on jotain puuttuu, että olet haluaa varmistaa, että meillä lisätä ja käsitellä jossain vaiheessa. Jos se on jouset mieleen, tuoda sen ennen pitkää. Mutta miksi emme alussa on katsokaa päättelyä. Ja haluaisin ehdottaa, että laskennallinen ajattelu on, jälleen, eräänlainen korkean tason kuvauksen mitä tietojenkäsittelytieteessä voisi tehdä. Ja todellakin, aloitamme kolme ainesosia, jotka voisi mennä päättelyä. Tämä on vain yksi tapa kuvata sitä. Voisimme varmasti määritellä tämä monin tavoin. Mutta minäpä ehdottaa, vuoksi tänään, että maailman ongelmia, kaikki maailman ongelmat, kun lähestyi tietojenkäsittelytieteessä voisi pidettävä Mitä me puhelun tuloa, joka täytyy päästä syötetään mitä me kutsumme algoritmeja, joka sitten tuottaa lähdöt. Toisin sanoen, koko maailma ongelmanratkaisun I vaatimuksen voidaan tislata nämä kolme ainesosia. Joten mitä tarkoitan panoksia? Tulot on juuri mitä olet luovutti ratkaisemiseksi. Esimerkiksi tässä vanhan koulun ongelma. Jos minulla on puhelinluettelo täällä ja Haluan katsoa jotain siihen, tämä on minun panos. Minulla on 1000 tai niin sivut puhelinluettelosta. Tämä on panos minun ongelma. Ja Haluan löytää jotain kuten Mike Smith, joten ystävä jonka nimi ja numero on toivottavasti tämän osoitekirjan. Tämä on ennen päivän solun puhelimissa, joten en voi vain etsiä sitä. Joten minun täytyy tehdä se vanha koulu ja todella haku nämä tulot joillekin vastausta. Ja että vastaus on juuri menossa kutsua lähtöön. Joten tulo on puhelinluettelossa. Algoritmi on mitä joukko vaiheet Käytän löytää Mike Smith. Ja lähtö on toivottavasti Mike Smith puhelinnumero. Ja tämä sitten olisi vain edustaja eniten ongelmia ja jossa olet oikeakätinen panoksia ja haluavat tuottaa tuotoksia. Joten ennen pidämme prosessin jonka avulla voimme ratkaista ongelman, löytäminen Mike Smith ja jotain sellaista, Tarkastellaan ensimmäistä ja last-- tulot ja lähdöt. Fyysisesti tietenkin tulo tästä on koko joukko paperi liimataan yhteen muodossa puhelinluettelosta. Mutta tietokoneet, on course-- kannettavat tietokoneet ja työasemat ja jopa puhelimet Näiden days-- ne ovat elektroniset laitteet. Ja lopussa päivän, mitä ainoa tulo tietokoneeseen? No, se on jotain Tämän virtajohto tähän. Liitän sen seinään, ja Saan virtaa elektroneja, jossa voin ajaa konetta. Tai ehkä nuo elektronit ovat luoma tapa minun akku. Mutta lopussa päivä, joka on ainoa asia menee minun laptop. Ja niin paljon mielenkiintoista tavaraa on lopulta tulossa ulos, onko Poiketen tulostimen tai näyttöä tai audially tai vastaavaa. Joten jos kaikki olemme kuin meidän olennainen panos tietokoneeseen on sähköä, joten vain elektronit menossa ja tai ulos, ja niin miten voimme käyttää sitä panos todella edustaa tietoa? Toisin sanoen, miten pääsemme yksinkertaisesta sähkövirtaa edustamaan todellista numeroita tai todellinen kirjaimia tai todellisia kuvia ruudulla tai todellinen elokuvia tai sähköpostiviestejä tai mitkä tahansa näistä korkeamman tason käsitteitä, jos haluatte, että tällä Päivän päätteeksi jotenkin ovat tulee säilyttää tämän elektroninen mekaaninen laite käyttämällä ainoastaan ​​yksinkertaista ingredients-- elektronit tulossa sisään ja ulos? Joten näyttää siltä, ​​että in yksinkertaisessa muodossa, vain sellainen valtioiden Minulla on maailman, niin että speak-- olosuhteet minun world-- on joko Minulla elektronit virtaa, sähkö virtaava, tai teen not-- niin edelleen, pois. Ja nyt virallistaa päälle ja pois, kuin tietokone tiedemies voi, vain 1 ja 0. Katsotaan vain kuvata joitakin mielivaltaisia mutta johdonmukainen numeron määrittäminen. 1 keinoja, 0 tarkoittaa pois. Tai ehkä myös tarkastella tätä tosi välinein ja vääriä keinoja. Voit myös tehdä musta ja valkoinen tai punainen ja sininen. Tarvitset vain kaksi kuvaajia. Ja tietotekniikan tutkijoita olisi yleensä vain käyttää 0 ja 1. Joten jos näin on, minun ainoa aakkoset koostu 0: n ja 1: n, miten voisinko mahdollisesti saada jopa niiden lukumäärän 2 tietokoneessa, puhumattakaan numero 3 tai kirjain tai kuvan tai elokuvan? Miten tavallaan bootstrap itseämme tästä periaatteesta 0: n ja 1: n ja itse edustavat jotain mielenkiintoisempaa? No, esittää tämän kysymyksen pidossa vain hetken ja harkita jotain toivottavasti tuttu, vaikka et ole ajatellut sitä yksityiskohtaisesti 10, 20, 30, 40, 50 vuotta. Tämä on mitä? Miten lausutaan? Ei kompakysymys. Useita, mutta mitä se on? 1, 2, 3, tai 123. Ja pidin miten sanoit 1, 2, 3, koska se on yksi tapa tarkastella sitä. 1, 2, 3, se on sekvenssi kolme symbolia. Se kuvaa, että me nyt sanoja. Ja jos sellainen lukea niitä kaikkia yhdessä, tyypillinen ihmisen in Englanti sanoisi 123. Ja se on eräänlainen korkeamman tason käsite, tuntuu melko suuri määrä. Mutta kuinka tähän päästään? No, se voi olla jonkin aikaa, koska olet ajatellut sitä näin, mutta takaisin minun päivä, minä Tällainen oppinut tämän kuten 1: n pylväs, 10: n sarake, ja 100: n sarakkeeseen. Niin kuin Lakisa sanoo, se on 1, 2, 3, mutta se on myös 123. Mutta miten saamme entinen jälkimmäiseen? No, te yleensä tehdä 100: n pylväs, olen 1. Niin, että on kuin sanoisi 100 kertaa 1. Ja sitten 10: n sarakkeessa, olen 2. Niin, että on kuin sanoisi 10 kertaa 2. Vuonna 1 sarake, olen 3. Niin, että on kuin sanonta 1 kertaa 3. Ja jos voin lisätä nämä asiat yhdessä, tämä tietenkin, on 100 plus 10 plus 3. Ja oi, siksi saan tämän korkeamman tason käsite 123. Se on vain perustiedot matematiikasta, jolloin nämä symboleilla on painot heille jos se, paikkamerkkikentät tai sarakkeen arvoja. Ja kun minä lisään kaiken out, saan tämän numeron. Kuinka monet teistä tietävät, miten puhua binary-- 0: n ja 1's-- kuin tietokone? OK, täydellinen, kukaan, tai kukaan luulet tehdä. Haluan kuitenkin väität oikeastaan ​​tiedä tätä jo. Meidän täytyy vain eräänlainen nipistää henkistä malli hieman. Mutta prosessi on täsmälleen sama. Saanen jättää tämä sinne ja sen sijaan vetää tämän syrjään hetkeksi. Kun maailma tietokoneiden, meillä on vain 0: n ja 1: n. Ja niin asia, joka on tulee muuttumaan on mitä? No, minun ihmisen maailmassa, desimaalijärjestelmällä, joulukuu merkitys 10, Minulla on, kuinka monta numeroa käytettävissäni? 10, eikö? 0 kautta 9, tietenkin. Ja siksi meillä on 10 paikka ja 100: n paikan. Jos on, että tulee? No, tämä on 10 potenssiin 0. Tämä on 10 potenssiin 1, 10 valtaa 2, ja niin edelleen. Sinä vain pitää kertomalla sarakkeet 10, alkaen pois vain 1 oikeanpuoleisessa täältä. Joten maailmassa tietokoneet, jos vain on binary-- bi merkitys 2-- tai 0: n ja 1: n, me vain todellakaan tarvitse muuttaa pohjan, joka matematiikkaa. Eli toisin sanoen, nyt me vain on 1 sarake ja tyylillisesti missä tämä going-- 2 sarake, 4 sarake, ja ehkä sen jälkeen. Miksi niin? No, tämä on 2 0-th valtaa. Tämä on 2 1. Tämä on 2 2, ja niin edelleen. Joten taas täällä, meillä on 1, 10: n, 100: n, 1000: n, 10000: n, 100000: n, 1 miljoonia, ja niin edelleen, tässä Meillä on 1, 2, 4, 8, 16, 32, 64. Sinä vain pitää kertomalla 2, sijaan pitää kertomalla 10. Joten nyt, jos tavoitteena on käsi on edustaa numeroita käytetään vain 0: n ja 1: n, Tarkastellaan miten me sinne. Tämä tietenkin on malli 0 0 0, mutta mitä numero käsitteellisesti se edustaa? No, 4 kertaa 0 plus 2 kertaa 0 plus 1 kertaa 0, nyt lisätä ne yhdessä. 4 kertaa 0 on, tietenkin, 0, plus 2 kertaa 0 on tietenkin, 0 + 1 kertaa 0 on tietenkin, 0. Niin ah, tämä edustaa numero me ihmiset tunnemme 0. No, nyt, nyt hyvin nopeasti eteenpäin. Jos en sen sijaan ole edustava 0 0 0, mutta tehkäämme 1 0 1, jotka saattavat olla kuinka Lakisa, aikaisemmin, olisi vain sana se 1 0 1. Mutta nyt, miten voimme ottaa sen korkeammalle tasoittaa numero me ihmiset voisi tietää? Joten mikä on tämän numeron? Se on 5, numero tunnemme 5. No, miksi näin on? No, voimme todella tavallaan kulkea läpi järjestelmällisesti 4 kertaa 1, 2 kertaa 0, 1 kertaa 1. Lisätä ne yhteen, niin Tämä on 4 plus 0 plus 1. Ja se tosiaankin 5. Joten se alkaa vähän ikävä nyt tekee aritmeettinen uudestaan ​​ja uudestaan. Mutta prosessi on täsmälleen sama. Ainoa asia, joka on muuttunut maailmassamme on se, että sarakkeet ovat 1, 2, 4, 8, 16, ja niin edelleen, sijasta 1, 10, 100, 1000. Ja juuri siksi meidän aakkoset on kutistuneet 0 kautta 9 vain 0-1. Niin kuin pieni tietokilpailu täällä, miten olisi te edustavat useita 7 binary? 0? No, 0, tarkoitat 0 0 0? Sano se uudestaan, Karina. Täydellinen. Miksi niin? Se tehokkaasti 4 plus 2 plus 1. Niin hyvä. Miten edustaa hieman another-- miten numero 2? Lähellä, mutta takaperin. Joten mitä tämä on? On 4 plus 1, niin se on 5 uudelleen. Joten what's-- Anteeksi, Karina? 0 1 0. 0 1 0 olisivat 2, koska uudelleen, vaikka jos se tavallaan ei hyppää ulos teille, vain tehdä matematiikka. 4 kertaa 0, 0, 2 kertaa 1 on 2, 1 kertaa 0 on 0. Joten tämä on numero tunnemme 2. Entä numero 8? Hm? Hyvä. Joten me sellaista tarvitsemme toisen paikkamerkki. Tarvitaan 1 0 0 0. Ja se on totta meidän lajitella vanhan koulun desimaalin järjestelmään. Miten edustavat useita 1000? No, te näyttäisi olevan eräänlainen kova paikka, jos pyytää edustamaan numero 1000, sillä vaikka annat itsellesi kuten 9 näistä, 9 näistä, 0 näistä, joka on suurin numero on, et ole aivan päästä 1000. Joten jos 1000, sinun täytyy vain toisen asentoon, niin että voit tehdä 1 0 0 0, ergo numero 1000. Joten nyt, nyt kartta tällaista käsitteellinen keskustelu takaisin laitteisto, jos taas tulo oli vain tämä pieni virtajohto, sähkö tulossa ja virtaa ulos. Ja niin, että on kartoitettava täältä siellä, hyvin, mitä me todella tarvitsemme? No, voit ajatella olemisen sisällä tietokone, koko joukko hehkulamppuja, jos haluat. He todella kutsutaan transistoria. Ja transistorit ovat vain kytkimet joka voi olla joko päälle tai pois päältä. Voit siis ajatella transistori, joka tällä sallii sähköä virrata ja transistori, joka on pois lopettamalla sähköä virtaamasta. Ja sen sijaan ottaa yli valot täällä, miksi en tee tällaista Uusien koulun tyyliin. Joten tämä voi olla 1, taskulamppu olemisesta, vain tuskin tosin. Ja tämä voi olla 0, ja nyt se on pois. Joten tällä fyysinen laite, I voivat nyt edustaa binary järjestelmään. Tarvitsen vain kaksi valtiota. Sillä ei ole väliä, mitä väri se on tai mitä se on. Tärkeää on, että minulla on yksi tilassa ja toisen valtion pois. Joten käyttää minun puhelinta täällä, miten voin edustavat useita tunnemme 0? Tai laittaa vastaavasti, mitä numero olen edustavat nyt? 0, koska laite on pois päältä. Ja jos en tee tätä? Ja nyt, miten voin edustavat useita 2? Voinko lainata puhelinta täällä, kuten teimme eilen? Katsotaanpa, joten jos haluan edustaa numero 2, on tämä numero 2? Ei. Mikä numero olen vahingossa edustavat täällä? Tämä on itse asiassa numero 3. Joten kumpi haluanko sammuttaa? Musta puhelin or-- hyvin, jos they're-- musta puhelin tai valkoinen puhelin? Valkoiset puhelin. Jos siis kääntää tämän pois ja me line sen tänne, meillä on 1 että 2: n paikka ja 0 in 1 paikka. Ja niin olen nyt edustaa numero 2. Ja tämä tietenkin olisi numero 3, koska nyt molemmat valot ovat päällä. Ja minä pysähtyä tähän, mutta on aivan selvää jos haluan edustaa numero 4 tai 8 tai korkeampi, Aion tarvitsevat enemmän puhelimia. Mutta se kaikki mitä on meneillään. Joten jos olet koskaan kuullut, että sisäpuoli A-- kiitos sinä-- tietokone on miljoonia transistoreita, joka on vain miljoonia pikku kytkimiä. Ja ne eivät ole valoa sipulit, että päälle ja pois päältä, mutta ne eivät myöskään anna sähköä virrata jonnekin tai lopettaa se. Ja niin siellä teidän kaksi states-- päälle tai pois, päälle tai pois päältä. Joten me näyttäisi nyt on tämä kyky edustamaan tätä käsitettä että haluaisimme todellisessa laitteisto. Mutta meidän täytyy nyt on kyky edustamaan numeroita näyttäisi. Miten siis edetä edustavat kirjaimet, jotka tuntuu seuraavan sellaista ominaisuutta haluaisi lisätä nykyaikaisen tietokoneen kun olet numerot? Ja todellakin, jos ajattelee se, historiallisesti, tietokoneet esiteltiin todella palvella kuten laskimet numeerisesti. Mutta tietenkin nämä päivinä, he tekevät paljon enemmän. Vaikka he käynnistyä, sinun tyypillisesti nähdä yhden tai useamman sanan. Joten miten edustavat sanoja, jos kaikki sinulla on, jälleen, sähköä lopussa päivä, tai vastaavasti 0: n ja 1: n? Joo. Niin, tarkoitan, me tavallaan teki Tämän eilen jossain muodossa, jossa jossain vaiheessa, Uskon mielivaltaisesti sanoi, että jos haluamme edustaa kirjain A, voisimme vain soittaa, että 1. Se oli yhteydessä salakirjoituksen, jossa vain tarvitaan jonkinlaista koodia, jonkinlainen kartoitus. Joten ehkä A olla edustettuna 1, ja B on edustettuna 2, ja Z on edustettuna kuin 26, esimerkiksi. Ja niin ainoa ehto on, että jos olen menossa koodata kirjeet omassa sähköpostit tai minun tekstiviestejä numeroita, te kaikki on sovittava käyttämään samoja sopimuksia. Ja todellakin, maailma on tehnyt juuri näin. On järjestelmä maailmassa nimeltään ASCII, American Standard Code for Information Interchange, joka on yksinkertaisesti päätös joitakin vuosia sitten, että ihmisillä tehdyt että päätti, että on menossa sama, ei 1, 2, ja 26, ja niin forth-- se on pikku different-- mutta 65, 66, 67. Ja minä vetää ylös kaavio vain hetken. Mutta se on mielivaltainen. Mutta sillä ei ole väliä että se on mielivaltainen. Maailmassa on vain olla johdonmukaisia. Nyt nyttemmin siellä on jotain hienompaa nimeltään Unicode, koska maailman laji toteutuneiden jälkeen keksimisestä tietokoneet, että siellä on enemmän kuin hyvin 256 symbolien maailmassa että voisimme haluta esittää, varsinkin kun käyttöön Aasian kielten ja muiden symbologies jotka tarvitsevat enemmän ilmaisuvoimaa kuin te mahtuu vanhimman version Tämän koodin, jota kutsuttiin ASCII. Joten Unicode todella sallii voit käyttää enemmän 0 n ja 2. Erityisesti pidät kuulo sana tavua yhteiskunnassa ja jopa vain eilen. Ja tavu on mitä taas? Mikä on tavu? Se on vain 8 bittiä. Joten mitä se oikeastaan ​​tarkoittaa? No, se tarkoittaa, aiemmin, kun olimme puhutaan binary ja käytin mielivaltaisesti kolme bittiä, kun olimme puhumme binary-- 1 paikka, 2 paikka, ja 4: n place-- hyvin, tavu vain tarkoittaa, että puhut ei yksikköinä kolme, mutta neljä, viisi, kuusi, seitsemän kahdeksan, joka antaa meille 8 paikka, 16: n, 32: n, 64: n, ja 128: n. Toisin sanoen, vähän ei ole kaikki että hyödyllinen mittayksikkö, koska se on aivan kuin yksi pikku tieto, päälle tai pois päältä. Joten joitakin vuosia sitten, maailmassa juuri päättänyt se on hieman helpompaa puhua mitattuna tavua, kahdeksan asioita kerrallaan. Ja niin näin syntyi käsite tavu. Ja niin meillä on kahdeksan bittiä täällä. Ja se osoittautuu myös samankaltaisia syistä maailma päätti vuosina sitten, että edustaa ASCII kirjain, aiot käyttää yksikköä 8 bittiä. Joten vaikka et tarvitsevat, että monet, olet aina menossa käyttää 8 bittiä edustavat aakkosten kirjain. Ja tämä on kätevä, koska silloin jos tulee sanoma, on 0 0 0 1 1 1 1 0 ja sen jälkeen vielä 1 1 1 0 1 0 0 1, joten jos saat 16 bitit, maailma voi vain oletetaan, että ensimmäinen 8 ovat yksi kirjain ja toinen 8 ovat toinen kirjain. Ei ole väliä kuinka monta niitä on. Se vain on merkitystä, että Olemme kaikki yhdenmukaisia kun olemme tulkittaessa bittiä. Ja tämä oli vain satunnainen. Se tarkoittaa jotain, mutta en todella miettiä, mitä se tarkoittaa. Joten se on pieni valkoinen valhe. Alunperin ASCII todella käytetään vain 7 bittiä. Ja kahdeksas bitti on pidennetyt ASCII. Mutta kohta on lopulta sama. Maailman yleensä standardoitu 8 bittiä. Joten tämä näyttäisi olevan hieman rajoittava, koska voin vain edustavat pääoma A, pääoma B pääomayhteyksien Z. Mutta tosiaan ole, jos menen to-- siellä on joukko resursseja verkossa, esimerkiksi, asciitable.com, tämä tulee olemaan hieman ylivoimainen aluksi. Mutta minä huomauttaa mikä on tärkeää. Tämä sattuu be-- ja minä walk-- katsotaanpa, jos menen tänne. Tässä on, että desimaalin sarake, numero 65. Ja oikealla palstalla kirjain merkki, Chr, on kirjain A. Ja voit jättää, nyt, kaikki keskellä. Tämä on heksadesimaali, oktaali, ja HTML-koodia. Jotta tämä sivusto on vain yrittää heittää paljon tietoa sinulle heti. Mutta kaikki välitämme on desimaalin sarake ja merkki sarakkeeseen. Joten tämä logiikka, mitä on numero että maailma on päättänyt esittää pienet kirjaimet a? Niin, 97. Ja vain hämmentää mahdollisesti hieman, mitä numero on maailman päättänyt edustaisi numero 1? Oikea, koska we-- 49, se näyttää täällä, alas alhaalla vasemmalla. Nyt, mitä tarkoitan tällä? Joten käy ilmi, että tietokonejärjestelmiin, on yleensä perustavanlaatuinen ero välillä useita ja merkin. Useita on asia, oppinut kasvaa, kun olimme erittäin nuori alakoulussa. On asioita laskit kanssa. Mutta hahmo on vain muoto, joka on glyph, niin sanotusti, ruudulla. Nyt me ihmiset tavallaan nähdä jotain, joka näyttää tältä. Ja me sanomme, oi, että on numero 2. Mutta ei, se on vain symboli, joka näyttää kuin mitä me tiedämme kuin numero 2. Ja niin on tämä perusero välillä todellisten numeroita ja kirjaimia. Tämä on numero. Mutta yleisesti, että yhteydessä tietokoneeseen, Jos sen sijaan nähdä jotain tällaista quoted-- ja et aina täytyy nähdä se lainattu, mutta vuoksi discussion-- jos näet lainausmerkkeihin numero, tämä on nyt hahmo. Joten tämä numero 2 alla huppu sisällä tietokoneen olisivat edustettuina kuviolla bittien lukumäärää kuvaavat 50 kaavion mukaan verkossa. Kuitenkin, jos tietokone juuri näkee tämän, tämä olisivat edustettuina kanssa kuvio bitti 0 0 0 0 0 0 1 0. Katsovat, tämä merkki olisi todella olla edustettuna as-- ja nyt, Sain ajatella hieman harder-- joten tämä luonne olisivat edustettuina 0 0 1-- mitä tarvitsen täällä? 0 0 1 1 0 0 1 0. Miten teen tämän? No tämä on numero 50, jos moninkertaistaa sitä käyttäen näitä sarakkeita, tämä on numero 2, ja niin siksi on tämä kahtiajako. Ja tämä on vain teaser nyt ominaisuuksia joita esiintyy ohjelmointikieliä että me käsitellä lyhyesti myöhemmin tänään. Vuonna ohjelmointikielet, olet yleensä, mutta ei aina, asiat soittaa erilaiset tiedot. Toisin sanoen, programmer-- kun hän kirjoittaa, ohjelmoija saa päättää, missä formaatti tallentaa hänen tietoja. Voit joko tallentaa tietoja raaka numerot, kuten numero 2. Tai voit tallentaa ne jouset, tai merkkijonoja että voisitte yleensä ilmaista kanssa lainauksia ohjelmointikielellä. Voi olla asioita called-- Minä pelkistettyjen ja soita heille real numbers-- niin numerot eivät ole kokonaislukuja, kuten numero 2, mutta numerot kuten 4.56. Joten todelliset luvut voivat myös on desimaaliin, niin se on eri olennainen pala dataa tietokoneella. Ja sitten voit jopa muita tietotyyppejä edelleen. Niin, että on vain teaser todella on yksinkertaisin suunnittelu päätösten että ohjelmoija saattaa tehdä alla huppu. Joten kysymyksiä aivan vielä? Joten yritä tämä hieman enemmän todellisia. Tämä laitteisto ei ole niin paljon enää käytössä. Mutta useimmat jokainen tässä huoneessa luultavasti kasvoin ja käyttää edelleen kiintolevyt jotenkin. Vaikka useimmat läppäreissä ei enää on laitteita, jotka toimivat näin, sen sijaan kannettavat tänään yleisesti on solid state drives jossa ei ole liikkuvia osia. Ja että yleensä kalliimpia, valitettavasti mutta hieman nopeammin ja A-- hyvin usein, paljon nopeammin, joka on yksi syy. Ja se ei tuottaa niin paljon lämpöä. Se voi olla pienempi, joten se on yleensä on positiivinen. Mutta tämä antaa meille mahdollisuuden kartoittaa hieman konkreettisemmin mitä me puhumme klo 0: n ja 1: n taso nyt fyysinen laite. Se on yksi asia minulle puhumaan noin 0: n ja 1: n suhteen puhelimeni tai abstraktisti suhteen kytkimet olemisesta ja pois. Mutta entä kovalevyjä? Vuonna kannettavat tietokoneet, jos sinulla on vanhempi yksi tai pöytätietokoneen, tai varmasti palvelimissa tänään, missä olet kiintolevyt, jotka ovat teratavun tilaa, 4 teratavua tilaa, hyvin mitä se tarkoittaa? Kovalevy 1 teratavu tilaa keinoin siellä oli 1 biljoona tavua sen sisällä jotenkin, tai vastaavasti 8000 miljardia bittiä sisällä. 1 teratavu olisi 8 terabits tai 1000 miljardia bittiä, joka Jos siis on kova ajaa, olet jotenkin tai muu biljoona 0: n ja 1: n sisälle. Ja jos me vain katsomaan klo mielivaltainen kuva kovalevy edustaja, tämä on mitä kova ajaa voisi tyypillisesti näyttää sisälle. Sekin on ikään kuin vanha levysoitin pelaaja mutta yleensä useita tietueita sisällä, niin että speak-- useita Platters, koska niitä kutsutaan, metalli ympyrälevy, ja sitten hieman lukupää, paljon kuin vanha levysoitin. Ja että lukupää liikkuu taaksepäin ja esiin ja jotenkin lukee bittejä. Ja mikä seuraavilla Platters, jopa vaikka me ihmiset näe niitä, joko todellisuudessa tai tässä kuvassa, siellä pikku magneettisia hiukkasia. Ja vaikka olet pitkä unohtanut kuinka sähkö toimii, magneettipartikkeli joka on ladattu yleisesti on pohjoispäässä ja etelään end-- niin pohjoiseen ja etelään. Ja niin maailma juuri päätti jokin aika sitten että jos magneettinen protokolla olennaisesti tasataan näin, pohjois-etelä, kutsukaamme että 1. Jos se sen sijaan etelä-pohjoinen, Haluan vain soittaa, että 0. Jos siis oltava käytettävissänne biljoona pikku magneettinen particles-- ja toivottavasti, laitteisto kekseliäisyyttä Jotta kääntää ympärillään kuin näet fit-- jos haluat edustavat koko joukko 0: n, et tarvitsee vain 8 magneettisia hiukkasia kaikki linjassa näin. Ja jos haluat edustamaan Kahdeksan 1: n, juuri tarvitsevat 8 magneettiset partikkelit linjassa takaisin takaisin takaisin näin. Mitä tarkoitan, että magneettisia hiukkasia? Suoraan sanottuna, kaikki nämä vuotta myöhemmin, asia, joka vielä tulee mieleeni se tyyppi, jos kasvoin tämä asia. Tämä on little-- varten ne unfamiliar-- pikku lapsuuden lelu, joka on tämä karvaton mies täällä joka on kaikki nämä pikku mustat magneettiset partikkelit, jotka tulevat sen kanssa. Ja käyttämällä että punainen tikku, joka on vain magneetti, voit tavallaan antaa hänelle viikset tai kulmakarvat tai hiusten tai mitään hänelle. Joten itse asiassa, jos me zoomata in, esimerkiksi tämän on sellainen pelin voi pelata Wooly Willy. Ja tämä on vain sanoa, nämä ovat paljon suurempia magneettisia hiukkasia kuin todella kiintolevylle, ja paljon vähemmän magneettisia hiukkasia. Mutta katsotaanpa itse nähdä sitten jos ei ole pieniä magneettisia hiukkasia kiintolevy, miten voit itse käyttää näitä edustamaan tietoja. [VIDEOTOISTOSTA] -The Kiintolevy on missä tietokoneessa tallentaa useimmat sen pysyviä tietoja. Voit tehdä sen, data kulkee RAM pitkin ohjelmisto signaalien, jotka kertovat kovalevy miten tallentaa tietoja. Kiintolevy piirit kääntää ne signaalit jännitteen vaihtelut. Nämä puolestaan ​​ohjaavat kiintolevyn liikkuva parts-- joitakin harvoja liikkuvia osat jätetään nykyaikaisen tietokoneen. Jotkin signaalit ohjaavat moottorin, joka pyörii Sinkityn Platters. Tietosi on oikeastaan tallennetaan nämä Platters. Muut signaalit siirtää luku / kirjoitus päätä lukemaan tai kirjoittamaan tietoja Platters. Tämä kone on niin tarkka että hiuksista voinut edes kulkevat päiden ja spinning Platters. Silti se kaikki toimii loistava nopeuksilla. [END TOISTO] Ja näet tällä takapäässä videon, on yleensä useita Platters. Ja niin, että lukeminen pää ei vain lukemalla alkuun. Se on ikään kuin kolme tai neljä tai useampia lukupäät jotka liikkuvat näin, datan lukemisen samanaikaisesti. Joten siellä on paljon monimutkaisuus ja tavallaan ajoitus joka on mukana kiintolevylle. Ja asia pyörii todella hiton nopea, joten siellä on paljon monimutkaisuutta. Mutta nyt zoomata hieman syvemmälle ja nähdä, missä nämä magneettisia hiukkasia ja miten saamme niitä. [VIDEOTOISTOSTA] -Anna N katsoa, ​​mitä me Näin juuri hidastettuna. Kun lyhyt pulssi sähköä lähetetään luku / kirjoituspää, se kääntää pieni sähkömagneettinen murto toisen. Magneetin luo kenttä, joka muuttuu napaisuus pieni, pieni osa metallihiukkasten joka takki jokainen vati pintaa. Kuviota sarja näitä pieniä peritään alueilla levylle edustaa yhden databitin, että binäärilukujärjestelmän jota tietokoneet. Nyt, jos nykyinen lähetetään yksi läpi luku / kirjoituspää, alue on polarisoitu yhteen suuntaan. Jos nykyinen lähetetään vastakkaiseen suuntaan, polarisaatio on päinvastainen. Miten saat tietoja pois kiintolevyltä? Vain kääntää prosessi. Joten se on hiukkasia levy, joka saa nykyisen read / write head liikkuu. Kokoa miljoonia Näiden magnetisoitu segmentit, ja olet saanut tiedoston. Nyt palaset yhteen tiedostoon voi olla hajallaan ympäri ajaa n platters, ikään kuin sotku paperit pöydällä. Joten erityismerkki tiedosto pitää Seuraa jossa kaikki on. Etkö halua teillä oli jotain sellaista? [END TOISTO] Joten on viitattu siellä, ehkä, on että aihe eilisen poistamisesta. Kun poistat tiedosto, eilen sanoimme että tietokone todella tekee mitä, kun vedät jotakin roskakoriin tai roskakori? Se vain unohtaa sen. Mutta 0: n ja 1: n, magneettiset partikkelit että näyttää punaista ja sinistä asioita täällä, tai käteni täällä, ovat edelleen olemassa kiintolevylle. Ja niin on olemassa software-- Norton Utilities ja Yesteryear ja muut nykyaikaisempi software-- että juuri skannaa koko kiintolevyn etsii ollenkaan niitä 0: n ja 1: n, koska se Osoittautuu, että useimmat tiedosto alustat-- Word-asiakirjoja, Excel-tiedostoja, kuvia, video files-- kaikilla on tietty malleja, jotka ovat yhteisiä joukossa. Jokainen videotiedosto saattaisi olla eri video, mutta muutamien ensimmäisten bitit ovat yleensä samat. Tai viimeinen usean bitin ovat yleensä samat. Ja niin suurella todennäköisyydellä, voit etsiä niitä kuvioita. Ja vaikka tiedosto on unohtunut, voit sanoa suurella todennäköisyydellä, mutta tämä näyttää Word-asiakirjaan, lets palauttaa sen ja un-unohtaa sitä, jos haluat. Ja niin se miten voit palauttaa data, joka on joko ollut vahingossa poistettu tai poistettu tai tahallisesti Poistetaan jostain tarkoituksiin. Sen sijaan turvallisen poisto tekee mitä yhteydessä kuvan näin? Täsmälleen, tekee niistä satunnaisesti. Joten se tavallaan siirtää joitakin ne alas, jotkut heistä ylös, jättää jotkut heistä ennallaan, ja yleensä tekee kohinaa pois, tai vain ehkä tekee kaikki ne 0: n tai kaikki 1: n. Ja sekin voi yleensä hangata tiedot pois. Joten palaa nyt kysymykseen Laskennallisen ajattelu, jolloin olemme laskentakomponentit. Ja algoritmit antaa te tuottaa lopulta. Keskitymme nyt panoksiin ja lähdöt, koska nyt, minä vaatimus meillä on tapa edustavat tulot ja lähdöt. Olemme juuri menossa käyttää binary. Ja mitä me haluavat edustaa tänään, onko se numero tai kirjain tai tuhansia sen puhelinluettelosta tai kuvia tai elokuvia, lopussa Päivän, se on kaikki 0: n ja 1: n. Ja minä väittävät, että vaikka tämä on erittäin yksinkertainen maailma vain 0: n ja 1: n, voimme rakentaa itse ylös. Ja olemme nähneet yksi esimerkki että kirjaimia toistaiseksi. Joten keskittyä nyt tähän keskimmäinen ainesosa, algoritmi. Ja nyt palata tähän Esimerkkinä Mike Smith. Joten tässä puhelinluettelossa, joka tosin emme käytä niin paljon enää, siellä ongelma on ratkaistava. Haluamme löytää joku kuten Mike Smith. Ja mitä voisi teen löytää Mike? No, voisin vain avata tämä kirja, alkavat ensimmäisellä sivulla, ja ymmärtää, oi, olen A-osassa. Mike ei ole siellä. Tarvitsen S osio Smith. Joten vain pitää kääntää yksi sivu kerrallaan. Saanen teeskennellä, että tämä on kaikki valkoiset sivut eikä keltaisia ​​sivuja, koska emme aio löytää Mike keltaiset sivut muutenkin. Mutta olen valkoisille sivuille. Ja nyt, olen B osassa. En ole vielä löytänyt häntä. Joten pidän kääntämällä yksi sivu kerrallaan. Tämä on algoritmi. Se on joukko ohjeita ratkaista joitakin ongelmia. Toisin sanoen, katso sivu, jos Mike ei ole sitä, käännä sivua, ja toistoja uudestaan ​​ja uudestaan ​​ja uudestaan, ihanteellisesti katselee kuin teet sen. Joten tämä algoritmi, Tämän prosessin oikea? Anteeksi. En kuulla nos. OK, mutta se is-- joo, se on varmasti ikävä. Kuten, me olla täällä koko päivän, jos I etsimme Mike tällä nopeudella. Haluan kuitenkin väittävät että se oikein. Se on typerää, mutta se on oikein. Lopussa päivän, kunhan se voisi ottaa, löydän Mike, jos hän on siellä ja olen kiinnittänyt huomiota. Ja minä lopulta saavuttaa hänen sivulla. Ja jos saan liian pitkälle, jos Pääsen T §, niin voin hieman optimoida ja vain sanoa, hm, kaikki tehdään. En edes tarvitse tuhlata aika menossa Z: n. Mutta tämä on erittäin lineaarinen lähestymistapa, jos tulee, hyvin eräänlainen vasen-to-oikeutta lähestymistapa, suora viiva. Ja sen oikea mutta hidas. Joten muistan asteella sort optimoinnin ensimmäisestä luokkalainen, missä Opin laskemaan ei mukaan ne vaan twos-- niin 2, 4, 6. Se on, paljon vaikeampi do, mutta teoriassa, se on faster-- 8, 10, 12, 14, ja niin edelleen. Miten siitä algoritmi? Onko se tehokkaampi? Onko se nopeampi? Yleisö: Se on tehokas. DAVID MALAN: Joo, niin se def-- se kirjaimellisesti kaksi kertaa niin nopeasti, olettaen I Älä päästä lauennut kanssa sormiani. Se on kaksi kertaa niin nopeasti, koska Olen kääntämällä kahden sivuja kerralla yhden sijasta, mutta se on mahdollisesti oikeassa, koska miksi? Yleisö: Sinä ohita joitakin. DAVID MALAN: Oikea, mitä jos Mike tapahtuu voidaan sandwiched-- ehkä kun olen myöhemmin puhelinluettelosta, Mike sattuu olemaan välissä nämä kaksi sivua, ja minä vain sokeasti hypätä sen yli. Joten tarvitsemme hieman korjata siellä. Kun osuin T §, I voi vain luottavaisesti sanoa, emme löytäneet Mike Smith. Luultavasti täytyy taittaa. Tai itse asiassa, kun en pääse jonkun nimeltään S-N, sijasta S-M Smith, heti, minä voi kaksinkertaistua takaisin, koska ehkä hän oli edellisellä sivulla. Mutta en tarvitse taittaa pitkälle. Teoriassa jos teen sen oikeaan aika, minä vain mennä takaisin yhdellä sivulla. Joten se lisäämällä vain yksi ylimääräinen vaihe. Joten olen mennyt kaksi kertaa niin nopeasti, mutta se maksaa minulle yksi ylimääräinen sivu. Mutta se tuntuu nettovoitto. Mutta tämä ei ole, miten useimmat ihmiset Tässä huoneessa ratkaisisi tämän ongelman. Mikä olisi tyypillinen henkilö, ehkä Muutama vuosi sitten tehdä, löytää Mike Smith? Joo, ei löytänyt Mike. Mitä teen? Joten hieman lähempänä, mutta en soittaessaan mikä on totta noin puhelinluettelosta? Yleisö: Se on peräkkäinen. DAVID MALAN: Se on peräkkäinen. Se on aakkosellinen. Ja niin jos olen M osassa, Mike on selvästi oikealle, Voin kirjaimellisesti repiä ongelma half-- se on yleensä helpompaa kuin that-- repiä ongelma kahtia ja heittää sen pois, niin että nyt, minulla on ongelma, joka on ei enää 1000 pages-- joka oli kova, koska mielestäni olen itse repesi puhelinluettelon tämä time-- ei 1000 sivua, mutta 500. Joten ongelma on kirjaimellisesti puolta suurempi. Ja se on aika vakuuttava, koska minun edellinen algoritmeja, versio 1 ja 2, olin vain tehdä ongelma yhden sivun pienempi, kaksi sivua pienempää kerrallaan. Kun taas nyt, tein sen 500 sivut pienempiä kaikki kerralla. OK, joten nyt, Karim ehdottaa että menen oikea puoli. Joten aion mennä karkeasti keskelle, antaa tai ottaa. Ja jos en tätä matemaattisesti, Voisin mennä oikealle keskelle. Ja nyt, ymmärrän, OH, Olen T- osiossa. Olen oikeastaan ​​mennä liian pitkälle. Mutta voin jälleen repiä ongelma kahtia, heitä se pois. Ja minun tavua ei ole niin suuri. Se on vain, mitä, 256 sivua tai 250 sivuja, antaa tai ottaa juuri nyt. Mutta se on vielä paljon enemmän kuin yhden sivun tai kaksi sivua. Ja niin nyt, menen suunnilleen keskelle. Voi, en mene aivan tarpeeksi pitkälle nyt. Joten toistan, toista, toista, Toista, kunnes olen toivottavasti jää vain yhdellä sivulla. Niin että on kysyttävä, jos olen alkoi noin 1000 sivua, kuinka monta askelta se kestää minua version 1 minun algoritmi? No, jos Mike on S jakso, pahimmassa tapauksessa, se on aika lähellä loppuun aakkoset. Joten jos puhelinluettelo on 1000 sivua, Löydän Mike sisällä 1000 sivua, ota tai jätä. Ehkä se on kuin 800 tai niin, mutta se on melko lähellä 1000. Kun taas toisessa algoritmi, kuinka monta sivu kääntyy maksimaalisesti ehkä I vaativat löytää Mike Smith? On 1000 sivua, mutta olen tehdä niitä kaksi kerrallaan. Oikea, joten max kuten 500ish, koska jos menen läpi koko puhelinluettelon jossa pisteessä, voin lopettaa. Mutta voin ajella pois muutaman by vain pysähtyen T §. Mutta se on pahimmassa tapauksessa 500 sivua. Kuinka monta kertaa voin jakaa 1,00o-sivun puhelinluettelon kahtia uudelleen ja uudelleen ja again-- alkaen 1000 500 ja 250-125? Kuinka kauan ennen kuin osuin yhdellä sivulla? Joo, se on noin 10. Riippuen pyöristäminen ja tällainen, se on noin 10 sivua yhteensä tarvitse kääntää tai puhelinluetteloita on revitty. Niinpä se on aika vahva. Aloitimme 1000-sivuinen ongelma kaikissa kolmessa näistä tarinoista. Mutta ensin algoritmi, se Kesti, pahimmillaan 1000 sivu kääntyy löytää Mike. Toinen algoritmi, 500 Ohessa Mike. Kolmanneksi algoritmi, 10 sivua löytää Mike. Ja se on vielä enemmän tehokas kun ajatellaan noin eräänlainen vastakkaisen skenaario. Oletetaan, että puhelin yhtiö seuraava Vuoden ehkä yhdistää kaksi kaupunkia yhdessä, ja puhelinluettelosta on yhtäkkiä Tämä paksu, tämän sijaan, että joten 2000-sivujen sijaan 1000. No, ensimmäinen algoritmi etsii Mike Smith on 2000-sivun puhelinluettelosta, Pahimmassa tapauksessa, se vie kuinka monta sivua kääntyy ensi vuonna? Puhelinluettelo on 2000 sivua, so-- hyvin, ei yksi. Jos puhelinluettelo on kaksi kertaa niin paksu ensimmäinen algoritmi, ensimmäinen algoritmi, 2000, eikö? Pahimmassa tapauksessa, Mike on todella lähelle kirjan loppuun, niin se on 2000 sivun kierrosta. Toinen algoritmi menossa kaksittain, kuten 1000 sivua. Mutta entä kolmas ja viimeisin algoritmi? Jos puhelin yhtiö kaksinkertaistaa useita sivuja 1000 2000, kuinka monta kertaa tarvitse revin että kirja puoli löytää Mike? Yleisö: Vain yksi. DAVID MALAN: Vielä yksi, koska yhden sivun repiä, Voin kirjaimellisesti jakaa ja valloittaa, jos haluatte, että ongelma puoli tapahtuvassa massiivinen purema irti. Ja niin tämä on esimerkki tehokkuus ja todennäköisesti algoritmin jolla kaikki meistä ovat tavallaan intuitiivisesti tuttuja. Mutta se on aivan yhtä oikea minun muita algoritmeja kanssa nipistää varten toinen algoritmi, mutta se on niin paljon tehokkaampaa. Ja itse asiassa, mitä tietokone tiedemies, tai vuorostaan ​​ohjelmoija, tyypillisesti tehdä, kun kirjoitat koodi on yrittää selvittää, kunnossa, en halua minun ohjelma vain olla oikea, Haluan myös sen olevan tehokas ja ratkaista ongelmia hyvin. Kuvitella todellisessa maailmassa, kuten Google indeksoi, haut kuten miljardeja sivuja, kuvittele jos he käytetyt ensimmäinen algoritmi löytää kissoille keskuudessa miljardin pages-- katsomalla ensimmäisellä sivulla niiden tietokannassa, Toisen, kolmannen, vain katsomalla kissa, etsii kissa. Se on tosi hidas se näyttäisi. Ne voisivat sen sijaan käyttää jotakin nimeltään Binäärihaku, joka ei coincidence-- bi eli kaksi, me pitää jakamalla jotain 2, vuonna half-- he voisivat käyttää binäärihaku ja ehkä löytää kissat jopa nopeammin, tai mikä se on etsit. Ja rehellisesti, on olemassa jopa harrastaja algoritmit että tehdä paljon enemmän kuin vain jakamalla asioita kahtia jotta löytää tietoa nopeasti. Ja me puhumme hieman niistä lounaan jälkeen tänään. Joten haluan vain yrittää edustamaan tätä. Meidän ei tarvitse mennä mitään matemaattisia tai todelliset luvut. Voimme puhua tästä abstraktisti. Mutta haluan vain ehdottaa, jos oli ottaa keskustelun nyt insinöörien ehdottaa tämä algoritmi ja yrität tehdä laskettu päätös, koska ehkä insinööri sanoo sinulle, tietävät, mitä voin toteuttaa lineaarinen toimialalla kuin kaksi minuuttia. Se on niin helppoa. Binary haku ei ole kovin hieno, mutta se vie minua kuin 10 minuuttia, jotta 5 kertaa niin kauan. Siellä on kauppa täällä, jopa suhteen päättää mitä ohjelmia kirjoittaa. Kirjoitatko yksinkertaisempi algoritmi, joka vain vie kaksi minuuttia? Vai viettää enemmän aikaa, 10 minuuttia, kirjallisesti harrastaja algoritmi? Miten päättää, että tällainen kysymys? Tai voit tehdä siitä hieman enemmän todellisia. Kerron pomo se tulee viemään me joko viikon tai 10 viikkoa toteuttamiseksi ohjelmisto tällä tavalla, miten päätätte, mikä algoritmi vihreää valoa? Karim? Yleisö: Yleisö, luulisin. DAVID MALAN: Yleisö. Mitä tarkoitat yleisö? Yleisö: Jos se menee voidaan käyttää käyttäjien joka [tahtiimme] käyttäjän [tahtiimme]. Mutta jos se on jotain olet juuri tekemässä itse helpottaa ongelmaa, [Tahtiimme] nopeammin. DAVID MALAN: Joo, se on nopea ja likainen on hyvä tapa kuvata sitä. Itse asiassa, jos olet kuvaavat paljon aikaani grad koulussa, jolloin usein kertaa, Kirjoitin huono koodi tietoisesti so-- ainakin siltä minusta rationalisoida it-- tietoisesti niin, sillä vaikka olin kirjoittamassa koodia joka oli suhteellisen hidas toteuttaa, Pystyin kirjoittaa koodia itse melko nopeasti, menot vain muutaman minuutin tai tuntia ei päiviä. Ja kävi ilmi, I joskus tarvitaan nukkumaan. Joten vaikka minun koodi vaaditaan 8 tuntia ajaa, hyvin se sopii, Minä vain mennä nukkumaan, kun se kulkee. Joten tuolloin, ajattelin, että tämä oli erittäin taitava, vaikka en ilmeisesti käyneet läpi minun PhD hyvin hitaasti. Mutta käänteinen joka on että, jos olisin kirjoitusohjelmien muille ihmisille, jotka mattered enemmän kuin minua, hyvin, ottaa ne odota 8 tuntia saada takaisin niiden hakutulokset ei ole kovin vakuuttava. Ja niin enemmän aikaa edessä kirjoittaa ohjelmistoja joka on tehokkaampi, kuten meidän kolmas algoritmia, luultavasti hyödyttää käyttäjät ajan. Joten se riippuu oikeastaan ​​yli aika, kuinka nämä kustannukset täsmää. Jos aiot olla kirjallisesti ohjelmisto käyttää sitä kerran, luultavasti voisi yhtä hyvin tehdä nopea ja likainen, kuten he sanovat. Vain heittää se yhdessä. On koodi, joka embarrasses te, se on niin huono, mutta se saa työtä tehdä oikein, vaikka se ei ole tehokasta. Toisaalta, viettää enemmän aikaa jotain, saada se juuri oikea. Sitten poistetaan ajan, että etukäteen kustannukset aikaa lienee hyödyllistä, jos pitää optimoimalla yhteisen asian. Ja todellakin, se on teema ohjelmointi, tai tietojenkäsittelytiede enemmän yleisesti, pyrkivät optimoimaan ei harvinaista tapaus mutta yhteinen case-- mitä toimintaa tulee tapahtumaan uudestaan ​​ja uudestaan? Jos aiot olla miljardeja Käyttäjien hakuja sivuston, sinun pitäisi luultavasti käyttää ylimääräistä viikkoa etukäteen kirjallisesti parempia ohjelmistoja, niin että kaikki käyttäjät hyötyvät. Nyt yritetään kaapata tätä pikku kuvallisesti, mutta ei niin paljon numeerisesti. Joten tässä on vain vanha koulu kaavio. Ja haluan sanoa, että tämä on aika. Ja sillä ei ole väliä what-- oikeastaan ​​mitään, ei aikaa. Laitetaan että toisella akselilla. Sanotaan, että tämä on aika, ja tämä on koko ongelman. Ja tietojenkäsittelytieteessä voisi yleensä soittaa tämä vain n. n on kuin Go-to-muuttuja, jossa n on luku, n numero, ja se on määrä mitä panoksia olet. Joten tässä tapauksessa, n on sivumäärä. Niin se voisi olla 1,000 tapauksessa me vain kertoi. Joten aika voi olla mikä tahansa mittayksikkö. Ehkä, se on toinen. Ehkä se on päivää. Ehkä, se on kuin sivu kierrosta. Ei ole väliä. Mitä haluat lasketa, että on aikaa tai maksaa vastaavasti. Niin, että ensimmäinen algoritmi, jos minä esimerkiksi oli 1000-sivun puhelinluettelosta, Aion piirtää piste siellä, koska jos se on 1000 sivua, kesti noin 1000 sivua muuttuu, antaa tai ottaa. Ja sitten jos olisin 2000-sivun puhelinluettelosta, ja aion tehdä toisen piste täällä, koska 2000 sivua, se on kuin 2,000 sekuntia tai sivun muuttuu tai mitä tahansa. Ja niin kun sanoin aiemmin, se on Tällainen lineaarinen suhde, joka oli tahallinen, koska halusin myöhemmin on-- oikeus now-- vetää raja. Se on tavallaan suoran linja suhdetta. Kaltevuus on 1/1, jos haluatte. Samaan aikaan, toinen algoritmi sanoi, jos sinulla 1000 sivua ja käytit toista algoritmia, missä Laskin 2: n, kääntämällä kaksi sivua kerrallaan, minun pitäisi tehdä piste alle tai yli minun alkuperäinen piste? Yleisö: Alle. DAVID MALAN: Alla, koska kuten näimme, se vie vähemmän aikaa, puolet vähemmän aikaa. Joten piste on puolet yhtä suuri kuin toinen. Ja sama juttu täällä, tämä piste pitäisi varmaan olla suunnilleen siellä. Ja niin toinen algoritmi, vastaavasti on lineaarinen suhde aikaan. Ja voimme tehdä sitä sellaisenaan. Joten nyt, kolmas ja viimeinen algoritmi on hieman vaikeampi piirtää. Mutta intuitiivisesti, jos minulla 1000 sivut kolmas algoritmi, se kestää vain minua kuin 10 askelta. Ja jos minulla 2000 sivua minun kolmas algoritmi, sen olisi otettava minua ei 10 vaiheet, mutta 11, vain yksi. Olemme siis vain hädin tuskin näkemään tämän. Ja se kääntyy pois, jos Olen zoomata tässä, olen menossa liioitella tehostesovelluksiin, muoto, joka linja, lopulta, ei ole suora line-- koska todellakin jos se olisi, se näyttää enemmän others-- se on todella kaareva viiva että jos me zoomata, on menossa näyttää paljon enemmän kuin tämä. It-- hyvin, OK, sivuuttaa tätä osaa. Se oli minun kynä menee kulma. Se on kaareva linja, joka on aina kasvaa, aina, aina, aina kasvaa, mutta vain juuri ja juuri. Ja niin ajan mittaan, olet suhde, joka on enemmän kuin tämä. Se melkein näyttää suoraan. Mutta se on aina niin hitaasti kasvaa. Mutta lähes kaikissa kohdissa sinun x-akselin, vaaka-akselilla, se on pienempi kuin muilla radoilla. Joten tämä voisi olla suhde n, jolloin jos olet n sivuja, vie n sekuntia. Tämä saattaa olla suhde n / 2. Sinulla on n sivuja, se kestää te n / 2 sekuntia, puolet siitä. Ja tämä on logaritminen suhdetta, joka Jos muistatte, log pohja 2 n kaappaa tällainen kasvu, niin sanotusti. Joten tämä on eräänlainen pyhä malja joukossa kolme näistä täällä, koska se on vain niin paljon enemmän tehokas, mutta luultavasti monimutkaisempi toteuttaa. Kysymyksiä? No anna minun tehdä tämän, anna minulle avata teksti-ikkunaan vain niin voimme yrittää virallistaa jotain. Joten anna minun mennä eteenpäin nyt ja toteuttaa tämän algoritmin löytää Mike Smith koodina, jos haluatte, pseudokoodit koodia. En aio käyttää Java tai C ++. Olen juuri menossa käyttää sellaista Englanti-syntaksi, jota olisi yleensä soittaa pseudokoodit koodia. Täällä, olen tyhjä ikkuna. Ja sanon vaiheessa 1 hyvin Ensimmäinen algoritmi on poimia puhelinluettelosta. Vaihe 2 on avoin kirja ensimmäisen sivun. Vaihe 3 on tarkastella sivun Mike Smith. Jos sivulla, soita Mike. muuten puolestaan ​​sivulle ja siirry vaiheeseen 3. Tehty, sanokaamme. Ja niin se ei ole aivan täydellinen, joka näemme hetken. Mutta Tarkastellaan mitä käsitteet Olen esitteli täällä. Joten vaiheet 1 ja 2 ja 3 ovat melko verbejä. He lausunnot, actions-- tähän. Ja niin on ohjelmointi kieli, olisimme yleensä soittaa heille lausuntoja tai toiminnoista, soittaa heille tahansa määrä asioita. Mutta he vain actions-- tähän. Vaihe 4 on täysin erilainen, koska se on tavallaan kysyy kysymyksen. Se sanoo, että olemme laji of klo tienhaaraan. Jos Mike on sivulla, soita häntä, niin käänny vasemmalle, jos haluatte. Ja jos ei, mene takaisin joitakin muut page-- tai pikemminkin, anteeksi, palata joitakin muita vaiheen, joka indusoi jonkinlainen silmukkarakenteen. Ja me teemme sen uudestaan ​​ja uudestaan ​​ja uudestaan. Ja itse asiassa, tiedätkö mitä? Joo. if lopussa kirjan lopettaa. Joten tarvitsemme sellaista kolmatta kunnossa, koska te voi pitää kääntää sivun mainos nauseum, koska lopulta, minä osuma kirjan loppuun. Ja vian ohjelma voisi olla ei ennakoida, että skenaario. Ja sitten minä vain ymmärtänyt, OH, odota minuutti, tarvitsen Kolmannessa skenaariossa. Jos olen pois sivuja, I pitäisi oikeastaan ​​vain lopettaa. Muuten se on määrittelemätön. Mitä tulee tapahtumaan, jos en pidä sanomalla kääntää sivua ja palata, tämä on kun tietokoneet jäädyttää tai kaatuu, kun osut ennakoimattomista kaltaisessa tilanteessa. Nyt entä Mike Smith kolmas algorithm-- poimia puhelinluettelosta, avoin kirja first-- kohteeseen no, ei ensimmäisellä sivulla tällä kertaa, ja middle-- oh, hyvin, että had on toinen algoritmi. Toivotaan vain siirtyä kolmanteen. Yleisö: Oi, olen pahoillani. DAVID MALAN: Se on hyvä. Toivotaan vain siirtyä third-- auki keski ja nyt etsiä Mike Smith. jos sivulla, soita Mike. Ja sitten mitä haluamme sanoa täällä? muuten mitä? Voimme ilmaista tätä in monin tavoin. Ei ole oikea vastaus. OK, jos ei taas, mutta meidän on be-- OK, emme halua jakaa kahteen, mutta haluamme mennä vasemmalle tai mennä oikealle? Miten ilmaista, että käsite? No, Mike tapauksessa, kyllä, se on reilua. Mutta OK, niin että on itse asiassa hyvä piste. Se on hyvä. Pidämme menossa tämän logiikan. Niin-- Yleisö: Alle puolet. DAVID MALAN: Joo. Joten if sivu on, me sanomme, vähemmän kuin Smith, vasemmalla puolella Smith, then-- katsotaanpas, on tämä menossa mutkistaa? if sivu tulee ennen Smith, repiä kahtia, heittää pois josta puolet? Yleisö: Luulin joka oli [tahtiimme]. DAVID MALAN: Kuulen molempia vastauksia. Yleisö: Vasen. DAVID MALAN: OK, heittää pois vasen puoli, kuten Lakisa sanoi aiemmin, vasen puoli, niin olen sellainen haluavat vain mennä to-- menen oikealle. Tai vastaavasti, ja tein pienen hieman sekaisin alussa täällä, En tehokkaasti halua siirry vaiheeseen 2 uudelleen, jossa avoin middle-- tai open-- joo, sanotaan vaikka, sivut keskelle. Ja tämä korjaa sen. Se ei ole enää varaa. Se on vain puolet kirjan, joten avoimet sivut keski. else-- olivat melkein siellä. Vaihe 6, muuta, jos sivu tulee sen jälkeen Smith, repiä kahtia, heittää pois oikea puoli, siirry vaiheeseen 2. muuten lopettaa neljäs skenaario, jos meillä ei ole sivuja jäljellä kääntyä. Jotta voisimme puhdistaa tämän ylös. Ja meidän tulisi puhdistaa tätä ylöspäin. Tämä on hyvin pseudokoodi koodia, jos tulee, erittäin korkean tason kuvaus. Mutta se ei yleensä vangita idea. Ja taas tässä skenaariossa on käsite ehdon, sivuliikkeen, joka on tienhaaraan, mikä decision-- jos tämä, mennä tällä tavalla, if, mennä tällä tavalla, if, mene näin. Ja tämä on hyvin yleinen ohjelmointitekniikkaan päättää, mihin suuntaan mennä, niin sanotusti. Ja meillä on myös jonkinlainen silmukoiden rakenne, jossa olemme tekemässä jotain uudestaan ​​ja uudestaan. Nyt on käynyt ilmi, paljon kuten tässä esimerkissä, että Super tarkka on tärkeää. Mutta olemme myös nähneet jotain että pidämme soittamalla abstraktio. Mitä se tarkoittaa poimia puhelinluettelosta? Olemme juuri sellainen ottaen itsestäänselvyytenä tässä huoneessa että on joitakin semanttinen merkitys. Kaikki meistä juuri sellainen tietävät, OH, hyvin, poimia puhelinluettelosta. Mitä se oikeastaan ​​tarkoittaa? No, se todella tarkoittaa ulottuvat käsi, kumarru, laajentaa sormia, purista kirja sormien väliin, seisomaan, vedä käsi päin. Ja voisimme olla todella pikkutarkka tästä, todella on Super tarkka siitä, mitä olen tekemässä. Mutta kaikki nämä vaiheet yhdessä ovat mitä tarkoittaa poimia puhelinluettelosta. Ja niin aikaisemmin, kun sanoin, kukin Näiden kahden ensimmäisen lausunnot voidaan ajatella edetä tai toiminto, oikeastaan ​​se edustaa mitä me jatkaa katsomista abstraktio. Se on kuin korkean tason käsitteellinen kuvaus ongelma, että oikeastaan ​​tarkoittaa aivan muutaman askeleen. Ja niin tämäkin on toistuva aihe ohjelmointi, jolloin voisin kirjoittaa ohjelma käyttämällä syntaksin tämän kaltaisia ​​osia pick_up_phone_book (). Ja sitten syntaktisesti, olen menossa varastaa jotain useimmista ohjelmointikieliä. Nyt vaihe 1 näyttää vieläkin enemmän kuin funktio, ohjelmoijana kutsuisin sitä. Näyttää siltä koodin että joku on antanut nimensä ja tietyn minulle käyttämään somehow-- muissa Eli mitä linjaa olen korostanut edustaa toimintoja, jotka ehkä En edes toteuttaa itseäni. Joku vanhempi, viisaampi minut jo selville miten ilmaista käsite poimien puhelinluettelosta. Ja se on kuin viisi vaihetta Sain kolahti, päältä pääni. Mutta hän on jo toteutettu Tämän, antoi ne useita vaiheita nimi, pick_up_phone_book. Ja suluissa on juuri mitä useimmat ohjelmoijat do lopussa lausuntoja, kuten tämän. Olen nyt voi seisoa hänen olkapäät ja koskaan enää, miettiä, mitä se tarkoittaa poimia puhelinluettelosta. Voin vain sanoa, poimia puhelinluettelosta. Ja juuri näin me kaikki ihmiset tekivät täällä. Kun olimme luultavasti 1 vuotias, 2 vuotta vanha, jonkun täytyi opettaa meille, mitä se tarkoitus poimia puhelinluettelosta. Ja siitä lähtien, olemme hajamielinen pois sellaisilta mielenkiinnoton mekaaninen vaihe. Ja me vain on intuitiivinen käsitys mitä se merkitsee poimia puhelinluettelosta. Ja voit ekstrapoloida nyt monimutkaisempi things-- rakentaa rakennus. Like, joillekin ihmisille, joka todella on merkitystä. Urakoitsijoille, arkkitehdeille, että on jokin merkitys. Ja he tietävät, mitä tehdä, jos Sanoin, mene rakentaa rakennus. Mutta useimmat meistä huoneessa voinut käsitellä tämän tason abstraktio. Sinun täytyy kertoa meille pidä mennä päästä lapion ja mene saada konkreettisia ja kynsien puunpalasia yhteen ja mitä muuta on mukana rakentamassa rakennuksessa. Ja se on, koska meillä ei ole vielä ohjelmoitu ymmärtää mitä se tarkoittaa rakentaa rakennukseen. Meillä ei ole, että abstraktio. Meillä ei ole vastaavia toimintoja. Ja niin mitä näet in ohjelmointikielet, yleensä, varsinkin enemmän nykykieliin, kuten Java, PHP, Ruby ja Python, ne ovat paljon kypsempi kuin vanhemmat kieliä, kuten C ja C ++ ja vielä toiset. Ja niin he tulevat enemmän toiminnallisuus rakennettu. Lisää koodi on kirjoitettu ihmiset menneisyydessä että voimme nyt soittaa tai kutsua tai käyttää, koska olen vihjaa klo tämän korostettu viiva täällä. Ja joten vaikka emme puhu noin ohjelmointikielet sinänsä, vain pseudokoodi koodi, kaikki ideat ovat vielä tässä keskustelussa. Ja se osoittautuu tarkkuus on Super tärkeää, koska on abstraktio. Ja koetamme välitettävä seuraavasti. Olen vahingossa saattanut pilaantunut tämä vilkuttamalla dia ruudulla ennenaikaisesti. Mutta haluaisin pyytää rohkea vapaaehtoinen, jos et mielessä tulossa. Olisit edessä kamera, jos olet OK kanssa. Haluaisiko kukaan keksiä ja antaa ohjeet työtovereiden täällä? Täytyy vain tulla tänne ja seisoa täällä ja sanoa joitakin sanoja. Victoria hymyilee eniten ja välttää silmäni eniten. Olisitko valmis tulemaan ylös? OK. Ja jos kaikki muutkin omalla paikkaa voisi ottaa pala jätepaperille, jos haluat. Vuorattu paperilla on hieno. Tullut noin tällä tavalla. Tai jotkut paperin sait eilen, mitä tahansa Arkkiaihioon paperia, jos voisi. Ja jos sinulla ei ole mitään, vain kysy naapuri, jos voisi. Joten tällä hetkellä, sillä Tässä esimerkissä Victoria aikoo näytellä ohjelmoija, insinööri, joka tarvitsee ohjelmoida teille kaikille, niin tietokoneet, tehdä jotain. Ja katsotaan mitä oletuksia päätät tehdä. Näemme kuinka tarkka hän haluaa olla. Ja jos tämä esittelyn menee pedagogisesti hyvin, paljon virheitä tehdään, että me sitten että mahdollisuutena keskustella. Mutta haaste sinun pitäisi on välttää nämä virheet, olla hyvä ohjelmoija. Ja niin haasteen käsillä, jos olisit halunnut kävellä tänne, on edessä Victoria ruudulla here-- ja toivottavasti kukaan teistä muistaa tämä, kun minä välähti ruudulla. Ja älä käänny ympäri ollenkaan, koska on toinen näyttö tässä huoneessa että voin sammuttaa. Joten älä käänny ympäri. Edessä Victoria on, että sama huuto. Ja työnsä on nyt kertoa teille kaikille oman paperille mitä tehdä. Ja näemme, perustuvat suullisia ohjeita yksin, tietokonekoodeja, jos haluatte, kuinka tarkka piirustukset are-- oman toteutukset ovat. Käydä järkeen? Yleisö: Kyllä. DAVID MALAN: OK, suorita. Yleisö: Piirrä neliö. [NAURU] DAVID MALAN: Eikä kysymykset voidaan pyytää. Voi vain tee mitä käsketään. Niin, ja jos olet päivän dioja avata välilehti, älä katso välilehden. OK? Yleisö: OK, piirtää ympyrän. Slope-- voin sanoa kaltevuus? DAVID MALAN: Jopa sinulle. Yleisö: rinteessä. Ja kolmio. DAVID MALAN: Selvä. Ja täällä vain hetken. Ja aion tulla noin vain hetken. Ja ei tarvitse laittaa nimiä sitä. Voinen ympäri ja kerätä piirustukset, jos et mielessä revittiin niitä. Tässä on mitä saimme takaisin. Minä heijastaa sen ruudulla. Näen neliö, ympyrä, rinteessä, ja kolmio. Tämä oli yksi vastaus siellä. Ja let's-- oho. Kiitos. Tässä toinen lajitelma, ja yksi takana. Joten ne kaikki näyttävät kaapata henkeä. Kiitos. On toinenkin, ja tässä on toinen. Kulmakerroin tulkinta on hieman erilainen, vähän kurvikas. Ja lähin, joko siksi, että ihana spesifisyys jolla olet kuvattu, tai ehkä sellaista Näin sen ennen, tämä on todellakin mitä Victoria oli todella kuvataan. Mutta nyt, ne teistä, jotka ei saanut sitä aivan oikein, nyt tarjota joitakin vastaväitteitä täällä. Joten Victoria sanoi ensin piirtää neliön. Nyt voimme olettaa vuoksi tänään että kaikki tietävät miten tehdä neliön. Mutta se ei ole täysin selvä, eikö? Miten muuten voisi olet piirretään neliön tai jos saattaa olla joitakin epäselvyyksiä täällä tietokone? Yleisö: sijainti ja koko. DAVID MALAN: Location, eikö? Te kaikki oli paperilla noin muodon, yleensä suorakulmiot, mutta hieman eri kokoja. Mutta te varmasti olisivat voineet saada aikaan, jos halusi, valtava neliö, ehkä pieni neliö. Ehkä se on käännetty. En usko näimme. Mutta se olisi voinut olla timantti kuten mutta silti kuitenkin, Matemaattisesti neliö. Joten se oli luultavasti epäselvä. Sitten hän sanoi, piirtää ympyrän. Jotkut teistä ei piirtää vieressä se, joka ei ole kohtuuton, koska ihmiset tapana ajatella tai lukea oikealta vasemmalle useimmilla kielillä, joten ei huono arvaus. Mutta se ympyrä voi olla ollut sisällä neliö, olisi ollut noin neliö, olisi voinut olla muuallakin arkin, niin luultavasti epäselvä. Slope olisi ollut ehkä ottaen eniten vapauksia suullisesti mitä se tarkoittaa. Ja jotkut teistä tulkitaan se vääristynyt linja tai suora tai vastaavaa. Ja sitten kolmio myös voisi olla on suunnattu monin tavoin. Joten lyhyt, vaikka jotain, joka te silmäyksellä ja olet kuten, wow, niin yksinkertainen, lapsi voisi vetää tätä, hyvin ei todella, ellet super, super vakuuttava ja kertoa tietokone tarkalleen, mitä tehdä. Joten jos voisimme, jos olet toinen paperiarkki, katsotaanpa kokeile tätä vielä kerran. Ja minä aion antaa Victoria yhteen Toinen esimerkki ruudulla täällä. Ja vielä, älä käänny ympäri ja älä katso diojen. Ja minä annan hänelle hetken miettiä, miten kuvata tätä. Älä anna heidän nähdä pelko silmiin. [NAURU] Ja jälleen, tällä kertaa vipuvaikutus joitakin näistä takeaways ja yrittää saada lähes kaikille ainakin oikea vastaus. Yleisö: OK, ota paperille, katso keskellä että paperinpala. Keskellä että pala paperia, piirtää kuutio. [NAURU] DAVID MALAN: Mitä olemme oppineet? Olimme niin lähellä. OK, toista jos voisit, kaikille. Yleisö: Keskellä on paperille, piirtää objekti, joka näyttää kuutio. DAVID MALAN: OK, se kaikki saat toimimaan. Saanen olla analyyttinen ja ei niin paljon kriittinen, vaan tehdä väite että Victoria varmasti tuntuu ajatella hyvin korkean tason abstraktioita, jotka ei ole kohtuuton. Koska muuten olisimme kaikki melko huonosti, jos meillä olisi oltava aina niin tarkka kaiken teemme maailmassa. Mutta sanonta mene middle-- I ajatellut olimme niin hyvä rata siellä, kuten mene hyvin keskelle sivun, ja sitten piirtää kuutio. Niinpä hän ajattelua vedenotto koska hän on edelleen katseluun mitä ruudulla todellakin kuutio. Mutta on niin paljon mahdollisuuksia tulkintaa siellä. Ja itse asiassa, on niin paljon muita tapoja voisitte ilmaista että mikä minä ehdottaa hetken. Joten tässä meillä on yksi inkarnaatio ja picture-- whoops-- yksi inkarnaatio kuvan, joten pikku kolmiulotteisuutta sitä, mikä on mukavaa. Tässä toinen, missä on Sama, vaikka se on eräänlainen avoimen kuution. Jotkut ihmiset ottivat sitä hieman tasaisempi, kaksiulotteinen. Ja se käy hyvin. Joten siellä, todellakin paperin keskelle. Tämä yksi Luulen kuten, sillä jos menemme täällä, tämä on mitä hän kuvaili. Joten nyt, haluan ehdottaa miten muuten voisimme kuvata tätä tilannetta. Takaisin päivä, yksi yleisempiä tapoja oppia ohjelmoinnin oli kirjoittaa koodia, kirjoittaa riviä ohjeet, että ohjattu hieman kilpikonna ruudulla. Logo ja muut muunnelmia tästä oli kielen nimi. Ja kilpikonna eli maailmassa. Joten kai tämä suorakulmainen tila on hänen maailman. Ja te aloittaa assuming-- I eivät todellakaan tiedä miten tehdä kilpikonna, niin tehdään se näin. Sitten hän sai kuori ja sitten ehkä joitakin jalkaa. Joten saatat olla tässä vähän hahmo ruudulla. Ja kohde tämän ohjelmointikieli oli pakottaa kilpikonna mennä ylös, alas, vasemmalle, oikealle ja laittaa kynän tai poimia hänen kynää ylös, jotta hän voisi itse piirtää näytölle tässä erittäin tasainen suorakulmainen maailmassa. Joten missä Luulin, että saatat olla menossa, ja missä kannattaa harkita sukellus alas henkisesti, kun kuvataan ohjeet yleisemmin Väittäisin, on laittaa kynä alas middle-- ja me päästä eroon kilpikonna, koska en voi oikeastaan vetävät hänet hyvin. Ja nyt, miten muuten voisi Sanon piirtää kuutio? No, voimme sanoa jotain piirtää poikkiviiva koilliseen, esimerkiksi tai 45 asteen kulmassa ylöspäin. Ja ehkä saanut minut tänne. Ja olen melko kaukana kuutio. Mutta nyt, voisin sanoa jotain kuten kääntyä 90 astetta vasemmalle ja piirtää linja samanpituiset luoteeseen. Ja voisin jatkaa kanssa samansuuntaisia. Ja se ei tule olemaan helppoa. Ja rehellisesti, emme todennäköisesti olisi ovat olleet täällä viisi minuuttia. Mutta ehkä olisimme mennyt jotain, että lopussa päivä, päätyy kuutiossa, mutta me sukelsi sisällä että vedenotto tehdä se niin alhaiselle tasolle, et voi oikeastaan mitä teet, kunnes koko asia on todella olemassa sivulla. Ja niin tämä on yleinen periaate, jälleen, ja programming-- tämä ajatus abstraktio. Se on niin ihanan voimakas, koska uudelleen, hän vain sanoi, piirtää kuutio, jonka kaikki meitä aika paljon olisi grok hyvin nopeasti. Haluamme vain ymmärtää, OK, piirtää kuutio. Emme ehkä tiedä suuntaa, jotta voisimme olla hieman tarkempi, mutta voimme yleensä kuvan tai tiedä, mitä kuutio on. Ja se on hyödyllinen, koska jos aina istui kuin ohjelmoija näppäimistön kirjoittaa koodia, jos oli ajateltava niin alhainen, kukaan meistä ei koskaan saada mitään aikaiseksi. Ja varmasti, kukaan meistä olisi nauttia prosessista kirjallisesti koodin. Se olisi sama kuin kirjallisesti 0: n ja 1: n, joka suoraan sanottuna ei ole kovin kauan sitten ihmiset olivat kirjallisesti koodi 0: n ja 1: n. Ja me nopeasti keksi nämä korkeamman tason languages-- C ++ ja Java ja muut. Joten kokeile vielä kerran vain käännä taulukot, jotta me kaikki on mahdollisuus ajatella melko samalla tavalla. Voisimmeko saada yhden vapaaehtoinen tästä aika keksiä hallitukselle ja piirtää, ei lausu? Joo, OK. Ben, tule ylös. Ja Ben, tässä tapauksessa, kun kohtaavat aluksella, älä katsoa vasemmalle, eivät näytä oikealta. Vain tehdä mitä kollegojen kertoa. Ja kaikki muutkin huone, nyt on ohjelmoija. Hän on tietokone. Ja kuva olen valinnut täällä etukäteen on tämä yksi täällä. He just-- he ajattelevat hauska vitsi on kaikki. Joten se ei joku halua vapaaehtoinen ensimmäinen ohje tai ilmoitus, että pitäisi komento Ben kynä? Ja me teemme tätä yhdessä, ehkä yksi ohjeita jokaiselle henkilölle. Olen pahoillani? Yleisö: Piirrä ympyrä. DAVID MALAN: Piirrä ympyrä on ensimmäinen asia, josta olen kuullut. Yleisö: ylös. DAVID MALAN: ylös. OK, voimme voit poistaa, kumota. Ja nyt, joku muu. Dan, olisitteko mukava tarjoten seuraavaan käskyyn? Yleisö: Toki, piirtää keskellä pohjan ympyrän, joiden small-- hieman pienessä tilassa siitä, piirtää suoran viivan alas kolme neljäsosaa alas linjan pienessä kulmassa vasemmalla. DAVID MALAN: Hyvä. Yleisö: Lievä kulma. DAVID MALAN: Kumoa Ctrl-Z. OK. Andrew, haluat tarjota up seuraavaan käskyyn? Yleisö: Toki. Pohjasta että linja, edelleen hieman angle-- whoops-- ehkä noin kolmannes pituudesta [tahtiimme], pienessä kulmassa alaspäin ja kuten kolmannen pituudesta [tahtiimme]. Niin joo, tuosta kohdasta, piirtää viivan kolmannen pituudesta edellisen rivi edelleen vasemmalle. DAVID MALAN: Että OK? Suora viiva, se on OK? OK, Olivier, haluat uhrata seuraavaksi? Yleisö: [tahtiimme] alkaen pohjaan ympyrä, [tahtiimme]. Piirrä oikealla puolella ja [tahtiimme] senttimetriä. [NAURU] DAVID MALAN: Luulen aiot täytyy muuntaa se tuumaa täällä. Yleisö: Lopeta. [NAURU] DAVID MALAN: OK. [? Ara,?] Haluat uhrata seuraavaksi? Yleisö: Piirrä [tahtiimme] ylempi [tahtiimme] sama. [Tahtiimme] ympyrä, piirtää sen [Tahtiimme] ja piirtää [tahtiimme]. DAVID MALAN: OK, ei enää kumota. Tehdään yksi tai kaksi ohjeita. Chris, haluat tarjota yhden? Yleisö: Alareunassa ympyrän, [tahtiimme] piirtää yhtä viiva loiskumiseen alaspäin vasemmalle [tahtiimme]. DAVID MALAN: OK. Andrew? Me did-- Karim? Yleisö: Alkaen oikealta linja, loppuun vasemman linjan, pohja, aiot mennä oikeassa samanpituinen kuin että linja olet, piirustus oikea [tahtiimme]. [Tahtiimme] astetta, joten [tahtiimme] astetta oikealla puolella. DAVID MALAN: Selvä. Katsotaan tauko. Älä käänny ympäri vielä. Katsotaan tauko, ja lähdetään kokeile yritettävät ennen kuin paljastaa Ben mitä hän on piirustus. Voitko sekoittaa Ben right-- tai oikeastaan, no, nyt vain antaa sinulle laudan, jopa parempi. Joten olisi joku nyt pidä ottaa enemmän lähestymistavan että Victoria otti aiemmin, missä puhumme korkeammalla tasolla abstraktio ja vain lauseen tai kaksi kuvailla Ben mitä tehdä ilman joutumassa rikkaruohot, niin sanotusti, tällä alemmalla tasolla? Victoria. [NAURU] Yleisö: Piirrä kuva ja kävely ihmisen. Ja hänen jalat ja kädet täytyy olla oikealla puolella. DAVID MALAN: OK, siinä kaikki saat. Selvä. Miksi emme paljasta Ben, mitä hän teki. Joten aplodit. Se oli vaikein ehkä. Joten vaikka me puhumme melko typerä kannalta noin vain piirustus kuvia, toivottavasti voi todella arvostaa aste ilmaisukyky, jotka saattavat olla tarpeen jotta kertoa tietokoneeseen, mitä tehdä. Ja itse asiassa se, että Ben pystyi tekemään tämän niin nopeasti on eräänlainen osoitus käyttämällä kieli, ehkä korkeampi version Englanti, joka sallii hänen vain käyttää sanoja, tai kuulla sanoja Victorian, jotka mahdollistavat hänen Näiden abstractions-- vain vetää luku kävelemällä right-- että sellainen on jotkut semanttinen merkitys sille, joka ei ole lähes yhtä ilmeinen, kun olet juuri sanomalla, laita kynän, piirtää oikealle, vetää vasemmalle. Ja niin tämäkin on hyvin yleinen ohjelmointi. Tämä voidaan sanoa olevan kuin hyvin alhainen kieli, ohjelmointi in 0: n ja 1: n jos tahtoa. Ja tämä olisi korkeampi kieli ohjelmointi Java, Tai jotain sellaista. Hieman sellaisen yksinkertaistus, mutta se sellainen kuten emotionaalinen tunne, että tuntuu kun jollakin sellainen asia tai toisella. Hieman turhautumista tässä tarpeella tällaisella tarkkuudella, mutta mahdollisuus olla hieman väljempää tulkinnan täällä. Mutta tietenkin, bugeja voi aiheutua. Jos haluat at home-- me ei tee tätä yksi class-- mutta jos haluat tuoda tämä koti, Luulin olisimme sukeltaa tähän. Joten jos haluat pelata tätä pelin kanssa muita huomattavia tai lapset tai vastaavaa, te voisi nauttia siitä, että samoin. Joten mene eteenpäin ja katsoa viimeisen asia täällä päättelyä. Ja tämä tuo meidät John Oliver, ei leikkeen ehkä nähneet viime yönä, mutta jonkin verran ajankohtaiseen. Muutama kuukausi sitten, Volkswagen kesti melko vähän luodinkestävät mistä syystä, jos tiedät? Mitä he saavat vaikeuksiin? Niin, emissions-- ne yrittävät voittaa päästöjen testejä olennaisesti joiden autot saastuttavat ympäristöä vähemmän kun niiden autoja testataan ja saastuttaa ympäristöä enemmän kun autoja ei testattu. Ja mitä enemmän mielenkiintoinen maailmassa, koska voi olla johdettua alkaen keskusteluihin like-- mikä on it-- CarPlay, Applen ohjelmisto autoihin ja se, että monet meistä yhä on kosketusnäytöt automme, siellä pelottava määrä Ohjelmistojen ihmisten autoja tänään, mikä rehellisesti avaa koko voi matoja, kun se tulee luotettavuuteen ja fyysiseen riski. Mutta tänään, nyt keskittyä vain mitä mukana kirjoitusohjelmiston joka olisi saattanut gamed järjestelmä. Sillä määritelmä ongelma, niille tuntemattomia, katsotaanpa katsomaan John Oliver. Ja niille tuttuja ongelma, katsotaanpa sitä hauska linssin kautta John Oliver samoin. Joten anna minun osuma pelata tässä, I ajatella, kolmen minuutin käyttöönottoa. Perkele. [VIDEOTOISTOSTA] -Cars-- DAVID MALAN: On selvää, YouTubessa, it's-- - --The Fiksuin merkkiä Fast and Furious elokuvia. Tällä viikolla, saksa automaker Volkswagen joutui keskellä skandaali mahdollisesti rikollista mittasuhteet. -Volkswagen On piristävä miljardien Sakkojen mahdollista rikossyytteitä sen johtajat, kuten yhtiö pahoittelee for takila 11 miljoonaa autoa auttaa se voittaa päästöjä testejä. -Certain Diesel mallit suunniteltiin hienostunut ohjelmisto, käytetyt tiedot, mukaan lukien asema Ohjauspyörän ja ajoneuvon nopeus, määrittää auto oli käynnissä päästöjentestausvirasto. Tämän seikan, moottori vähentäisi myrkyllisiä päästöjä. Mutta auto oli väärennetty ohittaa että kun se oli ajetaan. Päästöt kasvoivat 10-40 kertaiseksi hyväksyttävät EPA tasolle. -Wow, 10-40 kertaa suurempi kuin EPA sallii. Se on pahinta Volkswagen on koskaan tehnyt, on jotain voisi sanoa, jos et ikinä kuullut toisen maailmansodan. Mutta ehkä varmin merkki siitä, kuinka paljon vaivaa Volkswagen on, on, että ihmiset aivan ylhäältä ovat astuneet alas. Toimitusjohtaja erosi keskiviikkona jälkeen muokkaamisella tehdä vahinkoa ohjaus, että hän oli loputtomasti anteeksi, joka kuulosti suuri kunnes se osoittautui Hän oli vain 10% anteeksi mutta oli väärennetty suunsa keinotekoisesti hänen sorriness. Ja sillä välin, Volkswagenin US päätoimittaja oli anteeksipyyntö oman. -Anna N olla selvillä tästä, yritys oli epärehellinen. Ja minun saksan sanoen, me ovat täysin mokannut. -Joo, Mutta täysin ruuvattu up eivät ole Saksaksi. Ja saksan kieli on monia kauniita lauseita kuvaamaan tilanteita aivan kuten tämä, kuten [Saksan], mikä tarkoittaa suurin piirtein, surua, joka tulee liiketoiminnan liittyviä valheita, tai [Saksan], joka kääntää kuten shaming niistä isä mukana pilviä bensiiniä. Se on kaunis kieli. Se vain purjeet pois kielen. Ja muuten, kun taas miehen anteeksipyyntö saattaa kuulostaa vilpitön, on syytä huomata, hän oli puhumassa virallisen käynnistää osapuoli 2016 Volkswagen Passat, mikä tarkoittaa, että pian jälkeen sanomalla pahoillani, hän sanoi. -Kiitos Hyvin paljon tulossa. Nauti illalla. Seuraavaksi on Lenny Kravitz. [MUSIIKKIA] -OK, OK, päättyy sinun anteeksipyyntö kanssa seuraavaksi Lenny Kravitz ei huutaa raittiina katumuksen. Se kirkuu, kysyimme Bon Jovi, ja hän sanoi ei. Volkswagenin brändi on pahoin vaurioitunut. Ja rehellisesti, heidän uusi mainos kampanja ei ole tarkalleen auttaa. - [Saksan], me Volkswagen haluaisimme anteeksi pettää teitä automme. [END TOISTO] DAVID MALAN: Eli tämä oli kiertoteitse soita näin sorry-- tämä oli liikenneympyrä tapa käyttöön perusongelma ohjelmisto, joka on, että täytyy valvomaan olosuhteita. Ja niin kysymys käsillä täällä on, miten auto mahdollisesti kuten ohjelmistossa Näiden ohjelmoijat, havaita, että se on todella testataan? Joten on erittäin selvä, mitä he olivat tekemässä oli, ympäristöissä, joissa ohjelmoijat tajunnut auto oltiin testattu, ne jotenkin auton tuottavat vähemmän päästöjä, vähemmän päästöt, joten vähemmän myrkyllisiä höyryjä ja tällaisia. Mutta kun se on yleensä Ajamiseen, se olisi vain päästävät mahdollisimman paljon saastuminen kuin se halusi. Joten miten voisimme kirjoittaa pseudokoodi tämä algoritmi? Miten kirjoitamme pseudokoodit ohjelmiston käynnissä autossa? Siis, pähkinänkuoressa, se kiehuu alas jotain tällaista. jos testataan, tuottavat vähemmän. muu säteilee enemmän. Mutta se on hieman liian korkea, eikö? Yritetään sukeltaa siitä, mitä tämä ottoon Testattavana keinoin. Toisin sanoen, vaikka et tiedä mitään autoista, millaisen kysymyksiä saattaa kysyä, jotta voidaan määrittää, jos olet testataan, jos olet auton? Mitkä ominaisuudet saattavat olla esitettävä jos auto testataan? Yleisö: testauslaitteet. DAVID MALAN: testauslaitteet. Joten jos testauslaitteet lähellä, sitten säteilevät vähemmän. Joten en voisi kuvitella täytäntöön että jonkinlainen kameroiden tai havaitsemaan, mitä ympärilläsi. Ja haluan ehdottaa, että vain tuntuu liian monimutkainen todella on muita laitteisto juuri tätä tarkoitusta varten. Yleisö: Jos olet park, jos huppu on auki. DAVID MALAN: In park tai konepelti auki, niin se on hyvä. Yleisö: Ja auto käynnissä. DAVID MALAN: Niin, että vähän enemmän concrete-- ja auto käynnissä. Joten tämä olisi yhdessä jonkin muutama eri olosuhteet, jos haluatte. Joten jos auto on puistossa, ja jopa vaikka tämä on erittäin mekaaninen asia tyypillisesti, voisin kuvitella kirjoitusohjelmistosta, varsinkin koska siellä usein kevyt siellä näinä päivinä, Voisin kuvitella, että on ohjelmisto, joka voi kyselyn vaihdetta tai mitä ei, oletko puistossa, ovat teitä ajaa, olet päinvastaisessa. Ja voin saada takaisin vastata tähän on joko kyllä tai ei tuollaiset kysymykset. Ja niin voisin todennäköisesti myös vastata kysymys kuin, on konepelti auki. Ehkä on olemassa jonkinlainen anturi että joko antaa minulle takaisin 1 tai 0, tosi tai epätosi, kupu on auki. Ja sitten auto käynnissä, voisin havaita että jotenkin kautta mitä mekanismi? Kuten, auto on käynnissä, I voi havaita, että se on päällä, voisin havaita jotenkin että auto liikkuu? Yleisö: RPM. DAVID MALAN: Joo, niin siellä aina, että neula kertoo, kuinka monta kierrosta minuutti pyörät ovat kokeneet. Ja jotta voisin katsoa, ​​että. Ja jos se ei ole 0, että luultavasti tarkoittaa auto liikkuu. Meidän on kuitenkin oltava vähän varovainen siellä, because-- nyt yksinkertaistaa this-- jos me vain sanoi, jos auto käynnissä, emme halua vain tuottavat vähemmän, Haluamme jos auto on käynnissä ja se testataan. Joten on olemassa muutamia muita ainesosia, että ihmiset ovat hypothesized ohjelmisto tekee, koska poissa todellinen lähdekoodia, voit vain eräänlainen päätellä fyysiset vaikutukset auton, mitä saattaa olla käynnissä alla huppu ohjelmisto. Joten jos auto käynnissä ja ehkä, vaikkapa takapyörät ei liiku, tämä voisi olla osoitus jonkinlaisen testi? Mitä minä vihjaten täällä? Joo, ehkä, se on yhtä Näiden rullan asioita, jossa kuten pyörät pyörivät edessä tai takana, riippuen siitä, onko se etupyörä tai takaveto, joten puolet pyöristä ovat liikkuvia, mutta muut kaksi eivät ole, mikä on outo tilanne todellisessa maailmassa. Jos olet ajo tie, joka ei pitäisi tapahtua. Mutta jos olet varastoon jonkinlaista rullajärjestelmä, jotka saattavat todellakin tapahtua. Uskon, ihmiset myös ehdottanut, että ehkä, jos auto on käynnissä ja ohjauksen pyörän ei liiku, että liian voisi olla signaali, koska se on kohtuullista kuten heti tiellä. Mutta silloinkin, ihmisen on luultavasti siirtämällä sitä hieman tai varmasti muutaman sekunnin kuluessa. Tai jonakin minuutti, kertoimet ovat se ei ole aiotaan kiinnittynyt täsmälleen samassa asemassa. Eli toisin sanoen, me voi vähennys-, oletko testataan, ja murtaa että toiminnallisuus näihin komponentti ainesosia. Ja se todella mitä Volkswagenin insinöörit jotenkin teki. He kirjoittivat ohjelmisto tietoisesti havaita, jos auto testataan, Siksi tuottavat vähemmän, muuten emittoivat tavalliseen tapaan. Ja ongelma täälläkin, on, että ohjelmisto ei ole jotain voi todella nähdä, jos olet ns lähdekoodia. Joten ei kahta erilaista code-- ainakin kahta eri tyyppiä koodin maailmassa. On jotain kutsutaan lähde koodi, joka ei ole toisin kuin olemme kirjoittaneet, lähdekoodia. Tämä on lähdekoodi kirjoitettu kieli nimeltään pseudokoodilla, joka on vain jotain Englanti kaltainen. Ei ole virallista määritelmää siitä. Mutta C, ja Java, C ++, ne kaikki viralliset kielet, jotka, Kun kirjoitat ne, mitä on on tekstitiedosto, joka sisältää lähdekoodia. Mutta on myös jotain maailman kutsutaan konekieli. Ja konekielelle, valitettavasti, on vain 0: n ja 1: n. Joten kone koodi on mitä koneet ymmärtää, tietenkin. Lähdekoodi on mitä ihmiset ymmärtävät. Ja yleensä, mutta ei aina, on ohjelman että ohjelmoija käyttää joka vie lähde koodin ja muuntaa sen konekielelle. Ja että ohjelma on yleensä kutsutaan kääntäjä. Joten syöte on lähdekoodi, oman tuotannon on koneen koodi, ja kääntäjä on pala ohjelmisto, joka tekee tätä prosessia. Joten tämä todella kartat hienosti meidän tuloa, algoritmit, lähdöt. Mutta tämä on hyvin erityinen inkarnaatio siitä, mikä on sanoa, että vaikka sinulla yksi Volkswagenin autoja, jotka on syyllinen tähän, se ei ole kuin voit vain avata huppu tai avata käyttäjän käsikirja tai etsi lähdekoodia, koska siihen mennessä se tavoittaa autosi teidän ajotieltä, se on jo ollut muutetaan 0: n ja 1: n. Ja se on erittäin vaikea, jopa mahdoton mutta erittäin vaikea poimia paljon mitään vain katsomalla taustalla 0: n ja 1: n. Joten voit tajuta se lopulta jos ymmärrät kuinka kone operates-- Intel inside-- jos ymmärrät Intel arkkitehtuuri, mutta se on hyvin aikaa vievää. Ja sielläkin, saatat ei voi nähdä kaiken että koodi voi itse tehdä. Kysymyksiä tästä tai tästä tällainen prosessi yleisemmin? Ja itse asiassa, voimme sitoa tähän keskusteluun eilisen keskustelun Apple. Tämäkin syystä FBI voi vain mene ja katso epäillyn puhelinta ja löytää riviä koodia, sillä Esimerkiksi jotka mahdollistavat salasana tai mahdollistavat, että 80 millisekunnin viive. Koska mennessä sen on mies iPhone, se on jo ollut muutetaan 0: n ja 1: n. No, Pysähdynpä meidän katsokaa päättelyä. Miksi emme ota 15 minuutin tauko. Ja kun palaamme käymme katsomaan ohjelmointi itse ja alkaa kartoittaa joitakin Näiden korkean tason käsitteitä tosiasialliseen, jos leikkisä, ohjelmointikieli.