DAVID Malan: Bonvenon reen, ĉiuj. Do hieraŭ, vi memoras ke ni temigis tiujn temojn tie. Do ni havis kvar komunajn topics-- privateco, sekureco, kaj socio; interreto teknologioj; nubo komputado; kaj finfine, retejo disvolviĝo. Ĉu iu havas la bandwidth aŭ la tempo rigardi iom Johano Oliver hieraux? Ĝi estas vere bela amuza, se ne iom timiga. Demandojn sur ion ni faris hieraŭ? Ajna klarigojn? Demandojn, kiujn vi volas fari certigi nin tuŝas hodiaŭ en iu formo? Tiel pura skribtabulo. Do kio estas sur la tagordo por hodiaŭ? Do mi pensis ke ni komencos hodiaŭ kun rigardi kio estas ĝenerale konata kiel komputa thinking-- ĉe la risko de oversimplifying, pensante kiel komputilo, eble pensante kiel inĝeniero, kaj klopodante komenci Organizi viajn pensojn aŭ doni al vi pli bonan senson de kio implikita en praktiko komandanta komputilo fari ion tra programado. Kaj ni konservos gxin bela alta nivelo, preskaux angla, sed provu uzi de familiara ekzemploj formaligi kiel vi irus pri solvi problemojn. Kaj ni reviziti iu CS temoj, kiel abstraktado, kiuj venis paro de tempoj hieraŭ, algoritmoj, kaj tiam reprezento. Kaj tio estas kie ni komencu hodiaŭ en nur momento. Tiam ni rigardu programado. Ni prenos rigardi kelkaj fundamentajn konstruojn kun kiu vi povus esti familiara kaj eble eĉ trovi sufiĉe intuitivo. Ni rigardu, fakte, en specimeno programado medion kiu estas tre atingebla, tre ludemaj kaj ja laŭcela por aĝoj 12 kaj supren. Ni pasigos kelkajn minutojn tie kaj tiam preni aferojn al pli malalta nivelo kaj efektive paroli pri kelkaj el la algoritmoj kaj datumstrukturoj, tiel diri, ke programistoj tipe uzas solvi problemojn multe pli efike ol vi eble povos malhavi ilin entute. Tiam post tagmanĝo, ni rigardu ĉe teknologio stakoj, kiu estas nur fantazio maniero diri kolektoj de teknologioj ke vi povus uzi por solvi iun problemon. Kaj ni parolos pri la alfabeto supo de lingvoj kiuj ekzistas today-- Java kaj Python kaj C ++ kaj PHP kaj Ruby kaj ĉiaj aliaj aferoj. Ni rigardu mallonge ĉe dezajno ŝablonoj. Programistoj, dum tempo, havi adoptita metodikoj kiu inklinas helpi ilin solvi problemojn pli facile. Kiam vi komencas vidi mem skribi samspecan kodon denove kaj denove, personoj formaligi tiuj ripetoj kaj atribuas al ili nomojn kaj tiam uzi ilin kaj promocii ilin, finfine. Kaj ni parolos iomete pri moveblaj strategioj, kiel kion tio signifas en la praktiko fari mobile app aŭ movebla retejo. Ĉu vi faros por Android? Ĉu vi faros por iOS? Ĉu vi faros por ambaŭ de tiuj? Kaj kio estas la komerco-offs? Kaj tiam fine, ni preni Rigardu ttt programado, kiu Estas kolektiva termino vere priskribanta ajn vi skribas programaron tio signifis por kuri en la reto, ĉu sur telefonoj aŭ labortabloj aŭ tekkomputiloj. Ni prenos mallongan rigardu datumbazoj kaj la dezajno gxi, se nur ĉar preskaŭ ĉiu interesaj ttt-bazita apliko tiuj tagoj havas ian datumbazo. Alie, ĝi farus nur esti statika enhavo. Kaj datumbazon permesas fari ŝanĝoj super tempo, ĉu vi mem aŭ de uzantoj. Kaj ni konsideru kiel vi irus pri dizajnado ke datumbazon kaj la speco de ĵargono kiuj povus veni supren en inĝeniero diskuto en blanka tabulo kiam fakte efektivigado app por la unua fojo. Ni parolos mallonge pri API, utilaj servoj ke vi povas uzi por stari sur la ŝultrojn de aliaj, ĉu kompanioj aŭ individuoj, kaj solvi viajn propraj problemoj pli rapide. Kaj tiam ni dabble eble iom kun JavaScript, programlingvo kiu estas uzata ambaŭ en retumiloj tiuj tagoj, sed ankaŭ en serviloj. Kaj eble, ni instruos vin reviziti, tempo permesas, kelkaj el la manoj-sur ttt aferojn ni faris hieraŭ kaj integri la du kune antaŭ ni adjourn. Do kun that-- kio estas ahead-- estas nenio perdigxis ke vi ŝatus certigi ni enŝovu kaj tuŝas en iu momento. Se ĝi estas fontoj memorigas, venigu gxin antaux longe. Sed kial ni ne komencu per rigardi komputa pensado. Kaj mi proponas ke komputa pensado estas, denove, ia la alta nivelo priskribo de kion komputilo sciencisto povus fari. Kaj efektive, ni komencu kun tri ingrediencoj kiuj povus iri en komputa pensado. Tiu estas nur unu maniero de priskribi ŝin. Ni certe povus difini ĉi en ajna nombro de manieroj. Sed mi proponas, pro hodiaŭ, ke la mondaj problemoj, ĉiujn mondproblemojn, Kiam proksimiĝis per komputila sciencisto povis videblas kiel kion ni alvoko enigoj, kiuj devas akiri nutrita en kion ni nomas algoritmoj, kiuj tiam cedas eliroj. Alivorte, la tuta mondo de problemo-solvado mi pretendo povas esti distilita en tiuj tri ingrediencoj. Do kion mi signifas de enigoj? Enigoj estas ĝuste kion vi estas enmanigis por solvi. Ekzemple, jen malnova lernejo problemo. Se mi havas telefonon libro tie kaj Mi volas rigardi ion en ĝi, tio estas mia enigo. Mi havas 1,000 aŭ tiel paĝoj en telefono libro. Tio estas la enigo al mia problemo. Kaj mi volas trovi ion kiel Mike Smith, tiel amikon kies nomo kaj nombro estas espereble en tiu adreslibro. Jen antaŭ la tempo de ĉelo telefonoj, do mi ne povas simple serĉi ŝin. Do mi devas fari ĝin malnova lernejo kaj reale serĉo tiuj enigoj por iu respondo. Kaj ke respondo estas ĝuste tuj por nomi la eligo. Do la enigo estas la telefono libro. La algoritmo estas ajna aro de paŝoj mi uzas por trovi Mike Smith. Kaj la eligo estas, espereble, Mike Smith telefonnumero. Kaj ĉi tiam estus simple reprezentanto de plej ajna problemo por kun vi manoj enigoj kaj volas produkti eliroj. Do antaŭ ol ni konsideros la procezon per kiu ni povas solvi tiun problemon, trovanta Mike Smith kaj io simila, ni konsideru la unua kaj la last-- enigoj kaj eligoj. Fizike, kompreneble, la enigo tie estas tuta aro da papero gluita kune en la formo de telefona libro. Sed komputiloj, kompreneble tekkomputiloj kaj tablo kaj eĉ telefonojn tiuj days-- tiuj estas elektronikaj aparatoj. Kaj fine de la tago, kio estas la sola enigo al komputilo? Nu, estas io kiel tiu potenco ŝnureto tien. Mi ŝtopi ĝin en la muron, kaj Mi ricevos fluon de elektronoj, kiu min permesas kuri la maŝino. Aŭ eble tiuj elektronoj estas kreita de vojo de mia kuirilaro. Sed fine de la tago, jen la sola afero iras en mian tekkomputilon. Kaj tiel interesaj aĵoj estas finfine eliranta, ĉu tra la printilo aŭ la ekrano aŭ audially aŭ similaj. Sekve se ĉiuj ni havas kiel nian fundamenta enigo al komputilo estas elektro, tial nur elektronoj enirante kaj aŭ ekstere, kaj tiel kiel ni uzas tiun eniron efektive reprezentas informon? Alivorte, kiel ni akiras de simpla fluo de elektro reprezenti fakta nombroj aŭ realaj leteroj aŭ realaj bildoj sur la ekrano aŭ faktaj filmoj aŭ retpoŝtoj aŭ iujn el tiuj alta nivelo konceptoj, se vi volas, ke ĉe la Fine de la tago iel devas esti stokitaj en tiu elektronika mekanika aparato uzante nur tiujn simplajn ingredients-- elektronoj venas en kaj eksteren? Tiel similus ke, en la plej simpla formo, la sola speco de ŝtatoj Mi havas en mia mondo, do al speak-- kondiĉoj en mia world-- estas aŭ Mi havas elektronoj fluas, elektro fluanta, aŭ mi faras not-- tiel plu, ekstere. Kaj ni formaligi kaj ekstere, kiel komputila sciencisto potenco, kun nur 1 kaj 0. Ni nur priskribi iun arbitran sed konsekvenca kvanto al ĝi. 1 signifas sur, 0 signifas ekstere. Aŭ vi povus ankaŭ rigardi tion kiel veraj rimedoj sur falsan rimedoj. Vi povus ankaŭ fari nigra kaj blankajn aŭ ruĝajn kaj bluajn. Vi nur bezonas du descriptores. Kaj komputilo sciencistoj volis ĝenerale nur uzu 0 kaj 1. Do se tio estas la kazo, mia sola alfabeto estas konsistanta el 0-aj kaj 1-oj, kiel ĉu mi eble atingos eĉ la nombro 2 en komputilo, kaj multe malpli la numero 3 aŭ letero de la alfabeto aŭ bildo aŭ filmo? Kiel ni ia startigi nin de tiu baza principo de 0-aj kaj 1-oj kaj reale reprezenti ion pli interesan? Nu, ni metas tiun demandon sur tene dum nur momento kaj konsideri ion espereble familiara, eĉ se vi vere ne pensis pri tion pli detale dum 10, 20, 30, 40, 50 pli jaroj. Jen kio? Kiel vi prononcas tio? Ne lertaĵon demando. Kelkaj, sed kio estas tio? 1, 2, 3, aŭ 123. Kaj mi ŝatis kiel vi diris 1, 2, 3, ĉar tio estas unu maniero de vidi ĝin. 1, 2, 3, estas sekvenco de tri simboloj. Estas fotoj kiujn ni nun havas vortojn por. Kaj se vi ia legi ilin ĉiujn kune, tipa homa en la angla dirus 123. Kaj tio estas speco de alta nivelo koncepto, sentas kiel prudente granda nombro. Sed kiel ni iru? Nu, eble ĝi estas tempo ekde vi jam pensis pri ĝi kiel tiu, sed reen en mia tago, mi ia lernis tiun kiel la 1 kolumno, la 10an de kolumno, kaj la 100 kolumno. Tiel kiel Lakisa diras, estas 1, 2, 3, sed estas ankaŭ 123. Sed kiel ni preni de la unua al la dua? Nu, vi devus tipe fari en la 100 kolumno, mi havas 1. Do jen kiel diri 100 fojojn 1. Kaj tiam en 10 la kolumno, mi havas 2. Do jen kiel diri 10 fojojn 2. En la 1-oj kolumno, mi havas 3. Do jen kiel diri 1 fojojn 3. Kaj se mi aldonas tion kune, tio, kompreneble, Estas 100 plus la 10 plus 3. Kaj ho, jen kial mi ricevas ĉi alta nivelo nocio de 123. Estas nur bazaj matematikaj, per tiuj simboloj havas pezojn al ili, se vi estos, lokokupilo aŭ kolumno valoroj. Kaj unufoje mi multiplikas ĉiun eksteren, mi ricevas tiun numeron. Tiom kiom vi scipovas paroli binary-- 0-aj kaj 1's-- kiel komputilo? OK, perfekta, neniu, aŭ neniu el vi opinias, ke vi faras. Sed mi asertas vin efektive scias tiun jam. Ni nur bezonas ian tweak nian mensan modelon iomete. Sed la procezo estas ĝuste la sama. Mi restigos ĉi tie supre kaj anstataŭe tiri tiun malsupren dum momento. En la mondo de komputiloj, ni nur havas 0-aj kaj 1-oj. Kaj tiel la afero, ke estas tuj ŝanĝos estas kio? Nu, en mia homa mondo, La dekuma sistemo, Dec signifo 10, Mi havas kiom da ciferoj en mia dispono? 10, dekstra? 0 tra 9, kompreneble. Kaj tial ni havas la 10 la loko kaj la 100 la loko. Kie estas tiu venanta de? Nu, tio estas 10 al la potenco de 0. Tio estas 10 al la potenco de 1, 10 al la povo de 2, kaj tiel antaŭen. Vi simple observu multiplikante via kolumnoj per 10, dividante kun nur 1 en la plej dekstra tie. Tiel en la mondo de komputiloj, se vi nur havas binary-- bi signifo 2-- aŭ 0-aj kaj 1-oj, ni nur vere devas ŝanĝi la bazo de tiu matematiko. Do alivorte, nun ni certigos havi la 1 kolumno kaj estas- kie estas tiu going-- la 2 kolumno, la 4 kolumno, kaj eble pretere. Kial estas tio? Nu, tio estas 2 la 0-a povo. Tio estas 2 la 1. Tio estas 2 al 2, kaj tiel plu. Do dum tie, ni havas 1, 10-a, 100-a, 1000-a, 10.000 estas, 100.000-a, 1 milionoj, kaj tiel plu, tie Ni havas 1, 2, 4, 8, 16, 32, 64. Vi simple observu multiplikante per 2, anstataŭ konservi multiplikante per 10. Tial nun, se la celo en mano estas reprezenti numerojn uzante nur 0-aj kaj 1-oj, ni konsideri kiel ni iros tien. Tiu, kompreneble, estas la mastro 0 0 0, sed kiu nombro koncepte ĝi reprezentas? Nu, 4 fojojn 0 plus 2 fojojn 0 plus 1 fojojn 0, ni aldonu tiujn kune. 4 fojojn 0 estas, kompreneble, 0, plus 2 tempoj 0 estas, kompreneble, 0 plus 1 fojojn 0 estas, kompreneble, 0. Tiel ah, ĉi reprezentas la numeron ni homoj scias kiel 0. Nu, nun, ni tre rapide rapida antaŭen. Se mi anstataŭ ne reprezentanta 0 0 0, sed ni faru 1 0 1, kiuj povus esti kiel Lakisa, pli frue, simple elparoli 1 0 1. Sed nun, kiel ni preni ĝin al la maksimuma ebenigi la nombro ni homoj povus scii? Do kio estas tiu nombro? Ĝi estas 5, la nombro ni konas 5. Nu, kial do? Nu, ni povas vere ia marŝi tra ĝi metode 4 fojoj 1, 2 fojojn 0, 1 fojojn 1. Aldoni tiujn kune, do tio estas 4 plus 0 plus 1. Kaj tio estas ja 5. Do ĝi estas ricevas iom enuiga nun fari la aritmetiko denove kaj denove. Sed la procezo estas ĝuste la sama. Lin sola kiu havas ŝanĝis en nia mondo estas ke niaj kolumnoj estas 1, 2, 4, 8, 16, kaj tiel plu, anstataŭ 1, 10, 100, 1.000. Kaj tio estas nur pro nia alfabeto havas ŝrumpis de 0 ĝis 9 por ĝuste 0 al 1. Tiel kiel iom kvizo tie, kiel farus vi reprezentas la numeron 7 en duuma? 0? Nu, 0, vi aludas 0 0 0? Diru ĝin denove, Karina. Perfekta. Kial estas tio? Ĝi estas efike 4 plus 2 plus 1. Tiel bona. Kiel ni reprezentas iom another-- kiom pri numero 2? Proksime, sed malantaŭen. Do kio estas tio? Estas 4 plus 1, do tio estas 5 denove. Tiel what's-- Mi bedaŭras, Karina? 0 1 0. 0 1 0 estus 2, ĉar denove, eĉ se ia ne saltas ĉe vi, simple fari la math. 4 fojojn 0, 0, 2 fojojn 1 estas 2, 1 fojojn 0 estas 0. Do tiu estas la nombro ni konas 2. Kion pri la nombro 8? Hm? Bonaj. Do ni ia bezonas alian lokokupilo. Ni bezonas 1 0 0 0. Kaj tio estas vera de nia speco de malnova lernejo dekuma sistemo. Kiel vi reprezentus la nombron 1000? Nu, vi ŝajnus esti ia en malmola loko, se demandi vin reprezenti la numero 1.000, ĉar eĉ se vi donu vin mem kiel 9 el tiuj, 9 el tiuj, 0 el tiuj, kiu estas la plej granda nombro vi havas, vi ne tute atingi 1,000. Do se vi 1,000, vi nur bezonas alian pozicion, tiel ke vi povas fari 1 0 0 0, ergo la numeron 1.000. Do nun, ni mapi tian koncepta diskuton reen al aparataro, kie denove la enigo estis ĵus tiu malgranda potenco kablo, elektro venon kaj fluas eksteren. Kaj tiel por ke estu mapita de ĉi tie por ke, nu, kion ni vere bezonas? Nu, vi povas pensi pri esti ene de komputilo, tuta aro da ampoloj, se vi volas. Ili vere nomas transistoroj. Kaj transistoroj estas nur ŝanĝas kiu povas ĉu esti aŭ malŝalti. Do vi povas pensi pri transistoro jen sur permesas elektro fluu kaj transistoro tio ekstere tiel haltante elektro de fluanta. Kaj anstataŭ preni super la lumoj tie, kial ne mi faras tiun specon de nova lerneja stilo. Do tio ĉi povus esti 1, poŝlampon sur unu, nur apenaŭ tamen. Kaj tiu povas esti 0, kaj nun ĝi estas for. Do uzante tiun fizika aparato, mi povas nun reprezentas la duuma sistemo. Mi nur bezonas du ŝtatoj. Negrave kio kolora ĝi estas aŭ kio ĝi estas. Ĉiuj kiu gravas estas, ke mi havas unu stato al alia ŝtato for. Do uzante mia telefono tie, kiel mi reprezentas la numeron ni konas 0? Aŭ meti ekvivalente, kio numeron mi reprezentas nun? 0, ĉar la aparato estas malŝaltita. Kaj se mi faras tion? Kaj nun, kiel mi reprezentas la nombron 2? Ĉu mi povas pruntepreni vian telefonon tie, kiel ni faris hieraŭ? Do ni vidas, do se mi volas reprezenti la numero 2, estas tiu la numero 2? Ne Kiu nombro estas mi hazarde reprezentanta tie? Tiu estas fakte la nombro 3. Do kion oni faras mi volas elŝalti? La nigra telefono or-- bone, se they're-- nigra telefono aŭ la blanka telefono? La blanka telefonon. Do se mi turnas ĉi ekstere kaj ni linio supren tie, ni havas 1 en la 2 loko kaj a 0 en la 1-oj loko. Kaj tial mi nun reprezentanta la numeron 2. Kaj tiu, Kompreneble, estus la nombro 3, ĉar nun ambaŭ lumoj estas sur. Kaj mi halti tie, sed ĝi staras rezoni se mi volas reprezenti la numero 4 aŭ 8 aŭ supera, Mi tuj bezonos pli telefonoj. Sed jen ĉio tio okazas. Do se vi iam aŭdis ke ene de a-- dankas you-- komputilo Estas milionoj da transistoroj, jen nur milionoj de eta ŝaltiloj. Kaj ili ne estas lumo bulboj kiuj turni sur kaj for, sed ili ambaŭ permesis elektro flui ie halti ĝin. Kaj do estas via du states-- aŭ malŝalti, sur aŭ for. Do ni ŝajnus nun havi tiun kapablon reprezenti tiun koncepton ke Ni ŝatus en reala aparataro. Sed ĉiuj ni havas nun estas la kapablo reprezenti nombrojn ĝi ŝajnus. Do kiel ni iras pri reprezentanta literoj de la alfabeto, kiu sentas la sekva ia trajto vi volus aldoni al moderna komputilo unufoje vi havas nombrojn? Kaj efektive, se vi pensas pri ĝi, historie, komputiloj enkondukis vere servi kiel kalkuliloj ciferece. Sed kompreneble tiuj tagoj, ili faros multe pli. Eĉ kiam boto supre, Vi tipe vidi unu aŭ pli vortoj. Do kiel vi reprezentas vortojn, Se ĉiuj devas estas, denove, elektro ĉe la fino de la tago, aŭ ekvivalente 0-aj kaj 1-oj? Yeah. Yeah, Mi volas diri, ni ia faris ĉi hieraŭ en iu formo, kie en iu momento, Mi kredas ke mi arbitre diris ke, se ni volas reprezenti la litero A, ni povus simple nomas ke 1. Estis en la kunteksto de kriptografio, kie ni simple bezonis ian kodo, ia mapado. Do eble A estos reprezentita kiel 1 kaj B estos reprezentita kiel 2, kaj Z estos reprezentita kiel 26, ekzemple. Kaj tiam la nura avertrimarko estas ke se mi tuj kodi literojn en miaj mesaĝoj aŭ en mia teksto mesaĝojn kiel nombroj, vi ĉiuj devas interkonsenti uzi la sama aro de konvencioj. Kaj efektive, la mondo faris ekzakte tion. Estas sistemo en la mondo nomita ASCII, Esperanto Kodo por Informo-Vojnodo, kiu estas simple decido iuj jaroj antaŭ ke la homoj faris ke decidis ke A estas iranta egali, ne 1, 2, kaj 26, kaj tiel forth-- ĝi estas iom different-- sed 65, 66, 67. Kaj mi tiros supren diagramo en nur momento. Sed estas arbitra. Sed ne gravas ke ĝi estas arbitra. La mondo havas nur esti konsekvenca. Nun, pli ĵus, estas io amatoro nomata Unikodo, ĉar la monda klaso de realigita, post elpensi komputiloj, ke ekzistas pli ol bone 256 simboloj en la mondo ke ni volas reprezenti, Precipe kiam vi enkondukos Asian lingvoj kaj aliaj symbologies kiuj bezonas pli esprimpovo ol vi povas havi en la fruaj versio de tiun kodon, kiu estis nomita ASCII. Do Unikodo fakte permesas vi uzi pli 0-aj kaj 2. En aparta, vi tenas aŭdante la vorto bajtoj en socio kaj eĉ simple hieraŭ. Kaj bajto estas kio denove? Kio estas bajto? Estas nur 8 bitoj. Do kion tio vere signifas? Nu, tio signifas, pli frue, kiam ni estis parolas pri duuma kaj mi uzis arbitre tri bitoj kunestante parolas binary-- la 1-oj loko, la 2 loko, kaj la 4an de place-- bone, bajto nur signifas ke vi parolas ne en unuecoj de tri sed kvar, kvin, ses, sep ok, kiu donas al ni 8 loko, 16-a, 32-a, 64-a, kaj 128-a. Alivorte, iom ne ĉiuj ke utila unuo de mezuro, ĉar ĝi estas nur kiel eta peco de informo, aŭ malŝalti. Do kelkaj jaroj, la mondo simple decidis ĝi estas iomete pli oportuna por paroli en laŭ bitokoj, ok aferojn samtempe. Kaj tial tiel naskiĝis la nocio de bajto. Kaj tial ni havas ok bitoj tie. Kaj ĝi rezultas ankaŭ por similaj kialoj, la mondo decidis jarojn antaŭ tiu reprezenti ASCII literon, vi tuj uzas unuecojn de 8 bitoj. Do eĉ se vi ne bezonas ke multaj, vi estas ĉiam tuj uzi 8 bitojn por reprezentas literon de la alfabeto. Kaj tio estas konvena, ĉar tiam se ricevi mesaĝon kiu havas 0 0 0 1 1 1 1 0 sekvis alia 1 1 1 0 1 0 0 1, do se vi ricevas 16 bitoj, la mondo povas nur supozas ke la unuaj 8 estas unu leteron kaj la dua 8 estas alia letero. Ne gravas kiom da ekzistas. Ĝi nur gravas ke ni ĉiuj konsekvenca Kiam ni interpreti tiujn bitoj. Kaj tio estis nur hazardo. Tio signifas ion, sed mi ne vere pensas pri kio ĝi signifas. Do ĝi estas malgranda blanka mensogo. Origine, ASCII reale uzata nur 7 bitoj. Kaj la oka bito estas nomita ASCII etendita. Sed la punkto estas, finfine, la sama. La mondo ĝenerale normigita sur 8 bitoj. Do ĉi tio ŝajnas esti iom limiganta, ĉar mi povas nur reprezenti ĉefurbo A, ĉefurbo B tra ĉefurbo Z. Sed certe ne, se mi iros to-- Tie estas aro da rimedoj rete, ekzemple, asciitable.com, tiu tuj estos iom superfortanta ĉe unua. Sed mi atentigas kio estas grava tie. Tio nur okazas al be-- kaj Mi instruos vin walk-- ni vidu, se mi iros tien. Tie estas, en la dekuma kolumno, la numero 65. Kaj dekstre kolumno letero karaktero, Chr, estas la litero A. Kaj vi povas ignori, por nun, ĉio en la mezo. Tiu estas deksesuma, octal kaj HTML kodo. Al tiu ejo estas nur provas ĵeti multajn informojn ĉe vi samtempe. Sed ĉiuj ni zorgas pri estas la dekuma kolumno kaj la karaktero kolumno. Do per tiu logiko, kio estas la nombro kiun la mondo decidis reprezentas minuskla a? Yeah, 97. Kaj ĝuste despistar potenciale iomete, kiu nombro estas la mondo decidis reprezentus la nombron 1? Bone, ĉar we-- 49, ŝajnas tie, sur la fundo lasis. Nu, kion mi celas per tio? Do rezultas ke en komputilaj sistemoj, estas ĝenerale fundamenta diferenco inter numero kaj karaktero. Numero estas la afero ni lernis kreskis kiam ni estis súper juna en grado lernejo. Estas aferoj vi havi. Sed karaktero estas nur formo, oni Signo, por tiel diri, sur la ekrano. Nun, ni homoj ia vidos iu kiu aspektas kiel ĉi tio. Kaj ni diru, ho, tio estas la numero 2. Sed ne, tio estas nur simbolo kiu aspektas kiel kion ni konas kiel la numero 2. Kaj tial ekzistas tiu fundamenta distingo inter realaj nombroj kaj signoj. Jen kelkaj. Sed ĝenerale, en la kunteksto de komputilo, Se vi anstataŭe vidi io tiamaniere quoted-- kaj vi ne ĉiam devas vidi ĝin citita, sed pro discussion-- se vi vidas citilojn ĉirkaŭ la numeron, tio estas nun gravulo. Do tiu nombro 2 sub la kapuĉo ene de komputilo estus reprezentita kun mastro de bitoj kiuj reprezentas la nombron 50 laŭ la diagramo rete. Tamen, se komputilo nur vidas tion, tiu estus reprezentita per la mastro de bito 0 0 0 0 0 0 1 0. Dum kiu, tiu karaktero farus reale esti reprezentitaj as-- nun Mi alvenis al pensi iom harder-- tiel ĉi karaktero estus reprezentita per 0 0 1-- kion mi bezonas ĉi tie? 0 0 1 1 0 0 1 0. Kiel mi faru tion? Nu tio estas la numero 50, se vi multigos ĝin uzante tiujn kolumnojn, tio estas la numero 2, kaj tiel tial ekzistas tiu dicotomía. Kaj tio estas nur teaser nun por karakterizaĵoj kiuj ekzistas en programlingvoj ke ni tuŝas mallonge poste hodiaŭ. En programlingvoj, vi havas ĝenerale, sed ne ĉiam, aferoj voku malsamaj datumtipoj. Alivorte, oni programmer-- kiam li aŭ ŝi skribas, programisto ricevas por decidi en kio formato por stoki siajn datumojn. Vi aŭ stoki datumojn kiel krudaj nombroj, kiel la numero 2. Aŭ vi povas stoki ilin kiel kordoj, aŭ sekvencoj de karakteroj ke vi ĝenerale esprimi per citiloj en via programlingvo. Vi povas havi aĵojn called-- Mi oversimplify kaj nomas ilin reala numbers-- tiel nombroj kiuj ne entjeroj kiel la numero 2, sed nombrojn ŝatas 4,56. Tiel reelaj nombroj povas ankaŭ havas dekuman punktoj, do tio estas malsama fundamenta peco de datumoj en komputilo. Kaj tiam vi povas eĉ havi aliaj datumtipoj ankoraŭ. Do tio estas nur gustumaĵo vere de la plej simpla de dezajno decidoj ke programisto povus faras sub la kapuĉo. Tiel demandojn ĝuste ankoraŭ? Do ni provu fari ĉi iom pli reala. Tiu aparataro ne tiel en uzo pli longe. Sed plej ĉiuj en tiu ĉambro verŝajne kreskis kun kaj ankoraŭ uzas malmolaj diskoj iel. Kvankam la plejparto de niaj tekkomputiloj ne plu havas aparatojn kiuj operacias kiel ĉi, anstataŭ tekkomputiloj hodiaŭ ĝenerale havi solida stato diskoj sen partoj móviles. Kaj kiu inklinas esti pli multekostaj, bedaŭrinde, sed iomete pli rapida kaj a-- bone, ofte, multe pli rapida, kiu estas unu el la kialoj. Kaj ankaŭ ĝi ne generi tiel varmego. Ĝi povas esti pli malgranda, do estas Ĝenerale reton pozitiva. Sed tiu permesas ni al mapas iom pli konkrete kia ni parolas pri la 0-aj kaj 1 nivelo nun al fizika aparato. Estas unu afero por mi paroli pri 0-aj kaj 1-oj en terminoj de mia telefono aŭ abstrakte en terminoj el ŝanĝas esti sur kaj for. Sed kio pri malmolaj diskoj? En via tekkomputiloj, se vi havas pli malnovan unu, aŭ en via surtabla komputilo, aŭ certe en serviloj hodiaŭ, kie vi havas malmolaj diskoj kiuj havas oni terabajto de spaco, 4 terabajtoj de spaco, bone kion tio signifas? Malmola disko kun 1 terabajto de spaco per Tie estas 1 biliono bitokoj ene de ĝi iel, aŭ ekvivalente 8 bilionoj bitoj ene. 1 terabajto estus 8 terabits aŭ 1 Triliono bitoj, kiu signifas, se vi havas malmolan veturado, vi iel aŭ aliaj biliono 0 la kaj 1-oj ene de ĝi. Kaj se ni nur rigardu la arbitra foton de malmola disko reprezentanto, tiu estas kio malmola stirado povus tipe aspektas interne. Ĝi ankaŭ estas speco de kiel malnova fonografo ludanto sed ĝenerale kun multnombraj registroj ene, do al speak-- multoblaj pladoj, kiel ili estas nomitaj, metalo cirkla diskoj, kaj tiam iom legado kapo, multe kiel malnova sonprenilo. Kaj ke legado kapo moviĝas reen kaj antaŭen kaj iel legas la bitoj. Kaj kio estas sur tiuj pladoj, eĉ kvankam ni homoj ne povas vidi ilin, ĉu en realaĵo aŭ en ĉi tiu bildo, Tie estas eta magneta eroj. Kaj eĉ se vi havas multe forgesitaj kiel elektro funkcias, magneta partiklo kiu estas ŝargita ĝenerale havas norda fino kaj suden end-- tiom norde kaj sude. Kaj tiel la mondo nur decidis iun tempon ke, se magneta protokolo esence vicigas kiel tiu, nord-suda, ni nomas ke 1. Se ĝi estas anstataŭe suda-norda, ni simple nomas tion a 0. Kaj do se vi havas ĉe via dispono biliono eta magneta particles-- kaj espereble, la aparataro inĝenieco en Por turni tiujn ĉirkaŭ kiel vi vidas fit-- se vi volas reprezentas tutan faskon de 0-a, vi nur bezonas 8 magnetaj eroj ĉiuj vicigitaj tiel. Kaj se vi volas reprezenti ok 1-a, vi nur bezonas 8 magnetaj eroj vicigita reen por malantaŭeniri por malantaŭeniri ŝatas tion. Kion mi celas diri per la magnetaj eroj? Sincere, ĉiuj tiuj jaroj poste, la afero kiu ankoraŭ venas al mia menso estas tiu ulo, se vi kreskis kun tiu afero. Jen little-- por tiuj unfamiliar-- a iom infanaĝo ludilo ke havas ĉi senhara viro tie kiu havas ĉiujn tiujn eta nigra magnetaj eroj kiuj venas kun ĝi. Kaj uzas ruĝan bastono, kiu estas ĝuste magneto, vi povas ordigi de doni lin bigote aŭ brovoj aŭ hararo aŭ ion sur lin. Do fakte, se ni zomi en, ekzemple, tio Estas la speco de ludo povas ludi kun Wooly Willy. Kaj tio estas nur por diri, tiujn estas multe pli grandaj magnetaj eroj ol estas reale sur malmola disko, kaj multe malpli magnetaj eroj. Sed ni vere vidos tiam se vi havas eta magneta eroj en malmola disko, kiel vi povos reale uzi tiujn por reprezenti datumojn. [VIDEO reprodukto] -la Malmola disko estas kie via PC tendencas plimulto de lia permanenta datumoj. Fari tion, la datumoj vojaĝas de RAM kune kun programaro signalojn kiuj diras al la malmola disko kiel memori ke datumojn. La malmola disko cirkvitoj traduki tiujn signalojn en tensio fluktuoj. Tiuj, siavice, kontroli la malmola disko la movanta parts-- iuj de la malmultaj movanta partoj lasis en la moderna komputilo. Kelkaj el la signaloj kontroli motoron, kiu ŝpinas metalo-kovrita pladoj. Viaj datumoj estas reale stokitaj en tiuj pladoj. Aliaj signaloj movi la legado / skribo kapoj legi aŭ skribi datumojn sur la pladoj. Tiu maŝinaro estas tiel preciza ke homa haro ne povis eĉ pasi inter la kapoj kaj ŝpini pladoj. Tamen, ĝi ĉiuj laboras en terura rapidoj. [FINO reprodukto] Kaj vi povas vidi ĉe la vosto fino de la vídeo, estas ĝenerale multoblaj pladoj. Kaj por ke legante kapo ne nur legante la supro. Estas ia kiel tri aŭ kvar aŭ pli legado kapoj ke movo kiel tiu, legi datumojn samtempe. Do ekzistas multe de komplekseco kaj ia tempigo kiu estas implikita en malmola disko. Kaj la afero turniĝas vere Darn rapida, do ne estas multe da komplekseco. Sed ni zomi en iom profunda kaj vidi kie ili estas, magnetaj eroj kaj kiel ni fariĝas ĉe ili. [VIDEO reprodukto] -Let Rigardu kion ni ĵus vidis en malrapida moviĝo. Kiam mallonga premas de elektro estas sendita al la legado / skribo kapo, ĝi klakas sur eta elektromagnetaj por frakcio de sekundo. La magneto kreas kampo, kiu ŝanĝas la polaridad de eta, eta parto de la metalo eroj kiu jako ĉiu plado surfaco. Ŝablono serio de tiuj etaj ŝargita supren areoj sur la disko reprezentas ununuran pecon de datumoj en la duuma nombro sistemo uzita per komputiloj. Nun, se la nuna estas sendita unu vojo tra la legado / skribo kapo, la areo estas polarizita en unu direkto. Se la nuna estas sendita en la kontraŭa direkto, la polarizo estas inversa. Kiel vi akiras datumojn de la malmola disko? Nur inversigi la procezon. Do ĝi estas la eroj en la disko kiu akiras la nunan en la legado / skribo kapo moviĝas. Kunmetita milionojn da tiuj magnetizada segmentoj, kaj vi havas dosieron. Nun, la pecoj de sola dosiero eble disĵetitaj ĉie veturadon la pladoj, ia kiel la salato de paperoj sur via skribtablo. Tiel speciala ekstra dosieron tenas spuro de kie ĉiu. Ĉu vi deziras vin havis io simila? [FINO reprodukto] Do estanta aludis tie eble estas ke temo de hieraŭ de forigo. Kiam vi forviŝi dosiero, hieraŭ ni diris ke komputilo efektive faras kion, kiam vi treni ion al la Reutiliga Bin aŭ rubujo? Ĝi nur forgesas gxin. Sed la 0-aj kaj 1-oj, la magnetaj eroj ke aspektas ruĝa kaj blua aferoj tie, aŭ mia brako tie, estas ankoraŭ sur la malmola disko. Do tie ekzistas software-- Norton Utilities kaj Yesteryear kaj aliaj pli modernaj software-- ke nur skanos tutan malmola disko rigardanta ĉe ĉiuj tiuj 0-aj kaj 1-oj, ĉar rezultas ke plejparto dosiero formats-- Vorto dokumentoj, Excel dosieroj, bildoj, video files-- ĉiuj havas certajn ŝablonoj kiuj estas komunaj inter ili. Ĉiu video dosiero eble esti de malsama vídeo, sed la unuaj pluraj bitoj estas kutime la sama. Aŭ la lasta pluraj bitoj kutime la sama. Kaj tiel kun alta probablo, Vi povas serĉi tiujn mastrojn. Kaj eĉ se la dosiero estis forgesita, vi povas diri kun alta probablo, sed ĉi aspektas kiel Word dokumento, permesas rekuperi ĝin kaj un-forgesu ĝin, se vi volas. Kaj do tiel estas kiel vi povas reakiri datumoj kiuj estas ĉu estis hazarde forigita aŭ forigitaj aŭ intence forigita por kiaj celoj. Kontraste, sekura forigo agados en la kunteksto de bildo tiel? Ĝuste, faras ilin cxiujn hazarda. Do ia movas kelkaj ilin malsupren, kelkaj el ili supren, lasas iuj de ili neŝanĝita, kaj ĝenerale faras hazarda bruo el ĝi, aŭ nur eble faras ĉiujn ilin 0 La aŭ ĉiuj el ili 1-oj. Kaj ke tro povas ĝenerale arbustaro viajn datumojn for. Do ni revenu nun al la temo de komputa pensado, per ni havas la formulon enigoj. Kaj algoritmoj donas vi eligas finfine. Ni enfokusigi nun enigoj kaj eliroj, ĉar nun mi aserto ni havas vojon de reprezentanta enigoj kaj eligoj. Ni nur tuj uzos duuma. Kaj neniu gravi kion ni volas reprezenti hodiaŭ, ĉu ĝi estas nombro aŭ letero aŭ miloj Sur telefono libro aŭ bildojn aŭ filmojn, ĉe la fino de la tago, ĝi estas ĉio 0-aj kaj 1-oj. Kaj mi asertas ke, eĉ se tiu Estas súper simpla mondo kun nur 0 la kaj 1-a, ni povas konstrui mem supren. Kaj ni vidis unu ekzemplo de ke per leteroj tiom. Do ni enfokusigi nun ĉi meza ingredienco, algoritmo. Kaj ni revenos al tiu ekzemplo de Mike Smith. Do en ĉi tiu telefono libro, kiun rekoni, ni ne uzas tiel plu, estas problemo solvenda. Ni volas trovi iun kiel Mike Smith. Kaj kio povus fari por trovi Mike? Nu, mi povus simple malfermu tiun libro, komenci ĉe la unua paĝo, kaj rimarkas, ho, mi estas en la Sekcio. Mike ne ekzistas. Mi bezonas la S sekcio por Smith. Do simple observu turnante unu paĝo samtempe. Lasu min ŝajnigi ke tiu estas ĉiuj blankaj paĝoj kaj ne flavajn paĝojn, ĉar ni ne tuj trovi Mike en la flavaj paĝoj ĉiuokaze. Sed mi estas en la blankaj paĝoj. Kaj nun mi estas en la B sekcio. Mi ankoraŭ ne trovis lin. Do mi plu rivoluos unu paĝo samtempe. Tio estas algoritmo. Estas aro de instrukcioj por solvi iun problemon. Alivorte, rigardu paĝo, se Mike ne sur gxi, turni paĝon, kaj ripetoj denove kaj denove kaj denove, ideale rigardante malsupren kiel vi faras ĝin. Tia estas tiu algoritmo, tiu procezo, korekta? Pardonon. Ne, mi aŭdas iun nos. Okej, sed is-- yeah, ĝi estas certe teda. Kiel ni estos ĉi tie tutan tagon, se mi teni serĉanta Mike ĉe tiu rapideco. Sed mi asertas ĝi estas korekta. Ĝi estas stulta, sed ĝi estas korekta. Fine de la tago, dum ĝi eble prenu trovos Mike se li estas en tie kaj mi pagas atenton. Kaj mi fine atingi lia paĝo. Kaj se mi iras tro malproksime, se Mi alvenas al la T sekcio, tiam mi povas iomete optimizar kaj ĝuste diri, hm, ĉiuj farita. Mi eĉ ne bezonas malŝpari tempo tuj la Z. Sed tio estas tre lineara alproksimiĝo, se vi estos, tre speco de maldekstra-al-dekstra alproksimiĝo, rekto. Kaj lia ĝentila sed malrapida. Tial mi memoras de grado lernejo, varo de optimumiga de unua lernojarano, kie mi lernis ne rigardas de tiuj nur per twos-- do 2, 4, 6. Ĝi estas A, multe malpli facile do, sed en teorio, ĝi estas faster-- 8, 10, 12, 14, kaj tiel plu. Kion pri tiu algoritmo? Estas pli efika? Estas ĝi pli rapide? Spektantaro: Ĝi estas efika. DAVID Malan: Jes, do ĝi estas def-- estas laŭvorte duoble rapida, supozante mi ne akiri stumblis supren per miaj fingroj. Ĝi estas duoble rapida, ĉar Mi turniĝadas tra du paĝojn samtempe anstataŭ unu, sed ĝi estas potenciale en korekta, ĉar kial? Spektantaro: Vi saltante iuj. DAVID Malan: Bone, se Mike okazas esti sandwiched-- eble kiam mi poste en la telefono libro, Mike hazarde estas krampitaj inter tiuj du paĝoj, kaj mi simple blinde salti super ĝi. Do ni bezonas iom solvon tie. Iam mi trafis la T sekcio, mi ne nur memfide diri, Ni ne trovis Mike Smith. Mi verŝajne devas duobligi reen. Aŭ fakte, kiam mi atingos iun nomita S-N, anstataŭ S-M por Smith, tuj, mi povus duobligi dorso, ĉar eble li estis sur la antaŭa paĝo. Sed mi ne devas duobligi reen nun. Teorie, se mi faros ĝin ĉe la dekstra tempo, mi simple reiri unu paĝo. Do ĝi estas aldonante nur unu ekstran paŝon. Do mi iris dufoje kiel rapida, sed tio kostos al mi unu ekstran paĝon. Sed kiu sentas kiel pura gajno. Sed ĉi tio ne lin plej homoj en ĉi ĉambro devus solvi tiun problemon. Kion farus tipa persono, eble Antaŭ kelkaj jaroj faros, por trovi Mike Smith? Yeah, ne trovis Mike. Kion mi faras? Tiel akiri iom pli proksime, sed mi faras know-- veron pri telefona libro? Spektantaro: Ĝi estas secuencial. DAVID Malan: Estas secuencial. Ĝi estas alfabeta. Kaj do se mi estas en la M sekcio, Mike estas klare dekstren, Mi povas laŭvorte dissxiros la problemo en half-- ĝi estas kutime pli facila ol that-- larmo la problemo en duono kaj ĵeti ĝin for, tial nun, mi havas problemon jen plu 1.000 pages-- ke estis malfacila, ĉar mi kredas ke mi vere ŝiris la telefono libro ĉi time-- ne 1.000 paĝoj, sed 500. Do la problemo estas laŭvorte duono tiel granda. Kaj tio estas sufiĉe konvinka, ĉar kun mia antaŭa algoritmoj, versio 1 kaj 2, mi estis nur faranta la problemo unu paĝo malgrandaj, du paĝoj malgrandaj samtempe. Sed nun, mi faris 500 paĝoj malgrandaj subite. Bone, do nun, Karim proponas ke mi iras al la dekstra duono. Do mi tuj iras malglate al la mezo, donu aŭ preni. Kaj se mi faris ĉi matematike, Mi povis iri rajton al la mezo. Nun mi rimarkas, ho, Mi estas en la T sekcio. Mi fakte ne tro malproksime. Sed mi povas, denove, ŝiri la problemo en duono, forĵeti ĝin. Kaj mia bitokoj ne tiel granda. Ĝi estas nur, kion, 256 paĝoj aŭ 250 paĝoj, donu aŭ preni nun. Sed ĝi estas ankoraŭ maniero pli ol unu paĝon aŭ du paĝoj. Kaj tiel nun mi iros krude al la mezo. Ho, mi ne iris tre longen sufiĉe nun. Do mi ripetas, ripeto, ripeti, ripeti, ĝis mi espereble lasita kun nur unu paĝo. Tial invitas la demandon, se mi komenciĝis kun proksimume 1.000 paĝojn, kiom da paŝoj? i prenis min kun versio 1 de mia algoritmo? Nu, se Mike estas en la S sekcio, en la plej malbona kazo, tio estas sufiĉe proksima al Fine de la alfabeto. Do se la telefono libro havas 1.000 paĝojn, Mi trovos Mike ene 1.000 paĝoj, doni aŭ preni. Eble estas kiel 800 aŭ tiel, sed ĝi estas sufiĉe proksima al 1,000. Dum kiu, en la dua algoritmo, kiom da paĝo turnas maksimume povus mi postulas trovi Mike Smith? Ekzistas 1.000 paĝoj, sed mi estas fari ilin du samtempe. Bone, do maks kiel 500ish, ĉar se mi iros tra la tuta telefono libro, ĉe kiu punkto, mi povas halti. Sed mi forrazos kelkaj de nur haltante ĉe la T sekcio. Sed estas en la plej malbona kazo 500 paĝoj. Do kiom da fojoj mi povas dividi 1,00o-paĝo telefono libro en duono denove kaj denove kaj again-- de 1.000 al 500 250 al 125? Kiom longe antaŭ ol mi trafis unu paĝo? Jes, ĝi estas proksimume 10. Depende rondigas kaj tia, ĝi estas 10 paĝoj entute necesas transformigxos aŭ telefono libroj devas esti ŝirita. Do jen bela potenca. Ni komencis kun 1.000-paĝa problemo en ĉiuj tri de ĉi tiuj rakontoj. Sed en la unua algoritmo, ĝi prenis min, plej malbona kazo, 1,000 paĝon turnas trovi Mike. Dua algoritmo, 500 paĝoj trovi Mike. Tria algoritmo, 10 paĝoj trovi Mike. Kaj ĝi estas eĉ pli potenca kiam vi pensas pri ia kontraŭa scenaro. Supozu ke la telefono kompanio sekva jaro eble kunfandas du urboj kune, kaj la telefona libro estas subite tiu dika, anstataŭ ĉi tiu, tiel 2.000 paĝojn anstataŭ 1.000. Nu, mia unua algoritmo serĉas Mike Smith en 2.000-paĝan telefono libro, malbona kazo, ĝi estas tuj prenos kiom paĝo turnas venontjare? Telefono libro estas 2.000 paĝoj, so-- bone, ne pli. Se la telefono libro estas duoble dika en la unua algoritmo, unua algoritmo, 2,000, ĉu ne? En la plej malbona kazo, Mike estas vere fermi al la fino de la libro, do estas 2.000 paĝo turnoj. Dua algoritmo preterirantan duope, kiel 1.000 paĝoj. Sed kion pri mia tria kaj pli freŝa algoritmo? Se la telefono kompanio duobligas la numeron de paĝoj de 1.000 al 2.000, kiom pli fojoj bezonas mi disŝiros ke libro en duono trovi Mike? Spektantaro: Nur unu. DAVID Malan: Nur unu pli, ĉar kun unu paĝo larmo, Mi povas laŭvorte dividi kaj konkeri, se vi volas, ke problemo en duono preno amasa mordo el ĝi. Kaj tial ĉi tio estas ekzemplo de efikeco kaj defendeble algoritmo kun kiu ni ĉiuj estas ia intuicie familiara. Sed estas same ĝentilaj kiel miaj aliaj algoritmoj kun tiu tweak por la dua algoritmo, sed estas tiel multe pli efika. Kaj fakte, kion komputilo sciencisto, aŭ siavice programisto, estus tipe fari kiam skribanta poŝtkodo estas provi elkompreni, bone, mi ne volas mia programo nur esti ĝentilaj, Mi ankaŭ volas ĝin esti efika kaj solvi problemojn bone. Imagu en la reala mondo hodiaŭ, kiel Google indeksas, serĉoj kiel miliardoj da paĝoj, imagu se ili uzita la unua algoritmo por trovi katoj inter miliardo pages-- rigardante la unua paĝo en la datumbazo, la dua, la tria, nur rigardante por kato, serĉante kato. Tio estas sufiĉe darn malrapidigi ĝi ŝajnus. Ili povus anstataŭe uzi ion nomita duuma serĉo, kiu neniu coincidence-- bi Signifanta du, ni teni dividanta ion en 2, en half-- ili povis uzi duuma serĉo kaj eble trovi katoj eĉ pli rapide, aŭ kion estas vi serĉanta. Kaj sincere, estas eĉ amatoro algoritmoj ke fari multe pli ol nur dividante aferoj en duono Por trovi informon rapide. Kaj ni parolos iomete pri tiuj post tagmanĝo hodiaŭ. Do mi simple provi reprezenti tion. Ni ne devas iri en ajna math aŭ realaj nombroj. Ni povas paroli pri tio en la abstrakta. Sed lasu min nur proponi, se vi estis dialogante nun kun la inĝenieroj proponante ĉi algoritmo kaj vi provas fari kalkulita decido, ĉar eble la inĝeniero diras al vi, vi scias kion mi povas efektivigi lineara serĉo en kiel du minutoj. Ĝi estas tiel facila. Duuma serĉo estas ne kaprico, sed ĝi estas tuj prenos min kiel 10 minutoj, tiel 5 fojojn tiel longe. Ekzistas komerca tie, eĉ laŭ decidi kion programaro skribi. Ĉu vi skribas la pli simpla algoritmo, kiu nur preni vin du minutoj? Aŭ ĉu vi pasigas pli da tempo, 10 minutoj, skribi la amatoro algoritmo? Kiel vi decidos ke ia demando? Aŭ vi povus fari ĝin iom pli reala. Mi diras mia estro ĝi tuj preni mi ĉu unu semajno aŭ 10 semajnoj apliki la programaro tiamaniere, kiamaniere vi decidi kion algoritmo al verda lumo? Karim? Spektantaro: La aŭdienco, mi supozas. DAVID Malan: La aŭdienco. Kion vi volas diri per la oreloj? Spektantaro: Se ĝi estas tuj uzota de uzantoj kiuj [inaudible] de uzantoj [inaudible]. Sed se ĝi estas io vi estas nur fari mem faciligi problemo, [Inaudible] rapida. DAVID Malan: Jes, ĝi estas rapida kaj malpura estas bona maniero por priskribi ĝin. Fakte, se vi estas priskribante multe de mia tempo en grad lernejo, per kio ofte tempoj, Mi skribis malbonajn kodo konscie so-- almenaŭ, tiel estas kiel mi raciigita it-- konscie tiel, ĉar kvankam mi estis skribanta kodo kiu estis relative malrapidaj por ekzekuti, Mi povis skribi la kodon mem sufiĉe rapide, elspezante nur minutoj aŭ horoj ne tagoj. Kaj montriĝis, mi foje bezonis dormi. Do eĉ se mia kodo bezonata 8 horoj kuri, bone tio estas bone, Mi nur iri dormi dum ĝi kuras. Do tiutempe, mi opiniis tion tre lerta, kvankam mi ŝajne laborita tra mia PhD tre malrapide. Sed la reo de kiu ke, se mi estis skribanta softvaron por aliaj personoj, kiuj gravis pli ol mi, nu, havante ilin atendi 8 horoj reiri siaj serĉrezultoj Ne ĉiuj kiuj konvinka. Kaj tiel elspezi pli tempo supren fronto skribi programaron kiu estas pli efika, pli kiel nia tria algoritmo, probable profitigas la uzantoj super tempo. Tiel vere dependas sur tempo kiel tiuj kostoj sumigas. Se vi tuj skribos programaro uzi fojon, verŝajne povus tiel fari rapida kaj malpura, kiel ili diras. Nur ĵeti kune. Ĝi estas kodo kiu embarasas vi, estas tiel malbona, sed akiras la laborpostenon farita ĝuste, kvankam ĝi ne estas efika. Male, vi pasigas pli da tempo sur io, akiri ĝin ĝuste. Kaj tiam amortizita tempo, ke upfront kosto de tempo Estas probable indas, se vi tenas optimizando por la komuna kazo. Kaj efektive, jen temo en programado, aŭ komputika pli Ĝenerale, provi optimumigi Ne por la malofta kazo sed la komunaj case-- kion operacio okazos denove kaj denove? Se vi tuj havos miliardoj de uzantoj serĉi en via retejo, vi supozeble elspezi la kroman semajnoj ĝis antaŭ skribi bona programaro, por ke ĉiuj viaj uzantoj profitigi. Nun ni provu kapti tiun pli iom bilde, sed ne tiom ciferece. Do jen nur malnova lernejo diagramo. Kaj mi diru ke tio estas tempo. Kaj ne gravas what-- fakte, ecx tempo. Ni metis tiun sur la alia akso. Diru ke ĉi tiu estas la momento, kaj tio estas grandeco de problemo. Kaj komputila sciencisto povus ĝenerale nomas ĉi nur n. n estas kiel nia iri-al variablo, kie n estas nombro, n nombro, kaj ĝi estas la kelkaj ajn enigoj vi havas. Do en ĉi tiu kazo, n estas la nombro de paĝoj. Do eble estos 1,000 en la kazo ĵus diris. Tiel tempo povas esti ajna unueco de mezuro. Eble, ĝi estas dua. Eble, estas tagoj. Eble, estas kiel paĝo turnoj. Ne gravas. Kion ajn vi deziras kalkuli je, ke Estos tempo aŭ kosto ekvivalente. Do kun tiu unua algoritmo, se mi, ekzemple, havis 1.000-paĝan telefono libro, Mi tuj desegni punkton tie, ĉar se ĝi estas 1.000 paĝoj, ĝi prenis proksimume 1.000 paĝo turnas, donu aŭ preni. Kaj se mi havis 2.000-paĝan telefono libro, kaj mi tuj desegni duan dot tie, ĉar por 2.000 paĝojn, estas kvazaŭ 2.000 sekundoj aŭ paĝo turnas aŭ kion ajn. Kaj tiel, kiam mi diris antaŭe, estas speco de lineara interrilato, kiu estis intenca, ĉar mi volis poste on-- dekstra now-- desegni linion. Estas speco de rekta linio rilaton. La inklino estas 1/1, se vi volas. Dume, la dua algoritmo diris, se vi havas 1.000 paĝojn kaj vi uzis la dua algoritmo, Kie mi rakontis por 2-a, turnante du paĝojn samtempe, mi desegnas dot sube aŭ supre mian originalan punkton? Spektantaro: Sube. DAVID Malan: Sube, ĉar kiel ni vidis, ĝi prenas malpli tempon, duone tiel tempo. Tiel la punkto estu duone tiel alta kiel la aliaj. Kaj sama interkonsento super tie, ĉi punkto supozeble esti malglate tie. Kaj tial mia dua algoritmo, simile, havas linearan rilaton kun la tempo. Kaj ni povas desegni ĝin kiel tia. Do nun, la tria kaj lasta algoritmo estas iom pli malfacile desegni. Sed intuicie, se mi havas 1.000 paĝojn kun mia tria algoritmo, ĝi devas nur preni min kiel 10 paŝoj. Kaj se mi havas 2.000 paĝojn kun mia tria algoritmo, ĝi devas preni min 10 paŝojn, sed la 11, nur unu pli. Do ni nur apenaŭ tuj vidos tion. Kaj ĝi rezultas, se Mi zomi je sur ĉi, mi estas tuj troigi por efekto, la formo de tiu linio, finfine, ne rekte line-- ĉar ja, se gxi estis, ĝi aspektus pli kiel la others-- ĝi estas fakte kurba linio ke, se ni zomi, tuj rigardi multe pli kiel tiu. It-- bone, okej, ignori tiun parton. Tio estis mia plumo iras de angulo. Ĝi estas kurba linio, kiu estas ĉiam kreskanta, ĉiam, ĉiam, ĉiam kreskanta, sed nur ĵus apenaŭ. Kaj tiel en la tempo, vi havas rilato kiu estas pli kiel tiu. Preskaŭ aspektas rekte. Sed estas iam tiel malrapide kreskanta. Sed por preskaŭ ĉiuj punktoj kune via x-akso, horizontala akso, ĝi estas pli malalta ol tiuj aliaj linioj. Do povas esti tiu rilato n, per kiu se vi havas n paĝoj, prenas vin n sekundojn. Tio povas esti rilato n / 2. Vi havas n paĝoj, ĝi prenas vi n / 2 sekundoj, duone tiom multaj. Kaj tio estas logaritma interrilaton, kiu Se vi memoras, log bazo 2 de n prenojn tiu speco de kresko, por tiel diri. Do tiu estas la speco de sankta grail inter la tri el tiuj tie, ĉar ĝi estas nur tiom multe pli efika, sed eble pli kompleksaj apliki. Demandojn? Nu lasu min fari tion, permesu Mi malfermu teksto fenestro nur tiel ni povas provi formaligi ion tie. Do lasu min iri antaŭen nun kaj efektivigi tiun algoritmon por trovanta Mike Smith en kodo, se vi volas, _pseudocode_ kodo. Mi ne tuj uzi Java aŭ C ++. Mi simple tuj uzi ian Esperanta-kiel sintakso, kiun ni ĝenerale nomas _pseudocode_ kodo. Tie, mi havas malplenan fenestro. Kaj mi diras paŝo 1 el la tre unua algoritmo estas repreni telefono libro. Paŝo 2 estas malfermita libro por unua paĝo. Paŝo 3 estos rigardu paĝo Mike Smith. Se sur paĝo, voki Mike. alia vico paĝo kaj iru al paŝo 3. Farita, ni diru. Kaj tiel ĝi ne estas tute perfekta, kiun ni vidos en momento. Sed ni pripensu kion konceptoj mi enkondukis tie. Tiel paŝas 1 kaj 2 kaj 3 estas preskaux verboj. Ili estas formulitaj, actions-- fari tion. Kaj tiel en programado lingvo, ni farus ĝenerale nomu ilin deklaroj aŭ funkcioj aŭ proceduroj, nomu ilin ajna nombro de aferoj. Sed ili estas nur actions-- fari tion. Paŝo 4 estas fundamente malsamaj, ĉar ĝi estas speco de demandante demandon. Oni diras ke ni estas speco de ĉe forko en la vojo. Se Mike estas sur la paĝo, voki lin, do turnu vin maldekstren, se vi volas. Kaj se ne, reiru al iu aliaj page-- aŭ prefere, bedaŭras, reiru al iu alia paŝo, kiun induktas ia looping konstrui. Kaj ni faru ĝin denove kaj denove kaj denove. Kaj fakte, vi scias kion? Yeah. alie se ĉe fino de libro halto. Do ni bezonas ia tria kondiĉo, ĉar vi ne povas teni turnanta la paĝon ad nauseum, ĉar finfine, mi instruos vin batis la fino de la libro. Kaj cimo en programo povus esti ne anticipante ke scenaro. Kaj tiam mi ĵus rimarkis, ho, atendu minuton, mi bezonas trian scenaron. Se mi estos for de paĝoj, mi devus vere nur halti. Alie, ĝi estas nedifinita. Kio okazos se mi gardas dirante turni la paĝon kaj revenu, tio estas kiam komputiloj frostigi aŭ akcidento, kiam vi frapis iuj neatenditaj situacio tiel. Nun, kio pri Mike Smith tria algorithm-- repreni la telefono libro, malfermita libro al first-- al Ecx unua paĝo tiun fojon, al middle-- ho, nu, tio estos plej esti la dua algoritmo. Ni nur preterpasas al la tria. Spektantaro: Ho, mi bedaŭras. DAVID Malan: Tio estas bone. Ni nur preterpasas la third-- malfermita al meza kaj nun serĉas Mike Smith. se sur paĝo, voki Mike. Kaj tiam kia ni volas diri ĉi tie? alia kio? Ni povas esprimi tiun en ajna nombro de manieroj. Mankas ĝusta respondo. OK, se ne pli, sed ni bezonas be-- OK, ni volas dividi en du, sed ni volas iri maldekstren aŭ iri dekstren? Kiel ni esprimas ke nocio? Nu, en Mike kazo, jes, justa. Sed bone, do tio estas vere bona punkto. Tio estas bone. Ni plu iri kun tiu logiko. So-- Spektantaro: Malpli ol duono. DAVID Malan: Jes. Do alia se paĝo estas, ni diru, malpli ol Smith, al la maldekstra de Smith, then-- ni vidu, estas ĉi tuj komplikos? alie se paĝon venas antaŭ Smith, Larmo en duono, forĵetu kiuj duono? Spektantaro: Mi pensis kiu estis [inaudible]. DAVID Malan: Mi aŭdis ambaŭ respondojn. Spektantaro: Maldekstra. DAVID Malan: Bone, ĵetu for lasis duonon, kiel Lakisa diris antaŭe, la maldekstra duono, tiam mi ia volas nur iri to-- mi iros dekstren. Aŭ ekvivalente, kaj mi faris iom iom de malordo de la komenco ĉi tie, Mi efektive volis iru al paŝo 2 denove, kie malfermaj al middle-- aŭ open-- jes, ni nur diri, paĝoj mezo. Kaj tio korektas ĝin. Ĝi ne plu libro. Estas nur duono de la libro, tiel malfermitaj paĝoj je mezo. else-- estis preskaŭ tie. Paŝo 6, alie se paĝon venas post Smith, ŝiras en duono, forĵetu dekstran duonon, tiam iru al paŝo 2. alie forlasi kvarangulajn scenaro se ni ne havas paĝoj lasis turni. Do ni povus purigi ĉi supre. Kaj ni devus purigi ĉi supre. Tio estas tre _pseudocode_ kodo, se vi volas, tre alta nivelo priskribo. Sed ĝi ĝenerale kapti la ideon. Kaj, denove, en ĉi tiu scenaro, ni havas la nocion de kondiĉo, branĉo, forkon en la vojo, farante oni decision-- se tio iras ĉi vojo, alie se, iru tiel, alie se, iru tiudirekte. Kaj tio estas tre komuna programado tekniko decidi kion direkto iri, por tiel diri. Kaj ni ankaŭ havas ian de looping strukturo, kie ni faras ion denove kaj denove. Nun, ĝi rezultas multe kiel en ĉi tiu ekzemplo, estanta ekstra preciza gravas. Sed ni ankaŭ vidis ion ke ni observas nomante abstracción. Kion tio signifas por repreni telefono libro? Ni nur speco de prenanta por donita en ĉi tiu ĉambro ke tio havas iun semantikan signifon. Ni ĉiuj nur speco de scii, ho, bone, repreni la telefono libro. Kion tio vere signifas? Nu, tiu vere signifas plilongigi mano, klini super, etendi fingroj, pinĉi libro inter fingroj, ekstari, tiri la manon al vi. Kaj ni povus esti vere pedanta pri tio, vere esti súper preciza kiel al kion mi faras. Sed ĉiu el tiuj ŝtupoj kolektive estas kion signifas kolekti telefono libro. Kaj tiel frue, kiam mi diris, ĉiu de tiuj unuaj du deklaroj povas esti penso de kiel procedi aŭ funkcio, vere reprezentas kion ni teni nomante abstraktaĵo. Estas kiel alta nivelo conceptual priskribo de problemo kiu fakte implikas tre kelkajn paŝojn. Kaj tiel ĉi, ankaŭ, estas _recurring_ temo en programado, per kiu mi povus skribi programon uzante sintakson kiel this-- pick_up_phone_book (). Kaj tiam sintakse, mi estas tuj sxtelus ion de plej programlingvoj. Nun, paŝo 1 aspektas eĉ pli kiel funkcio, kiel programisto nomus ĝin. Aspektas kiel kodo ke iu donis nomon al kaj donita Min uzi somehow-- en aliaj vortoj, kion la linion mi reliefigis reprezentas funkciojn kiuj eble Mi eĉ ne apliki mem. Iu pli malnova, pli saĝa ol mi jam eltrovis kiel vi esprimas la nocion de kaptanta telefono libro. Kaj ĝi estas kiel la kvin paŝoj Mi ĵus tintis ekstere, de la supro de mia kapo. Sed li aŭ ŝi jam implementado tiu, donis tiujn pluraj paŝoj nomo, pick_up_phone_book. Kaj la krampoj estas nur kio plej programistoj faru fine de deklaroj kiel ĉi. Mi nun povas stari sur lia aŭ ŝia ŝultrojn kaj plu, pensu pri kion signifas repreni telefono libro. Mi povas nur diri, repreni la telefono libro. Kaj tio estas ĝuste kion ni ĉiuj homoj faris tie. Kiam ni estis verŝajne 1 jara, 2 jaroj, iu devis instrui nin kion ĝi intencis repreni telefono libro. Kaj ekde tiam, ni abstraída for el tiuj tre seninteresa mekanika paŝoj. Kaj ni nur havas intuicia kompreno kion signifas repreni telefono libro. Kaj vi povas extrapolar nun por pli komplikaj things-- konstrui konstruaĵon. Kiel, por iuj personoj, kiu reale havas sencon. Por entreprenistoj, por arkitektoj, kiu havas iun signifon. Kaj ili scius kion fari, se Mi diris, iri konstrui konstruaĵon. Sed plejparto de ni en la ĉambro ne povus trakti tiun nivelon de abstraktado. Vi devas rakonti al ni ŝatas iri akiri sxovelilo iros akiri la konkretajn kaj najli pecojn de ligno kune kaj kio ajn alia estas implikitaj en la konstruado de konstruaĵo. Kaj tio estas ĉar ni ne havas tamen estis planita por kompreni kion signifas konstrui konstruaĵon. Ni ne havas tiun abstracción. Ni ne havas tiun funkcion. Kaj do kion vi vidos en programlingvoj, ĝenerale, Precipe pli modernaj lingvoj, kiel Java, PHP, Ruby, kaj Python, ili estas multe pli matura ol malnovaj lingvoj, kiel C kaj C ++ kaj ankoraŭ aliaj. Kaj tiel ili venis kun pli funkciojn konstruita. Pli kodo estis skribita de personoj en la pasinteco ke ni povas nun nomi aŭ kunvokas aŭ uzi, kiel mi sugestante ĉe kun ĉi emfazita linio tie. Kaj tial, kvankam ni ne parolas pri programlingvoj per, nur _pseudocode_ kodo, ĉiuj ideoj estas ankoraŭ en tiu diskuto. Kaj ĝi rezultas precizeco estas super grava, kiel estas abstraktaĵo. Kaj ni provu komuniki ke jene. Mi hazarde povus esti difektita tiu de brilantaj slide sur la ekrano antaŭtempe. Sed mi petas kuraĝa volontulo, se ne malplaĉos venanta supre. Vi estus antaŭ la fotilo, se vi bone kun tio. Ĉu iu volas veni tien kaj doni instrukcioj al viaj kolegoj tie? Nur devas veni ĉi tien kaj staras super tie kaj diri kelkajn vortojn. Victoria ridetas la plej kaj evitante miaj okuloj la plej. Ĉu vi volos veni supren? BONE. Kaj se ĉiuj aliaj en via sidlokoj povis elpreni pecon de peceto de papero, se vi volas. Kovrata papero estas fajna. Veni ĉirkaŭ tiu maniero. Aŭ iuj de la papero ke vi ricevis hieraŭ, nur ajna malplenan folion de papero, se vi povus. Kaj se vi ne havas neniun, nur petu vian proksimulon, se vi povus. Do por la momento, pro tiu ekzemplo, Viktorio tuj ludos la rolon de programisto, inĝeniero, kiu bezonas plani vi ĉiuj, kiel la komputiloj, fari ion. Kaj ni vidos kion supozoj vi decidas fari. Ni vidos kiel preciza ŝi elektas resti. Kaj se tiu pruvo iras pedagogie bone, multaj eraroj estos farita, ke ni tiam uzi ke kiel ŝanco por diskuto. Sed la defio por vi devus estu eviti tiujn erarojn, esti bona programisto. Kaj tial la defion mane, se oni kredus ŝatis marŝi ĉi tien, Estas antaŭ Viktorio sur la ekrano here-- kaj espereble, neniu el vi memori tion, kiam mi ekbrilis sur la ekrano. Kaj ne turni ĉe ĉiuj, ĉar ekzistas alia ekrano en tiu ĉambro ke mi povas elŝalti. Do ne turni ĉirkaŭe. Antaŭ Viktorio Estas tiu sama krio. Kaj ŝia tasko nun estas al vi ĉiuj sur via paperpeco kion tiri. Kaj ni vidos, bazita sur parolaj instrukcioj sola, komputila kodo, se vi volas, kiom preciza via desegnoj are-- via implementaciones estas. Sencon? Spektantaro: Jes. DAVID Malan: Bone, ekzekuti. Spektantaro: Desegni kvadrata. [Ridado] DAVID Malan: Kaj neniu demandoj povas esti demandita. Ne nur faras kion vi diris. Ho, kaj se vi havas hodiaŭa diapozitivoj malfermu en pestaña, ne rigardu vian langeto. BONE? Spektantaro: OK, desegni cirklon. A slope-- mi povas diri deklivo? DAVID Malan: Ĝis vi. Spektantaro: A deklivo. Kaj triangulo. DAVID Malan: Bone. Kaj restu tie por nur momento. Kaj mi tuj venis ĉirkaŭe en nur momento. Kaj ne necesas meti viaj nomoj sur ĝi. Lasu min veni ĉirkaŭe kaj kolekti viajn desegnaĵoj, se ne malplaĉos ŝirante ilin. Jen kion ni revenis. Mi projekti ĝin sur la ekrano. Mi vidas kvadrata, rondo, inklino, kaj triangulo. Tiel ke estis unu respondo tie. Kaj let's-- whoops. Dankon. Jen alia sortimento, kaj unu malantaŭ ĝi. Do ili ĉiuj ŝajnas kapti la spiriton. Dankon. Estas alia, kaj jen alia. La deklivo interpreto estas iom malsamaj, iom curvy. Kaj la plej proksimaj, ĉu pro la mirinda specifeco kun kiu vi havas priskribis, aŭ eble vi ia vidis ĝin antaŭe, tio ja kio Viktorio estis reale priskribas. Sed nun, tiuj el vi kiuj ne ricevis gxin tute pravas, ni proponas iun sedoj tie. Tiel Viktorio unua diris desegni kvadraton. Kaj nun, ni povas supozi pro hodiaŭ ke ĉiuj scias Kiel desegni kvadraton. Sed tio ne estas tute klara, ĉu ne? Kiel alie povus havi tirita kvadrato, aŭ kie povus esti iu el la ambigüedades tie por la komputilo? Spektantaro: Situo kaj grandeco. DAVID Malan: Loko, dekstra? Vi ĉiuj havis paperon de iu formo, Ĝenerale rektanguloj, sed iomete malsamaj grandecoj. Sed vi certe povus esti tiritaj, se vi volas, grandega placo, eble eta kvadrato. Eble, ĝi estis turnita. Mi ne kredas ke ni vidis tion. Sed povus esti pli diamanto kiel sed ankoraŭ, tamen, Matematike kvadrato. Tiel ke estis verŝajne ambigua. Tiam ŝi diris, desegni cirklon. Kelkaj el vi tiros gxin apud ĝin, kio ne senkaŭza, ĉar homoj emas pensi aŭ legi dekstre maldekstren en plej lingvoj, do ne malbona diveno. Sed ke cirklo povus havi estis en la placo, povus esti ĉirkaŭ la kvadrata, povus esti aliloke sur la folio, do argumenteble ambigua. Deklivo povus esti eble prenante la plej liberecoj parole kun kio tio signifas. Kaj iujn el vi interpretita in kiel squiggly linio aŭ rekta linio aŭ similaj. Kaj tiam triangulo ankaŭ povus havi estis orientita en ajna nombro de manieroj. Do mallonge, eĉ kun iu kiu vi rigardo kaj vi estas kiel, wow, do simpla, infano povus desegni ĉi, bone ne vere, se vi ekstra, ekstra persvada kaj diri al la komputilo precize kion fari. Sekve se ni povus, se vi havas alia paperfolio, ni provu ĉi denove. Kaj mi tuj doni Viktorio unu alia ekzemplo sur la ekrano tie. Kaj denove, ne turni ĉirkaŭe kaj ne rigardu vian diapozitivoj. Kaj Mi donos al ŝi momenton pripensi kiel priskribi tion. Ne lasu ilin vidi la timo en la okulojn. [Ridado] Kaj denove, ĉi tiu fojo levilforton kelkaj el tiuj takeaways kaj provi atingi preskaŭ ĉiuj almenaŭ la rajton respondo. Spektantaro: Bone, prenu paperfolion, rigardu en la mezo de tiu peco de papero. Meze de tiu peco de papero, desegni kubo. [Ridado] DAVID Malan: Kio estas inter ni lernis? Ni estis tiel proksime. OK, ripeti se vi povis, por ĉiuj. Spektantaro: En la mezo de la paperpeco, tiri objekton, kiu aspektas kiel kubo. DAVID Malan: Bone, tio estas Ĉiuj vi akiras labori. Permesu min analizaj kaj ne tiom kritikas, sed por fari la aserton ke Viktorio definitive ŝajnas esti pensante en tre alta nivelo abstraktadoj, kiuj ne senkaŭza. Ĉar alie, ke estos ĉiuj esti bela disfuncional, se ni devis esti iam tiel preciza kun ĉiu kion ni faras en la mondo. Sed dirante iri al la middle-- mi penso ni estis sur tia bona trako tie, kiel iri al la mezo de la paĝo, kaj poste desegni kubo. Do ŝi pensis en abstraktaĵoj, ĉar ŝi ankoraŭ rigardis kio estas sur la ekrano kiel ja kubo. Sed estas tiom da ŝancoj por interpretado tie. Kaj fakte, Tie estas tiom da alimaniere oni povus esprimi ke, kiu mi proponis en momento. Do jen ni havas unu enkarniĝo de la picture-- whoops-- unu enkarniĝo de la bildo, tiel kiel iom tri dimensinombro al ĝi, kio estas bela. Jen alia, kie vi havas la sama, kvankam ĝi estas speco de malferma kubo. Kelkaj homoj prenis iom pli plata, du dimensiaj. Kaj tio estas bone. Do, ĝuste en la centro de la papero. Ĉi tiu Mi pensas vin kiel, ĉar se ni iros tien, tio estas kion ŝi priskribas. Do nun, mi proponas kiel alie Ni povus priskribi tiun situacion. Reen en la tago, unu el la plej pli komunaj manieroj lerni programadon estis skribi kodon, skribas linioj de instrukcioj, kiu kontrolis iom testudo sur la ekrano. Logo kaj aliaj variantoj de tiu estis la nomo de la lingvo. Kaj la testudo vivis en mondo. Do supozu ĉi rektangula spaco estas lia mondo. Kaj vi komencos per assuming-- mi ne vere scias kiel desegni testudo, do ni faru tiel. Kaj tiam li havas ŝelon kaj tiam eble iuj piedoj. Tial vi havu ĉi iom karaktero sur la ekrano. Kaj la objekto de tiu programlingvo estis devigi la testudo iri supren, malsupren, maldekstra, dekstra kaj meti sian plumon malsupren aŭ pluki sian plumon supren, do li povus efektive utiligi la ekranon en ĉi tre plata rektangula mondo. Do kie mi kredis ke vi povus iri, kaj kie vi devus konsideri plonĝado malsupren al mense kiam priskribante instrukcioj pli ĝenerale, Mi asertas, estas metita via plumo malsupren en la middle-- kaj ni forigi la testudo, ĉar mi ne povas vere konservi desegnante lin tre bone. Kaj nun, kiel alie povus Mi diras desegni kubo? Nu, ni povus diri ion kiel remizo diagonala linio nordoriente, ekzemple, aŭ ĉe 45-grada angulo supren. Kaj kiu eble akiris al mi cxi tie. Kaj mi sufiĉe malproksime de kubo. Sed nun, mi povis diri ion kiel turni 90 gradojn maldekstren kaj desegni linion de egala longo nordokcidento. Kaj mi povis daŭrigi kun simila direktoj. Kaj ĝi ne tuj estos facila. Kaj sincere, ni verŝajne volus estis tie por kvin minutoj. Sed eble ni estus alveninta al iu kiu, fine de la tago, finu estante kubo, sed ni plonĝis ene de tiu abstraktado fari ĝin ĉe tia malalta nivelo kiu ne povas vere vidi kion vi faras ĝis la tuta aĵo reale ekzistas sur la paĝo. Kaj tiel tio estas ĝenerala principo, denove, de programming-- tiu ideo de abstracción. Estas tiel mirinde potenca, ĉar denove, ŝi ĵus diris, desegni kubo, kiu ĉiuj ni preskaux estus grok tre rapide. Ni nur kompreni, OK, desegni kubo. Ni ne scias la orientiĝon, do ni povus esti iom pli preciza, sed ni povas ĝenerale bildigi aŭ scii kion kubo estas. Kaj tio estas utila, ĉar se ĉiufoje kiam vi sidiĝis kiel programisto ĉe via klavaro por skribi kodon, se vi devis pensi ĉe tia malaltan nivelon, neniu el ni iam akiri ion fari. Kaj certe, neniu el ni volas ĝui la procezo de skribo kodo. Estus kiel skribi en 0-aj kaj 1-oj, kiu sincere ne estis tiom longe homoj estis skribanta kodo 0-aj kaj 1-oj. Kaj ni tre rapide elpensis tiuj pli alta nivelo languages-- C ++ kaj Java kaj aliaj. Do ni provu tion ankoraŭfoje nur por flip la tabloj, por ke ni ĉiuj havas la ŝancon pensi en iom la sama maniero. Ni povus preni pli volontulo tiu venonta tempo ĝis la estraro kaj desegni, ne reciti? Yeah, OK. Ben, venu supren. Kaj Ben, en tiu kazo, kiam oni alfronti la tabulo, ne aspektas forlasis, ne rigardu rekte. Nur faros vian kolegoj tie diras. Kaj por ĉiuj aliaj en la ĉambron, vi nun estas la programisto. Li estas la komputilo. Kaj la bildon kiun mi elektis tie anticipe estas ĉi tie. Ili just-- ili pensas de amuza ŝerco estas ĉio. Do estus does iu ŝatas volonti la unuan instrukcion aŭ deklaro ke devus komando Ben skribilo? Kaj ni faros ĉi kolektive, eble unu instrukcion de ĉiu persono. Mi bedaŭras? Spektantaro: Desegni cirklon. DAVID Malan: Desegni cirklon estas la unua aĵo kiun mi aŭdis. Spektantaro: Up supro. DAVID Malan: Up supro. OK, ni povas lasi vin forigi, malfari. Nun iu alia. Dan, ĉu vi comfy proponante la sekvan instrukcion? Spektantaro: Certe, desegni la centro el la fundo de la cirklo, kun small-- iom malgranda spaco de tiu, desegni rektan linion malsupren al tri kvaronoj de la vojo malsupren la tabulo iometa angulo al via maldekstra. DAVID Malan: Bone. Spektantaro: Malpezaj angulo. DAVID Malan: Malfari, Kontrolo-Z. BONE. Andreo, vi volas proponi ĝis la sekvan instrukcion? Spektantaro: Sure. El la fundo de tiu linio, plia malpeza angle-- whoops-- eble triono de la longo [inaudible], iometa angulo malsupren kaj kiel triono de la longo de [inaudible]. Do jes, de tiu punkto, desegni linion tria de la longo de la antaŭa linio pli maldekstren. DAVID Malan: Bone? Rekta linio, tio estas bone? OK, Olivier, vi volas oferi la sekva? Spektantaro: [inaudible] de la malsupro de la cirklo, [inaudible]. Desegni sur la dekstra flanko de [inaudible] centimetroj. [Ridado] DAVID Malan: Mi kredas ke vi tuj devas konverti tio coloj tie. Spektantaro: Ĉesu. [Ridado] DAVID Malan: Bone. [? Ara,?] Vi volas oferi la sekva? Spektantaro: Desegni [inaudible] la supra [inaudible] la sama. [Inaudible] cirklo, desegni al la [Inaudible] kaj tiri [inaudible]. DAVID Malan: Bone, neniu pli malfari. Ni faru unu aux du instrukciojn. Chris, vi volas proponi unu? Spektantaro: Funde de la cirklo, [inaudible] desegni egalan linio slopping malsupren maldekstren [inaudible]. DAVID Malan: Bone. Andrew? Ni did-- Karim? Spektantaro: Komencante de la dekstra linio, Fine de la maldekstra linio, la fundo, vi tuj iru dekstren ĉirkaŭ samlongaj kiel tiu linio vi estas sur, tirante al dekstre [inaudible]. [Inaudible] gradoj, tiel [inaudible] gradoj sur la dekstra flanko. DAVID Malan: Bone. Ni paŭzi. Ne turni ĉirkaŭe ankoraŭ. Ni paŭzi kaj ni provu unu alia provo antaŭ ni malkaŝi al Ben- kion li estis desegnante. Vi povas barajar Ben al la right-- aŭ reale, ne, ni nur donos vin alia tabulo, eĉ pli bone. Do estus iu nun ŝatas preni pli de la alproksimiĝo ke Viktorio prenis pli frue sur, kie Ni parolu en pli alta nivelo abstraktado kaj en nur frazo aŭ du priskribi Ben kion desegni sen akiranta en la maleza, por tiel diri, en tiu malsupera nivelo? Victoria. [Ridado] Spektantaro: Eltiru figuro de la piedirado viro. Kaj liaj kruroj kaj brakoj devas esti dekstre. DAVID Malan: Bone, tio estas ĉio vi ricevas. Bone. Kial ni ne malkaŝos al Ben kion li faris. Tiel ronda da aplaŭdoj. Tio estis la plej malfacila eble. Do eĉ se ni parolas en sufiĉe stulta esprimoj pri nur desegnante bildoj, espereble vi povas vere aprezi la gradon de esprimkapablo povus esti necesa por diri al komputilo kion fari. Kaj fakte, la fakto ke Ben povis desegni ĉi tiel rapide estas speco de atesto uzante lingvo, eble pli altan nivelon versio de la angla, kiu lin permesas por ĝuste uzi vortojn, aŭ aŭdi vortojn de Victoria, kiu permesas al li tiuj abstractions-- simple desegni figuro piediranta al la right-- tian havas iuj semantikaj signifon al ĝi ke ne preskaŭ tiel evidenta kiam vi estas nur dirante, metu vian plumon malsupren, tiri dekstren, desegni maldekstren. Kaj tiel ĉi, ankaŭ, estas tre komuna en programado. Tio estus dirita esti kiel tre malalta nivelo lingvo, programado en 0-aj kaj 1-oj, se vi volas. Kaj tio estus pli alta nivelo lingvo de programado en Java, aŭ ion tian. Iom de simplificación, sed tio estas la speco de kiel emocia sentante ke vi sentas kiam uzante unu speco de aĵo aŭ alia. Iom de frustración apud la bezono por tia precizeco, sed la ŝanco esti iom pli malfiksas kun la interpretado tie. Sed kompreneble, cimoj povas ekesti kiel rezulto. Se vi ŝatus ĉe home-- ni ne faros ĉi tiu en class-- sed se vi ŝatus venigu ĉi tiu domo, Mi pensis ke ni havus plonĝi en tiun. Do se vi ŝatus ludi ĉi ludo kun via signifa aliaj aŭ infanoj aŭ similaj, vi povu ĝui ke ankaŭ. Do ni iru antaŭen kaj rigardu unu lasta aferon tie por komputa pensado. Kaj kiu alportas nin al John Oliver, ne por la klipo vi eble vidis hieraux, sed por iom lastatempaj afero. Kelkajn monatojn reen, Volkswagen prenis tre iom de flak por kio, se vi tion scias? Kion ili akiras en problemo por? Jes, do emissions-- ili provis bati emisiones provoj de esence havi ilian aŭtoj malpurigi la medion malpli kiam iliaj aŭtoj estis tentata kaj malpurigi la medion pli kiam la aŭtoj estis ne estanta elprovita. Kaj kio estas pli interesa en la mondo, kiel vi povas havi konkludis el diskutoj de like-- kio estas it-- CarPlay, Apple programaro por aŭtoj kaj la fakto ke multaj Ni ĉiam havi ekranoj táctiles en niaj aŭtoj, Tie estas timiga kvanto de programaro en popola aŭtoj hodiaŭ, kiuj sincere malfermas tutan ujon da vermoj kiam temas sekureco kaj fizika risko. Sed por hodiaŭ, ni enfokusigi ĝuste kio estas implikita skribe programaro ke eble gamed la sistemo. Por la difino de la problemo, por tiuj nekonataj, ni rigardu John Oliver. Kaj por tiuj, kiuj konas la problemo, ni rigardu ŝin en amuza lenso tra John Oliver ankaŭ. Do lasu min bati teatraĵo ĉi, mi pensas, tri-minuta enkonduko. Damnu ĝin. [VIDEO reprodukto] -Cars-- DAVID Malan: Evidente, en YouTube, it's-- - --La Inteligenta karakteroj en Rapida kaj Furioza filmoj. Tiu semajno, germana fabrikanto Volkswagen trovis sin en la mezo de skandalo de potenciale krimaj proporcioj. -Volkswagen Estas fiksante por miliardoj en monpunas, eblaj kriminalaj postenoj por liaj ekzekutivoj, kiel la kompanio senkulpigas por falsigi 11 milionoj aŭtoj helpi ŝin venki emisiones testoj. -Certain Dizelaj modeloj estis desegnitaj kun altnivela softvaro ke uzita informoj, inkludante la pozicio de la stirrado kaj veturilo rapido, por determini la aŭto estis travivanta emisiones testado. Sub tiu cirkonstanco, la motoro reduktus toksaj emisioj. Sed la aŭto estis rigita al pretervojo ke kiam estis pelataj. Emisiones pliigis 10 ĝis 40 fojojn super akcepteblaj EPA niveloj. -Wow, 10 ĝis 40 fojojn granda ol la EPA permesas. Kiu estas la plej malbona afero Volkswagen iam faris, Estas io, kion vi povus diri, se Vi neniam aŭdis de la Dua Mondmilito. Sed eble la plej certa signo de kiel okupigxantaj Volkswagen estas, estas ke homoj ĉe la supro ili retiriĝis. La CEO rezignis merkrede post grimpadi al dolorigi kontrolo, dirante li estis senfine bedaŭras, kiu sonis granda ĝis evidentiĝis Li estis nur 10% bedaŭras sed estis rigita lia buŝo por artefarite ŝveligi liajn sorriness. Kaj dume, Volkswagen usonaj estro havis pardonpeton de sia propra. -Let Estu klaraj pri tio, nia firmao estis malhonesta. Kaj en mia germanaj vortoj, ni esti tute ŝraŭbita supren. -Yeah, Sed tute ŝraŭbita ĝis ne germanaj verkoj. Kaj la germana lingvo havas multajn belajn frazoj por priskribi situaciojn ĝuste tiel, kiel [GERMAN], kio signifas malglate, la malĝojo kiu venas de negoco rilata mensogoj, aŭ [GERMAN], kiu tradukiĝas kiel hontigas tiuj patro implikanta nuboj de benzino. Estas bela lingvo. Ĝi nur navigas for la lango. Kaj sur la vojo, dum ke homo pardonpeto eble sonis sincera, ĝi valoras notanta li parolis ĉe oficiala ĵeto partio por la 2016 Volkswagen Passat, signifante ke baldaŭ dirinte bedaŭras, li diris tion. -Thank Vin tre multe por veni. Ĝui la vesperon. Supren proksima estas Lenny Kravitz. [MUZIKO Ludanta] -OK, OK, finanta vian pardonpeto kun ĝis proksima Lenny Kravitz ne krii sobra pento. Ĝi krias, ni demandis Bon Jovi, kaj li diris ne. Volkswagen marko havas estas severe damaĝita. Kaj sincere, lia nova anonco kampanjo ne ĝuste helpi. - [GERMAN], ni ĉe Volkswagen ŝatus pardonpeti por trompi vin per niaj veturiloj. [FINO reprodukto] DAVID Malan: Do tiu estis trafikcirklo maniero of-- sorry-- jen ili trairis vojon de enkondukante fundamenta problemo en programaro, kiu estas ke vi bezonas detekti certaj kondiĉoj. Kaj tiel la demando mane tie Estas, kiel faras aŭton potenciale, kiel implementado en programaro de tiuj programistoj, detektas ke ĝi estas reale esti provita? Tiel esti super klara, kion ili faris Estis, en medioj kie la programistoj kalkulis la aŭto estis estanta provita, ili iel faris la aŭto elsendus malpli emisiones, malpli emisiones, tial malpli toksaj fumoj kaj tia. Sed kiam ĝi estas normale veturanta survoje, ĝi nur elsendas tiel polucio kiel ĝi volis. Do kiel ni povus skribi la _pseudocode_ por ĉi tiu algoritmo? Kiel ni povus skribi la _pseudocode_ por la programaro kurante en la aŭto? Mi volas diri, en malmultaj vortoj, ĝi bolas malsupren al io tiamaniere. se tentate, elsendas malpli. alie elsendas pli. Sed tio estas iom tro alta nivelo, ĉu ne? Ni provu plonĝi en kiel al kion tiu abstraktado esti testita per. Alivorte, eĉ se vi scias nenion pri aŭtoj, kia demandoj povus vin demandi por determini se vi estanta elprovita, se vi estas la aŭto? Kio karakterizaĵoj povus esti prezenti se aŭto estas estanta elprovita? Spektantaro: Testado teamo. DAVID Malan: Testado teamo. Do se elprovanta ekipaĵon proksimaj, tiam elsendas malpli. Do mi povis imagi efektivigado ke kun iu speco de ĉambroj aŭ detekti kio estas ĉirkaŭ vi. Kaj mi proponas, ke nur sentas tro komplika efektive havas aldonan aparataro ĵus por tiu celo. Spektantaro: Se vi estas en parko, se via kapuĉo estas malfermita. DAVID Malan: En parko aŭ kapuĉo malferma, do tio estas bona. Spektantaro: Kaj aŭton kurado. DAVID Malan: Do jen iom pli concrete-- kaj aŭto kurado. Do tiu estus la konjunkcio de kelkaj malsamaj kondiĉoj, se vi volas. Do se la aŭto estas en parko, kaj eĉ kvankam tiu estas tre mekanika afero tipe, mi povis imagu skribanta softvaron, speciale ĉar estas ofte malpeza tie kelkan tempon Mi povus imagi ke esti programaro kiu povas konsulti la levilo de ŝanĝoj aŭ kio ne, vi estas en parko, estas vi en la disketingo, vi estas en reverso. Kaj mi povas reiri al respondu tio ĉu jes aŭ ne al tiuj specoj de demandoj. Kaj tiel mi povis same probable respondi demando kiel, estas la kapuĉo malfermita. Eble, ekzistas ia Sensilo ke aŭ donas al mi reen 1 aŭ 0, vera aŭ malvera, la kapuĉo estas malfermita. Kaj tiam aŭto kurado, mi povis detekti ke iel per kia mekanismo? Kiel, la aŭto estas kuranta, Mi povis detekti ke ĝi estas sur, mi povus detekti iel ke la aŭto movas? Spektantaro: RPMs. DAVID Malan: Jes, do ekzistas ĉiam ke kudrilo ke diras vin kiom da rotacioj po minuto la radoj spertas. Kaj tiel mi povis rigardi tion. Kaj se ĝi estas ne 0, kiu probable signifas la aŭto movas. Sed ni devas esti iom zorgema tie, because-- ni simpligi this-- se ni ĵus diris, se aŭto kurado, ni ne volas nur elsendas malpli, Ni volas ke la aŭto estas kuranta kaj ĝi estas provita. Do estas kelkaj aliaj ingrediencoj kiuj ulojn jam hipotezis la programaro faras, ĉar forestas la efektiva fontkodon, vi povas nur ia konkludi el la fizikaj efikoj de la aŭto kiel al kio eble okazas sub la kapuĉo en softvaro. Do se aŭto kurante kaj eble, diru, radoj traseras ne movas, cxu tio estus indikaj de ia testo? Kion mi sugestante ĉe tie? Yeah, eble, estas unu de tiuj rulilo aferojn, kie kiel la radoj turnas en la fronto aŭ en la dorso, Dependanta sur ĉu ĝi estas antaŭa rado aŭ tirado trasera, tial duono de la radoj estas movanta, sed la aliaj du ne, kio Estas stranga situacio en la reala mondo. Se vi veturanta sur la vojo, tio ne devus okazi. Sed se vi estas en magazeno sur ia rulilo sistemo, Kiu povus ja okazi. Mi pensas uloj ankaŭ proponis ke eble, se la aŭto estas kuranta kaj direkto Rado ne moviĝas, ke tro povus esti signalo, ĉar tio estas racia por kiel straightaway sur vojo. Sed eĉ tiam, la homa verŝajne movante ĝin iomete aŭ certe pri malmultaj sekundoj. Aŭ la daŭro de unu minuto, prognozoj estas ĝi ne tuj estos obsedita en ĝuste la sama pozicio. Do alivorte, ni povas preni substraction, vi estanta elprovita kaj detruu ke funcionalidad en tiuj komponantoj ingrediencoj. Kaj tio estas vere kio Volkswagen inĝenieroj iel faris. Ili skribis programaro konscie detekti se la aŭto estas estanta elprovita, tial elsendas malpli, alia elsendas en la kutima maniero. Kaj la problemo ĉi tie, ankaŭ, estas ke programaro ne io vi povas vere vidi se vi havas la tn fontkodo. Do ekzistas du malsamaj specoj de code-- almenaŭ du malsamaj tipoj de kodo en la mondo. Estas io nomita fonto kodo, kio ne kontraste kio ni estis skribante, fontkodo. Tio estas fontkodo skribita en lingvo nomata _pseudocode_, kiu estas nur io Esperanta-simila. Ekzistas neniu formala difino de ĝi. Sed C kaj Java, C ++, tiuj estas ĉiuj formalaj lingvoj kiuj, Kiam vi skribas en ili, kion vi havas estas teksta dosiero enhavanta fontkodo. Sed ekzistas ankaŭ iu en la mondo nomita maŝino kodo. Kaj maŝino kodo, bedaŭrinde, Estas ĝuste 0-aj kaj 1-oj. Tiel maŝino kodo estas kio maŝinoj kompreni, kompreneble. Fontkodo estas kion homoj komprenas. Kaj ĝenerale, sed ne Ĉiam, estas programo ke programisto uzas kiu prenas fonton kodo kaj igas maŝino kodo. Kaj ke programo estas ĝenerale nomata tradukilo. Tial via enigo estas fontkodo, via eligo estas maŝino kodo, kaj la kompililo estas peco de programaro kiu faras ke procezo. Do tiu reale mapoj bele al nia enigoj, algoritmoj, eligoj. Sed temas pri tre specifa enkarniĝo de tiu, kiu estas tiu, eĉ se vi posedas unu el Volkswagen aŭtoj kiuj estas kulpaj pri tio, ĝi ne ŝatas ke oni nur malfermu kapuĉo aŭ malfermi la uzanto manlibro aŭ rigardu ĉe la fontkodon, ĉar per la tempo ĝi atingas vian aŭton en via driveway, ĝi jam estis igita 0-aj kaj 1-oj. Kaj ĝi estas tre malfacila, neebla, sed tre malfacila por kolekti multon atentu ĉe la subkuŝanta 0-aj kaj 1-oj. Do vi povas kompreni ĝin, finfine, se vi komprenas kiel maŝino operates-- Intel inside-- se vi komprenas la Intel arkitekturon, sed estas tre tempo konsumanta. Kaj eĉ tie, vi eble ne povos vidi ĉiu ke la kodo povas reale fari. Demandojn pri tiu aŭ tiu speco de procezo pli ĝenerale? Kaj fakte, ni povas ligi tiun diskuton al hieraŭa diskuto de Apple. Tiu, tro, tial la FBI ne povas simple iru kaj rigardu en la sospechoso de telefono kaj trovi la liniojn de kodo, ĉar Ekzemple, kiu ebligas la passcode aŭ ebligi ke 80-milisegundo prokrasto. Ĉar per la tempo ĝi estas sur la ulo la iPhone, ĝi jam estis konvertiĝis al 0-aj kaj 1-oj. Nu, ni paŭzi tie por niaj rigardi komputa pensado. Kial ni ne prenos 15 minuta paŭzo. Kaj kiam ni revenos, ni instruos vin rigardu programado sin kaj komenci mapi iuj de tiuj alta nivelo konceptoj al fakta, se ludema, programlingvo.