1 00:00:00,000 --> 00:00:00,270 2 00:00:00,270 --> 00:00:01,790 DAVID MALAN: Velkommen tilbake, alle sammen. 3 00:00:01,790 --> 00:00:05,030 Så i går, vil du huske at fokuserte vi på disse emnene her. 4 00:00:05,030 --> 00:00:08,380 Så vi hadde fire overordnede topics-- personvern, sikkerhet og samfunn; 5 00:00:08,380 --> 00:00:11,960 internett-teknologi; cloud computing; og til slutt, webutvikling. 6 00:00:11,960 --> 00:00:14,170 >> Var det noen som har båndbredde eller tids 7 00:00:14,170 --> 00:00:16,900 å se litt John Oliver i går kveld? 8 00:00:16,900 --> 00:00:20,120 Det er faktisk ganske morsomt, hvis ikke litt skremmende. 9 00:00:20,120 --> 00:00:24,700 Eventuelle spørsmål om noe vi gjorde i går? 10 00:00:24,700 --> 00:00:27,600 Eventuelle avklaringer? 11 00:00:27,600 --> 00:00:35,580 Eventuelle spørsmål som du ønsker å gjøre sikker på at vi komme inn på i dag i en eller annen form? 12 00:00:35,580 --> 00:00:37,300 Så rent rulleblad. 13 00:00:37,300 --> 00:00:38,760 >> Så hva er på agendaen for i dag? 14 00:00:38,760 --> 00:00:41,301 Så jeg tenkte at vi skulle begynne i dag med en titt på hva som er generelt 15 00:00:41,301 --> 00:00:44,460 såkalte beregnings thinking-- på risikoen for oversimplifying, tenker 16 00:00:44,460 --> 00:00:46,636 som en datamaskin, kanskje tenke som en ingeniør, 17 00:00:46,636 --> 00:00:48,510 og prøver å begynne å organisere tankene dine 18 00:00:48,510 --> 00:00:52,039 eller for å gi deg en bedre følelse av hva som er involvert i faktisk kommanderende 19 00:00:52,039 --> 00:00:54,080 en datamaskin til å gjøre noe ved hjelp av programmering. 20 00:00:54,080 --> 00:00:56,663 Og vi vil holde det på en ganske høyt nivå, ganske mye engelsk, 21 00:00:56,663 --> 00:00:59,850 men prøv å bruke av kjent eksempler for å formalisere hvordan 22 00:00:59,850 --> 00:01:01,450 ville du gå om å løse problemer. 23 00:01:01,450 --> 00:01:04,080 >> Og vi gjengir noen CS temaer, som abstraksjon, 24 00:01:04,080 --> 00:01:06,040 som kom opp et par ganger i går, 25 00:01:06,040 --> 00:01:07,554 algoritmer, og deretter representasjon. 26 00:01:07,554 --> 00:01:09,720 Og det er der vi skal begynne dag i løpet av et øyeblikk. 27 00:01:09,720 --> 00:01:11,481 Deretter vil vi ta en titt på programmering. 28 00:01:11,481 --> 00:01:13,480 Vi vil ta en titt på noen grunnleggende konstruksjoner 29 00:01:13,480 --> 00:01:16,450 som kan du bli kjent og kan selv finne ganske intuitiv. 30 00:01:16,450 --> 00:01:18,370 >> Vi skal se, faktisk, på en prøveprogrammer 31 00:01:18,370 --> 00:01:21,244 miljø som er svært tilgjengelig, veldig leken, og faktisk målrettet 32 00:01:21,244 --> 00:01:22,555 for alderen 12 og oppover. 33 00:01:22,555 --> 00:01:25,930 Vi vil bruke noen minutter der og deretter ta ting til et lavere nivå 34 00:01:25,930 --> 00:01:30,360 og faktisk snakke om noen av algoritmer og datastrukturer 35 00:01:30,360 --> 00:01:32,360 så å si, at programmerere bruker vanligvis 36 00:01:32,360 --> 00:01:35,040 for å løse problemene langt mer effektivt enn du kanskje 37 00:01:35,040 --> 00:01:37,322 kunne gjøre uten dem helt. 38 00:01:37,322 --> 00:01:40,280 Så etter lunsj, vil vi ta en titt på teknologi stabler, som er bare 39 00:01:40,280 --> 00:01:42,240 en fancy måte å si samlinger av teknologier 40 00:01:42,240 --> 00:01:43,690 som du kan bruke til å løse noen problem. 41 00:01:43,690 --> 00:01:46,670 Og vi skal snakke om alfabetet suppe av språkene som finnes today-- 42 00:01:46,670 --> 00:01:50,930 Java og Python og C ++ og PHP og Ruby og alle slags andre ting. 43 00:01:50,930 --> 00:01:53,740 >> Vi vil ta en titt kort ved design patterns. 44 00:01:53,740 --> 00:01:57,730 Programmerere, over tid, har vedtatt metoder 45 00:01:57,730 --> 00:02:00,690 som pleier å hjelpe dem løse problemer lettere. 46 00:02:00,690 --> 00:02:04,390 Når du begynner å se deg selv å skrive samme type kode igjen og igjen, 47 00:02:04,390 --> 00:02:08,080 folk formalisere disse repetisjoner og tilskrive navnene til dem 48 00:02:08,080 --> 00:02:10,084 og deretter bruke dem og fremme dem, til slutt. 49 00:02:10,084 --> 00:02:12,250 Og vi skal snakke litt om mobile strategier, 50 00:02:12,250 --> 00:02:16,099 som hva betyr det å faktisk lage en mobil app eller et mobilnettsted. 51 00:02:16,099 --> 00:02:17,140 Gjør du det for Android? 52 00:02:17,140 --> 00:02:17,730 Gjør du det for iOS? 53 00:02:17,730 --> 00:02:19,160 Gjør du det for begge disse? 54 00:02:19,160 --> 00:02:20,326 Og hva er de avveininger? 55 00:02:20,326 --> 00:02:23,180 Og så til slutt, vil vi ta Se web-programmering, som 56 00:02:23,180 --> 00:02:25,380 er et samlebegrep virkelig beskriver som helst 57 00:02:25,380 --> 00:02:28,410 du skrive programvare som er ment å kjøre på nettet, 58 00:02:28,410 --> 00:02:30,430 enten på telefon eller stasjonære eller bærbare datamaskiner. 59 00:02:30,430 --> 00:02:33,490 Vi vil ta en kort titt på databaser og design 60 00:02:33,490 --> 00:02:39,049 deri, hvis bare fordi nesten alle interessant web-basert applikasjon 61 00:02:39,049 --> 00:02:40,590 disse dager har en slags database. 62 00:02:40,590 --> 00:02:42,380 Ellers ville bare være statisk innhold. 63 00:02:42,380 --> 00:02:45,254 Og en database kan du gjøre endringer over tid, enten selv 64 00:02:45,254 --> 00:02:45,960 eller fra brukerne. 65 00:02:45,960 --> 00:02:47,820 Og vi vil vurdere hvordan du ville gå om å designe 66 00:02:47,820 --> 00:02:50,510 den databasen og hva slags sjargong som kan komme opp i en ingeniørs 67 00:02:50,510 --> 00:02:52,790 diskusjon på et hvitt bord når faktisk gjennomføring 68 00:02:52,790 --> 00:02:53,900 en app for første gang. 69 00:02:53,900 --> 00:02:57,002 >> Vi skal snakke kort om APIer, nyttige tjenester 70 00:02:57,002 --> 00:02:59,960 som du kan bruke til å stå på skuldrene til andre, enten selskaper 71 00:02:59,960 --> 00:03:02,619 eller enkeltpersoner, og løse egne problemer raskere. 72 00:03:02,619 --> 00:03:04,785 Og så får vi prøve seg kanskje litt med Javascript, 73 00:03:04,785 --> 00:03:08,900 et programmeringsspråk som brukes både i nettlesere i disse dager, men også 74 00:03:08,900 --> 00:03:09,820 i servere. 75 00:03:09,820 --> 00:03:11,890 Og kanskje vil vi se, tiden tillater det, 76 00:03:11,890 --> 00:03:15,670 noen av hands-on web ting vi gjorde i går og integrere de to 77 00:03:15,670 --> 00:03:17,630 sammen før vi utsette. 78 00:03:17,630 --> 00:03:22,380 >> Så med at-- hva som er ahead-- er det noe som mangler som du 79 00:03:22,380 --> 00:03:26,289 ønsker å sørge for at vi setter inn og trykk på på et tidspunkt. 80 00:03:26,289 --> 00:03:28,330 Hvis det er fjærer til tankene, ta det opp før lenge. 81 00:03:28,330 --> 00:03:32,010 Men hvorfor ikke vi begynne med en se på beregningsorientert tenkning. 82 00:03:32,010 --> 00:03:35,420 >> Og la meg foreslå at beregningsorientert tenkning er, igjen, 83 00:03:35,420 --> 00:03:38,830 liksom det høye nivået beskrivelse av hva en datamaskin vitenskapsmann kan gjøre. 84 00:03:38,830 --> 00:03:42,470 Og ja, la oss starte med tre ingredienser som 85 00:03:42,470 --> 00:03:44,207 kan gå inn i beregningsorientert tenkning. 86 00:03:44,207 --> 00:03:45,790 Dette er bare en måte å beskrive det. 87 00:03:45,790 --> 00:03:48,490 Vi kan sikkert definere dette på en rekke måter. 88 00:03:48,490 --> 00:03:50,630 >> Men la meg foreslå, for å få til i dag, 89 00:03:50,630 --> 00:03:53,910 at verdens problemer, alle verdens problemer, 90 00:03:53,910 --> 00:03:56,730 da kontaktet av en datamaskin vitenskapsmann kunne 91 00:03:56,730 --> 00:04:00,990 bli sett på som hva vi vil samtale innganger, noe som 92 00:04:00,990 --> 00:04:08,142 trenger å bli matet inn i det vi kaller algoritmer, som deretter vike utganger. 93 00:04:08,142 --> 00:04:10,600 Med andre ord, hele verden av problemløsning jeg krav 94 00:04:10,600 --> 00:04:13,140 kan destilleres inn disse tre ingrediensene. 95 00:04:13,140 --> 00:04:14,450 Så hva mener jeg med innganger? 96 00:04:14,450 --> 00:04:17,060 Innganger er akkurat det du er levert for å løse. 97 00:04:17,060 --> 00:04:20,052 >> For eksempel, her en gammel skole problem. 98 00:04:20,052 --> 00:04:22,760 Hvis jeg har en telefonbok her og Jeg ønsker å se noe i det, 99 00:04:22,760 --> 00:04:23,760 Dette er mitt innspill. 100 00:04:23,760 --> 00:04:26,260 Jeg har 1000 eller så sider i en telefonkatalog. 101 00:04:26,260 --> 00:04:27,780 Dette er innspill til mitt problem. 102 00:04:27,780 --> 00:04:31,507 Og jeg ønsker å finne noe som Mike Smith, så en venn 103 00:04:31,507 --> 00:04:33,840 hvis navn og nummer er forhåpentligvis i denne adresseboken. 104 00:04:33,840 --> 00:04:36,430 >> Dette er før dagene av cellen telefoner, så jeg kan ikke bare søke etter den. 105 00:04:36,430 --> 00:04:38,540 Så jeg må gjøre det gamle skole og faktisk søk 106 00:04:38,540 --> 00:04:41,331 disse innganger for noen svar. 107 00:04:41,331 --> 00:04:43,580 Og det svaret er bare kommer å bli kalt utgangen. 108 00:04:43,580 --> 00:04:44,871 Så inngangen er telefonboken. 109 00:04:44,871 --> 00:04:47,787 Algoritmen er uansett sett fremgangsmåten jeg bruker for å finne Mike Smith. 110 00:04:47,787 --> 00:04:50,120 Og utgang er, forhåpentligvis, Mike Smith telefonnummer. 111 00:04:50,120 --> 00:04:52,703 Og dette vil da være bare representativ for de fleste problemer 112 00:04:52,703 --> 00:04:55,210 til med deg er hendte innganger og ønsker å produsere utganger. 113 00:04:55,210 --> 00:04:59,459 >> Så før vi vurdere prosessen som vi kan løse det problemet, 114 00:04:59,459 --> 00:05:01,250 finne Mike Smith og noe sånt, 115 00:05:01,250 --> 00:05:04,090 la oss vurdere det første og de last-- innganger og utganger. 116 00:05:04,090 --> 00:05:08,060 Fysisk, selvfølgelig, inngangs her er en hel haug med papir limt sammen 117 00:05:08,060 --> 00:05:09,400 i form av en telefonkatalog. 118 00:05:09,400 --> 00:05:13,660 Men datamaskiner, av course-- bærbare datamaskiner og stasjonære og til og med telefoner 119 00:05:13,660 --> 00:05:16,430 disse days-- de er elektroniske enheter. 120 00:05:16,430 --> 00:05:20,920 >> Og ved slutten av dagen, hvilke er den eneste inngang til en datamaskin? 121 00:05:20,920 --> 00:05:23,299 Vel, det er noe som dette strømledningen her. 122 00:05:23,299 --> 00:05:25,590 Jeg plugger den inn i veggen, og Jeg får en strøm av elektroner, 123 00:05:25,590 --> 00:05:27,048 som tillater meg å kjøre maskinen. 124 00:05:27,048 --> 00:05:30,420 Eller kanskje disse elektronene er skapt ved hjelp av mitt batteri. 125 00:05:30,420 --> 00:05:33,790 Men på slutten av dagen, det er det eneste som kommer inn i min laptop. 126 00:05:33,790 --> 00:05:35,772 Og så mye interessant ting er slutt 127 00:05:35,772 --> 00:05:37,480 kommer ut, enten ved hjelp av skriveren 128 00:05:37,480 --> 00:05:40,320 eller skjermen eller audially eller lignende. 129 00:05:40,320 --> 00:05:45,320 >> Så hvis alt vi har som vår grunnleggende inngang til en datamaskin 130 00:05:45,320 --> 00:05:49,160 er elektrisitet, så bare elektroner går inn og eller ut, 131 00:05:49,160 --> 00:05:54,465 og så hvordan kan vi bruke den inngangen å faktisk representerer informasjon? 132 00:05:54,465 --> 00:05:57,090 Med andre ord, hvordan får vi fra en enkel strøm av elektrisitet 133 00:05:57,090 --> 00:06:00,350 til å representere faktiske tall eller faktiske bokstaver 134 00:06:00,350 --> 00:06:03,620 eller faktiske bilder på skjermen eller selve filmene eller e-post 135 00:06:03,620 --> 00:06:05,690 eller hvilket som helst antall av disse høyere nivå begreper, 136 00:06:05,690 --> 00:06:07,680 om du vil, som ved slutten av dagen liksom 137 00:06:07,680 --> 00:06:11,950 har til å bli lagret i denne elektronisk mekanisk innretning 138 00:06:11,950 --> 00:06:16,260 bruker bare de enkle ingredients-- elektroner som kommer inn og ut? 139 00:06:16,260 --> 00:06:19,530 >> Så det synes som, i den enkleste form 140 00:06:19,530 --> 00:06:23,260 den eneste form for stater Jeg har i min verden, så 141 00:06:23,260 --> 00:06:25,350 til speak-- forhold i min world-- er enten 142 00:06:25,350 --> 00:06:33,020 Jeg har elektroner flyter, elektrisitet flyter, eller jeg gjør Ikke slik så videre, off. 143 00:06:33,020 --> 00:06:35,850 Og la oss formal av og på, som en datamaskin vitenskapsmann kan, 144 00:06:35,850 --> 00:06:37,255 med bare 1 og 0. 145 00:06:37,255 --> 00:06:39,880 La oss bare beskrive noen vilkårlig men konsekvent nummer. 146 00:06:39,880 --> 00:06:41,970 1 betyr på, 0 betyr off. 147 00:06:41,970 --> 00:06:45,427 Eller du kan også se dette som sanne midler på og falske midler. 148 00:06:45,427 --> 00:06:47,510 Du kan også gjøre svart hvitt eller rødt og blått. 149 00:06:47,510 --> 00:06:48,759 Du trenger bare to beskrivelsene. 150 00:06:48,759 --> 00:06:52,240 Og en dataforskere ville vanligvis bare bruker 0 og 1. 151 00:06:52,240 --> 00:06:58,980 >> Så hvis det er tilfelle, min eneste alfabetet er bestående av 0 og 1-ere, hvordan 152 00:06:58,980 --> 00:07:03,360 kunne jeg muligens få til selv antall 2 i en datamaskin, enn si nummer 3 153 00:07:03,360 --> 00:07:06,140 eller en bokstav i alfabetet eller et bilde eller en film? 154 00:07:06,140 --> 00:07:08,910 Hvordan kan vi liksom bootstrap oss fra dette grunnleggende prinsippet 155 00:07:08,910 --> 00:07:12,080 fra 0 og 1-ere og faktisk representere noe mer interessant? 156 00:07:12,080 --> 00:07:14,430 >> Vel, la oss sette det spørsmålet på vent for bare et øyeblikk 157 00:07:14,430 --> 00:07:17,520 og vurdere noe forhåpentligvis kjent, 158 00:07:17,520 --> 00:07:21,150 selv om du ikke har egentlig tenkt på det i noen detalj for 10, 20, 30, 40, 50 159 00:07:21,150 --> 00:07:22,520 flere år. 160 00:07:22,520 --> 00:07:24,780 Dette er hva? 161 00:07:24,780 --> 00:07:28,050 Hvordan ville du uttale det? 162 00:07:28,050 --> 00:07:30,770 Ikke et lurespørsmål. 163 00:07:30,770 --> 00:07:32,950 En rekke, men hva er det? 164 00:07:32,950 --> 00:07:34,842 1, 2, 3 eller 123. 165 00:07:34,842 --> 00:07:37,800 Og jeg likte hvordan du sa en, to, tre, fordi det er en måte å se det. 166 00:07:37,800 --> 00:07:39,870 1, 2, 3, er det en sekvens av tre symboler. 167 00:07:39,870 --> 00:07:42,005 Det er bilder som vi Nå har ord for. 168 00:07:42,005 --> 00:07:44,880 Og hvis du liksom lest dem alle sammen, et typisk menneske i engelsk 169 00:07:44,880 --> 00:07:46,600 vil si 123. 170 00:07:46,600 --> 00:07:48,350 Og det er liksom en høyere nivå konsept, 171 00:07:48,350 --> 00:07:50,340 føles som et rimelig stort tall. 172 00:07:50,340 --> 00:07:51,490 >> Men hvordan kom vi dit? 173 00:07:51,490 --> 00:07:54,640 Vel, det kan være en stund siden du har tenkt på det sånn, 174 00:07:54,640 --> 00:07:56,680 men tilbake i min dag, jeg slags lært dette 175 00:07:56,680 --> 00:08:01,030 som en søyle av 10-tallet kolonne, og 100 s kolonnen. 176 00:08:01,030 --> 00:08:06,400 Så som Lakisa sier, er det 1, 2, 3, men det er også 123. 177 00:08:06,400 --> 00:08:08,700 Men hvordan får vi fra førstnevnte til sistnevnte? 178 00:08:08,700 --> 00:08:12,340 >> Vel, ville du vanligvis gjør i 100 kolonne, jeg har en 1. 179 00:08:12,340 --> 00:08:14,794 Så det er som å si 100 ganger 1. 180 00:08:14,794 --> 00:08:16,210 Og så i 10 kolonne, jeg har to. 181 00:08:16,210 --> 00:08:18,464 Så det er som å si 10 ganger 2. 182 00:08:18,464 --> 00:08:19,630 I en spalte, jeg har tre. 183 00:08:19,630 --> 00:08:21,720 Så det er som å si 1 ganger 3. 184 00:08:21,720 --> 00:08:24,290 >> Og hvis jeg legger disse tingene sammen, dette er selvfølgelig 185 00:08:24,290 --> 00:08:27,470 er 100 pluss 10 pluss tre. 186 00:08:27,470 --> 00:08:31,750 Og oh, det er derfor jeg får dette høyere nivå oppfatningen av 123. 187 00:08:31,750 --> 00:08:37,220 Det er bare grunnleggende matematikk, der disse symboler har vekter til dem, hvis du 188 00:08:37,220 --> 00:08:39,620 vil, plassholder eller kolonneverdier. 189 00:08:39,620 --> 00:08:42,090 Og når jeg formere alt ut, får jeg dette nummeret. 190 00:08:42,090 --> 00:08:47,840 >> Så hvor mange av dere vet hvordan man snakker binary-- 0 og 1's-- som en datamaskin? 191 00:08:47,840 --> 00:08:50,410 OK, perfekt, ingen, eller ingen av dere tror dere gjør. 192 00:08:50,410 --> 00:08:52,550 Men jeg vil hevde deg faktisk vet dette allerede. 193 00:08:52,550 --> 00:08:55,330 Vi trenger bare å liksom justere vår mentale modell litt. 194 00:08:55,330 --> 00:08:57,250 Men prosessen er nøyaktig den samme. 195 00:08:57,250 --> 00:09:01,460 >> La meg forlate dette opp der og i stedet trekke dette ned et øyeblikk. 196 00:09:01,460 --> 00:09:05,060 I en verden av datamaskiner, vi har bare 0 og 1-ere. 197 00:09:05,060 --> 00:09:07,240 Og så det som er kommer til å forandre er hva? 198 00:09:07,240 --> 00:09:10,920 Vel, i mitt menneskelige verden, desimalsystemet, desember betydning 10, 199 00:09:10,920 --> 00:09:12,740 Jeg har hvor mange sifre til min disposisjon? 200 00:09:12,740 --> 00:09:15,270 201 00:09:15,270 --> 00:09:16,540 10, ikke sant? 202 00:09:16,540 --> 00:09:17,880 0 til 9, selvfølgelig. 203 00:09:17,880 --> 00:09:21,210 >> Og det er derfor vi har 10 plass og 100 plass. 204 00:09:21,210 --> 00:09:22,380 Hvor er det fra? 205 00:09:22,380 --> 00:09:24,430 Vel, dette er 10 til kraften i 0. 206 00:09:24,430 --> 00:09:28,440 Dette er 10 til makten til 1, 10 til kraften i to, og så videre. 207 00:09:28,440 --> 00:09:32,110 Du bare holde multiplisere kolonnene med 10, starter med bare ett 208 00:09:32,110 --> 00:09:33,700 i den høyre en her. 209 00:09:33,700 --> 00:09:35,490 >> Så i en verden av datamaskiner, hvis du bare 210 00:09:35,490 --> 00:09:39,600 har binary-- bi mening 2-- eller 0 og 1-ere, vi bare 211 00:09:39,600 --> 00:09:42,420 virkelig trenger å endre bunnen av den matte. 212 00:09:42,420 --> 00:09:46,410 Så med andre ord, nå vil vi bare har en spalte og folk flest i 213 00:09:46,410 --> 00:09:51,270 hvor er dette going-- 2 kolonne, 4 kolonne, og kanskje utover. 214 00:09:51,270 --> 00:09:52,250 Hvorfor det? 215 00:09:52,250 --> 00:09:55,650 Vel, dette er to 0-te potens. 216 00:09:55,650 --> 00:09:57,270 Dette er to i en. 217 00:09:57,270 --> 00:09:59,610 Dette er 2 til 2, og så videre. 218 00:09:59,610 --> 00:10:04,910 >> Så mens her, har vi 1, 10-tallet, 100-tallet, 1000-tallet, 10 000-tallet, 100 000-tallet, en 219 00:10:04,910 --> 00:10:10,560 millioner, og så videre, her vi har 1, 2, 4, 8, 16, 32, 64. 220 00:10:10,560 --> 00:10:13,950 Du bare fortsette å multiplisere med 2, i stedet for å holde multiplisere med 10. 221 00:10:13,950 --> 00:10:16,780 Så nå, hvis målet på hånd er å representere 222 00:10:16,780 --> 00:10:20,240 tall ved hjelp av bare 0 og 1-ere, la oss vurdere hvordan vi kommer dit. 223 00:10:20,240 --> 00:10:26,540 >> Dette, selvfølgelig, er mønsteret 0 0 0, men hvilket nummer konseptuelt 224 00:10:26,540 --> 00:10:27,490 representerer det? 225 00:10:27,490 --> 00:10:35,430 Vel, 4 ganger 0 pluss 2 ganger 0 pluss 1 ganger 0, la oss legge dem sammen. 226 00:10:35,430 --> 00:10:40,030 4 ganger 0 er, selvfølgelig, 0, pluss 2 ganger 0 er, selvfølgelig, 0 pluss 1 ganger 0 227 00:10:40,030 --> 00:10:40,850 er, selvfølgelig, 0. 228 00:10:40,850 --> 00:10:44,910 Så ah, representerer dette nummer vi mennesker kjenner som 0. 229 00:10:44,910 --> 00:10:47,810 >> Vel, la oss veldig raskt spole fremover. 230 00:10:47,810 --> 00:10:53,600 Hvis jeg i stedet ikke representerer 0 0 0, men la oss gjøre en 0 1, 231 00:10:53,600 --> 00:10:57,010 som kan være hvordan Lakisa, tidligere, ville bare uttale det 1 0 1. 232 00:10:57,010 --> 00:11:01,020 Men nå, hvordan tar vi det til høyere utjevne antall vi mennesker kanskje vet? 233 00:11:01,020 --> 00:11:04,220 Så hva er dette nummeret? 234 00:11:04,220 --> 00:11:06,060 Det er fem, nummer vi kjenner som fem. 235 00:11:06,060 --> 00:11:06,870 >> Vel, hvorfor er det? 236 00:11:06,870 --> 00:11:09,620 Vel, kan vi virkelig slags gå gjennom den metodisk 237 00:11:09,620 --> 00:11:14,880 4 ganger 1, 2 ganger, 1 0 ganger 1. 238 00:11:14,880 --> 00:11:19,880 Legg dem sammen, så Dette er fire pluss 0 pluss 1. 239 00:11:19,880 --> 00:11:21,577 Og det er faktisk fem. 240 00:11:21,577 --> 00:11:24,660 Så det begynner å bli litt kjedelig nå gjør det aritmetiske igjen og igjen. 241 00:11:24,660 --> 00:11:26,300 Men prosessen er nøyaktig den samme. 242 00:11:26,300 --> 00:11:28,380 >> Det eneste som har endret i vår verden 243 00:11:28,380 --> 00:11:32,740 er at våre kolonner er 1, 2, 4, 8, 16, og så videre, i stedet for en, 10, 100, 244 00:11:32,740 --> 00:11:33,740 1000. 245 00:11:33,740 --> 00:11:40,000 Og det er bare fordi vår alfabetet har krympet fra 0 til 9 for å bare 0-1. 246 00:11:40,000 --> 00:11:50,851 >> Så som en liten quiz her, hvordan ville du representerer nummer 7 i binær? 247 00:11:50,851 --> 00:11:51,350 0? 248 00:11:51,350 --> 00:11:53,490 Vel, 0, mener du 0 0 0? 249 00:11:53,490 --> 00:11:58,140 250 00:11:58,140 --> 00:11:59,693 Si det igjen, Karina. 251 00:11:59,693 --> 00:12:03,010 252 00:12:03,010 --> 00:12:03,550 Perfekt. 253 00:12:03,550 --> 00:12:04,370 Hvorfor det? 254 00:12:04,370 --> 00:12:08,530 Det er effektivt fire pluss to pluss en. 255 00:12:08,530 --> 00:12:09,580 Så bra. 256 00:12:09,580 --> 00:12:14,364 >> Hvordan representerer vi et lite another-- hva med nummer to? 257 00:12:14,364 --> 00:12:18,360 258 00:12:18,360 --> 00:12:20,690 Close, men bakover. 259 00:12:20,690 --> 00:12:21,660 Så hva er dette? 260 00:12:21,660 --> 00:12:26,290 Er 4 pluss 1, så det er fem igjen. 261 00:12:26,290 --> 00:12:28,310 >> Så what's-- Jeg beklager, Karina? 262 00:12:28,310 --> 00:12:29,220 0 1 0. 263 00:12:29,220 --> 00:12:34,762 0 1 0 ville være to, fordi igjen, selv hvis det liksom ikke hoppe ut på deg, 264 00:12:34,762 --> 00:12:35,470 bare gjøre regnestykket. 265 00:12:35,470 --> 00:12:40,390 4 ganger 0, 0, 2 ganger 1 er 2, 1 ganger 0 er 0. 266 00:12:40,390 --> 00:12:42,830 Så dette er tall vi kjenner som to. 267 00:12:42,830 --> 00:12:44,030 >> Hva med nummer 8? 268 00:12:44,030 --> 00:12:51,240 269 00:12:51,240 --> 00:12:52,730 Hm? 270 00:12:52,730 --> 00:12:53,330 God. 271 00:12:53,330 --> 00:12:56,130 Så vi slags trenger en plassholder. 272 00:12:56,130 --> 00:12:59,570 Vi trenger 1 0 0 0. 273 00:12:59,570 --> 00:13:02,280 Og det er sant for vår slags av gamle skolen desimalsystemet. 274 00:13:02,280 --> 00:13:05,280 Hvordan representerer du nummeret 1000? 275 00:13:05,280 --> 00:13:08,480 >> Vel, du ville synes å være slags i en tøff spot, 276 00:13:08,480 --> 00:13:10,390 hvis be deg om å representere tallet 1000, 277 00:13:10,390 --> 00:13:14,960 fordi selv om du gir deg selv som 9 av disse, 9 av disse, 0 av disse, 278 00:13:14,960 --> 00:13:18,730 som er den største nummeret du har, gjorde du ikke helt får til 1000. 279 00:13:18,730 --> 00:13:26,920 Så hvis du 1000, du bare trenger en annen posisjon, slik at du kan gjøre en 0 0 0, 280 00:13:26,920 --> 00:13:29,460 ergo antall tusen. 281 00:13:29,460 --> 00:13:34,200 >> Så la oss nå kartlegge denne typen konseptuelle diskusjonen tilbake til maskinvare, 282 00:13:34,200 --> 00:13:37,470 der igjen, inngangen var bare denne lille strømkabel, strøm 283 00:13:37,470 --> 00:13:39,300 kommer inn og flyter ut. 284 00:13:39,300 --> 00:13:44,740 Og så for at det skal kartlegges herfra til det, vel, hva gjør vi egentlig trenger? 285 00:13:44,740 --> 00:13:49,460 Vel, du kan tenke på å være inne i en datamaskin, en hel haug med lyspærer, 286 00:13:49,460 --> 00:13:50,450 om du vil. 287 00:13:50,450 --> 00:13:52,040 De er egentlig kalles transistorer. 288 00:13:52,040 --> 00:13:55,121 Og transistorer er bare brytere som kan enten være av eller på. 289 00:13:55,121 --> 00:13:56,870 Så du kan tenke på en transistor som er på 290 00:13:56,870 --> 00:14:00,730 er slik at strøm til å flyte og en transistor som er utenfor som å stoppe 291 00:14:00,730 --> 00:14:02,170 elektrisitet fra strømmer. 292 00:14:02,170 --> 00:14:04,130 Og i stedet for å ta over lysene her, 293 00:14:04,130 --> 00:14:06,450 hvorfor jeg ikke gjøre denne typen av ny skole stil. 294 00:14:06,450 --> 00:14:11,360 Så dette kan være en 1, en lommelykt å være på, bare så vidt skjønt. 295 00:14:11,360 --> 00:14:14,050 Og dette kan være en 0, og nå er det off. 296 00:14:14,050 --> 00:14:18,277 >> Så bruker dette fysisk enhet, jeg Nå kan representere binære systemet. 297 00:14:18,277 --> 00:14:19,235 Jeg trenger bare to stater. 298 00:14:19,235 --> 00:14:21,660 Det spiller ingen rolle hva farge det er eller hva det er. 299 00:14:21,660 --> 00:14:25,920 Alt som betyr noe er at jeg har en stat på, og en annen stat av. 300 00:14:25,920 --> 00:14:30,605 Så bruker telefonen min her, hvordan gjør jeg representerer antall vi kjenner som 0? 301 00:14:30,605 --> 00:14:34,490 302 00:14:34,490 --> 00:14:38,550 Eller sagt ekvivalent, hva nummer er jeg representerer nå? 303 00:14:38,550 --> 00:14:39,810 0, fordi enheten er slått av. 304 00:14:39,810 --> 00:14:41,560 >> Og hvis jeg gjør dette? 305 00:14:41,560 --> 00:14:43,583 Og nå, hvordan gjør jeg representerer nummer 2? 306 00:14:43,583 --> 00:14:46,380 307 00:14:46,380 --> 00:14:50,930 Kan jeg låne telefonen her, som vi gjorde i går? 308 00:14:50,930 --> 00:14:58,490 Så la oss se, så hvis jeg ønsker å representere nummer 2, dette er nummer 2? 309 00:14:58,490 --> 00:14:59,050 Nei. 310 00:14:59,050 --> 00:15:02,250 Hvilket nummer er jeg ved et uhell representerer her? 311 00:15:02,250 --> 00:15:03,550 Dette er faktisk nummer tre. 312 00:15:03,550 --> 00:15:05,008 >> Så hvilken ønsker jeg å slå av? 313 00:15:05,008 --> 00:15:09,634 Den svarte telefonen or-- vel, hvis they're-- svarte telefonen eller den hvite telefonen? 314 00:15:09,634 --> 00:15:10,300 Den hvite telefonen. 315 00:15:10,300 --> 00:15:17,020 Så hvis jeg slår dette av og vi linjen opp over her, har vi en 1 316 00:15:17,020 --> 00:15:19,487 i 2-sted og en 0 i en plass. 317 00:15:19,487 --> 00:15:21,195 Og så er jeg nå representerer tallet 2. 318 00:15:21,195 --> 00:15:24,680 Og dette, selvfølgelig, vil være antall 3, fordi nå begge disse lysene 319 00:15:24,680 --> 00:15:25,350 er på. 320 00:15:25,350 --> 00:15:27,480 >> Og jeg vil stoppe her, men det står til grunn 321 00:15:27,480 --> 00:15:31,100 hvis jeg ønsker å representere nummer 4 eller 8 eller høyere, 322 00:15:31,100 --> 00:15:32,529 Jeg kommer til å trenge flere telefoner. 323 00:15:32,529 --> 00:15:33,820 Men det er alt som skjer. 324 00:15:33,820 --> 00:15:37,800 Så hvis du noen gang har hørt at innsiden av a-- takke you-- datamaskin 325 00:15:37,800 --> 00:15:42,269 er millioner av transistorer, det er bare millioner av bitte små brytere. 326 00:15:42,269 --> 00:15:44,310 Og de er ikke lett pærer som slår av og på, 327 00:15:44,310 --> 00:15:48,340 men de har enten tillate strøm å flyte et sted eller stoppe den. 328 00:15:48,340 --> 00:15:52,140 Og så det er dine to states-- på eller av, på eller av. 329 00:15:52,140 --> 00:15:55,730 >> Så vi synes nå for å ha denne evnen 330 00:15:55,730 --> 00:16:00,590 for å representere dette konseptet som vi ønsker i selve maskinvaren. 331 00:16:00,590 --> 00:16:05,520 Men alt vi har nå er muligheten til å representere tall det ville virke. 332 00:16:05,520 --> 00:16:08,580 Så hvordan skal vi gå om tilsvar bokstavene i alfabetet, som 333 00:16:08,580 --> 00:16:12,310 føles som den neste slags funksjon du ønsker å legge til en moderne datamaskin 334 00:16:12,310 --> 00:16:14,280 når du har tall? 335 00:16:14,280 --> 00:16:16,930 >> Og ja, hvis du tenker på det, historisk, datamaskiner 336 00:16:16,930 --> 00:16:19,426 ble introdusert virkelig å tjene som kalkulatorer numerisk. 337 00:16:19,426 --> 00:16:21,300 Men selvfølgelig, disse dager, de gjør mye mer. 338 00:16:21,300 --> 00:16:23,799 Selv når de starter opp, du vanligvis ser ett eller flere ord. 339 00:16:23,799 --> 00:16:27,420 Så hvordan du representerer ord, hvis alt du har er, igjen, 340 00:16:27,420 --> 00:16:31,054 strøm ved slutten av dag, eller ekvivalent 0 og 1-ere? 341 00:16:31,054 --> 00:16:34,430 342 00:16:34,430 --> 00:16:35,690 >> Yeah. 343 00:16:35,690 --> 00:16:38,320 Ja, jeg mener, vi gjorde slags dette går i noen form, 344 00:16:38,320 --> 00:16:40,200 der på et tidspunkt, Jeg tror jeg vilkårlig 345 00:16:40,200 --> 00:16:46,741 sa at dersom vi ønsker å representere bokstaven A, vi kan bare kalle det en en. 346 00:16:46,741 --> 00:16:49,990 Det var i sammenheng med kryptografi, der vi bare trengte en slags kode, 347 00:16:49,990 --> 00:16:51,160 noen form for kartlegging. 348 00:16:51,160 --> 00:16:56,680 >> Så kanskje A vil være representert som en 1, og B vil være representert som en 2, 349 00:16:56,680 --> 00:17:01,560 og Z vil være representert som en 26, for eksempel. 350 00:17:01,560 --> 00:17:07,430 Og så den eneste forbeholdet er at hvis jeg er kommer til å kode bokstaver i e-postene mine 351 00:17:07,430 --> 00:17:10,430 eller i mine tekstmeldinger som tall, dere alle 352 00:17:10,430 --> 00:17:12,640 være enige om å bruke samme sett av konvensjoner. 353 00:17:12,640 --> 00:17:14,619 Og ja, verden har gjort akkurat det. 354 00:17:14,619 --> 00:17:18,040 >> Det er et system i verden kalt ASCII, American Standard 355 00:17:18,040 --> 00:17:21,640 Kode for Information Interchange, som er rett og slett en avgjørelse noen år 356 00:17:21,640 --> 00:17:25,720 siden at menneskene gjorde at besluttet at A kommer til å like, ikke 357 00:17:25,720 --> 00:17:32,260 1, 2 og 26, og slik at det er en forth-- Litt different-- men 65, 66, 67. 358 00:17:32,260 --> 00:17:34,010 Og jeg skal trekke opp en diagram i bare et øyeblikk. 359 00:17:34,010 --> 00:17:34,580 Men det er tilfeldig. 360 00:17:34,580 --> 00:17:36,329 Men det spiller ingen rolle at det er tilfeldig. 361 00:17:36,329 --> 00:17:38,620 Verden må bare være konsekvent. 362 00:17:38,620 --> 00:17:40,540 >> Nå, mer nylig, det er noe mer avansert 363 00:17:40,540 --> 00:17:45,430 kalt Unicode, fordi verdens slag av realisert, etter oppfinne datamaskiner, 364 00:17:45,430 --> 00:17:50,977 at det er mer enn godt 256 symboler i verden 365 00:17:50,977 --> 00:17:53,560 at vi kanskje ønsker å representere, spesielt når du introdusere 366 00:17:53,560 --> 00:17:58,420 Asiatiske språk og andre symbologies som trenger mer ekspressivitet enn deg 367 00:17:58,420 --> 00:18:02,150 kan passe i den tidligste versjonen av denne koden, som ble kalt ASCII. 368 00:18:02,150 --> 00:18:05,250 Så Unicode tillater faktisk du å bruke mer 0 og 2. 369 00:18:05,250 --> 00:18:08,830 Spesielt holde deg høre Ordet byte i samfunnet og selv bare 370 00:18:08,830 --> 00:18:09,400 i går. 371 00:18:09,400 --> 00:18:12,040 Og en byte er hva igjen? 372 00:18:12,040 --> 00:18:14,840 >> Hva er en byte? 373 00:18:14,840 --> 00:18:15,700 Det er bare 8 bits. 374 00:18:15,700 --> 00:18:17,150 Så hva betyr det egentlig? 375 00:18:17,150 --> 00:18:22,400 Vel, det betyr, tidligere, da vi var snakker om binære, og jeg var med 376 00:18:22,400 --> 00:18:28,010 vilkårlig tre biter når vi var snakker om binary-- det en plass, 377 00:18:28,010 --> 00:18:33,600 2 plass, og 4-tallet sted-- godt, en byte betyr bare at du snakker 378 00:18:33,600 --> 00:18:38,730 ikke i enheter av tre, men fire, fem, seks, sju åtte, 379 00:18:38,730 --> 00:18:46,910 som gir oss 8 plass, 16-tallet, 32-tallet, 64-tallet, og 128-tallet. 380 00:18:46,910 --> 00:18:50,010 >> Med andre ord, er en smule ikke alle som nyttig en måleenhet, 381 00:18:50,010 --> 00:18:53,132 fordi det er akkurat som en bitte liten opplysning, på eller av. 382 00:18:53,132 --> 00:18:54,840 Så for noen år siden, verden bare besluttet 383 00:18:54,840 --> 00:18:59,060 det er litt mer praktisk å snakke i oppgis i byte, åtte ting om gangen. 384 00:18:59,060 --> 00:19:01,670 Og så dermed ble født oppfatningen av en byte. 385 00:19:01,670 --> 00:19:03,640 Og så har vi åtte biter her. 386 00:19:03,640 --> 00:19:06,810 >> Og det viser seg også, for lignende årsaker, besluttet verden år 387 00:19:06,810 --> 00:19:12,439 siden at å representere en ASCII brev, du kommer til å bruke enheter av 8 bits. 388 00:19:12,439 --> 00:19:14,230 Så selv om du ikke gjør det trenger at mange, du er 389 00:19:14,230 --> 00:19:18,130 alltid kommer til å bruke 8 biter til representerer en bokstav i alfabetet. 390 00:19:18,130 --> 00:19:20,950 Og dette er praktisk, fordi da hvis du 391 00:19:20,950 --> 00:19:28,720 mottar en melding som har en 0 0 0 1 1 1 1 0 etterfulgt av en annen 1 1 1 0 1 0 392 00:19:28,720 --> 00:19:33,320 0 1, så hvis du mottar 16 bits, kan bare verden 393 00:19:33,320 --> 00:19:37,460 anta at den første 8 er en bokstav og den andre åtte er en annen bokstav. 394 00:19:37,460 --> 00:19:39,240 >> Spiller ingen rolle hvor mange det er. 395 00:19:39,240 --> 00:19:41,460 Det betyr bare at vi er alle konsekvent 396 00:19:41,460 --> 00:19:42,950 når vi tolker disse bitene. 397 00:19:42,950 --> 00:19:44,377 Og dette var bare tilfeldig. 398 00:19:44,377 --> 00:19:47,210 Det betyr noe, men jeg gjorde ikke virkelig tenke over hva det betyr. 399 00:19:47,210 --> 00:19:49,620 >> Så det er en liten hvit løgn. 400 00:19:49,620 --> 00:19:51,990 Opprinnelig, ASCII faktisk brukt bare 7 bits. 401 00:19:51,990 --> 00:19:54,180 Og den åttende bit er kalles utvidet ASCII. 402 00:19:54,180 --> 00:19:56,290 Men poenget er, til syvende og sist, det samme. 403 00:19:56,290 --> 00:19:58,850 Verdens generelt standardisert på 8 biter. 404 00:19:58,850 --> 00:20:04,290 >> Så dette synes å være litt begrensende, fordi jeg bare kan 405 00:20:04,290 --> 00:20:07,970 representerer kapital A, kapital B gjennom hovedstaden Z. 406 00:20:07,970 --> 00:20:10,940 Men faktisk ikke, hvis jeg går to-- det er en haug av ressurser 407 00:20:10,940 --> 00:20:13,695 på nettet, for eksempel, asciitable.com, dette 408 00:20:13,695 --> 00:20:16,310 kommer til å være litt overveldende i starten. 409 00:20:16,310 --> 00:20:18,910 Men jeg vil påpeke hva som er viktig her. 410 00:20:18,910 --> 00:20:24,090 >> Dette skjer bare for å be-- og jeg vil walk-- la oss se, hvis jeg går over her. 411 00:20:24,090 --> 00:20:27,990 Her er, i desimal søyle, tallet 65. 412 00:20:27,990 --> 00:20:32,201 Og på høyre kolonne brev karakter, Chr, er bokstaven A. 413 00:20:32,201 --> 00:20:34,450 Og du kan ignorere, for nå, alt i midten. 414 00:20:34,450 --> 00:20:36,769 Dette er heksadesimale, oktale, og en HTML-kode. 415 00:20:36,769 --> 00:20:39,810 Til dette nettstedet er bare prøver å kaste mye informasjon på deg med en gang. 416 00:20:39,810 --> 00:20:42,970 Men alt vi bryr oss om er desimal kolonne og tegnet kolonnen. 417 00:20:42,970 --> 00:20:46,190 >> Så ved denne logikken, hva er tallet at verden 418 00:20:46,190 --> 00:20:50,510 har besluttet representerer en liten bokstav a? 419 00:20:50,510 --> 00:20:52,230 Ja, 97. 420 00:20:52,230 --> 00:20:55,850 Og bare for å forvirre potensielt litt, 421 00:20:55,850 --> 00:21:03,715 hvilket nummer har verden bestemt seg ville representerer antall 1? 422 00:21:03,715 --> 00:21:06,900 423 00:21:06,900 --> 00:21:10,910 Høyre, fordi we-- 49, virker det her nede i bunnen igjen. 424 00:21:10,910 --> 00:21:12,320 >> Nå, hva jeg mener med det? 425 00:21:12,320 --> 00:21:14,830 Så det viser seg at i datasystemer 426 00:21:14,830 --> 00:21:16,840 Det er vanligvis en fundamental forskjell 427 00:21:16,840 --> 00:21:19,920 mellom et tall og et tegn. 428 00:21:19,920 --> 00:21:22,330 Et tall er det vi lært å vokse opp når 429 00:21:22,330 --> 00:21:23,830 vi var super unge i grunnskolen. 430 00:21:23,830 --> 00:21:25,110 Det er ting du teller med. 431 00:21:25,110 --> 00:21:30,220 Men en karakter er bare en form, en glyph, så å si, på skjermen. 432 00:21:30,220 --> 00:21:36,200 >> Nå, vi mennesker liksom se noe som ser ut som dette. 433 00:21:36,200 --> 00:21:39,060 Og vi sier, oh, som er nummer to. 434 00:21:39,060 --> 00:21:44,999 Men nei, det er bare et symbol som ser som det vi kjenner som nummer to. 435 00:21:44,999 --> 00:21:46,790 Og så er det denne grunnleggende skillet 436 00:21:46,790 --> 00:21:50,340 mellom faktiske tall og tegn. 437 00:21:50,340 --> 00:21:52,130 Dette er et tall. 438 00:21:52,130 --> 00:21:54,420 Men generelt, i forbindelse med en datamaskin, 439 00:21:54,420 --> 00:21:56,809 Hvis du i stedet se noe som dette quoted-- 440 00:21:56,809 --> 00:21:58,600 og du ikke alltid må se det sitert, 441 00:21:58,600 --> 00:22:01,474 men på grunn av discussion-- hvis ser du anførselstegn rundt nummeret, 442 00:22:01,474 --> 00:22:02,730 Dette er nå et tegn. 443 00:22:02,730 --> 00:22:06,330 Så dette nummer to under hetten på innsiden av en datamaskin 444 00:22:06,330 --> 00:22:12,220 vil være representert med et mønster av biter som representerer antallet 445 00:22:12,220 --> 00:22:14,850 50 i henhold til diagrammet på nettet. 446 00:22:14,850 --> 00:22:18,300 >> Men hvis en datamaskin bare ser dette, dette 447 00:22:18,300 --> 00:22:24,580 vil være representert med Mønsteret til bit 0 0 0 0 0 0 1 0. 448 00:22:24,580 --> 00:22:29,595 Mens, ville dette tegnet faktisk være representert as-- og nå, 449 00:22:29,595 --> 00:22:34,710 Jeg fikk til å tenke litt harder-- så dette karakter vil være representert med 0 450 00:22:34,710 --> 00:22:39,080 0 1-- hva trenger jeg her? 451 00:22:39,080 --> 00:22:44,450 0 0 1 1 0 0 1 0. 452 00:22:44,450 --> 00:22:45,480 Hvordan klarte jeg dette? 453 00:22:45,480 --> 00:22:49,580 Vel, dette er nummer 50, hvis du multiplisere det ut ved hjelp av disse kolonnene, 454 00:22:49,580 --> 00:22:53,530 Dette er tallet 2, og så det er derfor det er denne motsetningen. 455 00:22:53,530 --> 00:22:55,850 >> Og dette er bare en teaser nå for funksjoner 456 00:22:55,850 --> 00:22:59,710 som finnes i programmeringsspråk at vi vil komme inn på kort senere i dag. 457 00:22:59,710 --> 00:23:01,950 I programmeringsspråk, du har generelt, 458 00:23:01,950 --> 00:23:04,495 men ikke alltid, ting kalle ulike datatyper. 459 00:23:04,495 --> 00:23:06,870 Med andre ord, en programmer-- når han eller hun skriver, 460 00:23:06,870 --> 00:23:11,150 en programmerer får bestemme i hvilken formatet til å lagre sine data. 461 00:23:11,150 --> 00:23:14,120 Du kan enten lagre data som rå tall som nummer to. 462 00:23:14,120 --> 00:23:17,940 Eller du kan lagre dem som strenger, eller sekvenser av tegn 463 00:23:17,940 --> 00:23:21,550 som du vanligvis ville uttrykke med sitater i ditt programmeringsspråk. 464 00:23:21,550 --> 00:23:25,230 >> Du kan ha ting called-- Jeg skal overforenkle og kaller dem 465 00:23:25,230 --> 00:23:28,870 real numbers-- så tallene som er ikke tall som nummer to, 466 00:23:28,870 --> 00:23:31,310 men tall som 4,56. 467 00:23:31,310 --> 00:23:33,490 Så reelle tall kan også har desimaler, 468 00:23:33,490 --> 00:23:36,340 så det er en annen grunnleggende stykke data i en datamaskin. 469 00:23:36,340 --> 00:23:41,920 Og så kan du selv ha andre datatyper fortsatt. 470 00:23:41,920 --> 00:23:45,810 Så det er bare en teaser egentlig av den enkleste av design beslutninger 471 00:23:45,810 --> 00:23:50,960 at en programmerer kanskje gjøre under panseret. 472 00:23:50,960 --> 00:23:52,925 >> Så noen spørsmål ennå? 473 00:23:52,925 --> 00:23:57,320 474 00:23:57,320 --> 00:23:59,860 Så la oss prøve å gjøre dette litt mer ekte. 475 00:23:59,860 --> 00:24:02,120 Denne maskinvaren er ikke så mye i bruk lenger. 476 00:24:02,120 --> 00:24:07,420 Men de fleste alle i dette rommet sannsynligvis vokste opp med og fremdeles bruker harddisker 477 00:24:07,420 --> 00:24:08,010 på en måte. 478 00:24:08,010 --> 00:24:10,100 >> Selv om de fleste av våre bærbare datamaskiner ikke lenger 479 00:24:10,100 --> 00:24:15,900 har enheter som opererer som dette, i stedet laptoper i dag generelt 480 00:24:15,900 --> 00:24:18,590 har solid state-disker uten bevegelige deler. 481 00:24:18,590 --> 00:24:22,840 Og som har en tendens til å bli dyrere, dessverre, men litt raskere 482 00:24:22,840 --> 00:24:27,230 og a-- godt, ofte, mye raskere, som er en av årsakene. 483 00:24:27,230 --> 00:24:28,980 Og også den ikke gjør generere så mye varme. 484 00:24:28,980 --> 00:24:31,680 Det kan være mindre, slik at den er vanligvis en netto positiv. 485 00:24:31,680 --> 00:24:35,030 >> Men dette gir oss mulighet til å kartlegge en Litt mer konkret hva 486 00:24:35,030 --> 00:24:38,460 vi snakker om på 0 og 1 nivå nå til en fysisk enhet. 487 00:24:38,460 --> 00:24:40,810 Det er én ting for meg å snakke ca 0-er og 1-ere i form 488 00:24:40,810 --> 00:24:43,990 av telefonen min eller abstrakt i form av brytere være av og på. 489 00:24:43,990 --> 00:24:45,340 Men hva med harddisker? 490 00:24:45,340 --> 00:24:48,495 I din bærbare PC, hvis du har en eldre en, eller i den stasjonære datamaskinen, 491 00:24:48,495 --> 00:24:51,200 eller i hvert fall i servere i dag, hvor du har 492 00:24:51,200 --> 00:24:53,070 harddisker som har en terabyte med plass, 493 00:24:53,070 --> 00:24:55,560 4 terabyte med plass, vel hva betyr det? 494 00:24:55,560 --> 00:24:59,560 >> En harddisk med en terabyte plass midler 495 00:24:59,560 --> 00:25:03,890 det er 1 billion bytes innsiden av det liksom, 496 00:25:03,890 --> 00:25:10,450 eller ekvivalent 8 billioner bits inne. 497 00:25:10,450 --> 00:25:16,240 1 terabyte vil være 8 terabits eller 1 billion bits, noe som 498 00:25:16,240 --> 00:25:19,330 betyr at hvis du har en hard stasjonen, har du liksom 499 00:25:19,330 --> 00:25:22,400 eller andre en trillion 0-tallet og en er inne for det. 500 00:25:22,400 --> 00:25:25,360 Og hvis vi bare ta en titt på en vilkårlig bilde av en harddisk 501 00:25:25,360 --> 00:25:30,110 representant, dette er hva en hard stasjonen kan typisk se ut inni. 502 00:25:30,110 --> 00:25:32,600 >> Det også er typen som en gammel grammofon spiller 503 00:25:32,600 --> 00:25:35,350 men generelt med flere poster inne, så 504 00:25:35,350 --> 00:25:38,270 til speak-- flere fat, som de kalles, 505 00:25:38,270 --> 00:25:42,259 metall sirkulære disker, og deretter en liten lesehode, 506 00:25:42,259 --> 00:25:43,550 mye som en gammel platespiller. 507 00:25:43,550 --> 00:25:46,589 Og at lesehodet beveger seg tilbake og frem og liksom leser biter. 508 00:25:46,589 --> 00:25:49,380 Og hva som skjer på disse platene, selv om vi mennesker ikke kan se dem, 509 00:25:49,380 --> 00:25:52,757 enten i virkeligheten eller i dette bildet, det er bitte små magnetiske partikler. 510 00:25:52,757 --> 00:25:55,090 Og selv om du har lang glemt hvordan elektrisitet fungerer, 511 00:25:55,090 --> 00:25:57,550 en magnetisk partikkel som er belastet generelt 512 00:25:57,550 --> 00:26:00,570 har en nordenden og en sør end-- så nord og sør. 513 00:26:00,570 --> 00:26:03,000 Og så verden bare besluttet for en tid siden 514 00:26:03,000 --> 00:26:06,570 at dersom en magnetisk protokoll i det vesentlige er innrettet slik, nord-sør, 515 00:26:06,570 --> 00:26:07,610 la oss kalle det en en. 516 00:26:07,610 --> 00:26:10,470 Hvis det er i stedet sør-nord, la oss bare kalle det en 0. 517 00:26:10,470 --> 00:26:13,350 Og så hvis du har din disposisjon en trillion 518 00:26:13,350 --> 00:26:16,300 bitte liten magnetisk particles-- og forhåpentligvis, 519 00:26:16,300 --> 00:26:18,740 maskinvaren oppfinnsomhet i For å snu dem rundt 520 00:26:18,740 --> 00:26:24,450 som du ser fit-- hvis du vil representere en hel haug med 0-er, du 521 00:26:24,450 --> 00:26:28,120 bare trenger 8 magnetiske partikler alle justert som dette. 522 00:26:28,120 --> 00:26:30,330 Og hvis du ønsker å representere åtte 1s, du bare 523 00:26:30,330 --> 00:26:33,170 trenger 8 magnetiske partikler på linje rygg mot rygg mot rygg som dette. 524 00:26:33,170 --> 00:26:35,515 >> Hva mener jeg med det magnetiske partikler? 525 00:26:35,515 --> 00:26:38,390 Oppriktig, alle disse år senere, Det som likevel kommer til meg 526 00:26:38,390 --> 00:26:42,139 er denne fyren, hvis du vokste opp med denne tingen. 527 00:26:42,139 --> 00:26:43,930 Dette er en little-- for de unfamiliar-- en 528 00:26:43,930 --> 00:26:47,810 Litt barndommen leketøy som har denne hårløs mann her 529 00:26:47,810 --> 00:26:51,690 som har alle disse bitte liten svart magnetiske partikler som følger med det. 530 00:26:51,690 --> 00:26:53,930 Og bruker det røde stick, som er bare en magnet, 531 00:26:53,930 --> 00:26:58,460 du kan liksom gi ham en bart eller øyenbrynene eller hår eller noe på ham. 532 00:26:58,460 --> 00:27:00,710 Så faktisk, hvis vi zoome i, for eksempel, denne 533 00:27:00,710 --> 00:27:02,950 er den typen spill du kan spille med Wooly Willy. 534 00:27:02,950 --> 00:27:06,570 >> Og dette er bare å si, disse er mye større magnetiske partikler 535 00:27:06,570 --> 00:27:09,890 enn er faktisk på en harddisk, og langt færre magnetiske partikler. 536 00:27:09,890 --> 00:27:11,640 Men la oss faktisk se så hvis du har 537 00:27:11,640 --> 00:27:14,720 små magnetiske partikler i en harddisk, hvordan du faktisk kan 538 00:27:14,720 --> 00:27:19,090 bruke disse til å representere data. 539 00:27:19,090 --> 00:27:20,070 >> [VIDEO PLAYBACK] 540 00:27:20,070 --> 00:27:24,190 >> -Den Harddisk er hvor din PC butikker de fleste av sine faste data. 541 00:27:24,190 --> 00:27:27,170 For å gjøre det, data reiser fra RAM sammen 542 00:27:27,170 --> 00:27:31,720 med programvare signaler som forteller harddisk hvordan å lagre disse dataene. 543 00:27:31,720 --> 00:27:36,570 Harddisken kretser sette de signaler til spenningsvariasjoner. 544 00:27:36,570 --> 00:27:40,880 Disse i sin tur styrer harddiskens bevegelige parts-- noen av de få bevegelige 545 00:27:40,880 --> 00:27:43,440 delene igjen i moderne datamaskin. 546 00:27:43,440 --> 00:27:47,650 >> Noen av de signaler som styrer en motor, som spinner metallbelagte fat. 547 00:27:47,650 --> 00:27:50,980 Dine data er faktisk lagret på disse platene. 548 00:27:50,980 --> 00:27:56,250 Andre signaler flytte lese / skrive-hodene å lese eller skrive data på platene. 549 00:27:56,250 --> 00:28:00,100 Dette maskiner er så presis at et hårstrå kunne ikke engang 550 00:28:00,100 --> 00:28:02,800 passere mellom hodene og spinne fat. 551 00:28:02,800 --> 00:28:04,887 Likevel, det hele virker til veldig bra hastigheter. 552 00:28:04,887 --> 00:28:05,470 [END PLAYBACK] 553 00:28:05,470 --> 00:28:06,780 Og du kan se på halen slutten av videoen, 554 00:28:06,780 --> 00:28:08,340 Det er generelt flere fat. 555 00:28:08,340 --> 00:28:10,250 Og slik at lesehode er ikke bare å lese toppen. 556 00:28:10,250 --> 00:28:12,458 Det er litt som tre eller fire eller flere lesehoder 557 00:28:12,458 --> 00:28:14,920 som beveger seg som dette, leser data samtidig. 558 00:28:14,920 --> 00:28:17,407 >> Så det er mye kompleksitet og slags timing 559 00:28:17,407 --> 00:28:18,740 som er involvert i en harddisk. 560 00:28:18,740 --> 00:28:21,920 Og ting er spinning virkelig darn fort, så det er mye av kompleksitet. 561 00:28:21,920 --> 00:28:25,220 Men la oss zoome inn litt dypere og se hvor er disse magnetiske partikler 562 00:28:25,220 --> 00:28:27,370 og hvordan vi får på dem. 563 00:28:27,370 --> 00:28:28,750 >> [VIDEO PLAYBACK] 564 00:28:28,750 --> 00:28:31,830 >> -La Oss se på hva vi nettopp så i sakte film. 565 00:28:31,830 --> 00:28:35,230 Når en kort puls av elektrisitet sendes til lese- / skrivehodet, 566 00:28:35,230 --> 00:28:39,000 det knipser på en liten elektro for en brøkdel av et sekund. 567 00:28:39,000 --> 00:28:41,390 Magneten skaper en felt, noe som endrer 568 00:28:41,390 --> 00:28:44,600 polariteten til en bitteliten del av metallpartiklene 569 00:28:44,600 --> 00:28:46,960 som pels hver tallerken overflate. 570 00:28:46,960 --> 00:28:50,020 Et mønster serie av disse bittesmå ladet opp områder på disken 571 00:28:50,020 --> 00:28:54,590 representerer en enkelt bit av data i binære tallsystemet som brukes av datamaskiner. 572 00:28:54,590 --> 00:28:57,510 >> Nå, hvis den nåværende er sendt en gjennom lese- / skrivehodet, 573 00:28:57,510 --> 00:28:59,899 området er polarisert i en retning. 574 00:28:59,899 --> 00:29:01,940 Dersom strømmen blir sendt i i motsatt retning, 575 00:29:01,940 --> 00:29:04,020 polarisasjonen blir reversert. 576 00:29:04,020 --> 00:29:06,440 Hvordan får du data fra harddisken? 577 00:29:06,440 --> 00:29:08,190 Bare reversere prosessen. 578 00:29:08,190 --> 00:29:10,440 Så det er partikler på disk som får strøm 579 00:29:10,440 --> 00:29:12,260 i lese- / skrivehodet beveger seg. 580 00:29:12,260 --> 00:29:14,580 Sett sammen millioner av disse magnetisert segmenter, 581 00:29:14,580 --> 00:29:16,220 og du har en fil. 582 00:29:16,220 --> 00:29:21,030 >> Nå kan deler av en enkelt fil være spredt over et stasjonens fat, 583 00:29:21,030 --> 00:29:24,060 typen som rotet papirer på pulten din. 584 00:29:24,060 --> 00:29:27,590 Så en spesiell ekstra fil holder rede på hvor alt er. 585 00:29:27,590 --> 00:29:30,440 Ikke du ønske du hadde noe sånt? 586 00:29:30,440 --> 00:29:31,290 >> [END PLAYBACK] 587 00:29:31,290 --> 00:29:36,260 >> Så blir hentydet til det, kanskje, er som tema fra i går av sletting. 588 00:29:36,260 --> 00:29:38,380 Når du sletter en fil, går vi sa 589 00:29:38,380 --> 00:29:41,020 at en datamaskin faktisk gjør hva, når du drar noe 590 00:29:41,020 --> 00:29:44,110 til papirkurven eller papirkurven? 591 00:29:44,110 --> 00:29:45,150 Det glemmer bare det. 592 00:29:45,150 --> 00:29:47,540 Men 0 og 1-ere, de magnetiske partikler 593 00:29:47,540 --> 00:29:50,640 det ser ut som rød og blå ting her, eller min arm her, 594 00:29:50,640 --> 00:29:52,350 er fremdeles på harddisken. 595 00:29:52,350 --> 00:29:56,090 >> Og så finnes det software-- Norton Utilities og Yesteryear 596 00:29:56,090 --> 00:29:58,159 og andre mer moderne software-- som bare 597 00:29:58,159 --> 00:30:01,200 vil skanne en hel harddisk ute på alle de 0-er og 1-ere, fordi det 598 00:30:01,200 --> 00:30:06,890 viser seg at de fleste fil formater-- Word-dokumenter, Excel-filer, bilder, 599 00:30:06,890 --> 00:30:10,380 video files-- alle har visst mønstre som er vanlig blant dem. 600 00:30:10,380 --> 00:30:12,550 Hver videofil kanskje være av en annen video, 601 00:30:12,550 --> 00:30:14,870 men først flere biter er vanligvis den samme. 602 00:30:14,870 --> 00:30:16,790 Eller de siste bitene er vanligvis den samme. 603 00:30:16,790 --> 00:30:19,910 >> Og det med stor sannsynlighet, du kan se etter disse mønstrene. 604 00:30:19,910 --> 00:30:23,700 Og selv om filen har blitt glemt, du kan si med stor sannsynlighet, 605 00:30:23,700 --> 00:30:28,460 men dette ser ut som et Word-dokument, lar gjenopprette den og un-glem det, 606 00:30:28,460 --> 00:30:28,990 om du vil. 607 00:30:28,990 --> 00:30:32,330 Og så det er hvordan du kan gjenopprette data som enten har vært et uhell 608 00:30:32,330 --> 00:30:36,560 slettet eller slettet eller bevisst slettet for uansett formål. 609 00:30:36,560 --> 00:30:42,530 >> Derimot, gjør sikker sletting hva i sammenheng med et bilde som dette? 610 00:30:42,530 --> 00:30:44,059 Akkurat, gjør dem tilfeldig. 611 00:30:44,059 --> 00:30:46,350 Så det liksom flytter noen av dem ned, noen av dem opp, 612 00:30:46,350 --> 00:30:49,433 later noen av dem uendret, og vanligvis gjør tilfeldig støy ut av det, 613 00:30:49,433 --> 00:30:52,960 eller bare kanskje gjør alle dem 0-er eller alle av dem en-tallet. 614 00:30:52,960 --> 00:30:56,350 Og som også kan generelt skrubbe dataene unna. 615 00:30:56,350 --> 00:31:00,160 >> Så la oss gå tilbake nå til spørsmålet av beregningsorientert tenkning, der 616 00:31:00,160 --> 00:31:03,270 Vi har formelen innganger. 617 00:31:03,270 --> 00:31:06,390 Og algoritmer gir du sender ut til slutt. 618 00:31:06,390 --> 00:31:09,270 Vi fokuserer nå på innganger og utganger, for nå, jeg 619 00:31:09,270 --> 00:31:12,159 krav vi har en måte representerer innganger og utganger. 620 00:31:12,159 --> 00:31:13,450 Vi kommer bare til å bruke binære. 621 00:31:13,450 --> 00:31:15,910 >> Og uansett hva vi ønsker å representere i dag, 622 00:31:15,910 --> 00:31:20,230 enten det er et tall eller en bokstav eller tusenvis av disse i en telefonbok 623 00:31:20,230 --> 00:31:23,210 eller bilder eller filmer, på slutten av dagen, det handler 0 og 1-ere. 624 00:31:23,210 --> 00:31:26,640 Og jeg hevder at, selv om dette er en super enkel verden med bare 0-tallet 625 00:31:26,640 --> 00:31:28,240 og 1-tallet, kan vi bygge oss opp. 626 00:31:28,240 --> 00:31:32,210 Og vi har sett et eksempel på som med bokstaver så langt. 627 00:31:32,210 --> 00:31:35,615 >> Så la oss fokusere nå på denne midten ingrediens, en algoritme. 628 00:31:35,615 --> 00:31:38,190 Og la oss gå tilbake til denne eksempel på Mike Smith. 629 00:31:38,190 --> 00:31:41,689 Så i denne telefonlisten, som riktignok, Vi bruker ikke så mye lenger, 630 00:31:41,689 --> 00:31:42,980 det er et problem som må løses. 631 00:31:42,980 --> 00:31:45,040 Vi ønsker å finne noen som Mike Smith. 632 00:31:45,040 --> 00:31:47,520 >> Og hva kan jeg gjøre for å finne Mike? 633 00:31:47,520 --> 00:31:51,197 Vel, jeg kan bare åpne opp dette bok, starter på første side, 634 00:31:51,197 --> 00:31:52,780 og realisere, oh, jeg er i A-delen. 635 00:31:52,780 --> 00:31:53,510 Mike er ikke der. 636 00:31:53,510 --> 00:31:55,510 Jeg trenger S seksjon for Smith. 637 00:31:55,510 --> 00:31:58,192 Så bare holde snu en side av gangen. 638 00:31:58,192 --> 00:32:00,900 La meg late som om dette er alt hvite sider og ikke gule sider, 639 00:32:00,900 --> 00:32:02,910 fordi vi ikke kommer til å finne Mike i gule sider uansett. 640 00:32:02,910 --> 00:32:04,034 Men jeg er i den hvite sider. 641 00:32:04,034 --> 00:32:05,340 Og nå er jeg i B-delen. 642 00:32:05,340 --> 00:32:06,810 Jeg har fortsatt ikke funnet ham. 643 00:32:06,810 --> 00:32:08,890 Så jeg holde snu en side av gangen. 644 00:32:08,890 --> 00:32:10,130 >> Dette er en algoritme. 645 00:32:10,130 --> 00:32:12,440 Det er et sett med instruksjoner for å løse noen problem. 646 00:32:12,440 --> 00:32:16,480 Med andre ord, se side, hvis Mike er ikke på det, 647 00:32:16,480 --> 00:32:20,020 snu siden, og gjentar igjen og igjen og igjen, 648 00:32:20,020 --> 00:32:21,760 ideelt sett ser ned som du gjør det. 649 00:32:21,760 --> 00:32:24,120 Så er denne algoritmen, denne prosessen, riktig? 650 00:32:24,120 --> 00:32:27,400 651 00:32:27,400 --> 00:32:28,830 >> Beklager. 652 00:32:28,830 --> 00:32:30,056 Nei, jeg hører noen nos. 653 00:32:30,056 --> 00:32:33,250 654 00:32:33,250 --> 00:32:36,125 OK, men det er-- yeah, det er sikkert kjedelig. 655 00:32:36,125 --> 00:32:39,000 Like, vi vil være her hele dagen hvis jeg holde utkikk etter Mike på denne hastigheten. 656 00:32:39,000 --> 00:32:41,430 Men la meg hevder det er riktig. 657 00:32:41,430 --> 00:32:43,850 Det er dumt, men det er riktig. 658 00:32:43,850 --> 00:32:47,209 >> På slutten av dagen, lenge som det kanskje ta, jeg vil finne Mike hvis han er der inne 659 00:32:47,209 --> 00:32:48,250 og jeg betaler oppmerksomhet. 660 00:32:48,250 --> 00:32:50,230 Og jeg til slutt nå sin side. 661 00:32:50,230 --> 00:32:52,890 Og hvis jeg får for langt, hvis Jeg kommer til T seksjon, 662 00:32:52,890 --> 00:32:55,900 så jeg kan litt optimalisere og bare si, hm, alt gjort. 663 00:32:55,900 --> 00:32:57,980 Jeg trenger ikke engang å kaste bort gang kommer til Z-tallet. 664 00:32:57,980 --> 00:33:00,010 Men dette er en veldig lineær tilnærming, hvis du 665 00:33:00,010 --> 00:33:03,370 vil en meget slags venstre-til-høyre tilnærming, en rett linje. 666 00:33:03,370 --> 00:33:05,560 Og det er riktig, men treg. 667 00:33:05,560 --> 00:33:09,250 >> Så jeg husker fra barneskolen, liksom av en optimalisering fra en førsteklassing, 668 00:33:09,250 --> 00:33:13,756 hvor jeg lærte å telle ikke av de, men ved twos-- så 2, 4, 6. 669 00:33:13,756 --> 00:33:15,630 Det er A, mye vanskeligere å gjør, men i teorien, er det 670 00:33:15,630 --> 00:33:20,149 faster-- 8, 10, 12, 14, og så videre. 671 00:33:20,149 --> 00:33:21,190 Hva med at algoritmen? 672 00:33:21,190 --> 00:33:23,150 Er det mer effektivt? 673 00:33:23,150 --> 00:33:23,880 Er det raskere? 674 00:33:23,880 --> 00:33:25,365 >> PUBLIKUM: Den er effektiv. 675 00:33:25,365 --> 00:33:28,560 >> DAVID MALAN: Ja, så det er def-- det er bokstavelig talt dobbelt så raskt, forutsatt at jeg 676 00:33:28,560 --> 00:33:30,170 Ikke bli utløst opp med fingrene. 677 00:33:30,170 --> 00:33:32,294 Det er dobbelt så raskt, fordi Jeg slå gjennom to 678 00:33:32,294 --> 00:33:36,560 sider på en gang i stedet for en, men det er potensielt i riktig, fordi hvorfor? 679 00:33:36,560 --> 00:33:37,852 >> PUBLIKUM: Du hopper over noen. 680 00:33:37,852 --> 00:33:41,185 DAVID MALAN: Høyre, hva om Mike skjer skal sandwiched-- kanskje når jeg er senere 681 00:33:41,185 --> 00:33:44,370 i telefonboken, skjer Mike å være klemt mellom disse to sidene, 682 00:33:44,370 --> 00:33:46,720 og jeg bare blindt hoppe over det. 683 00:33:46,720 --> 00:33:48,490 Så vi trenger litt fix der. 684 00:33:48,490 --> 00:33:51,290 Når jeg treffer T seksjon, jeg kan ikke bare trygt si, 685 00:33:51,290 --> 00:33:52,420 Vi fant ikke Mike Smith. 686 00:33:52,420 --> 00:33:53,770 Jeg har sannsynligvis å doble tilbake. 687 00:33:53,770 --> 00:34:00,210 Eller faktisk, når jeg nå noen heter S-N, i stedet for S-M for Smith, 688 00:34:00,210 --> 00:34:02,790 umiddelbart, jeg kunne doble tilbake, fordi kanskje han 689 00:34:02,790 --> 00:34:03,900 var på forrige side. 690 00:34:03,900 --> 00:34:05,070 >> Men jeg trenger ikke å doble tilbake langt. 691 00:34:05,070 --> 00:34:08,030 I teorien, hvis jeg gjør det på riktig tid, jeg bare gå én side tilbake. 692 00:34:08,030 --> 00:34:10,139 Så det er å legge til bare ett ekstra trinn. 693 00:34:10,139 --> 00:34:13,070 Så jeg har gått dobbelt så fort, men det kostet meg en ekstra side. 694 00:34:13,070 --> 00:34:14,699 Men det føles som en nettogevinst. 695 00:34:14,699 --> 00:34:17,230 >> Men dette er ikke hvordan folk flest i dette rommet ville løse dette problemet. 696 00:34:17,230 --> 00:34:20,313 Hva ville en typisk person, kanskje en For noen år siden gjør, for å finne Mike Smith? 697 00:34:20,313 --> 00:34:22,900 698 00:34:22,900 --> 00:34:24,800 Ja, fant ikke Mike. 699 00:34:24,800 --> 00:34:27,190 Hva gjør jeg? 700 00:34:27,190 --> 00:34:31,027 Så får litt nærmere, men jeg gjør know-- hva som er sant om en telefonbok? 701 00:34:31,027 --> 00:34:32,110 PUBLIKUM: Det er sekvensiell. 702 00:34:32,110 --> 00:34:32,760 DAVID MALAN: Det er sekvensiell. 703 00:34:32,760 --> 00:34:33,750 Det er alfabetisk. 704 00:34:33,750 --> 00:34:36,540 Og så hvis jeg er i M-delen, Mike er klart til høyre, 705 00:34:36,540 --> 00:34:39,949 Jeg kan bokstavelig talt rive problemet i half-- 706 00:34:39,949 --> 00:34:44,360 det er vanligvis lettere enn at-- tåre problemet i to og kaste det bort, 707 00:34:44,360 --> 00:34:47,627 så nå har jeg et problem som er ikke lenger 1000 pages-- som var vanskelig, 708 00:34:47,627 --> 00:34:50,210 fordi jeg tror jeg faktisk tore telefonboken denne tid-- ikke 709 00:34:50,210 --> 00:34:52,219 1000 sider, men 500. 710 00:34:52,219 --> 00:34:54,750 >> Så problemet er bokstavelig talt halvparten så stor. 711 00:34:54,750 --> 00:34:58,170 Og det er ganske overbevisende, fordi med mine tidligere algoritmer, versjon 712 00:34:58,170 --> 00:35:02,870 1 og 2, ble jeg bare gjør problemet en side mindre, to sider mindre 713 00:35:02,870 --> 00:35:03,470 på en gang. 714 00:35:03,470 --> 00:35:07,230 Mens nå, jeg har gjort det 500 sider mindre alt på en gang. 715 00:35:07,230 --> 00:35:10,089 >> OK, så nå foreslår Karim at jeg går til høyre halvdel. 716 00:35:10,089 --> 00:35:12,380 Så jeg kommer til å gå rundt til midten, gi eller ta. 717 00:35:12,380 --> 00:35:15,185 Og hvis jeg gjorde dette matematisk, Jeg kunne gå rett til midten. 718 00:35:15,185 --> 00:35:17,060 Og nå skjønner jeg, oh, Jeg er i T seksjon. 719 00:35:17,060 --> 00:35:18,280 Jeg faktisk gikk for langt. 720 00:35:18,280 --> 00:35:21,670 >> Men jeg kan, igjen, rive problem i to, kaste den bort. 721 00:35:21,670 --> 00:35:23,330 Og mine bytes ikke så stor. 722 00:35:23,330 --> 00:35:28,780 Det er bare, hva, 256 sider eller 250 sider, gi eller ta akkurat nå. 723 00:35:28,780 --> 00:35:31,570 Men det er fortsatt mye mer enn en side eller to sider. 724 00:35:31,570 --> 00:35:33,345 >> Og så nå, jeg går omtrent til midten. 725 00:35:33,345 --> 00:35:35,330 Oh, det gjorde jeg ikke gå ganske langt nok nå. 726 00:35:35,330 --> 00:35:37,880 Så jeg gjentar, gjenta, gjenta, gjenta, til jeg er forhåpentligvis 727 00:35:37,880 --> 00:35:40,360 igjen med bare én side. 728 00:35:40,360 --> 00:35:44,000 >> Slik at inviterer spørsmålet, hvis jeg startet med omtrent 1000 sider, 729 00:35:44,000 --> 00:35:47,340 hvor mange skritt tok det meg med versjon 1 av min algoritme? 730 00:35:47,340 --> 00:35:50,420 Vel, hvis Mike er i S seksjon, i verste fall 731 00:35:50,420 --> 00:35:52,630 det er ganske nær slutten av alfabetet. 732 00:35:52,630 --> 00:35:56,559 Så hvis telefonboken har 1000 sider, Jeg skal finne Mike innen 1000 sider, 733 00:35:56,559 --> 00:35:57,100 gi eller ta. 734 00:35:57,100 --> 00:35:59,750 Kanskje det er som 800 eller så, men det er ganske nær til 1000. 735 00:35:59,750 --> 00:36:01,680 >> Mens, i den andre algoritme, hvor mange 736 00:36:01,680 --> 00:36:06,840 side viser maksimalt kanskje jeg trenger for å finne Mike Smith? 737 00:36:06,840 --> 00:36:09,970 Det er 1000 sider, men jeg er gjør dem to om gangen. 738 00:36:09,970 --> 00:36:13,045 Høyre, så max som 500ish, fordi hvis jeg går gjennom hele telefonboken, 739 00:36:13,045 --> 00:36:14,170 og da kan jeg stoppe. 740 00:36:14,170 --> 00:36:16,669 Men jeg kan barbere av noen av bare stopper på T seksjon. 741 00:36:16,669 --> 00:36:19,880 Men det er i verste fall 500 sider. 742 00:36:19,880 --> 00:36:24,710 >> Så hvor mange ganger kan jeg dele en 1,00o-side telefonboken i to igjen 743 00:36:24,710 --> 00:36:30,450 og igjen og igjen-- fra 1000 til 500 til 250-125? 744 00:36:30,450 --> 00:36:32,250 Hvor lenge før jeg traff en side? 745 00:36:32,250 --> 00:36:35,510 746 00:36:35,510 --> 00:36:36,370 Ja, det er ca 10. 747 00:36:36,370 --> 00:36:40,780 Avhengig av avrunding og slikt, er det 10 sider totalt behov for å bli slått 748 00:36:40,780 --> 00:36:43,290 eller telefonen bøker trenger å bli revet. 749 00:36:43,290 --> 00:36:44,710 >> Så det er ganske kraftig. 750 00:36:44,710 --> 00:36:48,170 Vi startet med en 1000-siders problem i alle tre av disse historiene. 751 00:36:48,170 --> 00:36:51,850 Men i den første algoritme, det tok meg, verste fall 1000 side 752 00:36:51,850 --> 00:36:52,740 blir å finne Mike. 753 00:36:52,740 --> 00:36:55,590 Second algoritme, 500 sider for å finne Mike. 754 00:36:55,590 --> 00:36:58,480 Tredje algoritme, 10 sider for å finne Mike. 755 00:36:58,480 --> 00:37:00,230 Og det er enda mer kraftig når du tror 756 00:37:00,230 --> 00:37:01,860 om liksom en motsatt scenario. 757 00:37:01,860 --> 00:37:05,680 Anta at telefonselskapet neste år kanskje fusjonerer to byene sammen, 758 00:37:05,680 --> 00:37:08,550 og telefonboken er plutselig denne tykke, i stedet for dette som, 759 00:37:08,550 --> 00:37:12,470 så 2000 sider i stedet for 1000. 760 00:37:12,470 --> 00:37:15,640 Vel, min første algoritme leter etter Mike Smith i en 2000-siders telefonboken, 761 00:37:15,640 --> 00:37:21,460 verre tilfelle, kommer det til å ta hvor mange side snur neste år? 762 00:37:21,460 --> 00:37:24,800 >> Telefonboken er 2000 sider, Slik: vel, ikke en til. 763 00:37:24,800 --> 00:37:29,540 Hvis telefonlisten er dobbelt så tykk i den første algoritmen, først algoritmen, 764 00:37:29,540 --> 00:37:30,380 2000, ikke sant? 765 00:37:30,380 --> 00:37:33,005 I verste fall er Mike virkelig lukke til slutten av boken, 766 00:37:33,005 --> 00:37:34,110 så det er 2000 side svinger. 767 00:37:34,110 --> 00:37:38,070 Second algoritmen går av toere, som 1000 sider. 768 00:37:38,070 --> 00:37:41,490 >> Men hva med i min tredje og nyeste algoritme? 769 00:37:41,490 --> 00:37:44,950 Hvis telefonen selskapet dobler antall sider fra 1000 til 2000, 770 00:37:44,950 --> 00:37:47,770 hvor mange ganger må jeg rive den boken i to for å finne Mike? 771 00:37:47,770 --> 00:37:48,710 >> PUBLIKUM: Bare ett. 772 00:37:48,710 --> 00:37:51,001 >> DAVID MALAN: Bare ett, fordi med en side tåre, 773 00:37:51,001 --> 00:37:53,270 Jeg kan bokstavelig talt dele og erobre, om du vil, 774 00:37:53,270 --> 00:37:57,410 det problemet i to taking en massiv bit av det. 775 00:37:57,410 --> 00:38:01,420 Og slik at dette er et eksempel på effektivitet og uten tvil en algoritme 776 00:38:01,420 --> 00:38:04,100 som alle av oss er slags intuitivt kjent. 777 00:38:04,100 --> 00:38:07,780 Men det er like riktig som min andre algoritmer 778 00:38:07,780 --> 00:38:09,630 med at tweak for den andre algoritme, 779 00:38:09,630 --> 00:38:11,290 men det er så mye mer effektiv. 780 00:38:11,290 --> 00:38:14,030 >> Og faktisk, hva en datamaskin vitenskapsmann, eller i sin tur en programmerer, 781 00:38:14,030 --> 00:38:17,580 ville vanligvis gjør når du skriver Koden er prøve å finne ut, 782 00:38:17,580 --> 00:38:19,960 all right, jeg ønsker ikke min program bare for å være korrekt, 783 00:38:19,960 --> 00:38:23,220 Jeg ønsker også at det skal være effektiv og løse problemer i tillegg. 784 00:38:23,220 --> 00:38:26,450 Forestill deg i den virkelige verden i dag, som Google indekserer, søk 785 00:38:26,450 --> 00:38:31,580 som milliarder av sider, tenk om de anvendes den første algoritme for å finne katter 786 00:38:31,580 --> 00:38:34,620 blant en milliard pages-- å se på den første siden i deres database, 787 00:38:34,620 --> 00:38:37,700 den andre, tredje, bare se for en katt, på jakt etter en katt. 788 00:38:37,700 --> 00:38:40,350 Det er ganske utrolig tregt det ville virke. 789 00:38:40,350 --> 00:38:43,170 De kan i stedet bruke noe kalles binær søk, som 790 00:38:43,170 --> 00:38:47,420 er ingen coincidence-- bi betyr to, vi fortsette å dele noe i to, i half-- 791 00:38:47,420 --> 00:38:50,205 de kunne bruke binære søk og kanskje finne katter enda raskere, 792 00:38:50,205 --> 00:38:51,830 eller hva det er du leter etter. 793 00:38:51,830 --> 00:38:54,125 >> Og ærlig talt, det er selv mer avansert algoritmer 794 00:38:54,125 --> 00:38:56,250 som gjør mye mer enn bare dele ting på halv 795 00:38:56,250 --> 00:38:58,180 for å finne informasjon raskt. 796 00:38:58,180 --> 00:39:00,880 Og vi skal snakke litt om de etter lunsj i dag. 797 00:39:00,880 --> 00:39:02,640 Så la meg bare prøve å representere dette. 798 00:39:02,640 --> 00:39:05,380 Vi trenger ikke å gå inn i noen matematikk eller faktiske tallene. 799 00:39:05,380 --> 00:39:07,070 Vi kan snakke om dette i det abstrakte. 800 00:39:07,070 --> 00:39:11,580 >> Men la meg bare foreslå, hvis du hadde en diskusjon nå 801 00:39:11,580 --> 00:39:13,491 med ingeniørene foreslår denne algoritmen 802 00:39:13,491 --> 00:39:15,490 og du prøver å gjøre en beregnet beslutning, 803 00:39:15,490 --> 00:39:17,285 fordi kanskje ingeniør sier til deg, 804 00:39:17,285 --> 00:39:19,910 Vet du hva, jeg kan gjennomføre en søk i som to minutter lineær. 805 00:39:19,910 --> 00:39:21,150 Det er så enkelt. 806 00:39:21,150 --> 00:39:24,790 Binary søk er ikke så fancy, men det kommer til å ta meg som 10 minutter, 807 00:39:24,790 --> 00:39:26,650 så 5 ganger så lenge. 808 00:39:26,650 --> 00:39:30,900 >> Det er en trade her, selv i form avgjøre hvilken programvare for å skrive. 809 00:39:30,900 --> 00:39:34,760 Skriver du det enklere algoritmen, som vil bare ta deg to minutter? 810 00:39:34,760 --> 00:39:39,880 Eller vil du bruke mer tid, 10 minutter, skriver mer avansert algoritme? 811 00:39:39,880 --> 00:39:43,540 Hvordan avgjør den slags spørsmål du? 812 00:39:43,540 --> 00:39:46,710 Eller du kan gjøre det litt mer ekte. 813 00:39:46,710 --> 00:39:50,610 Jeg forteller sjefen min det kommer til å ta meg enten en uke eller 10 uker 814 00:39:50,610 --> 00:39:52,490 å gjennomføre programvare på denne måten, hvordan 815 00:39:52,490 --> 00:39:56,103 du bestemme hvilke algoritme for å grønt lys? 816 00:39:56,103 --> 00:39:56,603 Karim? 817 00:39:56,603 --> 00:39:57,550 >> PUBLIKUM: Publikum, antar jeg. 818 00:39:57,550 --> 00:39:57,960 >> DAVID MALAN: Publikum. 819 00:39:57,960 --> 00:39:59,460 Hva mener du med publikum? 820 00:39:59,460 --> 00:40:03,460 >> PUBLIKUM: Hvis det kommer som skal brukes av brukere 821 00:40:03,460 --> 00:40:09,050 som [hørbar] av brukere [hørbar]. 822 00:40:09,050 --> 00:40:11,232 Men hvis det er noe du er bare gjør for deg selv 823 00:40:11,232 --> 00:40:13,946 å legge til rette et problem, [Hørbar] raskere. 824 00:40:13,946 --> 00:40:16,820 DAVID MALAN: Ja, det er raskt og skitne er en god måte å beskrive det. 825 00:40:16,820 --> 00:40:18,695 Faktisk, hvis du er beskriver mye av min tid 826 00:40:18,695 --> 00:40:23,630 i grad skolen, hvor ofte, Jeg skrev dårlig kode bevisst Slik: 827 00:40:23,630 --> 00:40:26,490 minst, det er hvordan jeg rasjonalisert it bevisst så, 828 00:40:26,490 --> 00:40:30,670 fordi selv om jeg var å skrive kode som var relativt treg til å utføre, 829 00:40:30,670 --> 00:40:33,750 Jeg var i stand til å skrive selve koden ganske fort, utgifter bare noen minutter 830 00:40:33,750 --> 00:40:35,107 eller timer ikke dager. 831 00:40:35,107 --> 00:40:37,190 Og det viste seg, jeg tidvis trengte å sove. 832 00:40:37,190 --> 00:40:41,270 Så selv om min kode som kreves 8 timer å kjøre, vel det er greit, 833 00:40:41,270 --> 00:40:42,850 Jeg vil bare gå i dvale mens den kjører. 834 00:40:42,850 --> 00:40:46,350 >> Så på den tiden, jeg trodde dette var veldig flink, selv om jeg tilsynelatende 835 00:40:46,350 --> 00:40:48,990 arbeidet gjennom min PhD veldig sakte. 836 00:40:48,990 --> 00:40:52,270 Men det motsatte av denne er at hvis jeg skulle skrive programvare 837 00:40:52,270 --> 00:40:55,930 for andre mennesker som betydde noe mer enn meg, vel, 838 00:40:55,930 --> 00:40:59,580 å ha dem vente 8 timer til få tilbake sine søkeresultater 839 00:40:59,580 --> 00:41:01,350 er ikke alle som overbevisende. 840 00:41:01,350 --> 00:41:04,090 Og så bruker mer tid opp foran til å skrive programvare 841 00:41:04,090 --> 00:41:07,300 som er mer effektive, mer som vår tredje algoritme, 842 00:41:07,300 --> 00:41:09,780 sannsynligvis fordeler brukerne over tid. 843 00:41:09,780 --> 00:41:12,710 Så det er egentlig avhengig løpet tid hvor disse kostnadene legge opp. 844 00:41:12,710 --> 00:41:14,960 Hvis du skal skrive programvare for å bruke det en gang, 845 00:41:14,960 --> 00:41:17,240 sannsynligvis kan like godt gjøre rask og skitne, som de sier. 846 00:41:17,240 --> 00:41:18,198 Bare kaste det sammen. 847 00:41:18,198 --> 00:41:20,560 Dette er kode som embarrasses du, det er så ille, 848 00:41:20,560 --> 00:41:23,860 men det får jobben gjort riktig, selv om det ikke er effektiv. 849 00:41:23,860 --> 00:41:27,200 Motsatt, bruker du mer tid på noe, får det akkurat. 850 00:41:27,200 --> 00:41:30,730 Og så avskrives over tid, at forhånd kostnaden for tiden 851 00:41:30,730 --> 00:41:34,330 er trolig verdt, hvis du holder optimalisere for den felles sak. 852 00:41:34,330 --> 00:41:37,620 >> Og ja, det er et tema i programmering, eller informatikk mer 853 00:41:37,620 --> 00:41:41,390 generelt, prøver å optimalisere ikke for uvanlig saken 854 00:41:41,390 --> 00:41:44,390 men felles case-- hva drift kommer til å skje igjen og igjen? 855 00:41:44,390 --> 00:41:47,730 Hvis du skal ha milliarder av brukere som søker på nettstedet ditt, 856 00:41:47,730 --> 00:41:52,030 du bør nok bruke de ekstra uker opp foran skrive bedre programvare, 857 00:41:52,030 --> 00:41:53,670 slik at alle brukerne nytte. 858 00:41:53,670 --> 00:41:57,840 Nå, la oss prøve å fange dette en lite bildemessig, men ikke så mye 859 00:41:57,840 --> 00:41:58,610 numerisk. 860 00:41:58,610 --> 00:42:01,680 >> Så her er bare en gammel skole diagram. 861 00:42:01,680 --> 00:42:04,260 Og la meg si at dette er tid. 862 00:42:04,260 --> 00:42:06,660 Og det spiller ingen rolle what-- faktisk, nei, ikke tid. 863 00:42:06,660 --> 00:42:08,320 La oss sette det på den andre aksen. 864 00:42:08,320 --> 00:42:15,700 La oss si at dette er tiden, og dette er størrelsen på problemet. 865 00:42:15,700 --> 00:42:17,830 >> Og en datamaskin vitenskapsmann kan vanligvis kaller 866 00:42:17,830 --> 00:42:20,820 dette bare n. n er som våre går til variable, hvor 867 00:42:20,820 --> 00:42:26,351 n er et tall, n antall, og det er den antall uansett innganger du har. 868 00:42:26,351 --> 00:42:28,100 Så i dette tilfellet er n antall sider. 869 00:42:28,100 --> 00:42:30,150 Så det kan være 1000 i tilfelle vi fortalt. 870 00:42:30,150 --> 00:42:31,969 >> Så tiden kan være noen måleenhet. 871 00:42:31,969 --> 00:42:32,760 Kanskje er det andre. 872 00:42:32,760 --> 00:42:33,410 Kanskje er det dager. 873 00:42:33,410 --> 00:42:34,590 Kanskje, det er som side svinger. 874 00:42:34,590 --> 00:42:35,215 Spiller ingen rolle. 875 00:42:35,215 --> 00:42:38,840 Uansett hva du vil telle i, at vil være tid eller koste tilsvarende. 876 00:42:38,840 --> 00:42:42,400 >> Så med det aller første algoritmen, hvis jeg, for eksempel, 877 00:42:42,400 --> 00:42:45,920 hadde en 1000-siders telefonboken, Jeg kommer til å trekke en prikk der, 878 00:42:45,920 --> 00:42:51,450 fordi hvis det er 1000 sider, tok det omtrent 1000 side svinger, gi eller ta. 879 00:42:51,450 --> 00:42:54,100 Og så hvis jeg hadde en 2000-siders telefonboken, 880 00:42:54,100 --> 00:42:57,200 og jeg kommer til å trekke en andre dot her, fordi for 2.000 sider, 881 00:42:57,200 --> 00:42:59,810 det er som 2000 sekunder eller siden snur eller hva. 882 00:42:59,810 --> 00:43:02,480 Og så når jeg sa tidligere, det er slag av en lineær sammenheng, 883 00:43:02,480 --> 00:43:06,020 det var bevisst, fordi jeg ønsket senere on-- rett now-- å trekke en linje. 884 00:43:06,020 --> 00:43:07,770 Det er litt av en rett linjen forholdet. 885 00:43:07,770 --> 00:43:10,180 Skråningen er 1/1, hvis du vil. 886 00:43:10,180 --> 00:43:14,630 >> I mellomtiden, den andre algoritmen sa, hvis du har 1000 sider 887 00:43:14,630 --> 00:43:17,680 og du brukte den andre algoritmen, hvor jeg regnet med 2-tallet, snu 888 00:43:17,680 --> 00:43:22,564 to sider om gangen, skal jeg trekke en prikk under eller over mitt opprinnelige dot? 889 00:43:22,564 --> 00:43:23,450 >> PUBLIKUM: Under. 890 00:43:23,450 --> 00:43:27,992 >> DAVID MALAN: Under, fordi som vi så, det tar kortere tid, halvparten så mye tid. 891 00:43:27,992 --> 00:43:29,950 Så dot bør være halvparten så høy som den andre. 892 00:43:29,950 --> 00:43:33,330 Og samme avtale over her, dette dot bør nok være omtrent der. 893 00:43:33,330 --> 00:43:39,666 Og så min andre algoritme, på samme måte, har et lineært forhold med tiden. 894 00:43:39,666 --> 00:43:41,990 Og vi kan trekke det som sådan. 895 00:43:41,990 --> 00:43:45,950 >> Så nå, den tredje og siste algoritmen er litt vanskeligere å trekke. 896 00:43:45,950 --> 00:43:49,530 Men intuitivt, hvis jeg har fått 1000 sider med min tredje algoritme, 897 00:43:49,530 --> 00:43:52,340 det skal bare ta meg som 10 trinn. 898 00:43:52,340 --> 00:43:57,500 Og hvis jeg har 2000 sider med min tredje algoritme, 899 00:43:57,500 --> 00:44:01,570 det skal ta meg ikke 10 trinn, men 11, bare en mer. 900 00:44:01,570 --> 00:44:03,610 Så vi bare knapt kommer til å se dette. 901 00:44:03,610 --> 00:44:06,010 >> Og det viser seg, hvis Jeg zoome inn på dette, jeg er 902 00:44:06,010 --> 00:44:09,320 kommer til å overdrive for effekt, formen av den linjen, til slutt, 903 00:44:09,320 --> 00:44:11,990 er ikke en rett line-- fordi, ja hvis den var, 904 00:44:11,990 --> 00:44:15,390 det ville se mer ut som others-- det er faktisk en buet linje 905 00:44:15,390 --> 00:44:19,265 at dersom vi zoomer inn, kommer å se mye mer som dette. 906 00:44:19,265 --> 00:44:21,670 It vel, OK, ignorere denne delen. 907 00:44:21,670 --> 00:44:25,330 Det var min penn går av vinkel. 908 00:44:25,330 --> 00:44:29,000 Det er en buet linje som alltid økende, alltid, alltid, alltid 909 00:44:29,000 --> 00:44:32,100 øker, men bare så vidt. 910 00:44:32,100 --> 00:44:36,260 >> Og så over tid, har du en forhold som er mer som dette. 911 00:44:36,260 --> 00:44:37,540 Det ser nesten rett. 912 00:44:37,540 --> 00:44:40,330 Men det er aldri så sakte økende. 913 00:44:40,330 --> 00:44:44,780 Men for nesten alle punkter langs din x-aksen, horisontal akse, 914 00:44:44,780 --> 00:44:46,550 det er lavere enn de andre linjene. 915 00:44:46,550 --> 00:44:49,930 >> Så dette kan være en sammenheng n, der hvis du har n sider, 916 00:44:49,930 --> 00:44:51,100 tar deg n sekunder. 917 00:44:51,100 --> 00:44:53,320 Dette kan være en sammenheng n / 2. 918 00:44:53,320 --> 00:44:56,710 Du har n sider, tar det du n / 2 sekunder, halvparten så mange. 919 00:44:56,710 --> 00:45:00,590 Og dette er en logaritmisk forhold, som 920 00:45:00,590 --> 00:45:08,920 hvis du husker, log base to av n fanger denne type vekst, så å si. 921 00:45:08,920 --> 00:45:12,000 Så dette er den slags hellig gral blant de tre av disse 922 00:45:12,000 --> 00:45:15,940 her, fordi det er bare så mye mer effektiv, men kanskje mer kompleks 923 00:45:15,940 --> 00:45:18,610 å implementere. 924 00:45:18,610 --> 00:45:20,510 Noen spørsmål? 925 00:45:20,510 --> 00:45:26,220 >> Vel la meg gjøre dette, la meg åpne opp et tekstvindu 926 00:45:26,220 --> 00:45:29,100 bare slik at vi kan prøve å formalisere noe her. 927 00:45:29,100 --> 00:45:32,410 Så la meg gå videre nå og implementere denne algoritmen 928 00:45:32,410 --> 00:45:35,170 for å finne Mike Smith i kode, om du vil, pseudokode. 929 00:45:35,170 --> 00:45:36,620 Jeg har ikke tenkt å bruke Java eller C ++. 930 00:45:36,620 --> 00:45:38,610 Jeg bare kommer til å bruke liksom Norsk-lignende syntaks, som vi 931 00:45:38,610 --> 00:45:40,151 vil vanligvis kaller pseudokode. 932 00:45:40,151 --> 00:45:41,660 Her har jeg et tomt vindu. 933 00:45:41,660 --> 00:45:48,180 Og jeg sier trinn 1 av de aller første algoritme er å plukke opp telefonboken. 934 00:45:48,180 --> 00:45:51,740 Trinn 2 er åpen bok til første side. 935 00:45:51,740 --> 00:45:58,080 Trinn 3 vil være ser på side for Mike Smith. 936 00:45:58,080 --> 00:46:02,740 Hvis på side, ringe Mike. 937 00:46:02,740 --> 00:46:11,640 annet turn siden og gå til trinn 3. 938 00:46:11,640 --> 00:46:13,590 Ferdig, la oss si. 939 00:46:13,590 --> 00:46:18,110 >> Og så det er ikke helt perfekt, som vi skal se i et øyeblikk. 940 00:46:18,110 --> 00:46:21,050 Men la oss vurdere hva konsepter Jeg har introdusert her. 941 00:46:21,050 --> 00:46:24,450 Så trinn 1 og 2 og 3 er ganske mye verb. 942 00:46:24,450 --> 00:46:26,544 De er uttalelser, actions-- gjøre dette. 943 00:46:26,544 --> 00:46:28,710 Og så i et programmerings språk, ville vi vanligvis 944 00:46:28,710 --> 00:46:32,349 kalle dem uttalelser eller funksjoner eller prosedyrer, 945 00:46:32,349 --> 00:46:33,640 kalle dem en rekke ting. 946 00:46:33,640 --> 00:46:35,460 Men de er bare actions-- gjøre dette. 947 00:46:35,460 --> 00:46:40,370 >> Trinn 4 er fundamentalt annerledes, fordi det er slags stille et spørsmål. 948 00:46:40,370 --> 00:46:42,400 Det sier vi er snill på en gaffel i veien. 949 00:46:42,400 --> 00:46:48,000 Hvis Mike er på siden, ring ham, så tar du til venstre, hvis du vil. 950 00:46:48,000 --> 00:46:52,170 Og hvis ikke, gå tilbake til noen andre page-- eller rettere sagt, beklager, 951 00:46:52,170 --> 00:46:56,650 gå tilbake til et annet trinn, som induserer en slags looping konstruksjon. 952 00:46:56,650 --> 00:46:59,530 Og vi gjør det igjen og igjen og igjen. 953 00:46:59,530 --> 00:47:01,300 >> Og faktisk, vet du hva? 954 00:47:01,300 --> 00:47:01,800 Yeah. 955 00:47:01,800 --> 00:47:04,704 956 00:47:04,704 --> 00:47:09,010 else if på slutten av boken stopp. 957 00:47:09,010 --> 00:47:11,624 Så vi trenger slag av en tredje tilstand, fordi du 958 00:47:11,624 --> 00:47:14,290 kan ikke holde snu siden annonsen nauseum, fordi til slutt, vil jeg 959 00:47:14,290 --> 00:47:15,320 treffer slutten av boken. 960 00:47:15,320 --> 00:47:18,546 Og en feil i et program kan være ikke forutse at scenario. 961 00:47:18,546 --> 00:47:21,420 Og da jeg innså, oh, vent et minutt, jeg trenger en tredje scenario. 962 00:47:21,420 --> 00:47:23,900 Hvis jeg er ute av sider, jeg bør egentlig bare slutte. 963 00:47:23,900 --> 00:47:25,330 Ellers er det udefinert. 964 00:47:25,330 --> 00:47:29,260 Hva kommer til å skje hvis jeg holder sier snu siden og gå tilbake, 965 00:47:29,260 --> 00:47:31,810 Dette er når datamaskiner fryse eller krasjer, når du treffer 966 00:47:31,810 --> 00:47:34,160 noen uventede situasjonen sånn. 967 00:47:34,160 --> 00:47:37,280 >> Nå, hva om Mike Smiths tredje algorithm-- 968 00:47:37,280 --> 00:47:43,150 plukke opp telefonboken, åpen bok å first-- til 969 00:47:43,150 --> 00:47:48,640 nei, ikke første side denne gangen, til middle-- oh, vel, det hadde 970 00:47:48,640 --> 00:47:49,640 være den andre algoritmen. 971 00:47:49,640 --> 00:47:50,590 La oss bare hoppe til den tredje. 972 00:47:50,590 --> 00:47:50,930 >> PUBLIKUM: Å, jeg beklager. 973 00:47:50,930 --> 00:47:51,971 >> DAVID MALAN: Det er greit. 974 00:47:51,971 --> 00:47:58,590 La oss bare hoppe til third-- åpen til midten og nå lete etter Mike Smith. 975 00:47:58,590 --> 00:48:02,300 hvis på side, ringe Mike. 976 00:48:02,300 --> 00:48:04,910 Og hva gjør vi ønsker å si her? 977 00:48:04,910 --> 00:48:06,134 ellers hva? 978 00:48:06,134 --> 00:48:10,620 979 00:48:10,620 --> 00:48:12,370 Vi kan uttrykke dette i en rekke måter. 980 00:48:12,370 --> 00:48:13,369 Det er ikke riktig svar. 981 00:48:13,369 --> 00:48:20,819 982 00:48:20,819 --> 00:48:23,735 OK, hvis ikke igjen, men vi må be-- OK, vi ønsker å dele i to, 983 00:48:23,735 --> 00:48:25,630 men gjør vi ønsker å gå til venstre eller gå rett? 984 00:48:25,630 --> 00:48:29,560 Hvordan uttrykker vi at begrepet? 985 00:48:29,560 --> 00:48:31,790 Vel, i Mike tilfelle, ja, det er rettferdig. 986 00:48:31,790 --> 00:48:35,050 Men OK, så det er faktisk et godt poeng. 987 00:48:35,050 --> 00:48:35,550 Det er greit. 988 00:48:35,550 --> 00:48:36,924 Vi vil holde det gående med denne logikken. 989 00:48:36,924 --> 00:48:38,182 Så-- 990 00:48:38,182 --> 00:48:39,810 >> PUBLIKUM: Mindre enn halvparten. 991 00:48:39,810 --> 00:48:40,560 DAVID MALAN: Ja. 992 00:48:40,560 --> 00:48:49,820 Så annet hvis siden er, vil vi si, mindre enn Smith, til venstre for Smith, 993 00:48:49,820 --> 00:48:52,220 then-- la oss se, er dette kommer til å komplisere? 994 00:48:52,220 --> 00:49:01,885 else if side kommer før Smith, rive i to, kaste bort som halvparten? 995 00:49:01,885 --> 00:49:05,643 996 00:49:05,643 --> 00:49:09,140 >> PUBLIKUM: Jeg trodde det var [hørbar]. 997 00:49:09,140 --> 00:49:11,650 >> DAVID MALAN: Jeg hører begge svarene. 998 00:49:11,650 --> 00:49:12,431 >> PUBLIKUM: Venstre. 999 00:49:12,431 --> 00:49:14,430 DAVID MALAN: OK, kaste bort igjen halvparten, som Lakisa 1000 00:49:14,430 --> 00:49:19,700 sa tidligere, venstre halvparten, så jeg slags 1001 00:49:19,700 --> 00:49:23,940 vil bare gå to-- jeg går til høyre. 1002 00:49:23,940 --> 00:49:27,380 Eller ekvivalent, og jeg gjorde en liten litt av et rot av begynnelsen her, 1003 00:49:27,380 --> 00:49:30,760 Jeg effektivt vil gå til trinn 2 igjen, 1004 00:49:30,760 --> 00:49:38,270 hvor åpen for middle-- eller open-- Ja, la oss bare si, sider til midten. 1005 00:49:38,270 --> 00:49:39,020 Og dette fikser det. 1006 00:49:39,020 --> 00:49:39,936 Det er ikke lenger en bok. 1007 00:49:39,936 --> 00:49:42,210 Det er bare halvparten av en bok, så åpne sider til midten. 1008 00:49:42,210 --> 00:49:44,010 >> else-- var nesten der. 1009 00:49:44,010 --> 00:49:54,000 Trinn 6, annet hvis side kommer etter Smith, rive i to, kaste høyre halvdel, 1010 00:49:54,000 --> 00:49:55,680 deretter går du til trinn 2. 1011 00:49:55,680 --> 00:49:58,920 1012 00:49:58,920 --> 00:50:05,230 ellers slutte, et fjerde scenario hvis vi har ingen sider igjen å snu. 1013 00:50:05,230 --> 00:50:06,394 Så vi kan rydde opp dette. 1014 00:50:06,394 --> 00:50:07,560 Og vi bør rydde opp dette. 1015 00:50:07,560 --> 00:50:10,656 Dette er veldig pseudokode, hvis du vil, svært høyt nivå beskrivelse. 1016 00:50:10,656 --> 00:50:12,280 Men det betyr vanligvis fange ideen. 1017 00:50:12,280 --> 00:50:16,040 >> Og, igjen, i dette scenariet, vi har den oppfatningen av en tilstand, 1018 00:50:16,040 --> 00:50:20,450 en gren, en gaffel i veien, noe som gjør en decision-- om dette, gå på denne måten, 1019 00:50:20,450 --> 00:50:23,082 else if, gå på denne måten, else if, gå den veien. 1020 00:50:23,082 --> 00:50:25,040 Og dette er en svært vanlig programmering teknikk 1021 00:50:25,040 --> 00:50:27,721 å bestemme hvilken retning å gå, så å si. 1022 00:50:27,721 --> 00:50:29,970 Og vi har også en slags av looping struktur, hvor 1023 00:50:29,970 --> 00:50:32,440 vi gjør noe igjen og igjen. 1024 00:50:32,440 --> 00:50:34,820 >> Nå viser det seg, mye som i dette eksemplet 1025 00:50:34,820 --> 00:50:37,660 å være super presis er viktig. 1026 00:50:37,660 --> 00:50:42,180 Men vi har også sett noe at vi holder ringer abstraksjon. 1027 00:50:42,180 --> 00:50:45,490 Hva betyr det å plukke opp telefonboken? 1028 00:50:45,490 --> 00:50:47,740 Vi er bare slags ta for gitt i dette rommet 1029 00:50:47,740 --> 00:50:49,340 at det har noen semantiske betydning. 1030 00:50:49,340 --> 00:50:51,740 Alle av oss bare slags vet, oh, vel, plukke opp telefonboken. 1031 00:50:51,740 --> 00:50:52,864 Hva betyr det egentlig? 1032 00:50:52,864 --> 00:50:59,060 Vel, som virkelig betyr utvide hånd, helle over, strekke fingrene, 1033 00:50:59,060 --> 00:51:03,890 klype bok mellom fingrene, stå opp, trekke hånden mot deg. 1034 00:51:03,890 --> 00:51:05,940 Og vi kan være veldig pedantisk om dette, 1035 00:51:05,940 --> 00:51:08,640 egentlig å være super presis om hva jeg gjør. 1036 00:51:08,640 --> 00:51:13,300 Men alle disse trinnene kollektivt er hva det betyr å plukke opp en telefonkatalog. 1037 00:51:13,300 --> 00:51:16,940 >> Og så tidligere, da jeg sa, hver av disse to første setningene 1038 00:51:16,940 --> 00:51:20,830 kan betraktes som en fortsette eller en funksjon, 1039 00:51:20,830 --> 00:51:24,090 egentlig det representerer hva vi holde ringer en abstraksjon. 1040 00:51:24,090 --> 00:51:28,770 Det er som et høyt nivå konseptuell beskrivelse av et problem som 1041 00:51:28,770 --> 00:51:31,110 faktisk innebærer ganske få skritt. 1042 00:51:31,110 --> 00:51:34,190 Og så dette, også er en tilbakevendende tema i programmering, 1043 00:51:34,190 --> 00:51:41,125 der jeg kan skrive et program bruker syntaks som dette-- 1044 00:51:41,125 --> 00:51:42,000 pick_up_phone_book (). 1045 00:51:42,000 --> 00:51:44,344 1046 00:51:44,344 --> 00:51:46,510 Og så syntaktisk, jeg kommer til å stjele noe 1047 00:51:46,510 --> 00:51:48,090 fra de fleste programmeringsspråk. 1048 00:51:48,090 --> 00:51:51,270 >> Nå, trinn 1 ser enda mer som en funksjon 1049 00:51:51,270 --> 00:51:53,160 som programmerer vil kalle det. 1050 00:51:53,160 --> 00:51:58,650 Det ser ut som kode som noen har gitt et navn til og gitt 1051 00:51:58,650 --> 00:52:03,300 for meg å bruke somehow-- i andre ord, hva linjen jeg har uthevet 1052 00:52:03,300 --> 00:52:07,050 representerer funksjonalitet som kanskje Jeg hadde ikke engang gjennomføre meg selv. 1053 00:52:07,050 --> 00:52:10,410 Noen eldre, klokere enn meg allerede funnet ut 1054 00:52:10,410 --> 00:52:12,700 hvordan du uttrykker oppfatningen for å plukke opp en telefonkatalog. 1055 00:52:12,700 --> 00:52:15,860 Og det er som de fem trinnene jeg bare ramset opp, på toppen av hodet mitt. 1056 00:52:15,860 --> 00:52:19,350 >> Men han eller hun allerede implementert dette, ga de flere trinn 1057 00:52:19,350 --> 00:52:22,339 et navn, pick_up_phone_book. 1058 00:52:22,339 --> 00:52:24,380 Og parentes er akkurat hva de fleste programmerere 1059 00:52:24,380 --> 00:52:27,100 gjøre på slutten av utsagn som dette. 1060 00:52:27,100 --> 00:52:30,190 Jeg nå kan stå på hans eller hennes skuldre og aldri igjen, 1061 00:52:30,190 --> 00:52:32,465 tenke på hva det betyr å plukke opp en telefonkatalog. 1062 00:52:32,465 --> 00:52:34,090 Jeg kan bare si, plukke opp telefonboken. 1063 00:52:34,090 --> 00:52:36,690 Og det er akkurat det alle av oss mennesker gjorde her. 1064 00:52:36,690 --> 00:52:38,940 >> Da vi var sannsynligvis en år gammel, 2 år gammel, 1065 00:52:38,940 --> 00:52:41,690 noen måtte lære oss hva det ment å plukke opp en telefonkatalog. 1066 00:52:41,690 --> 00:52:43,810 Og helt siden da, vi har abstrahert bort 1067 00:52:43,810 --> 00:52:46,739 fra de svært uinteressant mekaniske trinn. 1068 00:52:46,739 --> 00:52:48,530 Og vi har bare en intuitiv forståelse 1069 00:52:48,530 --> 00:52:50,480 av hva det vil si å plukke opp en telefonkatalog. 1070 00:52:50,480 --> 00:52:55,730 >> Og du kan ekstrapolere nå til mer kompliserte things-- 1071 00:52:55,730 --> 00:52:57,640 konstruere en bygning. 1072 00:52:57,640 --> 00:52:59,940 Som, for noen, som faktisk har betydning. 1073 00:52:59,940 --> 00:53:03,080 Til entreprenører, arkitekter, som har noen betydning. 1074 00:53:03,080 --> 00:53:06,400 Og de ville vite hva de skal gjøre, hvis Jeg sa, gå konstruere en bygning. 1075 00:53:06,400 --> 00:53:10,520 >> Men de fleste av oss i rommet kunne ikke avtale med det nivået av abstraksjon. 1076 00:53:10,520 --> 00:53:14,850 Du må fortelle oss like go få spade og gå får betongen 1077 00:53:14,850 --> 00:53:17,250 og spikre trestykker sammen og alt annet 1078 00:53:17,250 --> 00:53:18,830 er involvert i å bygge en bygning. 1079 00:53:18,830 --> 00:53:21,690 Og det er fordi vi ikke har ennå blitt programmert til å forstå 1080 00:53:21,690 --> 00:53:23,629 hva det betyr å konstruere en bygning. 1081 00:53:23,629 --> 00:53:24,920 Vi har ikke det abstraksjon. 1082 00:53:24,920 --> 00:53:26,570 Vi har ikke den funksjonaliteten. 1083 00:53:26,570 --> 00:53:29,930 >> Og så hva du vil se i programmeringsspråk, generelt, 1084 00:53:29,930 --> 00:53:34,570 spesielt mer moderne språk, som Java, PHP, Ruby, og Python, 1085 00:53:34,570 --> 00:53:37,610 de er mye mer moden enn eldre språk, 1086 00:53:37,610 --> 00:53:40,140 som C og C ++ og ennå andre. 1087 00:53:40,140 --> 00:53:42,580 Og så kommer de med mer funksjonalitet innebygd. 1088 00:53:42,580 --> 00:53:45,640 Mer koden er skrevet av mennesker i fortiden 1089 00:53:45,640 --> 00:53:50,520 at vi nå kan ringe eller innkalle eller bruker, som jeg antydet 1090 00:53:50,520 --> 00:53:52,231 på med dette uthevet linje her. 1091 00:53:52,231 --> 00:53:55,230 Og så selv om vi ikke snakker om programmeringsspråk per se, 1092 00:53:55,230 --> 00:54:00,230 bare pseudokode, alle av ideer er fortsatt i den diskusjonen. 1093 00:54:00,230 --> 00:54:04,600 Og det viser seg presisjon er super viktig, som er abstraksjon. 1094 00:54:04,600 --> 00:54:06,570 Og la oss prøve å kommunisere det som følger. 1095 00:54:06,570 --> 00:54:11,000 >> Jeg tilfeldigvis kan ha bortskjemt dette ved å blinke et lysbilde på skjermen 1096 00:54:11,000 --> 00:54:12,260 for tidlig. 1097 00:54:12,260 --> 00:54:16,550 Men la meg spørre om en modig frivillig, hvis du ikke tankene kommer opp. 1098 00:54:16,550 --> 00:54:19,040 Du vil være i front av kamera, hvis du er OK med det. 1099 00:54:19,040 --> 00:54:24,950 Vil noen liker å komme opp og gi instruksjoner til dine kolleger her? 1100 00:54:24,950 --> 00:54:29,540 Bare nødt til å komme over her og stå over her og si noen ord. 1101 00:54:29,540 --> 00:54:32,890 >> Victoria smiler mest og unngå øynene mine mest. 1102 00:54:32,890 --> 00:54:34,740 Ville du være villig til å komme på opp? 1103 00:54:34,740 --> 00:54:35,240 OK. 1104 00:54:35,240 --> 00:54:38,480 Og hvis alle andre på din seter kunne ta ut et stykke av skrap papir, 1105 00:54:38,480 --> 00:54:39,750 om du vil. 1106 00:54:39,750 --> 00:54:40,760 Foret papir er fine. 1107 00:54:40,760 --> 00:54:41,990 Kom rundt på denne måten. 1108 00:54:41,990 --> 00:54:44,580 Eller noen av papiret som du fikk i går, 1109 00:54:44,580 --> 00:54:46,493 bare noen blanke ark papir, hvis du kunne. 1110 00:54:46,493 --> 00:54:52,240 1111 00:54:52,240 --> 00:54:54,870 Og hvis du ikke har noen, bare spør naboen om du kunne. 1112 00:54:54,870 --> 00:55:04,220 1113 00:55:04,220 --> 00:55:07,580 >> Så for øyeblikket, for dette eksempelet, Victoria 1114 00:55:07,580 --> 00:55:11,520 kommer til å spille rollen som en programmerer, en ingeniør, som 1115 00:55:11,520 --> 00:55:16,130 trenger å programmere dere alle, som datamaskinene, for å gjøre noe. 1116 00:55:16,130 --> 00:55:19,570 Og vi får se hva forutsetninger du bestemmer deg for å gjøre. 1117 00:55:19,570 --> 00:55:22,700 Vi får se hvordan presis hun velger å være. 1118 00:55:22,700 --> 00:55:26,220 Og hvis denne demonstrasjonen går pedagogisk godt, massevis av feil 1119 00:55:26,220 --> 00:55:29,220 vil bli gjort, at vi vil da bruke det som en mulighet for diskusjon. 1120 00:55:29,220 --> 00:55:32,010 Men utfordringen for deg bør være å unngå disse feilene, 1121 00:55:32,010 --> 00:55:32,896 være en god programmerer. 1122 00:55:32,896 --> 00:55:35,520 Og så utfordringen for hånden, hvis ville du likt å gå over her, 1123 00:55:35,520 --> 00:55:38,799 er foran Victoria på skjermen her-- og forhåpentligvis ingen av dere 1124 00:55:38,799 --> 00:55:40,590 Husk dette når jeg blinket på skjermen. 1125 00:55:40,590 --> 00:55:44,097 Og ikke snu det hele tatt, fordi det er en annen skjerm i dette rommet 1126 00:55:44,097 --> 00:55:44,930 at jeg kan slå av. 1127 00:55:44,930 --> 00:55:46,620 Så ikke snu. 1128 00:55:46,620 --> 00:55:49,090 >> Foran Victoria er det samme skrik. 1129 00:55:49,090 --> 00:55:54,170 Og hennes jobb er nå å fortelle deg alt på din stykke papir hva du skal tegne. 1130 00:55:54,170 --> 00:55:57,020 Og vi vil se, basert på verbale instruksjoner alene, 1131 00:55:57,020 --> 00:56:00,020 datakode, om du vil, hvor nøyaktige tegninger 1132 00:56:00,020 --> 00:56:02,330 are-- dine implementeringer er. 1133 00:56:02,330 --> 00:56:02,980 Gir mening? 1134 00:56:02,980 --> 00:56:03,604 >> PUBLIKUM: Yeah. 1135 00:56:03,604 --> 00:56:04,980 DAVID MALAN: OK, utføre. 1136 00:56:04,980 --> 00:56:06,030 >> PUBLIKUM: Tegn en firkant. 1137 00:56:06,030 --> 00:56:09,050 >> [LATTER] 1138 00:56:09,050 --> 00:56:12,310 >> DAVID MALAN: Og nei spørsmål kan bli bedt om. 1139 00:56:12,310 --> 00:56:13,720 Kan bare gjøre det du får beskjed om. 1140 00:56:13,720 --> 00:56:17,570 1141 00:56:17,570 --> 00:56:22,550 Oh, og hvis du har dagens lysbilder åpne i en fane, ikke se på fanen. 1142 00:56:22,550 --> 00:56:23,670 OK? 1143 00:56:23,670 --> 00:56:26,135 >> PUBLIKUM: OK, tegne en sirkel. 1144 00:56:26,135 --> 00:56:32,544 1145 00:56:32,544 --> 00:56:34,872 En slope-- kan jeg si skråningen? 1146 00:56:34,872 --> 00:56:35,830 DAVID MALAN: Opp til deg. 1147 00:56:35,830 --> 00:56:38,230 1148 00:56:38,230 --> 00:56:38,980 PUBLIKUM: En skråning. 1149 00:56:38,980 --> 00:56:46,330 1150 00:56:46,330 --> 00:56:49,795 Og en trekant. 1151 00:56:49,795 --> 00:56:50,850 >> DAVID MALAN: Greit. 1152 00:56:50,850 --> 00:56:52,286 Og bo her for bare et øyeblikk. 1153 00:56:52,286 --> 00:56:56,046 1154 00:56:56,046 --> 00:56:58,910 Og jeg kommer til å komme rundt i bare et øyeblikk. 1155 00:56:58,910 --> 00:57:02,420 Og du trenger ikke å sette navn på det. 1156 00:57:02,420 --> 00:57:05,030 La meg komme rundt og samle dine tegninger, 1157 00:57:05,030 --> 00:57:08,330 hvis du ikke har noe imot å rive dem ut. 1158 00:57:08,330 --> 00:57:12,110 >> Her er hva vi fikk tilbake. 1159 00:57:12,110 --> 00:57:14,770 Jeg skal projisere det på skjermen. 1160 00:57:14,770 --> 00:57:18,310 Jeg ser et kvadrat, en sirkel, en skråning, og en trekant. 1161 00:57:18,310 --> 00:57:20,130 Så det var ett svar der. 1162 00:57:20,130 --> 00:57:23,640 Og let's-- Uff. 1163 00:57:23,640 --> 00:57:25,370 Takk skal du ha. 1164 00:57:25,370 --> 00:57:30,710 Her er en annen sortiment, og en bak den. 1165 00:57:30,710 --> 00:57:34,130 1166 00:57:34,130 --> 00:57:37,120 >> Så de alle synes å fange ånden. 1167 00:57:37,120 --> 00:57:38,600 Takk skal du ha. 1168 00:57:38,600 --> 00:57:44,970 Det er en annen, og her er en annen. 1169 00:57:44,970 --> 00:57:51,590 Skråningen tolkning er en litt annerledes, litt svingete. 1170 00:57:51,590 --> 00:57:57,140 Og den nærmeste, enten på grunn av fantastisk spesifisitet som du har 1171 00:57:57,140 --> 00:58:03,520 beskrevet, eller kanskje du slags så det før, er dette faktisk 1172 00:58:03,520 --> 00:58:06,340 hva Victoria var faktisk beskriver. 1173 00:58:06,340 --> 00:58:09,190 >> Men nå, de av dere som ikke får det helt rett, 1174 00:58:09,190 --> 00:58:11,140 La oss gi noen innvendinger her. 1175 00:58:11,140 --> 00:58:13,770 Så Victoria først sa tegne en firkant. 1176 00:58:13,770 --> 00:58:15,830 Og nå kan vi anta for å få til i dag 1177 00:58:15,830 --> 00:58:17,538 at alle vet hvordan å tegne en firkant. 1178 00:58:17,538 --> 00:58:20,590 Men det er ikke helt klart, ikke sant? 1179 00:58:20,590 --> 00:58:23,220 Hvordan ellers kunne du ha tegnet en firkant, eller hvor 1180 00:58:23,220 --> 00:58:27,114 kan være noen av de uklarheter her for datamaskinen? 1181 00:58:27,114 --> 00:58:28,280 PUBLIKUM: Beliggenhet og størrelse. 1182 00:58:28,280 --> 00:58:28,980 DAVID MALAN: Beliggenhet, ikke sant? 1183 00:58:28,980 --> 00:58:32,070 Alle dere hadde et papir av noen form, generelt rektangler, men litt 1184 00:58:32,070 --> 00:58:32,830 forskjellige størrelser. 1185 00:58:32,830 --> 00:58:36,250 Men du sikkert kunne ha trukket, Hvis du ville, en stor firkant, kanskje 1186 00:58:36,250 --> 00:58:37,220 en liten firkant. 1187 00:58:37,220 --> 00:58:38,417 Kanskje ble det roteres. 1188 00:58:38,417 --> 00:58:39,500 Jeg tror ikke vi så det. 1189 00:58:39,500 --> 00:58:41,790 Men det kunne ha vært mer diamant liker, men likevel, likevel, 1190 00:58:41,790 --> 00:58:42,900 Matematisk en firkant. 1191 00:58:42,900 --> 00:58:44,850 Så det var kanskje tvetydig. 1192 00:58:44,850 --> 00:58:46,709 >> Så sa hun, tegne en sirkel. 1193 00:58:46,709 --> 00:58:49,250 Noen av dere fikk tegne det ved siden av det, som er ikke urimelig, 1194 00:58:49,250 --> 00:58:52,450 fordi mennesker har en tendens til å tenke eller lese høyre til venstre på de fleste språk, så ikke 1195 00:58:52,450 --> 00:58:53,017 en dårlig gjetning. 1196 00:58:53,017 --> 00:58:55,100 Men den sirkelen kunne ha vært inne på torget, 1197 00:58:55,100 --> 00:58:57,600 kunne ha vært rundt torget, kunne ha vært et annet sted 1198 00:58:57,600 --> 00:58:59,480 på arket, så uten tvil tvetydig. 1199 00:58:59,480 --> 00:59:03,290 >> Slope kan ha vært kanskje tar de fleste friheter verbalt 1200 00:59:03,290 --> 00:59:04,200 med hva det betyr. 1201 00:59:04,200 --> 00:59:06,980 Og noen av dere tolket det som en snirklete linje 1202 00:59:06,980 --> 00:59:08,560 eller en rett linje eller lignende. 1203 00:59:08,560 --> 00:59:11,719 Og så trekant, også, kunne ha blitt orientert i en rekke måter. 1204 00:59:11,719 --> 00:59:14,760 Så kort sagt, selv med noe som du blikk og du er som wow, så 1205 00:59:14,760 --> 00:59:17,020 enkelt, et barn kunne tegne dette, vel ikke 1206 00:59:17,020 --> 00:59:19,640 egentlig, med mindre du er super, super overbevisende 1207 00:59:19,640 --> 00:59:22,045 og fortelle datamaskinen nøyaktig hva du skal gjøre. 1208 00:59:22,045 --> 00:59:24,420 Så hvis vi kunne, hvis du har et annet ark, la oss 1209 00:59:24,420 --> 00:59:26,710 prøve dette på nytt. 1210 00:59:26,710 --> 00:59:29,880 Og jeg kommer til å gi Victoria en annet eksempel på skjermen her. 1211 00:59:29,880 --> 00:59:34,060 Og igjen, ikke snu og ikke se på lysbildene. 1212 00:59:34,060 --> 00:59:37,304 Og jeg vil gi henne tid til å tenke på hvordan å beskrive dette. 1213 00:59:37,304 --> 00:59:39,012 Ikke la dem se frykten i øynene. 1214 00:59:39,012 --> 00:59:40,820 >> [LATTER] 1215 00:59:40,820 --> 00:59:43,710 >> Og igjen, denne gangen innflytelse noen av disse gatekjøkken 1216 00:59:43,710 --> 00:59:48,130 og prøve å få nesten alle i det minste det rette svaret. 1217 00:59:48,130 --> 00:59:52,260 >> PUBLIKUM: OK, ta en stykke papir, se 1218 00:59:52,260 --> 00:59:54,500 i midten av det stykke papir. 1219 00:59:54,500 --> 00:59:59,591 I midten av det stykke papir, tegne en kube. 1220 00:59:59,591 --> 01:00:01,244 >> [LATTER] 1221 01:00:01,244 --> 01:00:02,660 DAVID MALAN: Hva har vi lært? 1222 01:00:02,660 --> 01:00:03,540 Vi var så nær. 1223 01:00:03,540 --> 01:00:06,320 1224 01:00:06,320 --> 01:00:09,045 OK, gjenta hvis du kan, for alle. 1225 01:00:09,045 --> 01:00:13,210 >> PUBLIKUM: I midten av stykke papir, tegne et objekt, 1226 01:00:13,210 --> 01:00:14,842 som ser ut som en kube. 1227 01:00:14,842 --> 01:00:17,332 >> DAVID MALAN: OK, det er alt du kommer til å jobbe med. 1228 01:00:17,332 --> 01:00:20,010 1229 01:00:20,010 --> 01:00:23,080 Tillat meg å være analytisk og ikke så mye kritisk, 1230 01:00:23,080 --> 01:00:25,720 men for å gjøre kravet at Victoria definitivt 1231 01:00:25,720 --> 01:00:28,967 ser ut til å tenke i svært høyt nivå abstraksjoner, som 1232 01:00:28,967 --> 01:00:29,800 er ikke urimelig. 1233 01:00:29,800 --> 01:00:32,160 Fordi ellers ville vi alle være ganske dysfunksjonelle, 1234 01:00:32,160 --> 01:00:35,740 hvis vi måtte være aldri så presis med alt vi gjør i verden. 1235 01:00:35,740 --> 01:00:38,890 >> Men å si gå til middle-- jeg Trodde vi var på en så god track 1236 01:00:38,890 --> 01:00:42,340 der, som går til den midterste på siden, og deretter tegne en kube. 1237 01:00:42,340 --> 01:00:45,730 Så hun tenker på abstraksjoner, fordi hun er fremdeles visning 1238 01:00:45,730 --> 01:00:48,490 hva som skjer på skjermen som faktisk en kube. 1239 01:00:48,490 --> 01:00:51,185 Men det er så mange muligheter for tolkning der. 1240 01:00:51,185 --> 01:00:53,560 Og faktisk, det er så mange andre måter du kan uttrykke 1241 01:00:53,560 --> 01:00:55,101 det, som jeg vil foreslå i et øyeblikk. 1242 01:00:55,101 --> 01:00:59,770 Så her har vi en inkarnasjon av picture-- whoops-- en 1243 01:00:59,770 --> 01:01:02,830 inkarnasjon av bildet, slik at en lite tre dimensionality til det, 1244 01:01:02,830 --> 01:01:04,160 som er fint. 1245 01:01:04,160 --> 01:01:08,470 >> Her er en annen en, der du har samme, selv om det er litt av en åpen kube. 1246 01:01:08,470 --> 01:01:12,020 Noen folk tok det litt mer flat, todimensjonalt. 1247 01:01:12,020 --> 01:01:13,910 Og det er greit. 1248 01:01:13,910 --> 01:01:17,380 Så der, faktisk i midten av arket. 1249 01:01:17,380 --> 01:01:22,720 Dette tror jeg du vil som, fordi hvis vi går her, 1250 01:01:22,720 --> 01:01:25,130 Dette er hva hun beskriver. 1251 01:01:25,130 --> 01:01:29,570 Så nå, la meg foreslå hvordan ellers vi kan beskrive denne situasjonen. 1252 01:01:29,570 --> 01:01:34,070 >> Tilbake i dag en av de mest vanligste måtene å lære programmering 1253 01:01:34,070 --> 01:01:38,900 var å skrive kode, skriver linjer med instruksjoner, 1254 01:01:38,900 --> 01:01:42,640 som kontrollerte litt skilpadde på skjermen. 1255 01:01:42,640 --> 01:01:45,660 Logo og andre varianter av denne het av språket. 1256 01:01:45,660 --> 01:01:47,550 Og skilpadden levde i en verden. 1257 01:01:47,550 --> 01:01:49,970 >> Så antar at dette rektangulær plass er hans verden. 1258 01:01:49,970 --> 01:01:53,340 Og du vil starte med å assuming-- jeg vet egentlig ikke hvordan å tegne skilpadde, 1259 01:01:53,340 --> 01:01:54,740 så la oss gjøre det på denne måten. 1260 01:01:54,740 --> 01:01:57,340 Og så har han en skallet og så kanskje noen føtter. 1261 01:01:57,340 --> 01:01:59,840 Så du kan ha denne lille tegn på skjermen. 1262 01:01:59,840 --> 01:02:02,270 >> Og formålet med denne programmeringsspråk 1263 01:02:02,270 --> 01:02:06,070 var å tvinge skilpadden å gå opp, ned, venstre, høyre 1264 01:02:06,070 --> 01:02:08,420 og å sette pennen ned eller plukke hans penn opp, 1265 01:02:08,420 --> 01:02:12,720 så han kan faktisk tegne på skjermen i dette meget flat rektangulær verden. 1266 01:02:12,720 --> 01:02:16,850 Så hvor jeg tenkte at du kanskje kommer, og hvor du bør vurdere dykking 1267 01:02:16,850 --> 01:02:19,520 ned til mentalt når de beskriver instruksjoner mer generelt, 1268 01:02:19,520 --> 01:02:21,720 Jeg vil hevde, er satt inn pennen ned i middle-- 1269 01:02:21,720 --> 01:02:23,100 og vi vil bli kvitt den skilpadde, fordi jeg kan egentlig ikke 1270 01:02:23,100 --> 01:02:24,680 holde tegning ham veldig godt. 1271 01:02:24,680 --> 01:02:27,170 >> Og nå, hvordan ellers kunne Jeg sier tegne en kube? 1272 01:02:27,170 --> 01:02:32,830 Vel, vi kan si noe sånt som uavgjort en diagonal linje nordøst, for eksempel, 1273 01:02:32,830 --> 01:02:35,182 eller ved en 45-graders vinkel oppover. 1274 01:02:35,182 --> 01:02:36,640 Og som kanskje har fått meg her. 1275 01:02:36,640 --> 01:02:38,380 Og jeg er ganske langt fra en kube. 1276 01:02:38,380 --> 01:02:42,430 Men nå, jeg kunne si noe som slår 90 grader til venstre 1277 01:02:42,430 --> 01:02:47,370 og trekke en linje fra lik lengde nordvest. 1278 01:02:47,370 --> 01:02:49,470 Og jeg kunne fortsette med tilsvarende retninger. 1279 01:02:49,470 --> 01:02:50,720 Og det kommer ikke til å bli lett. 1280 01:02:50,720 --> 01:02:53,345 Og ærlig talt, vi sannsynligvis ville har vært her i fem minutter. 1281 01:02:53,345 --> 01:02:59,600 Men kanskje vi ville ha fått til noe som, ved slutten av dagen, 1282 01:02:59,600 --> 01:03:04,280 ender opp som en kube, men vi dykket innsiden av det abstraksjon 1283 01:03:04,280 --> 01:03:06,370 å gjøre det på en så lav nivå at du ikke kan egentlig 1284 01:03:06,370 --> 01:03:09,795 se hva du gjør før hele ting er faktisk det på siden. 1285 01:03:09,795 --> 01:03:12,670 Og så dette er et generelt prinsipp, igjen, av programming-- denne ideen 1286 01:03:12,670 --> 01:03:13,320 av abstraksjon. 1287 01:03:13,320 --> 01:03:15,920 Det er så fantastisk kraftig, fordi igjen, 1288 01:03:15,920 --> 01:03:19,281 hun sa, tegne en kube, som alle oss ganske mye ville Grok svært raskt. 1289 01:03:19,281 --> 01:03:21,030 Vi ville bare forstå, OK, tegne en kube. 1290 01:03:21,030 --> 01:03:24,030 Vi kan ikke vite retningen, slik at vi kunne være litt mer presis, 1291 01:03:24,030 --> 01:03:26,297 men vi kan generelt bilde eller vet hva en kube er. 1292 01:03:26,297 --> 01:03:28,130 Og det er nyttig, fordi hvis hver gang du 1293 01:03:28,130 --> 01:03:31,540 satte seg som programmerer på tastaturet for å skrive kode, 1294 01:03:31,540 --> 01:03:33,912 hvis du måtte tenke på slikt et lavt nivå, ingen av oss 1295 01:03:33,912 --> 01:03:35,120 noen gang ville få noe gjort. 1296 01:03:35,120 --> 01:03:38,259 Og sikkert, ingen av oss ville nyte prosessen med å skrive kode. 1297 01:03:38,259 --> 01:03:41,550 Det ville være som å skrive i 0-er og 1-ere, som ærlig var ikke så lenge siden 1298 01:03:41,550 --> 01:03:43,680 mennesker var å skrive kode i 0 og 1-ere. 1299 01:03:43,680 --> 01:03:46,960 Og vi svært raskt kom opp med disse høyere nivå languages-- 1300 01:03:46,960 --> 01:03:49,410 C ++ og Java og andre. 1301 01:03:49,410 --> 01:03:52,500 >> Så la oss prøve dette på nytt bare for å snu bordene, slik at alle av oss 1302 01:03:52,500 --> 01:03:55,450 har sjansen til å tenke i stedet for på samme måte. 1303 01:03:55,450 --> 01:03:59,230 Kan vi få en mer frivillig dette tid til å komme opp til tavlen og tegne, 1304 01:03:59,230 --> 01:04:01,480 ikke resitere? 1305 01:04:01,480 --> 01:04:02,070 Ja, OK. 1306 01:04:02,070 --> 01:04:04,820 Ben, kom opp. 1307 01:04:04,820 --> 01:04:08,510 Og Ben, i dette tilfellet, når du møte i styret, ikke se til venstre, 1308 01:04:08,510 --> 01:04:09,370 ser ikke riktig. 1309 01:04:09,370 --> 01:04:12,367 Bare gjøre hva din kolleger her fortelle deg. 1310 01:04:12,367 --> 01:04:14,950 Og for alle andre i rom, du nå er programmerer. 1311 01:04:14,950 --> 01:04:16,020 Han er datamaskinen. 1312 01:04:16,020 --> 01:04:21,395 Og bildet jeg har valgt her på forhånd er denne her. 1313 01:04:21,395 --> 01:04:24,490 1314 01:04:24,490 --> 01:04:27,660 De er just-- de tenker av en morsom spøk er alt. 1315 01:04:27,660 --> 01:04:31,510 >> Så ville ikke noen å frivillig første instruksjon 1316 01:04:31,510 --> 01:04:35,470 eller uttalelse som bør kommando Ben penn? 1317 01:04:35,470 --> 01:04:40,850 Og vi vil gjøre dette kollektivt, kanskje en instruksjon fra hver person. 1318 01:04:40,850 --> 01:04:41,440 Unnskyld? 1319 01:04:41,440 --> 01:04:42,440 >> PUBLIKUM: Tegn en sirkel. 1320 01:04:42,440 --> 01:04:45,866 DAVID MALAN: Tegn en sirkel er den første jeg har hørt. 1321 01:04:45,866 --> 01:04:47,100 >> PUBLIKUM: Up toppen. 1322 01:04:47,100 --> 01:04:48,140 >> DAVID MALAN: Opp toppen. 1323 01:04:48,140 --> 01:04:52,504 OK, vi kan la deg slette, angre. 1324 01:04:52,504 --> 01:04:53,420 Og nå, noen andre. 1325 01:04:53,420 --> 01:04:55,994 Dan, du ville være komfortabel tilbyr den neste instruksjon? 1326 01:04:55,994 --> 01:05:02,070 >> PUBLIKUM: Jada, tegne sentrum av bunnen av sirkelen 1327 01:05:02,070 --> 01:05:07,121 med en small-- litt liten plass fra det, 1328 01:05:07,121 --> 01:05:15,420 tegne en rett linje ned til tre fjerdedeler av veien ned brettet 1329 01:05:15,420 --> 01:05:17,845 en liten vinkel til venstre. 1330 01:05:17,845 --> 01:05:21,250 1331 01:05:21,250 --> 01:05:22,620 >> DAVID MALAN: Good. 1332 01:05:22,620 --> 01:05:24,086 >> PUBLIKUM: Svakt vinkel. 1333 01:05:24,086 --> 01:05:32,807 >> DAVID MALAN: Angre, Ctrl-Z. OK. 1334 01:05:32,807 --> 01:05:34,890 Andrew, ønsker du å tilby opp neste instruksjon? 1335 01:05:34,890 --> 01:05:35,515 >> PUBLIKUM: Sure. 1336 01:05:35,515 --> 01:05:43,250 Fra bunnen av den linjen, en ytterligere liten angle-- 1337 01:05:43,250 --> 01:05:49,024 whoops-- kanskje omtrent en tredjedel av lengden [hørbar] 1338 01:05:49,024 --> 01:05:52,928 litt på skrå nedover og som en tredjedel av lengden av [ikke hørbar]. 1339 01:05:52,928 --> 01:05:57,550 1340 01:05:57,550 --> 01:06:00,578 Så ja, fra det punktet, tegne en linje en tredje 1341 01:06:00,578 --> 01:06:04,150 av lengden av det foregå linje ytterligere mot venstre. 1342 01:06:04,150 --> 01:06:08,416 1343 01:06:08,416 --> 01:06:10,040 >> DAVID MALAN: At OK? 1344 01:06:10,040 --> 01:06:12,330 Rett linje, det er OK? 1345 01:06:12,330 --> 01:06:14,900 OK, Olivier, vil du å tilby opp neste? 1346 01:06:14,900 --> 01:06:28,564 >> PUBLIKUM: [uhørlig] fra bunnen av sirkelen, [hørbar]. 1347 01:06:28,564 --> 01:06:32,000 1348 01:06:32,000 --> 01:06:45,126 Tegn på høyre side av [hørbar] centimeter. 1349 01:06:45,126 --> 01:06:46,560 >> [LATTER] 1350 01:06:46,560 --> 01:06:49,872 >> DAVID MALAN: Jeg tror du kommer til å må konvertere det er inches her. 1351 01:06:49,872 --> 01:06:50,764 >> PUBLIKUM: Stopp. 1352 01:06:50,764 --> 01:06:52,186 >> [LATTER] 1353 01:06:52,186 --> 01:06:54,570 >> DAVID MALAN: OK. 1354 01:06:54,570 --> 01:06:56,660 [? Ara,?] Du vil å tilby opp neste? 1355 01:06:56,660 --> 01:07:00,653 1356 01:07:00,653 --> 01:07:15,443 >> PUBLIKUM: Tegn en [uhørbart] den øvre [hørbar] det samme. 1357 01:07:15,443 --> 01:07:28,829 [Hørbar] sirkel, trekke til [Hørbar] og trekke [hørbar]. 1358 01:07:28,829 --> 01:07:33,799 1359 01:07:33,799 --> 01:07:36,730 >> DAVID MALAN: OK, ikke mer angre. 1360 01:07:36,730 --> 01:07:38,390 La oss gjøre en eller to flere instruksjoner. 1361 01:07:38,390 --> 01:07:40,825 Chris, ønsker du å tilby en? 1362 01:07:40,825 --> 01:07:46,182 >> PUBLIKUM: Nederst av sirkelen, [hørbar] 1363 01:07:46,182 --> 01:07:51,528 tegne en lik linje skrått nedover til venstre [hørbar]. 1364 01:07:51,528 --> 01:07:59,304 1365 01:07:59,304 --> 01:08:00,590 >> DAVID MALAN: OK. 1366 01:08:00,590 --> 01:08:01,170 Andrew? 1367 01:08:01,170 --> 01:08:02,472 Vi did-- Karim? 1368 01:08:02,472 --> 01:08:06,891 1369 01:08:06,891 --> 01:08:13,765 >> PUBLIKUM: Fra høyre linje, enden av den venstre linje, den nederste, 1370 01:08:13,765 --> 01:08:21,012 du kommer til å gå rett om den samme lengde som linjen 1371 01:08:21,012 --> 01:08:27,680 du er på, og trekker til rett [hørbar]. 1372 01:08:27,680 --> 01:08:33,572 1373 01:08:33,572 --> 01:08:37,991 [Hørbar] grader, så [hørbar] grader på høyre side. 1374 01:08:37,991 --> 01:08:41,919 1375 01:08:41,919 --> 01:08:43,500 >> DAVID MALAN: Greit. 1376 01:08:43,500 --> 01:08:44,029 La oss ta en pause. 1377 01:08:44,029 --> 01:08:44,950 Ikke snu ennå. 1378 01:08:44,950 --> 01:08:46,783 La oss ta en pause, og la oss prøve en annen forsøk 1379 01:08:46,783 --> 01:08:48,850 før vi avslører Ben hva han har å tegne. 1380 01:08:48,850 --> 01:08:51,189 Kan du shuffle Ben til den right-- eller faktisk, 1381 01:08:51,189 --> 01:08:54,080 Nei, la oss bare gi deg et annet bord, enda bedre. 1382 01:08:54,080 --> 01:08:57,640 Så vil noen nå liker for å ta mer av tilnærmingen 1383 01:08:57,640 --> 01:09:02,149 at Victoria tok tidligere, hvor vi snakker i et høyere nivå abstraksjon 1384 01:09:02,149 --> 01:09:05,149 og i bare en setning eller to beskrive for Ben 1385 01:09:05,149 --> 01:09:07,229 hva du skal tegne uten komme inn i ugress, 1386 01:09:07,229 --> 01:09:10,670 så å si, ved dette et lavere nivå? 1387 01:09:10,670 --> 01:09:11,206 Victoria. 1388 01:09:11,206 --> 01:09:11,706 [LATTER] 1389 01:09:11,706 --> 01:09:14,249 PUBLIKUM: Tegn en figur av gang mannen. 1390 01:09:14,249 --> 01:09:18,866 Og hans ben og armer må være på høyre side. 1391 01:09:18,866 --> 01:09:20,505 >> DAVID MALAN: OK, det er alt du får. 1392 01:09:20,505 --> 01:09:27,210 1393 01:09:27,210 --> 01:09:27,710 Greit. 1394 01:09:27,710 --> 01:09:31,609 Hvorfor gjør vi ikke avsløre for Ben hva han gjorde. 1395 01:09:31,609 --> 01:09:32,890 Så en runde med applaus. 1396 01:09:32,890 --> 01:09:35,700 Det var den vanskeligste kanskje. 1397 01:09:35,700 --> 01:09:37,931 >> Så selv om vi snakker i ganske dum når det gjelder 1398 01:09:37,931 --> 01:09:39,680 om bare tegning bilder, forhåpentligvis 1399 01:09:39,680 --> 01:09:44,226 kan virkelig sette pris på graden av ekspressivitet som kan være nødvendig 1400 01:09:44,226 --> 01:09:45,850 for å fortelle en datamaskin hva de skal gjøre. 1401 01:09:45,850 --> 01:09:50,370 Og faktisk det faktum at Ben var i stand til å trekke dette så raskt 1402 01:09:50,370 --> 01:09:54,227 er liksom testament til å bruke en språk, kanskje et høyere nivå 1403 01:09:54,227 --> 01:09:57,060 versjon av engelsk, som lar ham å bare bruke ord, eller hører ord 1404 01:09:57,060 --> 01:09:59,990 fra Victoria, som tillater ham disse abstractions-- bare trekke 1405 01:09:59,990 --> 01:10:03,020 en figur som går til right-- den slags har 1406 01:10:03,020 --> 01:10:07,100 noen semantiske mening til det som ikke er nesten like opplagt når du er bare 1407 01:10:07,100 --> 01:10:10,310 sier, sette pennen ned, tegne til høyre, trekke til venstre. 1408 01:10:10,310 --> 01:10:12,420 >> Og så dette, også er veldig vanlig innen programmering. 1409 01:10:12,420 --> 01:10:15,253 Dette vil kunne sies å være som en meget lavt nivå språk, programmering 1410 01:10:15,253 --> 01:10:16,730 i 0-er og 1-ere om du vil. 1411 01:10:16,730 --> 01:10:19,320 Og dette vil være et høyere nivå språk programmering i Java, 1412 01:10:19,320 --> 01:10:20,278 eller noe sånt. 1413 01:10:20,278 --> 01:10:22,050 En bit av en forenkling, er men at 1414 01:10:22,050 --> 01:10:24,310 det liksom som emosjonell følelsen av at du føler når 1415 01:10:24,310 --> 01:10:26,630 ved hjelp av en slags ting eller en annen. 1416 01:10:26,630 --> 01:10:32,650 En bit av frustrasjon her ved behov for en slik presisjon, men sjansen 1417 01:10:32,650 --> 01:10:34,930 å være litt løsere med tolkningen her. 1418 01:10:34,930 --> 01:10:38,060 Men selvfølgelig, bugs kan oppstå som et resultat. 1419 01:10:38,060 --> 01:10:40,500 >> Hvis du ønsker at home-- vi vil ikke gjøre dette i class-- 1420 01:10:40,500 --> 01:10:41,900 men hvis du ønsker å bringe kampen, 1421 01:10:41,900 --> 01:10:43,387 Jeg trodde vi skulle dykke inn i dette. 1422 01:10:43,387 --> 01:10:45,970 Så hvis du har lyst til å spille dette spill med betydelige andre 1423 01:10:45,970 --> 01:10:49,180 eller barn eller lignende, du kan nyte det også. 1424 01:10:49,180 --> 01:10:54,460 >> Så la oss gå videre og se på en siste ting her for beregningsorientert tenkning. 1425 01:10:54,460 --> 01:10:57,010 Og det bringer oss til John Oliver, ikke for klippet 1426 01:10:57,010 --> 01:11:00,070 du kanskje har sett i går kveld, men til en noe fersk utgave. 1427 01:11:00,070 --> 01:11:03,310 For noen måneder tilbake, Volkswagen tok seg en bit av antiluftskyts 1428 01:11:03,310 --> 01:11:05,651 for hvilken grunn, hvis du vet? 1429 01:11:05,651 --> 01:11:07,025 Hva fikk de i trøbbel for? 1430 01:11:07,025 --> 01:11:10,270 1431 01:11:10,270 --> 01:11:14,030 >> Ja, så emissions-- de prøvde å slå utslipp 1432 01:11:14,030 --> 01:11:19,100 tester av i hovedsak ha sin biler forurenser miljøet mindre 1433 01:11:19,100 --> 01:11:23,620 når deres biler ble testet og forurenser miljøet mer 1434 01:11:23,620 --> 01:11:25,547 når bilene ikke ble testet. 1435 01:11:25,547 --> 01:11:28,630 Og hva er mer interessant i verden, som du kanskje har inferred 1436 01:11:28,630 --> 01:11:34,072 fra diskusjoner om like-- hva er it CarPlay, Apples programvare for biler 1437 01:11:34,072 --> 01:11:35,780 og det faktum at mange av oss stadig 1438 01:11:35,780 --> 01:11:38,390 har touch-skjermer i våre biler, det er en skremmende mengde 1439 01:11:38,390 --> 01:11:41,250 av programvare i folks biler i dag, noe som 1440 01:11:41,250 --> 01:11:45,650 ærlig åpner en hel boks med ormer når det kommer til sikkerhet og fysisk risiko. 1441 01:11:45,650 --> 01:11:48,070 Men for i dag, la oss fokusere på akkurat hva som er 1442 01:11:48,070 --> 01:11:52,170 involvert i skriving som kanskje har gamed systemet. 1443 01:11:52,170 --> 01:11:54,510 >> For definisjonen av problem, for dem ukjent, 1444 01:11:54,510 --> 01:11:55,740 la oss ta en titt på John Oliver. 1445 01:11:55,740 --> 01:11:58,115 Og for de som er kjent med problemet, la oss se på det 1446 01:11:58,115 --> 01:12:00,480 på en morsom linse via John Oliver også. 1447 01:12:00,480 --> 01:12:05,810 Så la meg trykke play på dette, jeg tror, ​​tre minutters introduksjon. 1448 01:12:05,810 --> 01:12:07,074 Pokker. 1449 01:12:07,074 --> 01:12:07,740 [VIDEO PLAYBACK] 1450 01:12:07,740 --> 01:12:08,170 -Biler-- 1451 01:12:08,170 --> 01:12:09,919 DAVID MALAN: Selvfølgelig, på YouTube, it's-- 1452 01:12:09,919 --> 01:12:12,500 - --Rommet smarteste karakterene i Fast and Furious filmene. 1453 01:12:12,500 --> 01:12:16,080 Denne uken, tyske bilprodusenten Volkswagen funnet seg selv 1454 01:12:16,080 --> 01:12:19,430 midt i en skandale av potensielt kriminelle proporsjoner. 1455 01:12:19,430 --> 01:12:23,020 >> -Volkswagen Er oppkvikkende for milliarder i bøter, mulige kriminelle anklager 1456 01:12:23,020 --> 01:12:25,530 for sine ledere, som Selskapet beklager 1457 01:12:25,530 --> 01:12:28,790 for rigging 11 millioner biler til hjelpe det slå utslippstester. 1458 01:12:28,790 --> 01:12:32,110 >> -Certain Diesel modeller ble utformet med avansert programvare som 1459 01:12:32,110 --> 01:12:35,410 brukt informasjon, inkludert posisjon av rattet og kjøretøy 1460 01:12:35,410 --> 01:12:38,820 hastighet, for å bestemme bil var omgår utslipp testing. 1461 01:12:38,820 --> 01:12:42,620 Under dette forholdet, motoren vil redusere giftige utslipp. 1462 01:12:42,620 --> 01:12:46,040 Men bilen ble rigget til bypass at når det ble kjørt. 1463 01:12:46,040 --> 01:12:51,370 Utslippene økte 10-40 ganger over akseptable EPA nivåer. 1464 01:12:51,370 --> 01:12:55,920 >> -WOW, 10 til 40 ganger større enn EPA tillater. 1465 01:12:55,920 --> 01:12:59,570 Det er det verste Volkswagen har noensinne gjort, 1466 01:12:59,570 --> 01:13:04,200 er noe du kan si om du hadde aldri hørt om andre verdenskrig. 1467 01:13:04,200 --> 01:13:09,710 Men kanskje den sikreste tegn på hvor mye trøbbel Volkswagen er i, 1468 01:13:09,710 --> 01:13:12,730 er at folk på svært Toppen har trappet ned. 1469 01:13:12,730 --> 01:13:16,320 Administrerende direktør trakk seg onsdag etter desperat å gjøre skade kontroll, 1470 01:13:16,320 --> 01:13:20,380 sa han var uendelige beklager, som hørtes bra før det viste seg 1471 01:13:20,380 --> 01:13:22,920 Han var bare 10% beklager men hadde rigget munnen 1472 01:13:22,920 --> 01:13:25,600 å kunstig blåse hans sorriness. 1473 01:13:25,600 --> 01:13:29,700 Og i mellomtiden, Volkswagen USA sjef hadde en unnskyldning for sin egen. 1474 01:13:29,700 --> 01:13:33,580 >> -La Oss være klart om dette, vårt selskap var uærlig. 1475 01:13:33,580 --> 01:13:37,140 Og i mine tyske ord, vi har helt ødelagt. 1476 01:13:37,140 --> 01:13:41,360 >> -Ja, Men helt ødelagt opp er ikke tyske verk. 1477 01:13:41,360 --> 01:13:43,750 Og det tyske språket har mange vakre setninger 1478 01:13:43,750 --> 01:13:50,070 å beskrive situasjoner akkurat som denne, for eksempel [GERMAN], noe som betyr at omtrent, 1479 01:13:50,070 --> 01:13:52,870 sorgen som kommer fra forretningsrelaterte løgner, 1480 01:13:52,870 --> 01:13:59,060 eller [TYSK], som kan oversettes som skjemmer seg far involverer 1481 01:13:59,060 --> 01:14:00,352 skyer av bensin. 1482 01:14:00,352 --> 01:14:02,060 Det er et vakkert språk. 1483 01:14:02,060 --> 01:14:04,660 Det seiler like ved tungen. 1484 01:14:04,660 --> 01:14:07,920 Og forresten, mens den mannens unnskyldning kan ha hørtes oppriktig, 1485 01:14:07,920 --> 01:14:12,260 det er verdt å merke seg at han talte på en offisiell lanseringsfesten for 2016 1486 01:14:12,260 --> 01:14:17,310 Volkswagen Passat, noe som betyr at om kort tid etter å si beklager, sa han dette. 1487 01:14:17,310 --> 01:14:18,850 >> -Takk Veldig mye for å komme. 1488 01:14:18,850 --> 01:14:19,630 Nyt kvelden. 1489 01:14:19,630 --> 01:14:21,300 Opp neste er Lenny Kravitz. 1490 01:14:21,300 --> 01:14:24,640 >> [MUSIKK] 1491 01:14:24,640 --> 01:14:28,230 >> -OK, OK, slutter din unnskyldning med opp neste 1492 01:14:28,230 --> 01:14:31,940 Lenny Kravitz ikke skrike edru anger. 1493 01:14:31,940 --> 01:14:35,830 Det skriker, vi spurte Bon Jovi, og han sa nei. 1494 01:14:35,830 --> 01:14:38,600 Volkswagen merkevare har blitt alvorlig skadet. 1495 01:14:38,600 --> 01:14:42,466 Og ærlig, deres ny annonse Kampanjen er ikke akkurat hjelper. 1496 01:14:42,466 --> 01:14:47,289 >> - [TYSK], ville vi på Volkswagen liker å be om unnskyldning for å lure deg med 1497 01:14:47,289 --> 01:14:47,930 våre biler. 1498 01:14:47,930 --> 01:14:48,513 >> [END PLAYBACK] 1499 01:14:48,513 --> 01:14:54,090 DAVID MALAN: Så dette var en rundkjøring måte of-- sorry-- 1500 01:14:54,090 --> 01:14:58,730 dette var en rundkjøring måte innføre et grunnleggende problem 1501 01:14:58,730 --> 01:15:02,810 i programvare, som er at du behov for å detektere visse betingelser. 1502 01:15:02,810 --> 01:15:07,680 Og så er spørsmålet for hånden her er, hvordan en bil potensielt, 1503 01:15:07,680 --> 01:15:09,870 som implementert i software av disse programmerere, 1504 01:15:09,870 --> 01:15:11,850 oppdage at det faktisk blir testet? 1505 01:15:11,850 --> 01:15:14,150 Så for å være super klar, hva de gjorde 1506 01:15:14,150 --> 01:15:17,940 var, i miljøer der programmerere skjønte 1507 01:15:17,940 --> 01:15:20,460 bilen var å være testet, de liksom gjort 1508 01:15:20,460 --> 01:15:24,840 bilen slipper ut mindre utslipp, mindre utslipp, slik at mindre giftig røyk 1509 01:15:24,840 --> 01:15:25,470 og lignende. 1510 01:15:25,470 --> 01:15:27,261 Men når det er normalt kjører på veien, 1511 01:15:27,261 --> 01:15:30,350 det ville bare slippe ut så mye forurensning som det ville. 1512 01:15:30,350 --> 01:15:33,870 >> Så hvordan kan vi skrive pseudokode for denne algoritmen? 1513 01:15:33,870 --> 01:15:37,820 Hvordan kan vi skrive pseudo for programvaren som kjører i bilen? 1514 01:15:37,820 --> 01:15:43,390 Jeg mener, i et nøtteskall, det koker ned til noe sånt som dette. 1515 01:15:43,390 --> 01:15:48,000 hvis blir testet, avgir mindre. 1516 01:15:48,000 --> 01:15:50,750 ellers avgir mer. 1517 01:15:50,750 --> 01:15:52,630 Men det er en liten for høyt nivå, ikke sant? 1518 01:15:52,630 --> 01:15:58,580 >> La oss prøve å dykke i hva denne abstraksjon av å være testet midler. 1519 01:15:58,580 --> 01:16:06,340 Med andre ord, selv om du vet ingenting om biler, hva slags spørsmål 1520 01:16:06,340 --> 01:16:13,440 kan du spørre for å avgjøre om du blir testet, hvis du er i bilen? 1521 01:16:13,440 --> 01:16:19,638 Hvilke egenskaper kan være presentere hvis en bil blir testet? 1522 01:16:19,638 --> 01:16:21,026 >> PUBLIKUM: Testing utstyr. 1523 01:16:21,026 --> 01:16:22,420 >> DAVID MALAN: Testing utstyr. 1524 01:16:22,420 --> 01:16:26,060 Så hvis testing av utstyr nærheten, da slipper ut mindre. 1525 01:16:26,060 --> 01:16:28,669 Så jeg kunne tenke meg å implementere som med en slags kameraer 1526 01:16:28,669 --> 01:16:29,960 eller avdekke hva som er rundt deg. 1527 01:16:29,960 --> 01:16:32,870 Og la meg foreslå at bare føles for komplisert 1528 01:16:32,870 --> 01:16:37,914 å faktisk ha ekstra maskinvare nettopp for dette formålet. 1529 01:16:37,914 --> 01:16:44,830 >> PUBLIKUM: Hvis du er i park, hvis panseret er åpent. 1530 01:16:44,830 --> 01:16:47,320 >> DAVID MALAN: I parken eller panseret åpent, så det er bra. 1531 01:16:47,320 --> 01:16:47,420 >> PUBLIKUM: Og bilen kjører. 1532 01:16:47,420 --> 01:16:50,480 >> DAVID MALAN: Så det er litt mer concrete-- og bilen kjører. 1533 01:16:50,480 --> 01:16:55,690 Så dette ville være sammen med en noen forskjellige forhold, hvis du vil. 1534 01:16:55,690 --> 01:16:59,227 Så hvis bilen er i parken, og selv om dette er en veldig mekanisk ting 1535 01:16:59,227 --> 01:17:01,060 typisk, jeg kunne forestille seg å skrive programvare, 1536 01:17:01,060 --> 01:17:03,476 spesielt fordi det er ofte et lys der ute i disse dager, 1537 01:17:03,476 --> 01:17:07,400 Jeg kunne tenke meg at det er programvare som kan søke i shifter 1538 01:17:07,400 --> 01:17:10,634 eller hva ikke, du er i parken, er du i stasjonen, er du i revers. 1539 01:17:10,634 --> 01:17:12,550 Og jeg kan komme tilbake en svare på det er enten ja 1540 01:17:12,550 --> 01:17:14,400 eller nei til slike spørsmål. 1541 01:17:14,400 --> 01:17:17,630 >> Og så kunne jeg også trolig svare et spørsmål som er panseret åpent. 1542 01:17:17,630 --> 01:17:21,860 Kanskje er det en slags sensor som enten gir meg tilbake en 1 eller 0, 1543 01:17:21,860 --> 01:17:23,720 sant eller usant, er panseret åpent. 1544 01:17:23,720 --> 01:17:28,180 Og da bilen kjører, kan jeg oppdage som liksom via hva mekanisme? 1545 01:17:28,180 --> 01:17:30,430 Liker, er bilen kjører, jeg kunne oppdage at det er på, 1546 01:17:30,430 --> 01:17:32,127 Jeg kunne påvise en eller annen måte at bilen er i bevegelse? 1547 01:17:32,127 --> 01:17:32,881 >> PUBLIKUM: RPM. 1548 01:17:32,881 --> 01:17:35,190 >> DAVID MALAN: Ja, så det er alltid at nål som 1549 01:17:35,190 --> 01:17:38,034 forteller deg hvor mange rotasjoner per minutt hjulene opplever. 1550 01:17:38,034 --> 01:17:39,200 Og så jeg kunne se på det. 1551 01:17:39,200 --> 01:17:43,090 Og hvis det ikke er 0, som trolig betyr at bilen er i bevegelse. 1552 01:17:43,090 --> 01:17:45,400 Men vi må være en litt forsiktig der, 1553 01:17:45,400 --> 01:17:49,780 because-- la oss forenkle dette-- hvis vi sa, hvis bilen kjører, 1554 01:17:49,780 --> 01:17:53,070 vi ønsker ikke å bare slippe ut mindre, vi vil hvis bilen kjører 1555 01:17:53,070 --> 01:17:54,310 og det blir testet. 1556 01:17:54,310 --> 01:17:56,320 >> Så er det noen andre Ingredienser som folk 1557 01:17:56,320 --> 01:18:00,550 har en hypotese om programvaren gjør, fordi fraværende selve kildekoden, 1558 01:18:00,550 --> 01:18:05,130 du kan bare liksom slutte fra fysiske virkningene av bilen med hensyn til hva 1559 01:18:05,130 --> 01:18:08,280 kan gå på under panseret i programvaren. 1560 01:18:08,280 --> 01:18:17,090 Så hvis bilen kjører og kanskje, sier bakhjulene ikke beveger seg, 1561 01:18:17,090 --> 01:18:19,420 kan dette være en indikasjon av en slags test? 1562 01:18:19,420 --> 01:18:22,830 Hva er det jeg antydet at her? 1563 01:18:22,830 --> 01:18:24,830 Ja, kanskje, det er på en av disse rulle ting, 1564 01:18:24,830 --> 01:18:28,340 hvor som hjulene er å snu foran eller bak, 1565 01:18:28,340 --> 01:18:32,570 avhengig av om det er forhjulet eller bakhjulsdrift, slik at halvparten av hjulene 1566 01:18:32,570 --> 01:18:34,420 er i bevegelse, men andre to er ikke, hvilken 1567 01:18:34,420 --> 01:18:36,320 er en merkelig situasjon i den virkelige verden. 1568 01:18:36,320 --> 01:18:38,110 Hvis du kjører på veien, det bør ikke skje. 1569 01:18:38,110 --> 01:18:40,568 Men hvis du er i et lager på en slags roller system, 1570 01:18:40,568 --> 01:18:41,630 som kan faktisk skje. 1571 01:18:41,630 --> 01:18:46,980 >> Jeg tror folk også foreslått at kanskje, hvis bilen er i gang og styring 1572 01:18:46,980 --> 01:18:51,300 hjulet ikke beveger seg, at også kan være et signal, 1573 01:18:51,300 --> 01:18:54,090 fordi det er rimelig for som en straight på en vei. 1574 01:18:54,090 --> 01:18:57,960 Men selv da, er den menneskelige trolig flytte den litt eller helt sikkert 1575 01:18:57,960 --> 01:18:59,100 i løpet av noen få sekunder. 1576 01:18:59,100 --> 01:19:01,030 Eller i løpet av en minutt, oddsen er det ikke 1577 01:19:01,030 --> 01:19:03,510 kommer til å bli fiksert i nøyaktig samme posisjon. 1578 01:19:03,510 --> 01:19:05,440 >> Så med andre ord, vi kan ta subtraksjon, 1579 01:19:05,440 --> 01:19:08,200 er du blir testet, og bryte ned denne funksjonaliteten 1580 01:19:08,200 --> 01:19:10,420 inn i disse komponent ingredienser. 1581 01:19:10,420 --> 01:19:13,440 Og det er virkelig hva Volkswagens ingeniører eller annen måte gjorde. 1582 01:19:13,440 --> 01:19:17,070 De skrev programvare bevisst å oppdage om bilen blir testet, 1583 01:19:17,070 --> 01:19:20,440 Derfor slipper ut mindre, annet avgir på vanlig måte. 1584 01:19:20,440 --> 01:19:22,690 >> Og problemet her også, er at programvaren ikke 1585 01:19:22,690 --> 01:19:26,080 noe du virkelig kan se med mindre du har den såkalte kildekoden. 1586 01:19:26,080 --> 01:19:29,060 Så det er to forskjellige typer av code-- minst to forskjellige typer 1587 01:19:29,060 --> 01:19:30,130 av koden i verden. 1588 01:19:30,130 --> 01:19:33,150 Det er noe som heter kilde kode, som ikke er i motsetning til hva 1589 01:19:33,150 --> 01:19:37,240 vi har skrevet, kildekode. 1590 01:19:37,240 --> 01:19:40,099 >> Dette kildekode skrevet i et språk som kalles pseudo, 1591 01:19:40,099 --> 01:19:41,640 som er bare noe engelsk-aktig. 1592 01:19:41,640 --> 01:19:43,140 Det er ingen formell definisjon av det. 1593 01:19:43,140 --> 01:19:46,770 Men C, og Java, C ++, disse er alle formelle språk som, 1594 01:19:46,770 --> 01:19:50,610 når du skriver i dem, hva du har er en tekstfil som inneholder kildekoden. 1595 01:19:50,610 --> 01:19:54,850 >> Men det er også noe i verden kalles maskinkode. 1596 01:19:54,850 --> 01:20:00,579 Og maskinkode, dessverre, er bare 0-er og 1-ere. 1597 01:20:00,579 --> 01:20:02,870 Så maskinkode er hva maskiner forstår, selvfølgelig. 1598 01:20:02,870 --> 01:20:04,470 Kildekoden er hva mennesker forstår. 1599 01:20:04,470 --> 01:20:08,390 >> Og vanligvis, men ikke alltid, er det et program 1600 01:20:08,390 --> 01:20:14,090 at en programmerer bruker som tar kilde kode og gjør den til maskinkode. 1601 01:20:14,090 --> 01:20:17,400 Og at programmet er vanligvis kalt en kompilator. 1602 01:20:17,400 --> 01:20:19,820 Så dine innspill er kildekoden, utskriften er maskinkode, 1603 01:20:19,820 --> 01:20:22,890 og kompilatoren er et stykke programvaren som gjør denne prosessen. 1604 01:20:22,890 --> 01:20:26,260 Så dette faktisk kartene pent til våre innganger, algoritmer, utganger. 1605 01:20:26,260 --> 01:20:30,400 >> Men dette er en veldig bestemt inkarnasjon av det, det vil si at, 1606 01:20:30,400 --> 01:20:34,200 selv om du eier en av Volkswagens biler som er skyldig i dette, 1607 01:20:34,200 --> 01:20:38,390 det er ikke som du kan bare åpne hette eller åpne bruksanvisningen eller se 1608 01:20:38,390 --> 01:20:42,690 på kildekoden, fordi da den når bilen i oppkjørselen din, 1609 01:20:42,690 --> 01:20:45,580 det har allerede vært omgjort til 0 og 1-ere. 1610 01:20:45,580 --> 01:20:51,310 Og det er veldig vanskelig, ikke umulig, men svært vanskelig å fange opp mye av noe 1611 01:20:51,310 --> 01:20:53,710 fra bare å se på underliggende 0-er og 1-ere. 1612 01:20:53,710 --> 01:20:57,150 Så du kan finne ut av det til slutt, hvis du forstår hvordan en maskin operates-- 1613 01:20:57,150 --> 01:20:59,870 Intel inside-- hvis du forstår Intel-arkitektur, 1614 01:20:59,870 --> 01:21:01,440 men det er veldig tidkrevende. 1615 01:21:01,440 --> 01:21:05,010 Og selv der, kan du ikke være i stand til å se alt 1616 01:21:05,010 --> 01:21:08,220 at koden faktisk kan gjøre. 1617 01:21:08,220 --> 01:21:12,521 >> Eventuelle spørsmål om denne eller denne typen prosess mer generelt? 1618 01:21:12,521 --> 01:21:15,134 1619 01:21:15,134 --> 01:21:18,300 Og faktisk, kan vi knytte denne diskusjonen til gårsdagens diskusjon av Apple. 1620 01:21:18,300 --> 01:21:22,500 Også dette er grunnen til at FBI kan ikke bare gå og se på den mistenkte telefon 1621 01:21:22,500 --> 01:21:26,820 og finne linjer med kode, for eksempel, som gjør det mulig passordet 1622 01:21:26,820 --> 01:21:28,940 eller aktivere at 80-millisekund forsinkelse. 1623 01:21:28,940 --> 01:21:31,630 Fordi da er det på stipendiatens iPhone, 1624 01:21:31,630 --> 01:21:34,975 det har allerede vært konvertert til 0 og 1-ere. 1625 01:21:34,975 --> 01:21:38,015 1626 01:21:38,015 --> 01:21:40,820 >> Vel, la oss stoppe her for vår se på beregningsorientert tenkning. 1627 01:21:40,820 --> 01:21:42,320 Hvorfor kan ikke vi ta en 15 minutters pause. 1628 01:21:42,320 --> 01:21:44,130 Og når vi kommer tilbake, vil vi ta en titt på programmering 1629 01:21:44,130 --> 01:21:46,550 seg og begynner å kartlegge noen av disse høyt nivå begrepene 1630 01:21:46,550 --> 01:21:49,780 til en faktisk, hvis leken, programmeringsspråk. 1631 01:21:49,780 --> 01:21:51,089