1 00:00:00,000 --> 00:00:00,270 2 00:00:00,270 --> 00:00:01,790 DAVID MALAN: Velkommen tilbage, alle. 3 00:00:01,790 --> 00:00:05,030 Så i går, vil du huske, at vi fokuseret på disse emner her. 4 00:00:05,030 --> 00:00:08,380 Så vi havde fire overordnede topics-- privatlivets fred, sikkerhed og samfund; 5 00:00:08,380 --> 00:00:11,960 internetteknologier; skyen; og i sidste ende, webudvikling. 6 00:00:11,960 --> 00:00:14,170 >> Havde nogen har båndbredde eller tidspunktet 7 00:00:14,170 --> 00:00:16,900 at se lidt John Oliver aftes? 8 00:00:16,900 --> 00:00:20,120 Det er faktisk temmelig morsomt, hvis ikke en smule skræmmende. 9 00:00:20,120 --> 00:00:24,700 Eventuelle spørgsmål om noget vi gjorde i går? 10 00:00:24,700 --> 00:00:27,600 Eventuelle præciseringer? 11 00:00:27,600 --> 00:00:35,580 Eventuelle spørgsmål, som du ønsker at gøre sikre, at vi rører på i dag i en eller anden form? 12 00:00:35,580 --> 00:00:37,300 Så ren tavle. 13 00:00:37,300 --> 00:00:38,760 >> Så hvad er på dagsordenen for i dag? 14 00:00:38,760 --> 00:00:41,301 Så jeg troede, vi ville begynde i dag med et kig på, hvad der er generelt 15 00:00:41,301 --> 00:00:44,460 kendt som beregningsmæssige thinking-- på risikoen for oversimplificerer, tænker 16 00:00:44,460 --> 00:00:46,636 som en computer, måske tænke som en ingeniør, 17 00:00:46,636 --> 00:00:48,510 og forsøger at begynde at organisere dine tanker 18 00:00:48,510 --> 00:00:52,039 eller til at give dig en bedre fornemmelse af hvad der er involveret i faktisk kommanderende 19 00:00:52,039 --> 00:00:54,080 en computer til at gøre noget ved hjælp af programmering. 20 00:00:54,080 --> 00:00:56,663 Og vi vil holde det på en smuk højt niveau, temmelig meget engelsk, 21 00:00:56,663 --> 00:00:59,850 men prøv at bruge af fortrolig eksempler at formalisere hvordan 22 00:00:59,850 --> 00:01:01,450 du ville gå om at løse problemer. 23 00:01:01,450 --> 00:01:04,080 >> Og vi vil revidere nogle CS emner, ligesom abstraktion, 24 00:01:04,080 --> 00:01:06,040 som kom op et par gange i går, 25 00:01:06,040 --> 00:01:07,554 algoritmer og derefter repræsentation. 26 00:01:07,554 --> 00:01:09,720 Og det er, hvor vi vil begynde dag på bare et øjeblik. 27 00:01:09,720 --> 00:01:11,481 Så vil vi tage et kig på programmering. 28 00:01:11,481 --> 00:01:13,480 Vi tager et kig på nogle grundlæggende konstruktioner 29 00:01:13,480 --> 00:01:16,450 som du kan være bekendt og måske endda finde helt intuitivt. 30 00:01:16,450 --> 00:01:18,370 >> Vi ser, i virkeligheden, ved en prøveprogrammering 31 00:01:18,370 --> 00:01:21,244 miljø, der er meget tilgængelige, meget legesyg, og faktisk målrettet 32 00:01:21,244 --> 00:01:22,555 for aldre 12 og op. 33 00:01:22,555 --> 00:01:25,930 Vi vil bruge et par minutter der og derefter tage tingene til et lavere niveau 34 00:01:25,930 --> 00:01:30,360 og faktisk tale om nogle af algoritmer og datastrukturer, 35 00:01:30,360 --> 00:01:32,360 så at sige, at programmører bruger typisk 36 00:01:32,360 --> 00:01:35,040 at løse problemer langt flere effektivt end du måske 37 00:01:35,040 --> 00:01:37,322 kunne undvære dem helt. 38 00:01:37,322 --> 00:01:40,280 Så efter frokost, vil vi tage et kig på teknologi stakke, som er lige 39 00:01:40,280 --> 00:01:42,240 en fancy måde at sige samlinger af teknologier 40 00:01:42,240 --> 00:01:43,690 at du kan bruge til løse et problem. 41 00:01:43,690 --> 00:01:46,670 Og vi vil tale om alfabetet suppe af sprog, der findes today-- 42 00:01:46,670 --> 00:01:50,930 Java og Python og C ++ og PHP og Ruby og alle mulige andre ting. 43 00:01:50,930 --> 00:01:53,740 >> Vi vil tage et kig kortvarigt ved design mønstre. 44 00:01:53,740 --> 00:01:57,730 Programmører, over tid, har vedtaget metoder 45 00:01:57,730 --> 00:02:00,690 har tendens til at hjælpe dem løse problemer lettere. 46 00:02:00,690 --> 00:02:04,390 Når du begynder at se dig selv at skrive den samme slags kode igen og igen, 47 00:02:04,390 --> 00:02:08,080 folk formalisere disse gentagelser og tilskrive navne til dem 48 00:02:08,080 --> 00:02:10,084 og derefter bruge dem, og fremme dem i sidste ende. 49 00:02:10,084 --> 00:02:12,250 Og vi vil snakke lidt om mobile strategier, 50 00:02:12,250 --> 00:02:16,099 gerne, hvad vil det sige at faktisk lave en mobil app eller et mobilt website. 51 00:02:16,099 --> 00:02:17,140 Gør du det til Android? 52 00:02:17,140 --> 00:02:17,730 Gør du det til iOS? 53 00:02:17,730 --> 00:02:19,160 Har du gøre det for dem begge? 54 00:02:19,160 --> 00:02:20,326 Og hvad er de afvejninger? 55 00:02:20,326 --> 00:02:23,180 Og så endelig, vil vi tage et kig web programmering, som 56 00:02:23,180 --> 00:02:25,380 er en samlebetegnelse virkelig beskriver enhver tid 57 00:02:25,380 --> 00:02:28,410 du skriver software, der er betød at køre på nettet, 58 00:02:28,410 --> 00:02:30,430 enten på telefoner eller desktops eller laptops. 59 00:02:30,430 --> 00:02:33,490 Vi vil tage et kort kig på databaser og design 60 00:02:33,490 --> 00:02:39,049 deri, hvis blot fordi næsten enhver interessant web-baseret program 61 00:02:39,049 --> 00:02:40,590 disse dage har en slags database. 62 00:02:40,590 --> 00:02:42,380 Ellers ville det bare være statisk indhold. 63 00:02:42,380 --> 00:02:45,254 Og en database tillader dig at foretage ændringer over tid, uanset om dig selv 64 00:02:45,254 --> 00:02:45,960 eller fra brugere. 65 00:02:45,960 --> 00:02:47,820 Og vi vil overveje, hvordan du ville gå om at designe 66 00:02:47,820 --> 00:02:50,510 denne database og den slags jargon der kan komme op i en ingeniør 67 00:02:50,510 --> 00:02:52,790 drøftelse på en hvid bord når faktisk at gennemføre 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 taler kort om API'er, nyttige tjenester 70 00:02:57,002 --> 00:02:59,960 som du kan bruge til at stå på skuldrene af andre, uanset om virksomhederne 71 00:02:59,960 --> 00:03:02,619 eller enkeltpersoner, og løse dit egne problemer hurtigere. 72 00:03:02,619 --> 00:03:04,785 Og så vil vi fuske måske lidt med JavaScript, 73 00:03:04,785 --> 00:03:08,900 et programmeringssprog, der bruges både i browsere disse dage, men også 74 00:03:08,900 --> 00:03:09,820 i servere. 75 00:03:09,820 --> 00:03:11,890 Og måske vil vi gense, tiden tillader det, 76 00:03:11,890 --> 00:03:15,670 nogle af 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 udsætte. 78 00:03:17,630 --> 00:03:22,380 >> Så med at-- hvad er ahead-- er der noget der mangler, at du 79 00:03:22,380 --> 00:03:26,289 vil gerne sikre, at vi indsætter og komme ind på på et tidspunkt. 80 00:03:26,289 --> 00:03:28,330 Hvis det er fjedre til at tænke på, bringe det op inden længe. 81 00:03:28,330 --> 00:03:32,010 Men hvorfor skal vi ikke begynde med en se på beregningsmæssige tænkning. 82 00:03:32,010 --> 00:03:35,420 >> Og lad mig foreslå, at beregningsmæssige tænkning er, igen, 83 00:03:35,420 --> 00:03:38,830 slags det høje niveau beskrivelse af hvad en datalog kan gøre. 84 00:03:38,830 --> 00:03:42,470 Og ja, lad os starte med tre ingredienser, 85 00:03:42,470 --> 00:03:44,207 kan gå ind beregningsmæssige tænkning. 86 00:03:44,207 --> 00:03:45,790 Dette er blot en måde at beskrive det. 87 00:03:45,790 --> 00:03:48,490 Vi kunne sikkert definere dette i en række forskellige måder. 88 00:03:48,490 --> 00:03:50,630 >> Men lad mig foreslå, af hensyn 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 når kontaktet af en datalog kunne 91 00:03:56,730 --> 00:04:00,990 ses som hvad vi får call indgange, der 92 00:04:00,990 --> 00:04:08,142 brug for at få tilført i, hvad vi vil kalde algoritmer, som derefter afkaster udgange. 93 00:04:08,142 --> 00:04:10,600 Med andre ord, hele verden for problemløsning I krav 94 00:04:10,600 --> 00:04:13,140 kan destilleres i disse tre ingredienser. 95 00:04:13,140 --> 00:04:14,450 Så hvad mener jeg med input? 96 00:04:14,450 --> 00:04:17,060 Indgange er lige, hvad du er afleveres for at løse. 97 00:04:17,060 --> 00:04:20,052 >> For eksempel, her er en gammel skole problem. 98 00:04:20,052 --> 00:04:22,760 Hvis jeg har en telefonbog her og Jeg ønsker at se noget i det, 99 00:04:22,760 --> 00:04:23,760 dette er mit input. 100 00:04:23,760 --> 00:04:26,260 Jeg har 1.000 eller deromkring sider i en telefonbog. 101 00:04:26,260 --> 00:04:27,780 Det er input til mit problem. 102 00:04:27,780 --> 00:04:31,507 Og jeg ønsker at finde noget ligesom Mike Smith, så en ven 103 00:04:31,507 --> 00:04:33,840 hvis navn og nummer er forhåbentlig i denne adressebog. 104 00:04:33,840 --> 00:04:36,430 >> Dette er før de dage af celle telefoner, så jeg kan ikke bare søge efter det. 105 00:04:36,430 --> 00:04:38,540 Så jeg er nødt til at gøre det gamle skole og faktisk søgning 106 00:04:38,540 --> 00:04:41,331 disse indgange til nogle svar. 107 00:04:41,331 --> 00:04:43,580 Og svaret er bare at blive kaldt output. 108 00:04:43,580 --> 00:04:44,871 Så input er telefonbogen. 109 00:04:44,871 --> 00:04:47,787 Algoritmen er uanset sæt skridt, jeg bruger til at finde Mike Smith. 110 00:04:47,787 --> 00:04:50,120 Og output er, forhåbentlig, Mike Smiths telefonnummer. 111 00:04:50,120 --> 00:04:52,703 Og dette så ville være lige repræsenterer de fleste problemer 112 00:04:52,703 --> 00:04:55,210 til med du er handed indgange og ønsker at producere udgange. 113 00:04:55,210 --> 00:04:59,459 >> Så før vi betragter processen hvorved vi kan løse dette problem, 114 00:04:59,459 --> 00:05:01,250 finde Mike Smith og noget i den stil, 115 00:05:01,250 --> 00:05:04,090 lad os overveje den første og de last-- ind- og udgange. 116 00:05:04,090 --> 00:05:08,060 Fysisk, selvfølgelig, input her er en hel masse papir limet sammen 117 00:05:08,060 --> 00:05:09,400 i form af en telefonbog. 118 00:05:09,400 --> 00:05:13,660 Men computere, af course-- laptops og stationære computere og endda telefoner 119 00:05:13,660 --> 00:05:16,430 disse days-- de er elektroniske anordninger. 120 00:05:16,430 --> 00:05:20,920 >> Og i slutningen af ​​dagen, hvad er den eneste input til en computer? 121 00:05:20,920 --> 00:05:23,299 Tja, det er noget ligesom denne strømkablet her. 122 00:05:23,299 --> 00:05:25,590 Jeg sætte det ind i væggen, og Jeg får en strøm af elektroner, 123 00:05:25,590 --> 00:05:27,048 som tillader mig at køre maskinen. 124 00:05:27,048 --> 00:05:30,420 Eller måske disse elektroner er skabt ved hjælp af mit batteri. 125 00:05:30,420 --> 00:05:33,790 Men i slutningen af ​​dagen, det er det eneste går ind i min bærbare computer. 126 00:05:33,790 --> 00:05:35,772 Og så meget interessant ting er i sidste ende 127 00:05:35,772 --> 00:05:37,480 kommer ud, også ved hjælp af printeren 128 00:05:37,480 --> 00:05:40,320 eller skærmen eller audially eller lignende. 129 00:05:40,320 --> 00:05:45,320 >> Så hvis alt vi har som vores grundlæggende input til en computer 130 00:05:45,320 --> 00:05:49,160 er elektricitet, så bare elektroner går ind og eller ud, 131 00:05:49,160 --> 00:05:54,465 og så hvordan kan vi bruge denne indgang til rent faktisk at repræsentere oplysninger? 132 00:05:54,465 --> 00:05:57,090 Med andre ord, hvordan får vi fra en simpel strøm af elektricitet 133 00:05:57,090 --> 00:06:00,350 at repræsentere faktiske tal eller faktiske bogstaver 134 00:06:00,350 --> 00:06:03,620 eller faktiske billeder på skærmen eller faktiske film eller e-mails 135 00:06:03,620 --> 00:06:05,690 eller vilkårligt blandt disse højere niveau koncepter, 136 00:06:05,690 --> 00:06:07,680 hvis du vil, at der på den slutningen af ​​dagen eller anden måde 137 00:06:07,680 --> 00:06:11,950 skal oplagres i dette elektronisk mekanisk anordning 138 00:06:11,950 --> 00:06:16,260 ved hjælp af kun de simple ingredients-- elektroner kommer ind og ud? 139 00:06:16,260 --> 00:06:19,530 >> Så det lader til, at, I den simpleste 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 at speak-- betingelser i min verden-er enten 142 00:06:25,350 --> 00:06:33,020 Jeg har elektroner flyder, elektricitet flyder, eller jeg gør not-- så videre, off. 143 00:06:33,020 --> 00:06:35,850 Og lad os formalisere og slukkes, som en datalog kan, 144 00:06:35,850 --> 00:06:37,255 med kun 1 og 0. 145 00:06:37,255 --> 00:06:39,880 Lad os bare beskrive nogle vilkårlige men konsistent nummer til det. 146 00:06:39,880 --> 00:06:41,970 1 betyder på, 0 betyder slukket. 147 00:06:41,970 --> 00:06:45,427 Eller du kan også se det som sande midler på og falske midler. 148 00:06:45,427 --> 00:06:47,510 Du kunne også gøre sort og hvid eller rød og blå. 149 00:06:47,510 --> 00:06:48,759 Du skal bare to deskriptorer. 150 00:06:48,759 --> 00:06:52,240 Og et dataloger ville generelt bare bruge 0 og 1. 151 00:06:52,240 --> 00:06:58,980 >> Så hvis det er tilfældet, min eneste alfabet er bestående af 0 og 1'er, hvordan 152 00:06:58,980 --> 00:07:03,360 kunne jeg muligvis komme til at udjævne antallet 2 i en computer, endsige tallet 3 153 00:07:03,360 --> 00:07:06,140 eller et bogstav i alfabetet eller et billede eller en film? 154 00:07:06,140 --> 00:07:08,910 Hvordan vi slags bootstrap os fra dette grundprincip 155 00:07:08,910 --> 00:07:12,080 af 0'er og 1'ere og faktisk repræsentere noget mere interessant? 156 00:07:12,080 --> 00:07:14,430 >> Nå, lad os sætte dette spørgsmål på hold for et øjeblik 157 00:07:14,430 --> 00:07:17,520 og overveje noget forhåbentlig velkendt, 158 00:07:17,520 --> 00:07:21,150 selvom du ikke har virkelig tænkt over det i detaljer i 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 Det er hvad? 161 00:07:24,780 --> 00:07:28,050 Hvordan ville du udtale det? 162 00:07:28,050 --> 00:07:30,770 Ikke et trick spørgsmål. 163 00:07:30,770 --> 00:07:32,950 En række, men hvad 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 kunne godt lide, hvordan du sagde 1, 2, 3, fordi det er en måde at få det vist. 166 00:07:37,800 --> 00:07:39,870 1, 2, 3, er det en sekvens af tre symboler. 167 00:07:39,870 --> 00:07:42,005 Det er billeder, som vi nu har ord for. 168 00:07:42,005 --> 00:07:44,880 Og hvis du slags læst dem alle sammen, en typisk menneske på engelsk 169 00:07:44,880 --> 00:07:46,600 ville sige 123. 170 00:07:46,600 --> 00:07:48,350 Og det er en slags højere niveau koncept, 171 00:07:48,350 --> 00:07:50,340 føles som et rimeligt stort antal. 172 00:07:50,340 --> 00:07:51,490 >> Men hvordan kom vi derhen? 173 00:07:51,490 --> 00:07:54,640 Nå, kan det være et stykke tid siden du har tænkt over det på denne måde, 174 00:07:54,640 --> 00:07:56,680 men tilbage i min dag, jeg slags lært dette 175 00:07:56,680 --> 00:08:01,030 som en klumme, 10'erne kolonne, og de 100 kolonne. 176 00:08:01,030 --> 00:08:06,400 Så som Lakisa siger, det er 1, 2, 3, men det er også 123. 177 00:08:06,400 --> 00:08:08,700 Men hvordan kommer vi fra førstnævnte til sidstnævnte? 178 00:08:08,700 --> 00:08:12,340 >> Nå, ville du typisk gør i 100 klumme, jeg har en 1. 179 00:08:12,340 --> 00:08:14,794 Så det er ligesom at sige 100 gange 1. 180 00:08:14,794 --> 00:08:16,210 Og så i 10 klumme, jeg har to. 181 00:08:16,210 --> 00:08:18,464 Så det er ligesom at sige 10 gange 2. 182 00:08:18,464 --> 00:08:19,630 I en klumme, jeg har tre. 183 00:08:19,630 --> 00:08:21,720 Så det er ligesom at sige 1 gange 3. 184 00:08:21,720 --> 00:08:24,290 >> Og hvis jeg tilføjer disse ting sammen, det, selvfølgelig, 185 00:08:24,290 --> 00:08:27,470 er 100 plus 10 plus 3. 186 00:08:27,470 --> 00:08:31,750 Og åh, det er derfor jeg får denne højere begrebet 123. 187 00:08:31,750 --> 00:08:37,220 Det er bare grundlæggende matematik, hvorved disse symboler har vægte til dem, hvis du 188 00:08:37,220 --> 00:08:39,620 vil PLACEHOLDER eller kolonneværdier. 189 00:08:39,620 --> 00:08:42,090 Og når jeg formere alt ud, jeg får dette nummer. 190 00:08:42,090 --> 00:08:47,840 >> Så hvor mange af jer ved, hvordan man taler binary-- 0'er og 1's-- som en computer? 191 00:08:47,840 --> 00:08:50,410 OK, perfekt, ingen, eller ingen af ​​jer tror, ​​du gør. 192 00:08:50,410 --> 00:08:52,550 Men jeg vil hævde dig faktisk kender dette allerede. 193 00:08:52,550 --> 00:08:55,330 Vi skal bare slags nappe vores mentale model en lille smule. 194 00:08:55,330 --> 00:08:57,250 Men processen er nøjagtig den samme. 195 00:08:57,250 --> 00:09:01,460 >> Lad mig forlade denne ene deroppe og i stedet trække det ned et øjeblik. 196 00:09:01,460 --> 00:09:05,060 I en verden af ​​computere, vi har kun 0'er og 1'er. 197 00:09:05,060 --> 00:09:07,240 Og så det, der er vil ændre er hvad? 198 00:09:07,240 --> 00:09:10,920 Tja, i min menneskelige verden, den decimal systemet lukkes betydning 10, 199 00:09:10,920 --> 00:09:12,740 Jeg har, hvor mange cifre på min rådighed? 200 00:09:12,740 --> 00:09:15,270 201 00:09:15,270 --> 00:09:16,540 10, ikke? 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 den 10 plads og 100 sted. 204 00:09:21,210 --> 00:09:22,380 Hvor er det fra? 205 00:09:22,380 --> 00:09:24,430 Nå, det er 10 til potensen af ​​0. 206 00:09:24,430 --> 00:09:28,440 Det er 10 til potensen af ​​1, 10 til potensen af ​​2, og så videre. 207 00:09:28,440 --> 00:09:32,110 Du skal bare holde multiplicere dine kolonner med 10, starter ud med kun 1 208 00:09:32,110 --> 00:09:33,700 i yderste højre en her. 209 00:09:33,700 --> 00:09:35,490 >> Så i verden af computere, hvis du kun 210 00:09:35,490 --> 00:09:39,600 har binary-- bi betydning 2-- eller 0 og 1'er, vi bare 211 00:09:39,600 --> 00:09:42,420 virkelig brug for at ændre bunden af ​​denne matematik. 212 00:09:42,420 --> 00:09:46,410 Så med andre ord, nu vil vi bare har en klumme og til-- 213 00:09:46,410 --> 00:09:51,270 hvor er det going-- 2 klumme, de 4 klumme, og måske ud. 214 00:09:51,270 --> 00:09:52,250 Hvorfor det? 215 00:09:52,250 --> 00:09:55,650 Nå, det er 2 0-th magt. 216 00:09:55,650 --> 00:09:57,270 Dette er 2 til 1. 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, vi har 1, 10 s, 100 s, 1000 s, 10.000 s, 100.000 s, 1 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 skal bare holde gange med 2, i stedet for at holde multiplikation med 10. 221 00:10:13,950 --> 00:10:16,780 Så nu, hvis målet på hånd er at repræsentere 222 00:10:16,780 --> 00:10:20,240 tal kun bruger 0'er og 1-taller, Lad os overveje, hvordan vi kommer derhen. 223 00:10:20,240 --> 00:10:26,540 >> Dette er naturligvis, er mønsteret 0 0 0, men hvad nummer begrebsmæssigt 224 00:10:26,540 --> 00:10:27,490 betyder det repræsenterer? 225 00:10:27,490 --> 00:10:35,430 Nå, 4 gange 0 plus 2 gange 0 plus 1 gange 0, lad os tilføje dem sammen. 226 00:10:35,430 --> 00:10:40,030 4 gange 0 er naturligvis, 0, plus 2 gange 0 er, selvfølgelig, 0 plus 1 gange 0 227 00:10:40,030 --> 00:10:40,850 er naturligvis, 0. 228 00:10:40,850 --> 00:10:44,910 Så ah, det repræsenterer nummer vi mennesker kender som 0. 229 00:10:44,910 --> 00:10:47,810 >> Nå, nu, lad os meget hurtigt hurtigt fremad. 230 00:10:47,810 --> 00:10:53,600 Hvis jeg i stedet ikke repræsenterer 0 0 0, men lad os gøre en 0 1, 231 00:10:53,600 --> 00:10:57,010 der kunne være, hvordan Lakisa, tidligere, ville bare udtale det 1 0 1. 232 00:10:57,010 --> 00:11:01,020 Men nu, hvordan kan vi tage det til den højere nivellere nummer vi mennesker kunne vide? 233 00:11:01,020 --> 00:11:04,220 Så hvad er dette tal? 234 00:11:04,220 --> 00:11:06,060 Det er 5, antallet, vi kender som 5. 235 00:11:06,060 --> 00:11:06,870 >> Tja, hvorfor er det? 236 00:11:06,870 --> 00:11:09,620 Tja, vi kan virkelig slags gå igennem det metodisk 237 00:11:09,620 --> 00:11:14,880 4 gange 1, 2 gange 0, 1 gange 1. 238 00:11:14,880 --> 00:11:19,880 Tilføj dem sammen, så dette er 4 plus 0 plus 1. 239 00:11:19,880 --> 00:11:21,577 Og det er, ja, fem. 240 00:11:21,577 --> 00:11:24,660 Så det bliver lidt kedelig nu gør det aritmetiske igen og igen. 241 00:11:24,660 --> 00:11:26,300 Men processen er nøjagtig den samme. 242 00:11:26,300 --> 00:11:28,380 >> Det eneste, der har ændret sig i vores verden 243 00:11:28,380 --> 00:11:32,740 er, at vores kolonner er 1, 2, 4, 8, 16, og så videre, i stedet for 1, 10, 100, 244 00:11:32,740 --> 00:11:33,740 1.000. 245 00:11:33,740 --> 00:11:40,000 Og det er kun fordi vores alfabet har skrumpet fra 0 til 9 til bare fra 0 til 1. 246 00:11:40,000 --> 00:11:50,851 >> Så som en lille quiz her, ville hvordan du repræsenterer antallet 7 i binær? 247 00:11:50,851 --> 00:11:51,350 0? 248 00:11:51,350 --> 00:11:53,490 Nå, 0, betyder, at du 0 0 0? 249 00:11:53,490 --> 00:11:58,140 250 00:11:58,140 --> 00:11:59,693 Sig det igen, Karina. 251 00:11:59,693 --> 00:12:03,010 252 00:12:03,010 --> 00:12:03,550 Perfektionere. 253 00:12:03,550 --> 00:12:04,370 Hvorfor det? 254 00:12:04,370 --> 00:12:08,530 Det er effektivt 4 plus 2 plus 1. 255 00:12:08,530 --> 00:12:09,580 Så godt. 256 00:12:09,580 --> 00:12:14,364 >> Hvordan vi repræsenterer lidt another-- hvad nummer 2? 257 00:12:14,364 --> 00:12:18,360 258 00:12:18,360 --> 00:12:20,690 Tæt på, men baglæns. 259 00:12:20,690 --> 00:12:21,660 Så hvad er det? 260 00:12:21,660 --> 00:12:26,290 Er 4 plus 1, så det er 5 igen. 261 00:12:26,290 --> 00:12:28,310 >> Så what's-- Undskyld, 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 2, fordi igen, selv hvis det slags ikke springe ud på dig, 264 00:12:34,762 --> 00:12:35,470 bare gøre det math. 265 00:12:35,470 --> 00:12:40,390 4 gange 0, 0, 2 gange 1 er 2, 1 gange 0 er 0. 266 00:12:40,390 --> 00:12:42,830 Så dette er det nummer, vi kender som to. 267 00:12:42,830 --> 00:12:44,030 >> Hvad 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 brug for en anden pladsholder. 272 00:12:56,130 --> 00:12:59,570 Vi har brug for en 0 0 0. 273 00:12:59,570 --> 00:13:02,280 Og det er rigtigt af vores slags af gamle skole decimal system. 274 00:13:02,280 --> 00:13:05,280 Hvordan repræsenterer antallet 1000? 275 00:13:05,280 --> 00:13:08,480 >> Nå, ville du synes at være slags i en hård plet, 276 00:13:08,480 --> 00:13:10,390 Hvis bede dig om at repræsentere antallet 1.000, 277 00:13:10,390 --> 00:13:14,960 fordi selv hvis du giver dig selv som 9 af disse, 9 af disse, 0 af disse, 278 00:13:14,960 --> 00:13:18,730 hvilket er det største antal, du har, har du ikke helt få til 1000. 279 00:13:18,730 --> 00:13:26,920 Så hvis du 1000, du bare brug for en anden position, så du kan gøre 1 0 0 0, 280 00:13:26,920 --> 00:13:29,460 ergo antallet 1.000. 281 00:13:29,460 --> 00:13:34,200 >> Så nu, lad os kort denne slags konceptuelle diskussion tilbage til hardware, 282 00:13:34,200 --> 00:13:37,470 hvor igen, input var blot denne lille strømkabel, elektricitet 283 00:13:37,470 --> 00:13:39,300 kommer ind og flyder ud. 284 00:13:39,300 --> 00:13:44,740 Og så for at for at kortlægges herfra til der, ja, hvad har vi virkelig brug for? 285 00:13:44,740 --> 00:13:49,460 Nå, kan du tænke på at være inde i en computer, en hel masse pærer, 286 00:13:49,460 --> 00:13:50,450 hvis du vil. 287 00:13:50,450 --> 00:13:52,040 De er virkelig kaldes transistorer. 288 00:13:52,040 --> 00:13:55,121 Og transistorer er blot skifter kan enten være tændt eller slukket. 289 00:13:55,121 --> 00:13:56,870 Så du kan tænke på en transistor, der er på 290 00:13:56,870 --> 00:14:00,730 tillader elektricitet at flyde og en transistor, der er slukket at stoppe 291 00:14:00,730 --> 00:14:02,170 elektricitet i at strømme. 292 00:14:02,170 --> 00:14:04,130 Og i stedet tage løbet lysene her, 293 00:14:04,130 --> 00:14:06,450 hvorfor jeg ikke gør den slags af ny skole stil. 294 00:14:06,450 --> 00:14:11,360 Så det kan være en 1, en lommelygte være på, kun knap selv. 295 00:14:11,360 --> 00:14:14,050 Og dette kan være en 0, og nu er det væk. 296 00:14:14,050 --> 00:14:18,277 >> Så ved hjælp af denne fysiske enhed, jeg kan nu repræsentere det binære system. 297 00:14:18,277 --> 00:14:19,235 Jeg skal bare have to stater. 298 00:14:19,235 --> 00:14:21,660 Det er ligegyldigt, hvad farve det er, eller hvad det er. 299 00:14:21,660 --> 00:14:25,920 Alt, der betyder noget, er, at jeg har en stat på og en anden stat fra. 300 00:14:25,920 --> 00:14:30,605 Så ved hjælp af min telefon her, hvordan gør jeg repræsenterer antallet vi kender som 0? 301 00:14:30,605 --> 00:14:34,490 302 00:14:34,490 --> 00:14:38,550 Eller sagt ækvivalent, hvad nummer jeg repræsenterer nu? 303 00:14:38,550 --> 00:14:39,810 0, da enheden er slukket. 304 00:14:39,810 --> 00:14:41,560 >> Og hvis jeg gør dette? 305 00:14:41,560 --> 00:14:43,583 Og nu, hvordan gør jeg repræsenterer antallet 2? 306 00:14:43,583 --> 00:14:46,380 307 00:14:46,380 --> 00:14:50,930 Kan jeg låne din telefon her, som vi gjorde i går? 308 00:14:50,930 --> 00:14:58,490 Så lad os se, så hvis jeg ønsker at repræsentere tallet 2, er dette nummer 2? 309 00:14:58,490 --> 00:14:59,050 Ingen. 310 00:14:59,050 --> 00:15:02,250 Hvilket nummer er jeg ved et uheld repræsenterer 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 en ønsker jeg at slukke? 313 00:15:05,008 --> 00:15:09,634 Den sorte telefon eller-- godt, hvis they're-- sort telefon eller den hvide telefon? 314 00:15:09,634 --> 00:15:10,300 Den hvide telefon. 315 00:15:10,300 --> 00:15:17,020 Så hvis jeg slå dette fra, og vi line det op herovre, vi har en 1 316 00:15:17,020 --> 00:15:19,487 i 2 sted og et 0 i 1 sted. 317 00:15:19,487 --> 00:15:21,195 Og så er jeg nu repræsenterer nummer 2. 318 00:15:21,195 --> 00:15:24,680 Og dette, selvfølgelig, ville være antallet 3, for nu begge disse lys 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 er indlysende 321 00:15:27,480 --> 00:15:31,100 hvis jeg ønsker at repræsentere nummer 4 eller 8 eller højere, 322 00:15:31,100 --> 00:15:32,529 Jeg har tænkt mig at brug for flere telefoner. 323 00:15:32,529 --> 00:15:33,820 Men det er alt, der foregår. 324 00:15:33,820 --> 00:15:37,800 Så hvis du nogensinde har hørt, at indersiden af ​​en-- tak du-- computer 325 00:15:37,800 --> 00:15:42,269 er millioner af transistorer, der er bare millioner af bittesmå switche. 326 00:15:42,269 --> 00:15:44,310 Og de er ikke lys pærer, der tændes og slukkes, 327 00:15:44,310 --> 00:15:48,340 men de enten tillader elektricitet at flyde et eller andet sted, eller stoppe det. 328 00:15:48,340 --> 00:15:52,140 Og så der er dine to states-- til eller fra, til eller fra. 329 00:15:52,140 --> 00:15:55,730 >> Så vi synes nu at have denne evne 330 00:15:55,730 --> 00:16:00,590 at repræsentere denne koncept, vi gerne i selve hardwaren. 331 00:16:00,590 --> 00:16:05,520 Men alt, hvad vi har nu, er evnen til at repræsentere tal ville synes. 332 00:16:05,520 --> 00:16:08,580 Så hvordan kan vi gå om repræsentere bogstaver i alfabetet, som 333 00:16:08,580 --> 00:16:12,310 føles som den næste slags funktion, du ønsker at føje til en moderne computer 334 00:16:12,310 --> 00:16:14,280 når du har tal? 335 00:16:14,280 --> 00:16:16,930 >> Og ja, hvis du tænker over IT, historisk, computere 336 00:16:16,930 --> 00:16:19,426 blev indført virkelig at tjene som regnemaskiner numerisk. 337 00:16:19,426 --> 00:16:21,300 Men selvfølgelig, disse dag, de gør meget mere. 338 00:16:21,300 --> 00:16:23,799 Selv når de starter op, du typisk se et eller flere ord. 339 00:16:23,799 --> 00:16:27,420 Så hvordan kan du repræsenterer ord, hvis alt du har, er, igen, 340 00:16:27,420 --> 00:16:31,054 elektricitet ved udgangen af dag, eller ækvivalent 0 og 1'er? 341 00:16:31,054 --> 00:16:34,430 342 00:16:34,430 --> 00:16:35,690 >> Ja. 343 00:16:35,690 --> 00:16:38,320 Ja, jeg mener, vi slags gjorde denne i går i en eller anden form, 344 00:16:38,320 --> 00:16:40,200 hvor på et tidspunkt, Jeg tror, ​​jeg vilkårligt 345 00:16:40,200 --> 00:16:46,741 sagt, at hvis vi ønsker at repræsentere bogstavet A, kunne vi bare kalde det en 1. 346 00:16:46,741 --> 00:16:49,990 Det var i forbindelse med kryptografi, hvor vi bare brug en slags kode, 347 00:16:49,990 --> 00:16:51,160 en slags kortlægning. 348 00:16:51,160 --> 00:16:56,680 >> Så måske en vil være repræsenteret som en 1, og B vil være repræsenteret som en 2, 349 00:16:56,680 --> 00:17:01,560 og Z er repræsenteret som en 26, for eksempel. 350 00:17:01,560 --> 00:17:07,430 Og så er den eneste undtagelse er, at hvis jeg kommer til at indkode breve i mine e-mails 351 00:17:07,430 --> 00:17:10,430 eller i mine tekstbeskeder som tal, du alle 352 00:17:10,430 --> 00:17:12,640 nødt til at acceptere at bruge samme sæt af konventioner. 353 00:17:12,640 --> 00:17:14,619 Og ja, verden har gjort præcis det. 354 00:17:14,619 --> 00:17:18,040 >> Der er et system i verden kaldet ASCII, American Standard 355 00:17:18,040 --> 00:17:21,640 Til udveksling af information, der er simpelthen en beslutning nogle år 356 00:17:21,640 --> 00:17:25,720 siden, at menneskene gjort, at besluttet, at A kommer til at svare til, ikke 357 00:17:25,720 --> 00:17:32,260 1, 2 og 26, og så forth-- det er en lidt different-- men 65, 66, 67. 358 00:17:32,260 --> 00:17:34,010 Og jeg vil hente en diagram på blot et øjeblik. 359 00:17:34,010 --> 00:17:34,580 Men det er vilkårlig. 360 00:17:34,580 --> 00:17:36,329 Men det gør ikke noget at det er vilkårlig. 361 00:17:36,329 --> 00:17:38,620 Verden har bare være konsekvent. 362 00:17:38,620 --> 00:17:40,540 >> Nu, mere for nylig, der er noget mere avanceret 363 00:17:40,540 --> 00:17:45,430 kaldet Unicode, fordi verdens slags realiserede, efter at opfinde computere, 364 00:17:45,430 --> 00:17:50,977 at der er mere end godt 256 symboler i verden 365 00:17:50,977 --> 00:17:53,560 at vi måske ønsker at repræsentere, især når du indfører 366 00:17:53,560 --> 00:17:58,420 Asiatiske sprog og andre symbologies der har brug for mere udtryksfuldhed end du 367 00:17:58,420 --> 00:18:02,150 kan passe ind i den tidligste version af denne kode, som blev kaldt ASCII. 368 00:18:02,150 --> 00:18:05,250 Så Unicode faktisk tillader dig at bruge mere 0'er og 2. 369 00:18:05,250 --> 00:18:08,830 Især du holder høre bytes ord i samfundet og endda kun 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 hvad igen? 372 00:18:12,040 --> 00:18:14,840 >> Hvad er en byte? 373 00:18:14,840 --> 00:18:15,700 Det er kun 8 bit. 374 00:18:15,700 --> 00:18:17,150 Så hvad betyder det egentlig? 375 00:18:17,150 --> 00:18:22,400 Tja, det betyder, tidligere, da vi var taler om binær og jeg var ved hjælp af 376 00:18:22,400 --> 00:18:28,010 vilkårligt tre bit da vi var taler om binary-- det en plads, 377 00:18:28,010 --> 00:18:33,600 de 2 plads, og de fire er sted-- godt, en byte betyder blot, at du taler 378 00:18:33,600 --> 00:18:38,730 ikke i enheder af tre, men fire, fem, seks, syv otte, 379 00:18:38,730 --> 00:18:46,910 som giver os 8 plads, 16 s, 32 s, 64 s, og 128 s. 380 00:18:46,910 --> 00:18:50,010 >> Med andre ord, en smule ikke alle at nyttig en måleenhed, 381 00:18:50,010 --> 00:18:53,132 fordi det er ligesom en lille smule oplysning, til eller fra. 382 00:18:53,132 --> 00:18:54,840 Så for nogle år siden, verden lige besluttet 383 00:18:54,840 --> 00:18:59,060 det er lidt mere bekvemt at tale i form af bytes, otte ting ad gangen. 384 00:18:59,060 --> 00:19:01,670 Og så derfor blev født begrebet en byte. 385 00:19:01,670 --> 00:19:03,640 Og så har vi otte bits her. 386 00:19:03,640 --> 00:19:06,810 >> Og det viser sig, også for lignende årsager, besluttede verden år 387 00:19:06,810 --> 00:19:12,439 siden, at repræsentere en ASCII brev, du kommer til at bruge enheder af 8 bit. 388 00:19:12,439 --> 00:19:14,230 Så selvom du ikke gør brug for, at mange, du er 389 00:19:14,230 --> 00:19:18,130 altid vil bruge 8 bit til repræsenterer et bogstav i alfabetet. 390 00:19:18,130 --> 00:19:20,950 Og dette er praktisk, fordi så hvis du 391 00:19:20,950 --> 00:19:28,720 modtager en besked, der har en 0 0 0 1 1 1 1 0 efterfulgt af yderligere 1 1 1 0 1 0 392 00:19:28,720 --> 00:19:33,320 0 1, så hvis du modtager 16 bits, verdens kan bare 393 00:19:33,320 --> 00:19:37,460 antage, at den første 8 er et bogstav og den anden 8 er et andet brev. 394 00:19:37,460 --> 00:19:39,240 >> Er ligegyldigt, hvor mange der er. 395 00:19:39,240 --> 00:19:41,460 Det betyder bare, at vi er alle konsekvent 396 00:19:41,460 --> 00:19:42,950 når vi fortolker disse bits. 397 00:19:42,950 --> 00:19:44,377 Og dette var bare tilfældigt. 398 00:19:44,377 --> 00:19:47,210 Det betyder noget, men det gjorde jeg ikke virkelig tænke over, hvad det betyder. 399 00:19:47,210 --> 00:19:49,620 >> Så det er en lille hvid løgn. 400 00:19:49,620 --> 00:19:51,990 Oprindeligt ASCII faktisk bruges kun 7 bit. 401 00:19:51,990 --> 00:19:54,180 Og den ottende bit er kaldet udvidet ASCII. 402 00:19:54,180 --> 00:19:56,290 Men pointen er, i sidste ende, det samme. 403 00:19:56,290 --> 00:19:58,850 Verden generelt standardiseret på 8 bit. 404 00:19:58,850 --> 00:20:04,290 >> Så dette synes at være en smule begrænsende, fordi jeg kun kan 405 00:20:04,290 --> 00:20:07,970 repræsenterer kapital A, kapital B gennem kapital Z. 406 00:20:07,970 --> 00:20:10,940 Men faktisk ikke, hvis jeg går at-- der er en masse ressourcer 407 00:20:10,940 --> 00:20:13,695 online, for eksempel, asciitable.com, dette 408 00:20:13,695 --> 00:20:16,310 kommer til at være lidt overvældende i starten. 409 00:20:16,310 --> 00:20:18,910 Men jeg vil påpege hvad der er vigtigt her. 410 00:20:18,910 --> 00:20:24,090 >> Det bare sker for at være-- og jeg vil walk-- lad os se, om jeg gå over her. 411 00:20:24,090 --> 00:20:27,990 Her er, i decimal kolonne, antallet 65. 412 00:20:27,990 --> 00:20:32,201 Og på den højre kolonne brev karakter, Chr, er bogstavet A. 413 00:20:32,201 --> 00:20:34,450 Og du kan ignorere, for nu, alt i midten. 414 00:20:34,450 --> 00:20:36,769 Dette er hexadecimal, oktal, og en HTML-kode. 415 00:20:36,769 --> 00:20:39,810 Til dette websted er bare forsøger at kaste en masse oplysninger på dig på en gang. 416 00:20:39,810 --> 00:20:42,970 Men alt, hvad vi interesserer os er decimal søjle, og søjlen karakter. 417 00:20:42,970 --> 00:20:46,190 >> Så ved denne logik, hvad der er det nummer, verden 418 00:20:46,190 --> 00:20:50,510 har besluttet repræsenterer et lille a? 419 00:20:50,510 --> 00:20:52,230 Ja, 97. 420 00:20:52,230 --> 00:20:55,850 Og bare for at forvirre potentielt svagt, 421 00:20:55,850 --> 00:21:03,715 hvad nummer har verden besluttet ville repræsentere nummer 1? 422 00:21:03,715 --> 00:21:06,900 423 00:21:06,900 --> 00:21:10,910 Ret, fordi we-- 49, forekommer her, ned i bunden til venstre. 424 00:21:10,910 --> 00:21:12,320 >> Nu, hvad mener jeg med det? 425 00:21:12,320 --> 00:21:14,830 Så det viser sig, at i edb-systemer, 426 00:21:14,830 --> 00:21:16,840 der generelt en grundlæggende forskel 427 00:21:16,840 --> 00:21:19,920 mellem et tal og et tegn. 428 00:21:19,920 --> 00:21:22,330 En række er det, vi lærte vokser op, når 429 00:21:22,330 --> 00:21:23,830 Vi var super unge i folkeskolen. 430 00:21:23,830 --> 00:21:25,110 Det er ting, du tæller med. 431 00:21:25,110 --> 00:21:30,220 Men en karakter er blot en form, en glyph, så at sige, på skærmen. 432 00:21:30,220 --> 00:21:36,200 >> Nu, mennesker vi slags se noget, der ligner dette. 433 00:21:36,200 --> 00:21:39,060 Og vi siger, åh, der er nummer to. 434 00:21:39,060 --> 00:21:44,999 Men nej, det er bare et symbol, der ser ligesom det, vi kender som nummer to. 435 00:21:44,999 --> 00:21:46,790 Og så er der denne grundlæggende forskel 436 00:21:46,790 --> 00:21:50,340 mellem de faktiske tal og tegn. 437 00:21:50,340 --> 00:21:52,130 Dette er et tal. 438 00:21:52,130 --> 00:21:54,420 Men generelt, i forbindelse med en computer, 439 00:21:54,420 --> 00:21:56,809 Hvis du i stedet se noget som dette quoted-- 440 00:21:56,809 --> 00:21:58,600 og du ikke altid nødt til at se det citerede, 441 00:21:58,600 --> 00:22:01,474 men af ​​hensyn til discussion-- hvis du ser anførselstegn omkring nummeret, 442 00:22:01,474 --> 00:22:02,730 dette er nu et tegn. 443 00:22:02,730 --> 00:22:06,330 Så denne nummer 2 nedenunder hætten indersiden af ​​en computer 444 00:22:06,330 --> 00:22:12,220 ville være repræsenteret med et mønster af bits, der repræsenterer antallet 445 00:22:12,220 --> 00:22:14,850 50 i henhold til diagrammet online. 446 00:22:14,850 --> 00:22:18,300 >> Men hvis en computer bare ser dette, dette 447 00:22:18,300 --> 00:22:24,580 ville være repræsenteret med mønster af bit 0 0 0 0 0 0 1 0. 448 00:22:24,580 --> 00:22:29,595 Betragtninger, denne karakter ville faktisk være repræsenteret as-- og nu, 449 00:22:29,595 --> 00:22:34,710 Jeg fik at tænke lidt harder-- så dette karakter vil være repræsenteret med 0 450 00:22:34,710 --> 00:22:39,080 0 1-- hvad har jeg brug for 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 klarede jeg gøre det? 453 00:22:45,480 --> 00:22:49,580 Nå det er det nummer 50, hvis du formere det ud ved hjælp af disse kolonner, 454 00:22:49,580 --> 00:22:53,530 dette er nummer 2, og så det er derfor, der er denne dikotomi. 455 00:22:53,530 --> 00:22:55,850 >> Og dette er blot en teaser nu for funktioner 456 00:22:55,850 --> 00:22:59,710 der eksisterer i programmeringssprog at vi vil komme ind på kort senere i dag. 457 00:22:59,710 --> 00:23:01,950 I programmeringssprog, du har generelt 458 00:23:01,950 --> 00:23:04,495 men ikke altid, tingene kalde forskellige 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 programmør får at afgøre, hvad format til at lagre sine data. 461 00:23:11,150 --> 00:23:14,120 Du kan enten gemme data som rå tal, ligesom nummer to. 462 00:23:14,120 --> 00:23:17,940 Eller du kan gemme dem som strenge, eller sekvenser af tegn 463 00:23:17,940 --> 00:23:21,550 at du generelt ville udtrykke med citater i dit programmeringssprog. 464 00:23:21,550 --> 00:23:25,230 >> Du kan have tingene called-- Jeg forsimpler og kalde dem 465 00:23:25,230 --> 00:23:28,870 real numbers-- så tal, ikke er heltal, såsom antallet 2, 466 00:23:28,870 --> 00:23:31,310 men tal gerne 4.56. 467 00:23:31,310 --> 00:23:33,490 Så reelle tal kan også har decimaler, 468 00:23:33,490 --> 00:23:36,340 så det er en anden fundamental stykke data i en computer. 469 00:23:36,340 --> 00:23:41,920 Og så kan du endda have andre datatyper stadig. 470 00:23:41,920 --> 00:23:45,810 Så det er bare en teaser virkelig for den enkleste af design beslutninger 471 00:23:45,810 --> 00:23:50,960 at en programmør kunne gøre under emhætten. 472 00:23:50,960 --> 00:23:52,925 >> Så nogen spørgsmål endnu? 473 00:23:52,925 --> 00:23:57,320 474 00:23:57,320 --> 00:23:59,860 Så lad os prøve at gøre dette lidt mere reel. 475 00:23:59,860 --> 00:24:02,120 Denne hardware er ikke så meget længere bruges. 476 00:24:02,120 --> 00:24:07,420 Men de fleste alle i dette rum sandsynligvis voksede op med og stadig bruger harddiske 477 00:24:07,420 --> 00:24:08,010 på en måde. 478 00:24:08,010 --> 00:24:10,100 >> Selv om de fleste af vores bærbare computere ikke længere 479 00:24:10,100 --> 00:24:15,900 har enheder, der opererer på denne måde, i stedet laptops i dag generelt 480 00:24:15,900 --> 00:24:18,590 har solid state-drev uden bevægelige dele. 481 00:24:18,590 --> 00:24:22,840 Og der har tendens til at være dyrere, desværre, men en lille smule hurtigere 482 00:24:22,840 --> 00:24:27,230 og en-- godt, ofte, meget hurtigere, som er en af ​​årsagerne. 483 00:24:27,230 --> 00:24:28,980 Og også det ikke så meget varme. 484 00:24:28,980 --> 00:24:31,680 Det kan være mindre, så det er generelt en netto positiv. 485 00:24:31,680 --> 00:24:35,030 >> Men det giver os mulighed for at kortlægge en lidt mere konkret hvad 486 00:24:35,030 --> 00:24:38,460 vi taler om i 0'er og 1 niveau nu til en fysisk enhed. 487 00:24:38,460 --> 00:24:40,810 Det er én ting for mig at tale omkring 0 og 1'er i form 488 00:24:40,810 --> 00:24:43,990 af min telefon eller abstrakt i form af kontakterne til og fra. 489 00:24:43,990 --> 00:24:45,340 Men hvad med harddiske? 490 00:24:45,340 --> 00:24:48,495 I din bærbare, hvis du har en ældre en, eller i din stationære computer, 491 00:24:48,495 --> 00:24:51,200 eller i hvert fald i servere i dag, hvor du har 492 00:24:51,200 --> 00:24:53,070 harddiske, der har en terabyte af plads, 493 00:24:53,070 --> 00:24:55,560 4 terabyte af plads, godt hvad betyder det? 494 00:24:55,560 --> 00:24:59,560 >> En harddisk med 1 terabyte plads midler 495 00:24:59,560 --> 00:25:03,890 der er 1 billion bytes inde i det på en måde, 496 00:25:03,890 --> 00:25:10,450 eller ækvivalent 8 billioner bit indeni. 497 00:25:10,450 --> 00:25:16,240 1 terabyte ville være 8 terabit eller 1 billion bit, som 498 00:25:16,240 --> 00:25:19,330 betyder, at hvis du har en hård drev, har du en eller anden måde 499 00:25:19,330 --> 00:25:22,400 eller andre en billion 0'er og 1'er inde i den. 500 00:25:22,400 --> 00:25:25,360 Og hvis vi bare tage et kig på en vilkårlig billede af en harddisk 501 00:25:25,360 --> 00:25:30,110 repræsentant, dette er hvad en hård drev kan typisk ud indeni. 502 00:25:30,110 --> 00:25:32,600 >> Det også er lidt ligesom en gammel grammofon afspiller 503 00:25:32,600 --> 00:25:35,350 men generelt med flere poster inde, så 504 00:25:35,350 --> 00:25:38,270 at speak-- multiple fade, som de kaldes, 505 00:25:38,270 --> 00:25:42,259 metal cirkulære diske, og så lidt læsehoved, 506 00:25:42,259 --> 00:25:43,550 meget som en gammel pladespiller. 507 00:25:43,550 --> 00:25:46,589 Og at læsehoved bevæger sig frem og frem og på en måde læser bits. 508 00:25:46,589 --> 00:25:49,380 Og hvad der er på disse fade, selv selvom vi mennesker ikke kan se dem, 509 00:25:49,380 --> 00:25:52,757 enten i virkeligheden eller i dette billede, der er bittesmå magnetiske partikler. 510 00:25:52,757 --> 00:25:55,090 Og selv hvis du har lange glemt, hvordan elektricitet fungerer, 511 00:25:55,090 --> 00:25:57,550 en magnetisk partikel der er opladet generelt 512 00:25:57,550 --> 00:26:00,570 har en nordlige ende og en syd end-- så nord og syd. 513 00:26:00,570 --> 00:26:03,000 Og så verden bare besluttede for nogen tid siden 514 00:26:03,000 --> 00:26:06,570 at hvis en magnetisk protokol væsentlige er justeret sådan, nord-syd, 515 00:26:06,570 --> 00:26:07,610 lad os kalde det en 1. 516 00:26:07,610 --> 00:26:10,470 Hvis det er i stedet syd-nord, lad os bare kalde det en 0. 517 00:26:10,470 --> 00:26:13,350 Og så hvis du har på din rådighed en billion 518 00:26:13,350 --> 00:26:16,300 lillebitte magnetisk particles-- og forhåbentlig, 519 00:26:16,300 --> 00:26:18,740 hardware opfindsomhed i For at vende dem omkring 520 00:26:18,740 --> 00:26:24,450 som du ser fit-- hvis du vil repræsentere en hel masse 0'er, du 521 00:26:24,450 --> 00:26:28,120 bare brug for 8 magnetiske partikler alt på linie som denne. 522 00:26:28,120 --> 00:26:30,330 Og hvis du ønsker at repræsentere otte 1'ere, du bare 523 00:26:30,330 --> 00:26:33,170 brug for 8 magnetiske partikler aligned ryg mod ryg mod ryg på denne måde. 524 00:26:33,170 --> 00:26:35,515 >> Hvad mener jeg med det magnetiske partikler? 525 00:26:35,515 --> 00:26:38,390 Helt ærligt, alle disse år senere, ting, der stadig kommer efter min mening 526 00:26:38,390 --> 00:26:42,139 er denne fyr, hvis du voksede op med denne ting. 527 00:26:42,139 --> 00:26:43,930 Dette er en little-- for dem unfamiliar-- en 528 00:26:43,930 --> 00:26:47,810 lille barndommen legetøj, har denne hårløse mand her 529 00:26:47,810 --> 00:26:51,690 der har alle disse lillebitte sort magnetiske partikler, der kommer med det. 530 00:26:51,690 --> 00:26:53,930 Og ved hjælp af den røde pind, som er blot en magnet, 531 00:26:53,930 --> 00:26:58,460 du kan slags give ham et overskæg eller øjenbryn eller hår eller noget på ham. 532 00:26:58,460 --> 00:27:00,710 Så i virkeligheden, hvis vi ind i for eksempel dette 533 00:27:00,710 --> 00:27:02,950 er den slags spil du kan spille med Wooly Willy. 534 00:27:02,950 --> 00:27:06,570 >> Og dette er kun at sige, disse er meget større magnetiske partikler 535 00:27:06,570 --> 00:27:09,890 end er faktisk på en harddisk, og langt færre magnetiske partikler. 536 00:27:09,890 --> 00:27:11,640 Men lad os faktisk se så hvis du har 537 00:27:11,640 --> 00:27:14,720 bittesmå magnetiske partikler i en harddisk, hvordan kan du faktisk 538 00:27:14,720 --> 00:27:19,090 bruge dem til at repræsentere 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 fleste af sine permanente data. 541 00:27:24,190 --> 00:27:27,170 For at gøre dette, at data rejser fra RAM langs 542 00:27:27,170 --> 00:27:31,720 med software-signaler, der fortæller harddisk hvordan man opbevarer disse data. 543 00:27:31,720 --> 00:27:36,570 Harddisken kredsløb oversætte dem signaler til spændingsvariationer. 544 00:27:36,570 --> 00:27:40,880 Disse, til gengæld styrer harddiskens bevæger parts-- nogle af de få bevægelige 545 00:27:40,880 --> 00:27:43,440 dele tilbage i den moderne computer. 546 00:27:43,440 --> 00:27:47,650 >> Nogle af de signaler styrer en motor, der spinder metal-belagte plader. 547 00:27:47,650 --> 00:27:50,980 Dine data er faktisk lagret på disse fade. 548 00:27:50,980 --> 00:27:56,250 Andre signaler flytte læse / skrive hoveder at læse eller skrive data på pladerne. 549 00:27:56,250 --> 00:28:00,100 Denne maskine er så præcis at et menneskehår kunne ikke selv 550 00:28:00,100 --> 00:28:02,800 passere mellem hovederne og spinning fade. 551 00:28:02,800 --> 00:28:04,887 Men det hele fungerer på forrygende hastigheder. 552 00:28:04,887 --> 00:28:05,470 [END AFSPIL] 553 00:28:05,470 --> 00:28:06,780 Og du kan se på hale slutningen af ​​videoen, 554 00:28:06,780 --> 00:28:08,340 Der er generelt flere plader. 555 00:28:08,340 --> 00:28:10,250 Og så læser hoved er ikke bare at læse toppen. 556 00:28:10,250 --> 00:28:12,458 Det er lidt ligesom tre eller fire eller flere læsehoveder 557 00:28:12,458 --> 00:28:14,920 at flytte som dette, læsning data samtidigt. 558 00:28:14,920 --> 00:28:17,407 >> Så der er en masse kompleksitet og sortering af timing 559 00:28:17,407 --> 00:28:18,740 der er involveret i en harddisk. 560 00:28:18,740 --> 00:28:21,920 Og de ting er spinning virkelig darn hurtigt, så der er en masse kompleksitet. 561 00:28:21,920 --> 00:28:25,220 Men lad os zoome ind lidt dybere 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 >> -Lad Os se på, hvad vi lige set i slowmotion. 565 00:28:31,830 --> 00:28:35,230 Når en kort elektrisk impuls sendes til læse / skrive hoved, 566 00:28:35,230 --> 00:28:39,000 det vender på en lille elektromagnetisk for en brøkdel af et sekund. 567 00:28:39,000 --> 00:28:41,390 Magneten skaber en felt, som ændrer 568 00:28:41,390 --> 00:28:44,600 polariteten af ​​en lille, lille del af metalpartiklerne 569 00:28:44,600 --> 00:28:46,960 som frakke hver fad overflade. 570 00:28:46,960 --> 00:28:50,020 Et mønster række disse små ladede områder på disken 571 00:28:50,020 --> 00:28:54,590 repræsenterer en enkelt bit af data i binære talsystem bruges af computere. 572 00:28:54,590 --> 00:28:57,510 >> Nu, hvis strømmen er sendt en vej gennem læse / skrive hoved, 573 00:28:57,510 --> 00:28:59,899 området er polariseret i en retning. 574 00:28:59,899 --> 00:29:01,940 Hvis den aktuelle sendes i den modsatte retning, 575 00:29:01,940 --> 00:29:04,020 polariseringen er vendt. 576 00:29:04,020 --> 00:29:06,440 Hvordan får man data fra harddisken? 577 00:29:06,440 --> 00:29:08,190 Bare vende processen. 578 00:29:08,190 --> 00:29:10,440 Så det er partiklerne på disk, der får den nuværende 579 00:29:10,440 --> 00:29:12,260 i læse / skrive hoved bevægelse. 580 00:29:12,260 --> 00:29:14,580 Sammensæt millioner af disse magnetiseret segmenter, 581 00:29:14,580 --> 00:29:16,220 og du har fået en fil. 582 00:29:16,220 --> 00:29:21,030 >> Nu kan stykker af en enkelt fil være spredt over et drevets fade, 583 00:29:21,030 --> 00:29:24,060 lidt ligesom det rod af papirer på dit skrivebord. 584 00:29:24,060 --> 00:29:27,590 Så en speciel ekstra fil holder styr på, hvor alt er. 585 00:29:27,590 --> 00:29:30,440 Må ikke du ønsker du havde noget i den stil? 586 00:29:30,440 --> 00:29:31,290 >> [END AFSPIL] 587 00:29:31,290 --> 00:29:36,260 >> Så bliver hentydet til der, måske, er dette emne fra i går af sletning. 588 00:29:36,260 --> 00:29:38,380 Når du sletter en fil, går vi sagde 589 00:29:38,380 --> 00:29:41,020 at en computer faktisk gør hvad, når du trækker noget 590 00:29:41,020 --> 00:29:44,110 til Papirkurven eller trash bin? 591 00:29:44,110 --> 00:29:45,150 Det glemmer bare det. 592 00:29:45,150 --> 00:29:47,540 Men 0'er og 1-taller, de magnetiske partikler 593 00:29:47,540 --> 00:29:50,640 at ligne rød og blå ting her, eller min arm her, 594 00:29:50,640 --> 00:29:52,350 er der stadig på harddisken. 595 00:29:52,350 --> 00:29:56,090 >> Og så findes der software-- Norton Utilities og Yesteryear 596 00:29:56,090 --> 00:29:58,159 og andre mere moderne software-- der bare 597 00:29:58,159 --> 00:30:01,200 vil scanne en hel harddisk søger på alle disse 0'er og 1'er, fordi det 598 00:30:01,200 --> 00:30:06,890 viser sig, at de fleste fil formater-- Word-dokumenter, Excel-filer, billeder, 599 00:30:06,890 --> 00:30:10,380 video files-- alle har visse mønstre, der er fælles blandt dem. 600 00:30:10,380 --> 00:30:12,550 Hver videofil måske være af en anden video, 601 00:30:12,550 --> 00:30:14,870 men de første adskillige bits er som regel de samme. 602 00:30:14,870 --> 00:30:16,790 Eller de sidste mange bits er som regel de samme. 603 00:30:16,790 --> 00:30:19,910 >> Og så med stor sandsynlighed, du kan søge efter disse mønstre. 604 00:30:19,910 --> 00:30:23,700 Og selv hvis filen er blevet glemt, du kan sige med stor sandsynlighed, 605 00:30:23,700 --> 00:30:28,460 men det ligner et Word-dokument, lader gendanne den og un-glemme det, 606 00:30:28,460 --> 00:30:28,990 hvis du vil. 607 00:30:28,990 --> 00:30:32,330 Og så er, hvordan du kan gendanne data, der enten har været et uheld 608 00:30:32,330 --> 00:30:36,560 slettet eller slettes eller bevidst slettet for uanset formål. 609 00:30:36,560 --> 00:30:42,530 >> Derimod sikker sletning gør hvad i forbindelse med et billede som dette? 610 00:30:42,530 --> 00:30:44,059 Præcis, gør dem alle tilfældigt. 611 00:30:44,059 --> 00:30:46,350 Så det slags flytter nogle af dem ned, nogle af dem op, 612 00:30:46,350 --> 00:30:49,433 efterlader nogle af dem uændret, og generelt gør tilfældig støj ud af det, 613 00:30:49,433 --> 00:30:52,960 eller bare måske gør alle dem 0'er eller dem alle 1 s. 614 00:30:52,960 --> 00:30:56,350 Og at også kan generelt krat dine data væk. 615 00:30:56,350 --> 00:31:00,160 >> Så lad os nu vende tilbage til spørgsmålet af beregningsmæssige tænkning, hvorved 616 00:31:00,160 --> 00:31:03,270 vi har formlen indgange. 617 00:31:03,270 --> 00:31:06,390 Og algoritmer giver du udgange i sidste ende. 618 00:31:06,390 --> 00:31:09,270 Vi fokuserer nu på input og udgange, for nu, jeg 619 00:31:09,270 --> 00:31:12,159 krav vi har en måde repræsenterer indgange og udgange. 620 00:31:12,159 --> 00:31:13,450 Vi bare vil bruge binær. 621 00:31:13,450 --> 00:31:15,910 >> Og uanset hvad vi ønsker at repræsentere dag, 622 00:31:15,910 --> 00:31:20,230 uanset om det er et tal eller et bogstav eller tusindvis heraf i en telefonbog 623 00:31:20,230 --> 00:31:23,210 eller billeder eller film, i slutningen af dagen, det hele er 0'er og 1'er. 624 00:31:23,210 --> 00:31:26,640 Og jeg hævder, at selv om dette er en super simpel verden med kun 0'er 625 00:31:26,640 --> 00:31:28,240 og 1 s, kan vi bygge os selv op. 626 00:31:28,240 --> 00:31:32,210 Og vi har set et eksempel på at med bogstaver hidtil. 627 00:31:32,210 --> 00:31:35,615 >> Så lad os nu fokusere på dette midterste ingrediens, en algoritme. 628 00:31:35,615 --> 00:31:38,190 Og lad os vende tilbage til dette eksempel på Mike Smith. 629 00:31:38,190 --> 00:31:41,689 Så i dette telefonbog, som ganske vist, vi bruger ikke så meget længere, 630 00:31:41,689 --> 00:31:42,980 der er et problem, der skal løses. 631 00:31:42,980 --> 00:31:45,040 Vi ønsker at finde en som Mike Smith. 632 00:31:45,040 --> 00:31:47,520 >> Og hvad kunne jeg gøre for at finde Mike? 633 00:31:47,520 --> 00:31:51,197 Tja, jeg kunne bare åbne op denne bog, starte på den første side, 634 00:31:51,197 --> 00:31:52,780 og indse, åh, jeg er i et afsnit. 635 00:31:52,780 --> 00:31:53,510 Mike er der ikke. 636 00:31:53,510 --> 00:31:55,510 Jeg har brug for S sektion for Smith. 637 00:31:55,510 --> 00:31:58,192 Så bare holde dreje én side ad gangen. 638 00:31:58,192 --> 00:32:00,900 Lad mig foregive, at det er alt hvide sider og ikke gule sider, 639 00:32:00,900 --> 00:32:02,910 fordi vi kommer ikke til at finde Mike i de gule sider alligevel. 640 00:32:02,910 --> 00:32:04,034 Men jeg er i de hvide sider. 641 00:32:04,034 --> 00:32:05,340 Og nu er jeg i afsnittet B. 642 00:32:05,340 --> 00:32:06,810 Jeg har stadig ikke fundet ham. 643 00:32:06,810 --> 00:32:08,890 Så jeg holde vender en side ad 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 sæt af instruktioner for at løse nogle problemer. 646 00:32:12,440 --> 00:32:16,480 Med andre ord, se på side, hvis Mike er ikke på det, 647 00:32:16,480 --> 00:32:20,020 vende side, og gentagelser igen og igen og igen, 648 00:32:20,020 --> 00:32:21,760 ideelt ser ned som du gør det. 649 00:32:21,760 --> 00:32:24,120 Så er denne algoritme, denne proces, korrekt? 650 00:32:24,120 --> 00:32:27,400 651 00:32:27,400 --> 00:32:28,830 >> Undskyld. 652 00:32:28,830 --> 00:32:30,056 Nej, jeg hører nogle nos. 653 00:32:30,056 --> 00:32:33,250 654 00:32:33,250 --> 00:32:36,125 OK, men det is-- yeah, det er helt sikkert kedelig. 655 00:32:36,125 --> 00:32:39,000 Ligesom, vi vil være her hele dagen, hvis jeg holde udkig efter Mike ved denne hastighed. 656 00:32:39,000 --> 00:32:41,430 Men lad mig hævder det er korrekt. 657 00:32:41,430 --> 00:32:43,850 Det er dumt, men det er korrekt. 658 00:32:43,850 --> 00:32:47,209 >> I slutningen af ​​dagen, længe det måske tage, jeg vil finde Mike hvis han er derinde 659 00:32:47,209 --> 00:32:48,250 og jeg betaler opmærksomhed. 660 00:32:48,250 --> 00:32:50,230 Og jeg til sidst nå sit side. 661 00:32:50,230 --> 00:32:52,890 Og hvis jeg får for langt, hvis Jeg kommer til T-sektion, 662 00:32:52,890 --> 00:32:55,900 så kan jeg lidt optimere og bare sige, hm, alle gjort. 663 00:32:55,900 --> 00:32:57,980 Jeg behøver ikke engang at spilde tid går til Z s. 664 00:32:57,980 --> 00:33:00,010 Men dette er en meget lineær tilgang, hvis du 665 00:33:00,010 --> 00:33:03,370 vil, en meget slags venstre mod højre tilgang, en lige linje. 666 00:33:03,370 --> 00:33:05,560 Og dens korrekte men langsomt. 667 00:33:05,560 --> 00:33:09,250 >> Så jeg husker fra folkeskolen, sortere af en optimering fra en første grader, 668 00:33:09,250 --> 00:33:13,756 hvor jeg lærte at tælle ikke af dem, men ved twos-- så 2, 4, 6. 669 00:33:13,756 --> 00:33:15,630 Det er A, meget sværere at gø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 Hvad med at algoritme? 672 00:33:21,190 --> 00:33:23,150 Er det mere effektivt? 673 00:33:23,150 --> 00:33:23,880 Er det hurtigere? 674 00:33:23,880 --> 00:33:25,365 >> PUBLIKUM: Det er effektiv. 675 00:33:25,365 --> 00:33:28,560 >> DAVID MALAN: Ja, så det er def-- det er bogstaveligt dobbelt så hurtigt, antager jeg 676 00:33:28,560 --> 00:33:30,170 ikke får udløst op med mine fingre. 677 00:33:30,170 --> 00:33:32,294 Det er dobbelt så hurtigt, fordi Jeg vender gennem to 678 00:33:32,294 --> 00:33:36,560 sider på én gang i stedet for en, men det er potentielt i korrekt, fordi hvorfor? 679 00:33:36,560 --> 00:33:37,852 >> PUBLIKUM: Du springe nogle. 680 00:33:37,852 --> 00:33:41,185 DAVID MALAN: Right, hvad hvis Mike sker skal sandwiched-- måske når jeg er senere 681 00:33:41,185 --> 00:33:44,370 i telefonbogen, Mike sker for at være indlagt mellem disse to sider, 682 00:33:44,370 --> 00:33:46,720 og jeg bare blindt springe over det. 683 00:33:46,720 --> 00:33:48,490 Så vi har brug for lidt rettelse der. 684 00:33:48,490 --> 00:33:51,290 Når jeg ramte T-sektion, jeg kan ikke bare trygt sige, 685 00:33:51,290 --> 00:33:52,420 vi ikke finde Mike Smith. 686 00:33:52,420 --> 00:33:53,770 Jeg sandsynligvis nødt til at dobbelt tilbage. 687 00:33:53,770 --> 00:34:00,210 Eller i virkeligheden, når jeg når nogen opkaldt S-N, i stedet for S-M for Smith, 688 00:34:00,210 --> 00:34:02,790 straks, jeg kunne fordoble tilbage, fordi han måske 689 00:34:02,790 --> 00:34:03,900 var på den foregående side. 690 00:34:03,900 --> 00:34:05,070 >> Men jeg behøver ikke at dobbelt tilbage langt. 691 00:34:05,070 --> 00:34:08,030 I teorien, hvis jeg gør det på det rigtige tid, jeg bare gå tilbage en side. 692 00:34:08,030 --> 00:34:10,139 Så det er kun at tilsætte et ekstra trin. 693 00:34:10,139 --> 00:34:13,070 Så jeg har gået dobbelt så hurtigt, men det kostede mig en ekstra side. 694 00:34:13,070 --> 00:34:14,699 Men der føles som en nettogevinst. 695 00:34:14,699 --> 00:34:17,230 >> Men det er ikke, hvordan de fleste mennesker i dette rum ville løse dette problem. 696 00:34:17,230 --> 00:34:20,313 Hvad ville en typisk person måske en nogle år siden gør, at finde Mike Smith? 697 00:34:20,313 --> 00:34:22,900 698 00:34:22,900 --> 00:34:24,800 Ja, ikke finde Mike. 699 00:34:24,800 --> 00:34:27,190 Hvad skal jeg gøre? 700 00:34:27,190 --> 00:34:31,027 Så få lidt tættere, men jeg gør know-- hvad der er sandt om en telefonbog? 701 00:34:31,027 --> 00:34:32,110 PUBLIKUM: Det er sekventiel. 702 00:34:32,110 --> 00:34:32,760 DAVID MALAN: Det er sekventiel. 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 sektion, Mike er helt klart til højre, 705 00:34:36,540 --> 00:34:39,949 Jeg kan bogstaveligt talt rive problemet i half-- 706 00:34:39,949 --> 00:34:44,360 det er som regel lettere end at-- tåre problemet i halve og smide det væk, 707 00:34:44,360 --> 00:34:47,627 så nu har jeg et problem, der er ikke længere 1000 Og den slags, der var hårdt, 708 00:34:47,627 --> 00:34:50,210 fordi jeg tror jeg faktisk tore telefonbogen denne ikke time-- 709 00:34:50,210 --> 00:34:52,219 1.000 sider, men 500. 710 00:34:52,219 --> 00:34:54,750 >> Så problemet er bogstaveligt halvt så stor. 711 00:34:54,750 --> 00:34:58,170 Og det er temmelig overbevisende, fordi med mine tidligere algoritmer, udgave 712 00:34:58,170 --> 00:35:02,870 1 og 2, jeg kun gøre problemet én side mindre, to sider mindre 713 00:35:02,870 --> 00:35:03,470 på et tidspunkt. 714 00:35:03,470 --> 00:35:07,230 Betragtninger nu, jeg gjorde det 500 sider mindre alle på én gang. 715 00:35:07,230 --> 00:35:10,089 >> OK, så nu foreslår Karim at jeg går til højre halvdel. 716 00:35:10,089 --> 00:35:12,380 Så jeg har tænkt mig at gå nogenlunde til midten, give eller tage. 717 00:35:12,380 --> 00:35:15,185 Og hvis jeg gjorde det matematisk, Jeg kunne gå lige til midten. 718 00:35:15,185 --> 00:35:17,060 Og nu, jeg er klar, åh, Jeg er i T-sektion. 719 00:35:17,060 --> 00:35:18,280 Jeg faktisk gik for vidt. 720 00:35:18,280 --> 00:35:21,670 >> Men jeg kan, igen, rive problem i halve, smide det væk. 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 kun, hvad, 256 sider eller 250 sider, give eller tage lige nu. 723 00:35:28,780 --> 00:35:31,570 Men det er stadig langt mere end en side eller to sider. 724 00:35:31,570 --> 00:35:33,345 >> Og så nu, jeg går omtrent til midten. 725 00:35:33,345 --> 00:35:35,330 Åh, jeg gik ikke helt langt nok nu. 726 00:35:35,330 --> 00:35:37,880 Så jeg gentager, gentag, gentag, gentage, indtil jeg forhåbentlig 727 00:35:37,880 --> 00:35:40,360 efterladt med kun én side. 728 00:35:40,360 --> 00:35:44,000 >> Så der inviterer spørgsmålet, hvis jeg startede med omkring 1000 sider, 729 00:35:44,000 --> 00:35:47,340 hvor mange skridt tog det mig med version 1 af min algoritme? 730 00:35:47,340 --> 00:35:50,420 Tja, hvis Mike er i S sektion, i værste fald, 731 00:35:50,420 --> 00:35:52,630 det er temmelig tæt på slutningen af ​​alfabetet. 732 00:35:52,630 --> 00:35:56,559 Så hvis telefonbogen har 1.000 sider, Jeg finder Mike inden 1.000 sider, 733 00:35:56,559 --> 00:35:57,100 give eller tage. 734 00:35:57,100 --> 00:35:59,750 Måske er det ligesom 800 eller deromkring, men det er temmelig tæt på 1.000. 735 00:35:59,750 --> 00:36:01,680 >> Betragtninger, i den anden algoritme, hvor mange 736 00:36:01,680 --> 00:36:06,840 side vender maksimalt kunne jeg kræver at finde Mike Smith? 737 00:36:06,840 --> 00:36:09,970 Der er 1.000 sider, men jeg er gør dem to ad gangen. 738 00:36:09,970 --> 00:36:13,045 Right, så max ligesom 500ish, fordi hvis jeg går igennem hele telefonbogen, 739 00:36:13,045 --> 00:36:14,170 på hvilket tidspunkt, kan jeg stoppe. 740 00:36:14,170 --> 00:36:16,669 Men jeg kan barbere et par af bare stopper ved T-sektion. 741 00:36:16,669 --> 00:36:19,880 Men det er i værste fald 500 sider. 742 00:36:19,880 --> 00:36:24,710 >> Så hvor mange gange kan jeg opdele en 1,00o-side telefonbog i halve igen 743 00:36:24,710 --> 00:36:30,450 og igen og igen-- fra 1.000 til 500 til 250 til 125? 744 00:36:30,450 --> 00:36:32,250 Hvor lang tid før jeg ramte en side? 745 00:36:32,250 --> 00:36:35,510 746 00:36:35,510 --> 00:36:36,370 Ja, det er omkring 10. 747 00:36:36,370 --> 00:36:40,780 Afhængigt af afrunding og sådan, det er omkring 10 sider i alt behov for at blive vendt 748 00:36:40,780 --> 00:36:43,290 eller telefonbøger skal rives. 749 00:36:43,290 --> 00:36:44,710 >> Så det er temmelig stærk. 750 00:36:44,710 --> 00:36:48,170 Vi startede med en 1.000-siders problem i alle disse tre historier. 751 00:36:48,170 --> 00:36:51,850 Men i den første algoritme, det tog mig, værste fald, 1000 side 752 00:36:51,850 --> 00:36:52,740 vender sig for at finde Mike. 753 00:36:52,740 --> 00:36:55,590 Anden algoritme, 500 sider for at finde Mike. 754 00:36:55,590 --> 00:36:58,480 Tredje algoritme, til 10 sider finde Mike. 755 00:36:58,480 --> 00:37:00,230 Og det er endnu mere kraftfuld når du tror 756 00:37:00,230 --> 00:37:01,860 om sortering af en modsat scenario. 757 00:37:01,860 --> 00:37:05,680 Antag, at telefonen selskab næste år måske fusionerer to byer sammen, 758 00:37:05,680 --> 00:37:08,550 og telefonbogen er pludselig denne tykke, i stedet for dette, der, 759 00:37:08,550 --> 00:37:12,470 så 2.000 sider i stedet for 1000. 760 00:37:12,470 --> 00:37:15,640 Nå, min første algoritme søger Mike Smith i en 2000-siders telefonbog, 761 00:37:15,640 --> 00:37:21,460 værre tilfælde, det vil tage hvor mange side vender næste år? 762 00:37:21,460 --> 00:37:24,800 >> Telefonbog er 2.000 sider, so-- godt, ikke mere en. 763 00:37:24,800 --> 00:37:29,540 Hvis telefonbogen er dobbelt så tyk i den første algoritme, første algoritme, 764 00:37:29,540 --> 00:37:30,380 2000, ikke? 765 00:37:30,380 --> 00:37:33,005 I værste fald, Mike er virkelig tæt på afslutningen af ​​bogen, 766 00:37:33,005 --> 00:37:34,110 så det er 2.000 sider sving. 767 00:37:34,110 --> 00:37:38,070 Anden algoritme går af toere, ligesom 1.000 sider. 768 00:37:38,070 --> 00:37:41,490 >> Men hvad med i min tredje og seneste algoritme? 769 00:37:41,490 --> 00:37:44,950 Hvis telefonen selskab fordobler antal sider fra 1000 til 2000, 770 00:37:44,950 --> 00:37:47,770 hvor mange flere gange behøver jeg rive den bog i halvdelen at finde Mike? 771 00:37:47,770 --> 00:37:48,710 >> PUBLIKUM: Bare en. 772 00:37:48,710 --> 00:37:51,001 >> DAVID MALAN: Bare en mere, fordi med en side tåre, 773 00:37:51,001 --> 00:37:53,270 Jeg kan bogstaveligt talt opdele og erobre, om man vil, 774 00:37:53,270 --> 00:37:57,410 dette problem i halve taking en massiv bid af det. 775 00:37:57,410 --> 00:38:01,420 Og så dette er et eksempel på effektivitet og velsagtens en algoritme 776 00:38:01,420 --> 00:38:04,100 med, som vi alle er slags intuitivt bekendt. 777 00:38:04,100 --> 00:38:07,780 Men det er lige så korrekt som mine andre algoritmer 778 00:38:07,780 --> 00:38:09,630 med denne tweak for den anden algoritme, 779 00:38:09,630 --> 00:38:11,290 men det er så meget mere effektiv. 780 00:38:11,290 --> 00:38:14,030 >> Og i virkeligheden, hvad en computer videnskabsmand, eller til gengæld en programmør, 781 00:38:14,030 --> 00:38:17,580 ville typisk gøre, når du skriver kode er at forsøge at finde ud af, 782 00:38:17,580 --> 00:38:19,960 okay, jeg vil ikke have min Programmet bare at være korrekt, 783 00:38:19,960 --> 00:38:23,220 Jeg vil også det at være effektiv og løse problemer godt. 784 00:38:23,220 --> 00:38:26,450 Forestil dig i den virkelige verden i dag, ligesom Google indekserer, søgninger 785 00:38:26,450 --> 00:38:31,580 ligesom milliarder af sider, tænk hvis de anvendes den første algoritme til at finde katte 786 00:38:31,580 --> 00:38:34,620 blandt en milliard Og den slags ser på den første side i deres database, 787 00:38:34,620 --> 00:38:37,700 den anden, den tredje, bare at kigge for en kat, på udkig efter en kat. 788 00:38:37,700 --> 00:38:40,350 Det er temmelig darn langsom det synes. 789 00:38:40,350 --> 00:38:43,170 De kunne i stedet bruge noget kaldet binær søgning, som 790 00:38:43,170 --> 00:38:47,420 er ingen coincidence-- bi betyder to, vi holde dividere noget i to, i half-- 791 00:38:47,420 --> 00:38:50,205 de kunne bruge binær søgning og måske finde katte endnu hurtigere, 792 00:38:50,205 --> 00:38:51,830 eller hvad det er, du søger efter. 793 00:38:51,830 --> 00:38:54,125 >> Og helt ærligt, er der endnu mere avanceret algoritmer 794 00:38:54,125 --> 00:38:56,250 at gøre meget mere end blot dividere ting i halve 795 00:38:56,250 --> 00:38:58,180 for at finde oplysninger hurtigt. 796 00:38:58,180 --> 00:39:00,880 Og vi vil snakke lidt om dem efter frokost i dag. 797 00:39:00,880 --> 00:39:02,640 Så lad mig bare prøve at repræsentere dette. 798 00:39:02,640 --> 00:39:05,380 Vi behøver ikke at gå ind i enhver matematik eller faktiske tal. 799 00:39:05,380 --> 00:39:07,070 Vi kan tale om dette i det abstrakte. 800 00:39:07,070 --> 00:39:11,580 >> Men lad mig bare foreslå, hvis du havde en diskussion nu 801 00:39:11,580 --> 00:39:13,491 med ingeniørerne foreslå denne algoritme 802 00:39:13,491 --> 00:39:15,490 og du forsøger at gøre en beregnet beslutning, 803 00:39:15,490 --> 00:39:17,285 fordi måske den ingeniør siger til dig, du 804 00:39:17,285 --> 00:39:19,910 hvad, jeg kan gennemføre en lineær søgning i som to minutter. 805 00:39:19,910 --> 00:39:21,150 Så nemt. 806 00:39:21,150 --> 00:39:24,790 Binær søgning er ikke så fancy, men det vil tage mig ligesom 10 minutter, 807 00:39:24,790 --> 00:39:26,650 så 5 gange så lang. 808 00:39:26,650 --> 00:39:30,900 >> Der er en handel her, selv i form for at beslutte, hvad software til at skrive. 809 00:39:30,900 --> 00:39:34,760 Skriver du enklere algoritme, der vil bare tage dig to minutter? 810 00:39:34,760 --> 00:39:39,880 Eller har du bruge mere tid, 10 minutter, skrive mere avanceret algoritme? 811 00:39:39,880 --> 00:39:43,540 Hvordan afgør den slags spørgsmål? 812 00:39:43,540 --> 00:39:46,710 Eller du kunne gøre det lidt mere virkeligt. 813 00:39:46,710 --> 00:39:50,610 Jeg fortæller min chef det kommer til at tage mig ene uge eller 10 uger 814 00:39:50,610 --> 00:39:52,490 at gennemføre software på denne måde, hvordan 815 00:39:52,490 --> 00:39:56,103 kan du beslutte, hvilke algoritme til grønt lys? 816 00:39:56,103 --> 00:39:56,603 Karim? 817 00:39:56,603 --> 00:39:57,550 >> PUBLIKUM: Publikum, jeg gætte. 818 00:39:57,550 --> 00:39:57,960 >> DAVID MALAN: Publikum. 819 00:39:57,960 --> 00:39:59,460 Hvad mener du med publikum? 820 00:39:59,460 --> 00:40:03,460 >> PUBLIKUM: Hvis det går skal anvendes af brugerne 821 00:40:03,460 --> 00:40:09,050 der [uhørligt] af brugere [uhørligt]. 822 00:40:09,050 --> 00:40:11,232 Men hvis det er noget, du er bare gør for dig selv 823 00:40:11,232 --> 00:40:13,946 at lette et problem, [Uhørligt] hurtigere. 824 00:40:13,946 --> 00:40:16,820 DAVID MALAN: Ja, det er hurtigt og beskidt er en god måde at beskrive det. 825 00:40:16,820 --> 00:40:18,695 Faktisk, hvis du er beskriver meget af min tid 826 00:40:18,695 --> 00:40:23,630 i Grad skole, hvor ofte gange, Jeg skrev dårlig kode bevidst so-- 827 00:40:23,630 --> 00:40:26,490 mindste, det er sådan jeg rationaliseres it-- bevidst så, 828 00:40:26,490 --> 00:40:30,670 fordi selvom jeg skrev koden der var forholdsvis langsom til at udføre, 829 00:40:30,670 --> 00:40:33,750 Jeg var i stand til at skrive selve koden temmelig hurtige, udgifter kun få minutter 830 00:40:33,750 --> 00:40:35,107 eller timer ikke dage. 831 00:40:35,107 --> 00:40:37,190 Og det viste sig, jeg lejlighedsvis behov for at sove. 832 00:40:37,190 --> 00:40:41,270 Så selv om min kode kræves 8 timer at køre, godt det er fint, 833 00:40:41,270 --> 00:40:42,850 Jeg vil bare gå på vågeblus, mens den kører. 834 00:40:42,850 --> 00:40:46,350 >> Så på det tidspunkt, jeg troede, det var meget klog, selvom jeg tilsyneladende 835 00:40:46,350 --> 00:40:48,990 arbejdet meget langsomt gennem min PhD. 836 00:40:48,990 --> 00:40:52,270 Men det modsatte af det er at hvis jeg skulle skrive software 837 00:40:52,270 --> 00:40:55,930 for andre mennesker, der betød mere end mig, godt, 838 00:40:55,930 --> 00:40:59,580 have dem vente 8 timer til komme tilbage deres søgeresultater 839 00:40:59,580 --> 00:41:01,350 er ikke alt, overbevisende. 840 00:41:01,350 --> 00:41:04,090 Og så bruge mere tid op foran for at skrive software 841 00:41:04,090 --> 00:41:07,300 der er mere effektiv, mere ligesom vores tredje algoritme, 842 00:41:07,300 --> 00:41:09,780 formentlig gavner brugerne over tid. 843 00:41:09,780 --> 00:41:12,710 Så det er virkelig afhængig løbet tid, hvordan disse omkostninger tilføje op. 844 00:41:12,710 --> 00:41:14,960 Hvis du vil skrive software for at bruge det én gang, 845 00:41:14,960 --> 00:41:17,240 sandsynligvis lige så godt gøre hurtig og beskidt, som man siger. 846 00:41:17,240 --> 00:41:18,198 Bare smide det sammen. 847 00:41:18,198 --> 00:41:20,560 Det er kode, embarrasses dig, det er så slemt, 848 00:41:20,560 --> 00:41:23,860 men det får jobbet gjort korrekt, selvom det ikke er effektivt. 849 00:41:23,860 --> 00:41:27,200 Omvendt du bruger mere tid om noget, får det lige højre. 850 00:41:27,200 --> 00:41:30,730 Og derefter afskrives over tid, at upfront omkostninger af tid 851 00:41:30,730 --> 00:41:34,330 er nok værd, hvis du holder optimering for den fælles sag. 852 00:41:34,330 --> 00:41:37,620 >> Og ja, det er et tema i programmering, eller datalogi mere 853 00:41:37,620 --> 00:41:41,390 generelt, forsøger at optimere ikke for den ualmindelige tilfælde 854 00:41:41,390 --> 00:41:44,390 men de fælles case-- hvad operation kommer til at ske igen og igen? 855 00:41:44,390 --> 00:41:47,730 Hvis du vil have milliarder af brugere, der søger på dit websted, 856 00:41:47,730 --> 00:41:52,030 bør du nok bruge de ekstra uger op foran skrive bedre software, 857 00:41:52,030 --> 00:41:53,670 således at alle dine brugere gavn. 858 00:41:53,670 --> 00:41:57,840 Lad os nu prøve at fange dette til en lidt billedligt, men ikke så meget 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 lad mig sige, at dette er tid. 862 00:42:04,260 --> 00:42:06,660 Og det er ligegyldigt hvad-- faktisk, nej, ikke tid. 863 00:42:06,660 --> 00:42:08,320 Lad os sætte det på den anden akse. 864 00:42:08,320 --> 00:42:15,700 Lad os sige, at dette er den tid, og dette er størrelsen af ​​problemet. 865 00:42:15,700 --> 00:42:17,830 >> Og en datalog kan generelt ringe 866 00:42:17,830 --> 00:42:20,820 dette blot n. n er som vores gå til variabel, hvor 867 00:42:20,820 --> 00:42:26,351 n er et tal, n nummer, og det er den antal uanset indgange du har. 868 00:42:26,351 --> 00:42:28,100 Så i dette tilfælde er n antallet af sider. 869 00:42:28,100 --> 00:42:30,150 Så det kunne være 1000 i tilfældet, vi lige fortalt. 870 00:42:30,150 --> 00:42:31,969 >> Så tiden kan være enhver måleenhed. 871 00:42:31,969 --> 00:42:32,760 Måske, det er anden. 872 00:42:32,760 --> 00:42:33,410 Måske, det er dag. 873 00:42:33,410 --> 00:42:34,590 Måske, det er ligesom side sving. 874 00:42:34,590 --> 00:42:35,215 Betyder ikke noget. 875 00:42:35,215 --> 00:42:38,840 Uanset hvad du ønsker at tælle i, at vil være tid eller koste tilsvarende. 876 00:42:38,840 --> 00:42:42,400 >> Så med det allerførste algoritme, hvis jeg f.eks 877 00:42:42,400 --> 00:42:45,920 havde en 1000-siders telefonbog, Jeg har tænkt mig at tegne en prik der, 878 00:42:45,920 --> 00:42:51,450 fordi hvis det er 1.000 sider, tog det omtrent 1000 side vender, give eller tage. 879 00:42:51,450 --> 00:42:54,100 Og så hvis jeg havde en 2000-side telefonbog, 880 00:42:54,100 --> 00:42:57,200 og jeg har tænkt mig at tegne en anden dot her, fordi det for 2.000 sider, 881 00:42:57,200 --> 00:42:59,810 det er ligesom 2.000 sekunder eller side vender eller hvad. 882 00:42:59,810 --> 00:43:02,480 Og så når jeg sagde tidligere, er det slags et lineært forhold, 883 00:43:02,480 --> 00:43:06,020 det var bevidst, fordi jeg ønskede senere on-- ret nu-- at tegne en streg. 884 00:43:06,020 --> 00:43:07,770 Det er lidt af en lige line forhold. 885 00:43:07,770 --> 00:43:10,180 Hældningen er 1/1, hvis du vil. 886 00:43:10,180 --> 00:43:14,630 >> I mellemtiden er den anden algoritme sagde, hvis du har fået 1.000 sider 887 00:43:14,630 --> 00:43:17,680 og du brugte den anden algoritme, hvor jeg talte med 2 s, dreje 888 00:43:17,680 --> 00:43:22,564 to sider ad gangen, skal jeg tegne en prik under eller over min oprindelige prik? 889 00:43:22,564 --> 00:43:23,450 >> PUBLIKUM: Under. 890 00:43:23,450 --> 00:43:27,992 >> DAVID MALAN: Nedenfor, for som vi har set, det tager mindre tid, halvt så meget tid. 891 00:43:27,992 --> 00:43:29,950 Så dot bør være halvt så højt som den anden. 892 00:43:29,950 --> 00:43:33,330 Og samme deal herovre, denne prik skal nok være nogenlunde der. 893 00:43:33,330 --> 00:43:39,666 Og så min anden algoritme, på samme måde, har en lineær sammenhæng med tiden. 894 00:43:39,666 --> 00:43:41,990 Og vi kan trække det som sådan. 895 00:43:41,990 --> 00:43:45,950 >> Så nu, den tredje og sidste algoritme er lidt sværere at trække. 896 00:43:45,950 --> 00:43:49,530 Men intuitivt, hvis jeg har fået 1000 sider med min tredje algoritme, 897 00:43:49,530 --> 00:43:52,340 Det bør kun tage mig som 10 trin. 898 00:43:52,340 --> 00:43:57,500 Og hvis jeg har fået 2.000 sider med min tredje algoritme, 899 00:43:57,500 --> 00:44:01,570 det skal tage mig ikke 10 trin, men 11, bare en mere. 900 00:44:01,570 --> 00:44:03,610 Så vi kun knap kommer til at se dette. 901 00:44:03,610 --> 00:44:06,010 >> Og det viser sig, hvis Jeg zoome ind på dette, er jeg 902 00:44:06,010 --> 00:44:09,320 vil overdrive for effekt, formen af ​​denne linje, i sidste ende, 903 00:44:09,320 --> 00:44:11,990 er ikke en lige line-- fordi, ja hvis det var, 904 00:44:11,990 --> 00:44:15,390 det ville se mere som others-- det er faktisk en buet linje 905 00:44:15,390 --> 00:44:19,265 at hvis vi zoomer ind, går til at se meget mere som denne. 906 00:44:19,265 --> 00:44:21,670 Det-- godt, OK, ignorere denne del. 907 00:44:21,670 --> 00:44:25,330 Det var min pen går af vinkel. 908 00:44:25,330 --> 00:44:29,000 Det er en buet linie, der altid er stigende, altid, altid, altid 909 00:44:29,000 --> 00:44:32,100 stigende, men kun lige knap. 910 00:44:32,100 --> 00:44:36,260 >> Og så over tid, har du en forhold, der er mere som dette. 911 00:44:36,260 --> 00:44:37,540 Det ser næsten lige. 912 00:44:37,540 --> 00:44:40,330 Men det er stadig så langsomt stigende. 913 00:44:40,330 --> 00:44:44,780 Men for næsten alle punkter langs din x-aksen, vandret akse, 914 00:44:44,780 --> 00:44:46,550 Det er lavere end de andre linjer. 915 00:44:46,550 --> 00:44:49,930 >> Så det kunne være en sammenhæng n, hvor hvis du har n-sider, 916 00:44:49,930 --> 00:44:51,100 tager dig n sekunder. 917 00:44:51,100 --> 00:44:53,320 Dette kan være et forhold n / 2. 918 00:44:53,320 --> 00:44:56,710 Du har n-sider, det tager du n / 2 sekunder, halvt så mange. 919 00:44:56,710 --> 00:45:00,590 Og dette er en logaritmisk forhold, der 920 00:45:00,590 --> 00:45:08,920 hvis du husker, log basis 2 af n fanger denne form for vækst, så at sige. 921 00:45:08,920 --> 00:45:12,000 Så dette er den slags hellig gral blandt de tre af disse 922 00:45:12,000 --> 00:45:15,940 her, fordi det er bare så meget mere effektiv, men velsagtens mere komplekse 923 00:45:15,940 --> 00:45:18,610 at implementere. 924 00:45:18,610 --> 00:45:20,510 Nogen spørgsmål? 925 00:45:20,510 --> 00:45:26,220 >> Jamen så lad mig gøre det, så lad mig åbne en tekst vindue 926 00:45:26,220 --> 00:45:29,100 bare så vi kan forsøge at formalisere noget her. 927 00:45:29,100 --> 00:45:32,410 Så lad mig gå videre nu, og gennemføre denne algoritme 928 00:45:32,410 --> 00:45:35,170 til at finde Mike Smith i kode, hvis du vil, pseudokode kode. 929 00:45:35,170 --> 00:45:36,620 Jeg har ikke tænkt mig at bruge Java eller C ++. 930 00:45:36,620 --> 00:45:38,610 Jeg skal bare bruge slags Engelsk-lignende syntaks, som vi 931 00:45:38,610 --> 00:45:40,151 ville principielt gør pseudokode kode. 932 00:45:40,151 --> 00:45:41,660 Her har jeg et tomt vindue. 933 00:45:41,660 --> 00:45:48,180 Og jeg siger trin 1 i den meget første algoritme er afhente telefonbog. 934 00:45:48,180 --> 00:45:51,740 Trin 2 er åben bog for første side. 935 00:45:51,740 --> 00:45:58,080 Trin 3 vil være se på side for Mike Smith. 936 00:45:58,080 --> 00:46:02,740 Hvis på side, kalder Mike. 937 00:46:02,740 --> 00:46:11,640 ellers turn side og gå til trin 3. 938 00:46:11,640 --> 00:46:13,590 Udført, lad os sige. 939 00:46:13,590 --> 00:46:18,110 >> Og så det er ikke helt perfekt, som vi vil se i et øjeblik. 940 00:46:18,110 --> 00:46:21,050 Men lad os overveje, hvad begreber, jeg har introduceret her. 941 00:46:21,050 --> 00:46:24,450 Så trin 1 og 2 og 3 er temmelig meget verber. 942 00:46:24,450 --> 00:46:26,544 De er udsagn, actions-- gøre dette. 943 00:46:26,544 --> 00:46:28,710 Og så i en programmering sprog, ville vi generelt 944 00:46:28,710 --> 00:46:32,349 kalde dem erklæringer eller funktioner eller procedurer, 945 00:46:32,349 --> 00:46:33,640 kalde dem en række ting. 946 00:46:33,640 --> 00:46:35,460 Men de er bare actions-- gøre dette. 947 00:46:35,460 --> 00:46:40,370 >> Trin 4 er fundamentalt anderledes, fordi det er slags stille et spørgsmål. 948 00:46:40,370 --> 00:46:42,400 Det siger vi er slags på en gaffel i vejen. 949 00:46:42,400 --> 00:46:48,000 Hvis Mike er på siden, så ring ham, så drej til venstre, hvis du vil. 950 00:46:48,000 --> 00:46:52,170 Og hvis ikke, gå tilbage til nogle andre page-- eller rettere, undskyld, 951 00:46:52,170 --> 00:46:56,650 gå tilbage til et andet trin, der inducerer en slags looping konstrukt. 952 00:46:56,650 --> 00:46:59,530 Og vi gør det igen og igen og igen. 953 00:46:59,530 --> 00:47:01,300 >> Og faktisk, ved du hvad? 954 00:47:01,300 --> 00:47:01,800 Ja. 955 00:47:01,800 --> 00:47:04,704 956 00:47:04,704 --> 00:47:09,010 ellers hvis i slutningen af ​​bogen stop. 957 00:47:09,010 --> 00:47:11,624 Så vi har brug for sådan en tredje tilstand, fordi du 958 00:47:11,624 --> 00:47:14,290 kan ikke holde dreje siden annoncen nauseum, fordi i sidste ende, vil jeg 959 00:47:14,290 --> 00:47:15,320 ramte slutningen af ​​bogen. 960 00:47:15,320 --> 00:47:18,546 Og en fejl i et program kan være ikke foregribe dette scenario. 961 00:47:18,546 --> 00:47:21,420 Og så vil jeg bare indset, åh, vent et minut, jeg har brug for en tredje scenarie. 962 00:47:21,420 --> 00:47:23,900 Hvis jeg er ude af sider, jeg bør virkelig bare stoppe. 963 00:47:23,900 --> 00:47:25,330 Ellers er det udefineret. 964 00:47:25,330 --> 00:47:29,260 Hvad vil der ske, hvis jeg holder siger vende siden og gå tilbage, 965 00:47:29,260 --> 00:47:31,810 Dette er, når computere fryse eller nedbrud, når du rammer 966 00:47:31,810 --> 00:47:34,160 nogle uforudsete situation som. 967 00:47:34,160 --> 00:47:37,280 >> Nu, hvad Mike Smiths tredje algorithm-- 968 00:47:37,280 --> 00:47:43,150 afhente telefonbogen, åben bog at first-- til 969 00:47:43,150 --> 00:47:48,640 nej, ikke første side denne gang, at middle-- åh, ja, det havde 970 00:47:48,640 --> 00:47:49,640 være den anden algoritme. 971 00:47:49,640 --> 00:47:50,590 Lad os bare springe til den tredje. 972 00:47:50,590 --> 00:47:50,930 >> PUBLIKUM: Åh, jeg er ked af. 973 00:47:50,930 --> 00:47:51,971 >> DAVID MALAN: Det er fint. 974 00:47:51,971 --> 00:47:58,590 Lad os bare springe til third-- åbne til midten og nu ser for Mike Smith. 975 00:47:58,590 --> 00:48:02,300 hvis på side, kalder Mike. 976 00:48:02,300 --> 00:48:04,910 Og hvad gør vi ønsker at sige her? 977 00:48:04,910 --> 00:48:06,134 ellers hvad? 978 00:48:06,134 --> 00:48:10,620 979 00:48:10,620 --> 00:48:12,370 Vi kan udtrykke dette i en række forskellige måder. 980 00:48:12,370 --> 00:48:13,369 Der er ingen rigtige svar. 981 00:48:13,369 --> 00:48:20,819 982 00:48:20,819 --> 00:48:23,735 OK, hvis ikke igen, men vi er nødt til være-- OK, vi ønsker at dele i to, 983 00:48:23,735 --> 00:48:25,630 men ønsker vi at gå til venstre eller gå til højre? 984 00:48:25,630 --> 00:48:29,560 Hvordan kan vi udtrykke, at begrebet? 985 00:48:29,560 --> 00:48:31,790 Tja, i Mikes tilfælde, ja, det er fair. 986 00:48:31,790 --> 00:48:35,050 Men OK, så det er faktisk en god pointe. 987 00:48:35,050 --> 00:48:35,550 Det er fint. 988 00:48:35,550 --> 00:48:36,924 Vi vil holde gå med denne logik. 989 00:48:36,924 --> 00:48:38,182 Så-- 990 00:48:38,182 --> 00:48:39,810 >> PUBLIKUM: Mindre end halvdelen. 991 00:48:39,810 --> 00:48:40,560 DAVID MALAN: Ja. 992 00:48:40,560 --> 00:48:49,820 Så andet, hvis side er, vil vi sige, mindre end Smith, til venstre for Smith, 993 00:48:49,820 --> 00:48:52,220 then-- lad os se, er dette vil komplicere? 994 00:48:52,220 --> 00:49:01,885 andet, hvis side kommer før Smith, tåre i halve, smider hvoraf halvdelen? 995 00:49:01,885 --> 00:49:05,643 996 00:49:05,643 --> 00:49:09,140 >> PUBLIKUM: Jeg troede der var [uhørligt]. 997 00:49:09,140 --> 00:49:11,650 >> DAVID MALAN: jeg hører begge svar. 998 00:49:11,650 --> 00:49:12,431 >> PUBLIKUM: Venstre. 999 00:49:12,431 --> 00:49:14,430 DAVID MALAN: OK, kaste væk venstre halvdel, som Lakisa 1000 00:49:14,430 --> 00:49:19,700 sagde tidligere, den venstre halvdelen, så jeg slags 1001 00:49:19,700 --> 00:49:23,940 bare ønsker at gå at-- jeg gå til højre. 1002 00:49:23,940 --> 00:49:27,380 Eller ækvivalent, og jeg lavede en lille lidt af et rod af starten her, 1003 00:49:27,380 --> 00:49:30,760 Jeg ønsker effektivt at gå til trin 2 igen, 1004 00:49:30,760 --> 00:49:38,270 hvor åbne for middle-- eller open-- yeah, lad os bare sige, sider til midten. 1005 00:49:38,270 --> 00:49:39,020 Og det løser det. 1006 00:49:39,020 --> 00:49:39,936 Det er ikke længere en bog. 1007 00:49:39,936 --> 00:49:42,210 Det er bare halvdelen af ​​en bog, så åbne sider til midten. 1008 00:49:42,210 --> 00:49:44,010 >> else-- var der næsten. 1009 00:49:44,010 --> 00:49:54,000 Trin 6, andet, hvis side kommer efter Smith, rive i halve, smider højre halvdel, 1010 00:49:54,000 --> 00:49:55,680 derefter gå til trin 2. 1011 00:49:55,680 --> 00:49:58,920 1012 00:49:58,920 --> 00:50:05,230 ellers holde op, en fjerde scenario, hvis vi har ingen sider tilbage at vende. 1013 00:50:05,230 --> 00:50:06,394 Så vi kunne rense det op. 1014 00:50:06,394 --> 00:50:07,560 Og vi bør rense det op. 1015 00:50:07,560 --> 00:50:10,656 Dette er meget pseudokode kode, hvis du vil, meget højt niveau beskrivelse. 1016 00:50:10,656 --> 00:50:12,280 Men det betyder generelt fange ideen. 1017 00:50:12,280 --> 00:50:16,040 >> Og igen, i dette scenario, vi har begrebet en tilstand, 1018 00:50:16,040 --> 00:50:20,450 en filial, en gaffel i vejen, hvilket gør en decision-- hvis dette, gå på denne måde, 1019 00:50:20,450 --> 00:50:23,082 ellers hvis, gå på denne måde, ellers hvis, går den vej. 1020 00:50:23,082 --> 00:50:25,040 Og dette er en meget almindelig programmeringsteknik 1021 00:50:25,040 --> 00:50:27,721 at afgøre, hvilken retning at gå, så at sige. 1022 00:50:27,721 --> 00:50:29,970 Og vi har også en slags af looping struktur, hvor 1023 00:50:29,970 --> 00:50:32,440 vi laver noget igen og igen. 1024 00:50:32,440 --> 00:50:34,820 >> Nu viser det sig, meget som i dette eksempel, 1025 00:50:34,820 --> 00:50:37,660 bliver super præcis er vigtig. 1026 00:50:37,660 --> 00:50:42,180 Men vi har også set noget at vi holder kalde abstraktion. 1027 00:50:42,180 --> 00:50:45,490 Hvad betyder det at afhente telefonbog? 1028 00:50:45,490 --> 00:50:47,740 Vi er bare lidt at tage for givet i dette rum 1029 00:50:47,740 --> 00:50:49,340 at der har nogle semantisk mening. 1030 00:50:49,340 --> 00:50:51,740 Alle os bare lidt ved, åh, godt, afhente telefonbogen. 1031 00:50:51,740 --> 00:50:52,864 Hvad betyder det egentlig? 1032 00:50:52,864 --> 00:50:59,060 Nå, der virkelig betyder udvide hånd, læne over, udvide fingre, 1033 00:50:59,060 --> 00:51:03,890 knibe bog mellem fingrene, stå op, træk hånd mod dig. 1034 00:51:03,890 --> 00:51:05,940 Og vi kunne være virkelig pedantiske om dette, 1035 00:51:05,940 --> 00:51:08,640 virkelig bliver super præcis om, hvad jeg gør. 1036 00:51:08,640 --> 00:51:13,300 Men alle disse skridt kollektivt er hvad det betyder at afhente en telefonbog. 1037 00:51:13,300 --> 00:51:16,940 >> Og så tidligere, da jeg sagde, hver af disse to første udsagn 1038 00:51:16,940 --> 00:51:20,830 kan opfattes som en fortsætte eller en funktion, 1039 00:51:20,830 --> 00:51:24,090 virkelig det repræsenterer, hvad vi holde kalde en abstraktion. 1040 00:51:24,090 --> 00:51:28,770 Det er ligesom et højt niveau konceptuel beskrivelse af et problem, 1041 00:51:28,770 --> 00:51:31,110 faktisk involverer et par skridt. 1042 00:51:31,110 --> 00:51:34,190 Og så dette, også er en tilbagevendende emne i programmering, 1043 00:51:34,190 --> 00:51:41,125 hvorved jeg kunne skrive et program hjælp syntaks ligesom denne-- 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 er vil stjæle noget 1047 00:51:46,510 --> 00:51:48,090 fra de fleste programmeringssprog. 1048 00:51:48,090 --> 00:51:51,270 >> Nu, trin 1 ser endnu mere som en funktion, 1049 00:51:51,270 --> 00:51:53,160 som programmør ville kalde det. 1050 00:51:53,160 --> 00:51:58,650 Det ligner kode, at nogen har givet et navn til og givet 1051 00:51:58,650 --> 00:52:03,300 til mig at bruge somehow-- i andre ord, hvad den linje, jeg har fremhævet 1052 00:52:03,300 --> 00:52:07,050 repræsenterer funktionalitet, der måske Jeg vidste ikke engang gennemføre mig selv. 1053 00:52:07,050 --> 00:52:10,410 Nogen ældre, klogere end mig allerede regnet ud 1054 00:52:10,410 --> 00:52:12,700 hvordan du udtrykker begrebet af optagning en telefonbog. 1055 00:52:12,700 --> 00:52:15,860 Og det er ligesom de fem trin jeg lige raslede off, off toppen af ​​mit hoved. 1056 00:52:15,860 --> 00:52:19,350 >> Men han eller hun allerede gennemført dette, gav disse flere trin 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 parentesen er lige hvad de fleste programmører 1059 00:52:24,380 --> 00:52:27,100 gøre i slutningen af ​​udsagn som dette. 1060 00:52:27,100 --> 00:52:30,190 Jeg nu kan stå på hans eller hendes skuldre og aldrig igen, 1061 00:52:30,190 --> 00:52:32,465 tænke over, hvad det betyder at hente en telefonbog. 1062 00:52:32,465 --> 00:52:34,090 Jeg kan bare sige, afhente telefonbogen. 1063 00:52:34,090 --> 00:52:36,690 Og det er præcis, hvad alle af os mennesker gjorde her. 1064 00:52:36,690 --> 00:52:38,940 >> Da vi var sandsynligvis en år gamle, 2 år, 1065 00:52:38,940 --> 00:52:41,690 nogen havde at lære os, hvad det betød at afhente en telefonbog. 1066 00:52:41,690 --> 00:52:43,810 Og lige siden da, vi har abstraheret væk 1067 00:52:43,810 --> 00:52:46,739 fra dem meget uinteressant mekaniske trin. 1068 00:52:46,739 --> 00:52:48,530 Og vi bare have en intuitiv forståelse 1069 00:52:48,530 --> 00:52:50,480 af hvad det betyder at afhente en telefonbog. 1070 00:52:50,480 --> 00:52:55,730 >> Og du kan ekstrapolere nu til mere kompliceret things-- 1071 00:52:55,730 --> 00:52:57,640 konstruere en bygning. 1072 00:52:57,640 --> 00:52:59,940 Ligesom, at nogle mennesker, der faktisk har betydning. 1073 00:52:59,940 --> 00:53:03,080 Til entreprenører, arkitekter, der har nogle betydning. 1074 00:53:03,080 --> 00:53:06,400 Og de ville vide hvad de skal gøre, hvis Jeg sagde, gå opføre en bygning. 1075 00:53:06,400 --> 00:53:10,520 >> Men de fleste af os i rummet ikke kunne beskæftige sig med at abstraktionsniveau. 1076 00:53:10,520 --> 00:53:14,850 Du er nødt til at fortælle os gerne gå få skovlen og gå få betonen 1077 00:53:14,850 --> 00:53:17,250 og søm træstykkerne sammen, og hvad der ellers 1078 00:53:17,250 --> 00:53:18,830 er involveret i opbygningen af ​​en bygning. 1079 00:53:18,830 --> 00:53:21,690 Og det er, fordi vi ikke har endnu blevet programmeret til at forstå 1080 00:53:21,690 --> 00:53:23,629 hvad det betyder at opføre en bygning. 1081 00:53:23,629 --> 00:53:24,920 Vi har ikke den abstraktion. 1082 00:53:24,920 --> 00:53:26,570 Vi har ikke denne funktionalitet. 1083 00:53:26,570 --> 00:53:29,930 >> Og så, hvad du vil se i programmeringssprog i almindelighed 1084 00:53:29,930 --> 00:53:34,570 især mere moderne sprog, ligesom Java, PHP, Ruby, og Python, 1085 00:53:34,570 --> 00:53:37,610 de er meget mere moden end ældre sprog, 1086 00:53:37,610 --> 00:53:40,140 ligesom C og C ++ og endnu andre. 1087 00:53:40,140 --> 00:53:42,580 Og så de kommer med mere funktionalitet indbygget. 1088 00:53:42,580 --> 00:53:45,640 Mere kode er blevet skrevet af folk i fortiden 1089 00:53:45,640 --> 00:53:50,520 at vi nu kan ringe eller indkalde eller bruge, da jeg antyde 1090 00:53:50,520 --> 00:53:52,231 på dette fremhævede linje her. 1091 00:53:52,231 --> 00:53:55,230 Og så selvom vi ikke taler om programmeringssprog per se, 1092 00:53:55,230 --> 00:54:00,230 bare pseudokode kode, alle af ideer er stadig i den diskussion. 1093 00:54:00,230 --> 00:54:04,600 Og det viser sig præcision er super vigtigt, som er abstraktion. 1094 00:54:04,600 --> 00:54:06,570 Og lad os prøve at kommunikere, at som følger. 1095 00:54:06,570 --> 00:54:11,000 >> Jeg ved et uheld kunne have ødelagt dette ved at blinke et dias på skærmen 1096 00:54:11,000 --> 00:54:12,260 for tidligt. 1097 00:54:12,260 --> 00:54:16,550 Men lad mig bede om en modig frivillig, hvis du ikke har noget imod at komme op. 1098 00:54:16,550 --> 00:54:19,040 Du ville være foran kamera, hvis du er OK med det. 1099 00:54:19,040 --> 00:54:24,950 Ville nogen gerne komme op og give instruktioner til dine kolleger her? 1100 00:54:24,950 --> 00:54:29,540 Bare nødt til at komme herover og stå over her og sige nogle ord. 1101 00:54:29,540 --> 00:54:32,890 >> Victoria smiler mest og undgå mine øjne mest. 1102 00:54:32,890 --> 00:54:34,740 Ville du være villig til at komme videre op? 1103 00:54:34,740 --> 00:54:35,240 OKAY. 1104 00:54:35,240 --> 00:54:38,480 Og hvis alle andre på din sæder kunne tage ud et stykke papir skrot, 1105 00:54:38,480 --> 00:54:39,750 hvis du vil. 1106 00:54:39,750 --> 00:54:40,760 Foret papir er fint. 1107 00:54:40,760 --> 00:54:41,990 Kom rundt på denne måde. 1108 00:54:41,990 --> 00:54:44,580 Eller nogle af det papir, du fik i går, 1109 00:54:44,580 --> 00:54:46,493 bare noget blankt ark af 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 nogen, bare spørge din nabo, hvis du kunne. 1112 00:54:54,870 --> 00:55:04,220 1113 00:55:04,220 --> 00:55:07,580 >> Så for øjeblikket, for dette eksempel, Victoria 1114 00:55:07,580 --> 00:55:11,520 kommer til at spille rollen som en programmør, en ingeniør, som 1115 00:55:11,520 --> 00:55:16,130 skal programmere jer alle, som computerne, til at gøre noget. 1116 00:55:16,130 --> 00:55:19,570 Og vi vil se, hvad antagelser du beslutter at gøre. 1117 00:55:19,570 --> 00:55:22,700 Vi vil se, hvordan præcist hun vælger at være. 1118 00:55:22,700 --> 00:55:26,220 Og hvis denne demonstration går pædagogisk godt, masser af fejl 1119 00:55:26,220 --> 00:55:29,220 vil blive foretaget, at vi så vil bruge at som en mulighed for diskussion. 1120 00:55:29,220 --> 00:55:32,010 Men udfordringen for du skal være at undgå disse fejl, 1121 00:55:32,010 --> 00:55:32,896 være en god programmør. 1122 00:55:32,896 --> 00:55:35,520 Og så udfordringen ved hånden, hvis du ville kunne lide at gå over her, 1123 00:55:35,520 --> 00:55:38,799 er foran Victoria på skærmen her-- og forhåbentlig ingen af ​​jer 1124 00:55:38,799 --> 00:55:40,590 huske dette, når jeg flashed på skærmen. 1125 00:55:40,590 --> 00:55:44,097 Og ikke vende rundt på alle, fordi der er en anden skærm i dette rum 1126 00:55:44,097 --> 00:55:44,930 at jeg kan slukke. 1127 00:55:44,930 --> 00:55:46,620 Så du skal ikke vende rundt. 1128 00:55:46,620 --> 00:55:49,090 >> Foran Victoria er, at samme skrig. 1129 00:55:49,090 --> 00:55:54,170 Og hendes job er nu at fortælle dig alt på dit stykke papir, hvad at tegne. 1130 00:55:54,170 --> 00:55:57,020 Og vi vil se, er baseret på verbale instruktioner alene, 1131 00:55:57,020 --> 00:56:00,020 computerkode, om man vil, hvordan præcis dine tegninger 1132 00:56:00,020 --> 00:56:02,330 are-- dine implementeringer er. 1133 00:56:02,330 --> 00:56:02,980 Giver mening? 1134 00:56:02,980 --> 00:56:03,604 >> PUBLIKUM: Ja. 1135 00:56:03,604 --> 00:56:04,980 DAVID MALAN: OK, udfø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 nej spørgsmål kan blive bedt om. 1139 00:56:12,310 --> 00:56:13,720 Kan kun gøre, hvad du får at vide. 1140 00:56:13,720 --> 00:56:17,570 1141 00:56:17,570 --> 00:56:22,550 Åh, og hvis du har nutidens dias åbne i en fane, skal du ikke se på din fane. 1142 00:56:22,550 --> 00:56:23,670 OKAY? 1143 00:56:23,670 --> 00:56:26,135 >> PUBLIKUM: OK, tegne en cirkel. 1144 00:56:26,135 --> 00:56:32,544 1145 00:56:32,544 --> 00:56:34,872 En slope-- kan jeg sige hældning? 1146 00:56:34,872 --> 00:56:35,830 DAVID MALAN: Op til dig. 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: Okay. 1152 00:56:50,850 --> 00:56:52,286 Og blive her for et øjeblik. 1153 00:56:52,286 --> 00:56:56,046 1154 00:56:56,046 --> 00:56:58,910 Og jeg har tænkt mig at komme rundt om et øjeblik. 1155 00:56:58,910 --> 00:57:02,420 Og ingen grund til at sætte jeres navne på det. 1156 00:57:02,420 --> 00:57:05,030 Lad mig komme rundt og samle dine tegninger, 1157 00:57:05,030 --> 00:57:08,330 hvis du ikke har noget imod at rive dem ud. 1158 00:57:08,330 --> 00:57:12,110 >> Her er hvad vi fik tilbage. 1159 00:57:12,110 --> 00:57:14,770 Jeg vil projicere den på skærmen. 1160 00:57:14,770 --> 00:57:18,310 Jeg ser en firkant, en cirkel, en skråning, og en trekant. 1161 00:57:18,310 --> 00:57:20,130 Så det var et svar der. 1162 00:57:20,130 --> 00:57:23,640 Og let's-- hovsa. 1163 00:57:23,640 --> 00:57:25,370 Tak. 1164 00:57:25,370 --> 00:57:30,710 Her er en anden sortiment, og en bag det. 1165 00:57:30,710 --> 00:57:34,130 1166 00:57:34,130 --> 00:57:37,120 >> Så de alle synes at fange ånden. 1167 00:57:37,120 --> 00:57:38,600 Tak. 1168 00:57:38,600 --> 00:57:44,970 Der er en anden, og her er en anden. 1169 00:57:44,970 --> 00:57:51,590 Hældningen fortolkning er en lidt anderledes, lidt krumme. 1170 00:57:51,590 --> 00:57:57,140 Og det tætteste, enten på grund af vidunderlige specificitet, som du har 1171 00:57:57,140 --> 00:58:03,520 beskrevet, eller måske du slags så det før, det er faktisk 1172 00:58:03,520 --> 00:58:06,340 hvad Victoria var faktisk beskriver. 1173 00:58:06,340 --> 00:58:09,190 >> Men nu, dem af jer der fik det ikke helt rigtigt, 1174 00:58:09,190 --> 00:58:11,140 lad os tilbyde nogle indvendinger her. 1175 00:58:11,140 --> 00:58:13,770 Så Victoria først sagde tegne et kvadrat. 1176 00:58:13,770 --> 00:58:15,830 Og nu, kan vi antage af hensyn til dag 1177 00:58:15,830 --> 00:58:17,538 at alle kender hvordan man tegner en firkant. 1178 00:58:17,538 --> 00:58:20,590 Men det er ikke helt klart, ikke? 1179 00:58:20,590 --> 00:58:23,220 Hvor ellers kan du få tegnet en firkant, eller hvor 1180 00:58:23,220 --> 00:58:27,114 kan være nogle af de uklarheder her til computer? 1181 00:58:27,114 --> 00:58:28,280 PUBLIKUM: Placering og størrelse. 1182 00:58:28,280 --> 00:58:28,980 DAVID MALAN: Beliggenhed, right? 1183 00:58:28,980 --> 00:58:32,070 Alle jer havde et papir på nogle form, generelt rektangler, men lidt 1184 00:58:32,070 --> 00:58:32,830 forskellige størrelser. 1185 00:58:32,830 --> 00:58:36,250 Men du sikkert kunne have trukket, hvis du ønsker, en kæmpe firkantet, måske 1186 00:58:36,250 --> 00:58:37,220 en lille firkant. 1187 00:58:37,220 --> 00:58:38,417 Måske var det roteres. 1188 00:58:38,417 --> 00:58:39,500 Jeg tror ikke, vi så, at. 1189 00:58:39,500 --> 00:58:41,790 Men det kunne have været mere diamant ligesom men stadig ikke desto mindre, 1190 00:58:41,790 --> 00:58:42,900 matematisk en firkant. 1191 00:58:42,900 --> 00:58:44,850 Så det var velsagtens tvetydig. 1192 00:58:44,850 --> 00:58:46,709 >> Så sagde hun, tegne en cirkel. 1193 00:58:46,709 --> 00:58:49,250 Nogle af jer har draget den ved siden af det, hvilket ikke er urimeligt, 1194 00:58:49,250 --> 00:58:52,450 fordi mennesker tendens til at tænke eller læse højre til venstre på de fleste sprog, så ikke 1195 00:58:52,450 --> 00:58:53,017 en dårlig gæt. 1196 00:58:53,017 --> 00:58:55,100 Men denne cirkel kan have været inde på pladsen, 1197 00:58:55,100 --> 00:58:57,600 kunne have været omkring firkantet, kunne have været et andet sted 1198 00:58:57,600 --> 00:58:59,480 på arket, så velsagtens tvetydig. 1199 00:58:59,480 --> 00:59:03,290 >> Slope kunne have været måske tage de fleste friheder verbalt 1200 00:59:03,290 --> 00:59:04,200 med, hvad det betyder. 1201 00:59:04,200 --> 00:59:06,980 Og nogle af jer fortolket det som en bølgelinien 1202 00:59:06,980 --> 00:59:08,560 eller en lige linje eller lignende. 1203 00:59:08,560 --> 00:59:11,719 Og så trekant, også kunne have blevet orienteret i en række forskellige måder. 1204 00:59:11,719 --> 00:59:14,760 Så kort, selv med noget, du blik og du er ligesom, wow, så 1205 00:59:14,760 --> 00:59:17,020 enkel, et barn kunne tegne dette, vel ikke 1206 00:59:17,020 --> 00:59:19,640 virkelig, medmindre du er super, super overbevisende 1207 00:59:19,640 --> 00:59:22,045 og fortælle computeren præcis, hvad de skal gøre. 1208 00:59:22,045 --> 00:59:24,420 Så hvis vi kunne, hvis du har et andet ark af papir, lad os 1209 00:59:24,420 --> 00:59:26,710 prøve dette endnu en gang. 1210 00:59:26,710 --> 00:59:29,880 Og jeg har tænkt mig at give Victoria én andet eksempel på skærmen her. 1211 00:59:29,880 --> 00:59:34,060 Og igen, ikke vende rundt og ser ikke på dine dias. 1212 00:59:34,060 --> 00:59:37,304 Og jeg vil give hende et øjeblik at tænke over, hvordan til at beskrive dette. 1213 00:59:37,304 --> 00:59:39,012 Lad dem ikke se frygten i øjnene. 1214 00:59:39,012 --> 00:59:40,820 >> [LATTER] 1215 00:59:40,820 --> 00:59:43,710 >> Og igen, denne gang gearing nogle af disse grillbarer 1216 00:59:43,710 --> 00:59:48,130 og forsøge at få næsten alle mindst det rigtige svar. 1217 00:59:48,130 --> 00:59:52,260 >> PUBLIKUM: OK, tage en stykke papir, se 1218 00:59:52,260 --> 00:59:54,500 i midten af ​​det stykke papir. 1219 00:59:54,500 --> 00:59:59,591 I midten af ​​det stykke af papir, tegne en terning. 1220 00:59:59,591 --> 01:00:01,244 >> [LATTER] 1221 01:00:01,244 --> 01:00:02,660 DAVID MALAN: Hvad har vi lært? 1222 01:00:02,660 --> 01:00:03,540 Vi var så tæt på. 1223 01:00:03,540 --> 01:00:06,320 1224 01:00:06,320 --> 01:00:09,045 OK, gentag hvis du kunne, for alle. 1225 01:00:09,045 --> 01:00:13,210 >> PUBLIKUM: I midten af ​​den stykke papir, trækker en genstand, 1226 01:00:13,210 --> 01:00:14,842 som ligner en terning. 1227 01:00:14,842 --> 01:00:17,332 >> DAVID MALAN: OK, det er alt hvad du kommer til at arbejde med. 1228 01:00:17,332 --> 01:00:20,010 1229 01:00:20,010 --> 01:00:23,080 Tillad mig at være analytisk og ikke så meget kritisk, 1230 01:00:23,080 --> 01:00:25,720 men for at gøre kravet at Victoria afgjort 1231 01:00:25,720 --> 01:00:28,967 ser ud til at tænke i meget højt niveau abstraktioner, som 1232 01:00:28,967 --> 01:00:29,800 er ikke urimeligt. 1233 01:00:29,800 --> 01:00:32,160 Fordi ellers ville vi alle være temmelig dårligt fungerende, 1234 01:00:32,160 --> 01:00:35,740 hvis vi skulle være lige så præcis med alt, hvad vi gør i verden. 1235 01:00:35,740 --> 01:00:38,890 >> Men at sige gå til middle-- I troede vi var på sådan en god track 1236 01:00:38,890 --> 01:00:42,340 der, ligesom gå til meget midterste på siden, og derefter tegne en terning. 1237 01:00:42,340 --> 01:00:45,730 Så hun tænker i abstraktioner, fordi hun stadig ser 1238 01:00:45,730 --> 01:00:48,490 hvad der er på skærmen som faktisk en terning. 1239 01:00:48,490 --> 01:00:51,185 Men der er så mange muligheder for fortolkning der. 1240 01:00:51,185 --> 01:00:53,560 Og i virkeligheden, der er så mange andre måder, du kan udtrykke 1241 01:00:53,560 --> 01:00:55,101 at, som jeg vil foreslå i et øjeblik. 1242 01:00:55,101 --> 01:00:59,770 Så her har vi en inkarnation af den picture-- whoops-- én 1243 01:00:59,770 --> 01:01:02,830 inkarnation af billedet, så en lille tre dimensionalitet til det, 1244 01:01:02,830 --> 01:01:04,160 hvilket er rart. 1245 01:01:04,160 --> 01:01:08,470 >> Her er en anden, hvor du har den samme, selvom det er lidt af en åben kube. 1246 01:01:08,470 --> 01:01:12,020 Nogle folk tog det lidt mere flad, todimensionel. 1247 01:01:12,020 --> 01:01:13,910 Og det er fint. 1248 01:01:13,910 --> 01:01:17,380 Så der, faktisk i midten af ​​papiret. 1249 01:01:17,380 --> 01:01:22,720 Denne ene jeg tror du vil lignende, for hvis vi går her, 1250 01:01:22,720 --> 01:01:25,130 dette er, hvad hun beskrev. 1251 01:01:25,130 --> 01:01:29,570 Så nu, lad mig foreslå hvordan ellers vi kan beskrive denne situation. 1252 01:01:29,570 --> 01:01:34,070 >> Tilbage i dag, en af ​​de mest mere almindelige måder at lære programmering 1253 01:01:34,070 --> 01:01:38,900 var at skrive kode, skriver linjer af instruktioner, 1254 01:01:38,900 --> 01:01:42,640 at kontrolleret lidt skildpadde på skærmen. 1255 01:01:42,640 --> 01:01:45,660 Logo og andre varianter af denne var navnet på sproget. 1256 01:01:45,660 --> 01:01:47,550 Og skildpadden levede i en verden. 1257 01:01:47,550 --> 01:01:49,970 >> Så formoder denne rektangulære pladsen er hans verden. 1258 01:01:49,970 --> 01:01:53,340 Og du ville starte med assuming-- I ikke rigtig ved hvordan man tegner skildpadde, 1259 01:01:53,340 --> 01:01:54,740 så lad os gøre det sådan her. 1260 01:01:54,740 --> 01:01:57,340 Og så han har en shell og så måske nogle fødder. 1261 01:01:57,340 --> 01:01:59,840 Så har du måske denne lille tegn på skærmen. 1262 01:01:59,840 --> 01:02:02,270 >> Og formålet med dette programmeringssprog 1263 01:02:02,270 --> 01:02:06,070 var at tvinge skildpadden at gå op, ned, venstre, højre 1264 01:02:06,070 --> 01:02:08,420 og til at sætte hans pen ned eller afhente sin pen op, 1265 01:02:08,420 --> 01:02:12,720 så han kunne faktisk tegne på skærmen i denne meget flad rektangulær verden. 1266 01:02:12,720 --> 01:02:16,850 Så hvor jeg tænkte du måske være at gå, og hvor du skal overveje dykning 1267 01:02:16,850 --> 01:02:19,520 ned til mentalt når der beskriver instruktioner mere generelt 1268 01:02:19,520 --> 01:02:21,720 Jeg vil hævde, sættes din pen ned i middle-- 1269 01:02:21,720 --> 01:02:23,100 og vi vil slippe af med den skildpadde, fordi jeg kan ikke rigtig 1270 01:02:23,100 --> 01:02:24,680 holde tegning ham meget godt. 1271 01:02:24,680 --> 01:02:27,170 >> Og nu, hvor ellers kunne Jeg siger tegne en terning? 1272 01:02:27,170 --> 01:02:32,830 Nå, vi kunne sige noget som uafgjort en diagonal linje nordøst, for eksempel, 1273 01:02:32,830 --> 01:02:35,182 eller i en 45 graders vinkel opad. 1274 01:02:35,182 --> 01:02:36,640 Og der kunne have fået mig her. 1275 01:02:36,640 --> 01:02:38,380 Og jeg er temmelig langt fra en terning. 1276 01:02:38,380 --> 01:02:42,430 Men nu, kunne jeg sige noget lignende dreje 90 grader til venstre 1277 01:02:42,430 --> 01:02:47,370 og trække en linje af samme længde nordvest. 1278 01:02:47,370 --> 01:02:49,470 Og jeg kunne fortsætte med lignende retninger. 1279 01:02:49,470 --> 01:02:50,720 Og det kommer ikke til at være let. 1280 01:02:50,720 --> 01:02:53,345 Og helt ærligt, vi sandsynligvis ville har været her i fem minutter. 1281 01:02:53,345 --> 01:02:59,600 Men måske vi ville have fået til noget, der ved udgangen af ​​dag, 1282 01:02:59,600 --> 01:03:04,280 ender med at blive en terning, men vi dykkede inde i denne abstraktion 1283 01:03:04,280 --> 01:03:06,370 at gøre det på sådan en lav niveau, du ikke kan virkelig 1284 01:03:06,370 --> 01:03:09,795 se, hvad du laver, indtil hele ting er faktisk der på siden. 1285 01:03:09,795 --> 01:03:12,670 Og så dette er et generelt princip, igen, af programming-- denne idé 1286 01:03:12,670 --> 01:03:13,320 af abstraktion. 1287 01:03:13,320 --> 01:03:15,920 Det er så vidunderligt kraftfuld, fordi igen, 1288 01:03:15,920 --> 01:03:19,281 hun netop sagde, tegne en terning, som alle os temmelig meget ville grok meget hurtigt. 1289 01:03:19,281 --> 01:03:21,030 Vi ville bare forstå, OK, tegne en terning. 1290 01:03:21,030 --> 01:03:24,030 Vi kan ikke vide orienteringen, så vi kunne være lidt mere præcis, 1291 01:03:24,030 --> 01:03:26,297 men vi kan generelt billede eller ved, hvad en terning er. 1292 01:03:26,297 --> 01:03:28,130 Og det er nyttigt, fordi hvis hver gang du 1293 01:03:28,130 --> 01:03:31,540 satte sig som programmør på tastaturet til at skrive kode, 1294 01:03:31,540 --> 01:03:33,912 hvis du skulle tænke på sådan et lavt niveau, ingen af ​​os 1295 01:03:33,912 --> 01:03:35,120 nogensinde ville få noget gjort. 1296 01:03:35,120 --> 01:03:38,259 Og helt sikkert, ingen af ​​os ville nyde processen med at skrive kode. 1297 01:03:38,259 --> 01:03:41,550 Det ville være som at skrive i 0'er og 1'er, som ærligt talt var ikke så længe siden 1298 01:03:41,550 --> 01:03:43,680 mennesker blev skrive kode i 0'er og 1'er. 1299 01:03:43,680 --> 01:03:46,960 Og vi kom meget hurtigt op med disse højere niveau 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å lad os prøve en gang til bare for at flip bordene, så vi alle 1302 01:03:52,500 --> 01:03:55,450 har mulighed for at tænke i stedet på samme måde. 1303 01:03:55,450 --> 01:03:59,230 Kunne vi få en mere frivillig denne tid til at komme op til tavlen og tegne, 1304 01:03:59,230 --> 01:04:01,480 ikke recitere? 1305 01:04:01,480 --> 01:04:02,070 Ja, OK. 1306 01:04:02,070 --> 01:04:04,820 Ben, kom op. 1307 01:04:04,820 --> 01:04:08,510 Og, Ben, i dette tilfælde, når du står over for bestyrelsen, ikke ser til venstre, 1308 01:04:08,510 --> 01:04:09,370 ser ikke rigtigt. 1309 01:04:09,370 --> 01:04:12,367 Kun gøre, hvad jeres kolleger her fortælle dig. 1310 01:04:12,367 --> 01:04:14,950 Og for alle andre i værelse, du nu er programmør. 1311 01:04:14,950 --> 01:04:16,020 Han er computeren. 1312 01:04:16,020 --> 01:04:21,395 Og det billede jeg har valgt her på forhånd er denne ene her. 1313 01:04:21,395 --> 01:04:24,490 1314 01:04:24,490 --> 01:04:27,660 De er bare-- de tænker af en sjov vittighed er alt. 1315 01:04:27,660 --> 01:04:31,510 >> Så ville der nogen gerne frivilligt den første instruktion 1316 01:04:31,510 --> 01:04:35,470 eller erklæring om, at skulle kommando Bens pen? 1317 01:04:35,470 --> 01:04:40,850 Og vi vil gøre det kollektivt, måske en instruktion fra hver person. 1318 01:04:40,850 --> 01:04:41,440 Undskyld? 1319 01:04:41,440 --> 01:04:42,440 >> PUBLIKUM: Tegn en cirkel. 1320 01:04:42,440 --> 01:04:45,866 DAVID MALAN: Tegn en cirkel er den første, jeg hørte. 1321 01:04:45,866 --> 01:04:47,100 >> PUBLIKUM: Op top. 1322 01:04:47,100 --> 01:04:48,140 >> DAVID MALAN: Op top. 1323 01:04:48,140 --> 01:04:52,504 OK, vi kan lade dig slette, fortryde. 1324 01:04:52,504 --> 01:04:53,420 Og nu, en anden. 1325 01:04:53,420 --> 01:04:55,994 Dan, du ville være rare tilbyder den næste instruktion? 1326 01:04:55,994 --> 01:05:02,070 >> PUBLIKUM: Sure, tegne centrum af bunden af ​​cirklen, 1327 01:05:02,070 --> 01:05:07,121 med en small-- lidt lille mellemrum fra det, 1328 01:05:07,121 --> 01:05:15,420 tegne en lige linie ned til tre fjerdedele af vejen ned bestyrelsen 1329 01:05:15,420 --> 01:05:17,845 en lille vinkel til venstre. 1330 01:05:17,845 --> 01:05:21,250 1331 01:05:21,250 --> 01:05:22,620 >> DAVID MALAN: God. 1332 01:05:22,620 --> 01:05:24,086 >> PUBLIKUM: Let vinkel. 1333 01:05:24,086 --> 01:05:32,807 >> DAVID MALAN: Fortryd, ctrl-Z. OKAY. 1334 01:05:32,807 --> 01:05:34,890 Andrew, du ønsker at tilbyde op næste instruktion? 1335 01:05:34,890 --> 01:05:35,515 >> PUBLIKUM: Selvfølgelig. 1336 01:05:35,515 --> 01:05:43,250 Fra bunden af ​​denne linje, en yderligere mindre angle-- 1337 01:05:43,250 --> 01:05:49,024 whoops-- måske omkring en tredjedel af længden [uhørligt], 1338 01:05:49,024 --> 01:05:52,928 lille vinkel nedad og gerne en tredjedel af længden af ​​[uhørlig]. 1339 01:05:52,928 --> 01:05:57,550 1340 01:05:57,550 --> 01:06:00,578 Så ja, fra dette punkt, tegne en linje en tredje 1341 01:06:00,578 --> 01:06:04,150 af længden af ​​den tidligere linje længere mod 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 Lige linje, det er OK? 1345 01:06:12,330 --> 01:06:14,900 OK, Olivier, du ønsker at tilbyde op den næste? 1346 01:06:14,900 --> 01:06:28,564 >> PUBLIKUM: [uhørligt] fra bunden af ​​cirklen, [uhørlig]. 1347 01:06:28,564 --> 01:06:32,000 1348 01:06:32,000 --> 01:06:45,126 Tegn på højre side af [uhørligt] 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 at nødt til at konvertere det er inches her. 1351 01:06:49,872 --> 01:06:50,764 >> PUBLIKUM: Stop. 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 ønsker at tilbyde op den næste? 1355 01:06:56,660 --> 01:07:00,653 1356 01:07:00,653 --> 01:07:15,443 >> PUBLIKUM: Tegn en [uhørligt] den øvre [uhørligt] det samme. 1357 01:07:15,443 --> 01:07:28,829 [Uhørligt] cirkel, tegne til [Uhørligt] og tegne [uhørligt]. 1358 01:07:28,829 --> 01:07:33,799 1359 01:07:33,799 --> 01:07:36,730 >> DAVID MALAN: OK, ikke mere fortryde. 1360 01:07:36,730 --> 01:07:38,390 Lad os gøre en eller to flere instruktioner. 1361 01:07:38,390 --> 01:07:40,825 Chris, du ønsker at tilbyde en? 1362 01:07:40,825 --> 01:07:46,182 >> PUBLIKUM: Nederst af cirkelen [uhørlig] 1363 01:07:46,182 --> 01:07:51,528 trække en lige linje slopping nedad til venstre [uhørligt]. 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: Begyndende fra højre linje, enden af ​​den venstre linie, bunden, 1370 01:08:13,765 --> 01:08:21,012 du kommer til at gå lige omkring den samme længde som denne linje 1371 01:08:21,012 --> 01:08:27,680 du er på, tegning til højre [uhørligt]. 1372 01:08:27,680 --> 01:08:33,572 1373 01:08:33,572 --> 01:08:37,991 [Uhørligt] grader, så [uhørligt] grader på højre side. 1374 01:08:37,991 --> 01:08:41,919 1375 01:08:41,919 --> 01:08:43,500 >> DAVID MALAN: Okay. 1376 01:08:43,500 --> 01:08:44,029 Lad os holde pause. 1377 01:08:44,029 --> 01:08:44,950 Må ikke vende rundt endnu. 1378 01:08:44,950 --> 01:08:46,783 Lad os holde pause, og lad os se prøve en anden forsøg 1379 01:08:46,783 --> 01:08:48,850 før vi afsløre for Ben hvad han har tegning. 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 nej, lad os bare give dig andet bord, endnu bedre. 1382 01:08:54,080 --> 01:08:57,640 Så skulle nogen nu gerne at tage mere af den fremgangsmåde 1383 01:08:57,640 --> 01:09:02,149 at Victoria tog tidligere, hvor vi taler i en højere abstraktionsniveau 1384 01:09:02,149 --> 01:09:05,149 og på bare en sætning eller to beskrive Ben 1385 01:09:05,149 --> 01:09:07,229 hvad at tegne uden komme ind ukrudt, 1386 01:09:07,229 --> 01:09:10,670 så at sige, på dette et lavere niveau? 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 af walking mand. 1390 01:09:14,249 --> 01:09:18,866 Og hans ben og arme nødt til at være den højre 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 Okay. 1394 01:09:27,710 --> 01:09:31,609 Hvorfor skal vi ikke afsløre for Ben, hvad han gjorde. 1395 01:09:31,609 --> 01:09:32,890 Så en runde af bifald. 1396 01:09:32,890 --> 01:09:35,700 Det var den sværeste måske. 1397 01:09:35,700 --> 01:09:37,931 >> Så selv om vi taler i temmelig dumme vilkår 1398 01:09:37,931 --> 01:09:39,680 om bare at tegne billeder, forhåbentlig du 1399 01:09:39,680 --> 01:09:44,226 kan virkelig sætte pris på graden af udtryksfuldhed, der måtte være nødvendige 1400 01:09:44,226 --> 01:09:45,850 for at fortælle en computer, hvad de skal gøre. 1401 01:09:45,850 --> 01:09:50,370 Og i virkeligheden, det faktum, at Ben var i stand til at trække dette så hurtigt 1402 01:09:50,370 --> 01:09:54,227 er slags bevis på at bruge en sprog, måske et højere niveau 1403 01:09:54,227 --> 01:09:57,060 version af engelsk, der tillader ham at bare bruge ord, eller høre ord 1404 01:09:57,060 --> 01:09:59,990 fra Victoria, der tillader ham disse abstractions-- bare trække 1405 01:09:59,990 --> 01:10:03,020 en figur til fods til right-- den slags har 1406 01:10:03,020 --> 01:10:07,100 nogle semantisk mening til det, der ikke er næsten lige så indlysende, når du bare 1407 01:10:07,100 --> 01:10:10,310 siger, sætte pennen ned, tegne til højre, trækker til venstre. 1408 01:10:10,310 --> 01:10:12,420 >> Og så dette, også er meget almindelig i programmering. 1409 01:10:12,420 --> 01:10:15,253 Dette ville siges at være som en meget lavt niveau sprog, programmering 1410 01:10:15,253 --> 01:10:16,730 i 0'er og 1'er, hvis du vil. 1411 01:10:16,730 --> 01:10:19,320 Og det ville være et højere niveau programmeringssprog i Java, 1412 01:10:19,320 --> 01:10:20,278 eller sådan noget. 1413 01:10:20,278 --> 01:10:22,050 Lidt af en forsimpling, men det er 1414 01:10:22,050 --> 01:10:24,310 det lidt ligesom følelsesmæssige følelsen af, at du føler, når 1415 01:10:24,310 --> 01:10:26,630 ved hjælp af en slags ting eller en anden. 1416 01:10:26,630 --> 01:10:32,650 Lidt af frustration her af behovet for en sådan præcision, men muligheden 1417 01:10:32,650 --> 01:10:34,930 at være lidt løsere med fortolkningen her. 1418 01:10:34,930 --> 01:10:38,060 Men selvfølgelig, bugs kan opstå som følge heraf. 1419 01:10:38,060 --> 01:10:40,500 >> Hvis du gerne vil på home-- vi vil ikke gøre denne ene i class-- 1420 01:10:40,500 --> 01:10:41,900 men hvis du gerne vil bringe kampen, 1421 01:10:41,900 --> 01:10:43,387 Jeg troede, vi ville dykke ned i dette. 1422 01:10:43,387 --> 01:10:45,970 Så hvis du gerne vil spille dette spil med dine andre væsentlige 1423 01:10:45,970 --> 01:10:49,180 eller børn eller lignende, du kunne nyde det så godt. 1424 01:10:49,180 --> 01:10:54,460 >> Så lad os gå videre og se på en sidste ting her for beregningsmæssige tænkning. 1425 01:10:54,460 --> 01:10:57,010 Og det bringer os til John Oliver, ikke for klippet 1426 01:10:57,010 --> 01:11:00,070 du måske har set i aftes, men til en noget nyligt nummer. 1427 01:11:00,070 --> 01:11:03,310 For et par måneder tilbage, Volkswagen tog ganske lidt af flak 1428 01:11:03,310 --> 01:11:05,651 hvad grunden, hvis du kender? 1429 01:11:05,651 --> 01:11:07,025 Hvad har de komme i problemer for? 1430 01:11:07,025 --> 01:11:10,270 1431 01:11:10,270 --> 01:11:14,030 >> Ja, så emissions-- de forsøgte at slå emissioner 1432 01:11:14,030 --> 01:11:19,100 tests med væsentlige at have deres biler forurener miljøet mindre 1433 01:11:19,100 --> 01:11:23,620 når deres biler blev testet og forurene miljøet mere 1434 01:11:23,620 --> 01:11:25,547 når bilerne ikke blev testet. 1435 01:11:25,547 --> 01:11:28,630 Og hvad er mere og mere interessant i verden, som du kan have udledes 1436 01:11:28,630 --> 01:11:34,072 fra diskussioner af like-- hvad er det-- CarPlay, Apples software til biler 1437 01:11:34,072 --> 01:11:35,780 og det faktum, at mange af os i stigende grad 1438 01:11:35,780 --> 01:11:38,390 har touch-skærme i vores biler, der er en skræmmende mængde 1439 01:11:38,390 --> 01:11:41,250 af software i folks biler i dag, som 1440 01:11:41,250 --> 01:11:45,650 ærligt åbner en hel dåse orm, når det kommer til sikkerhed og fysisk risiko. 1441 01:11:45,650 --> 01:11:48,070 Men for i dag, lad os fokusere på netop, hvad der er 1442 01:11:48,070 --> 01:11:52,170 involveret skriftligt software som kunne have gamed systemet. 1443 01:11:52,170 --> 01:11:54,510 >> For definitionen af problem, for dem bekendt, 1444 01:11:54,510 --> 01:11:55,740 lad os tage et kig på John Oliver. 1445 01:11:55,740 --> 01:11:58,115 Og for dem bekendt med problemet, lad os se på det 1446 01:11:58,115 --> 01:12:00,480 i en sjov linse via John Oliver så godt. 1447 01:12:00,480 --> 01:12:05,810 Så lad mig slå spille på dette, jeg tror, ​​tre-minutters introduktion. 1448 01:12:05,810 --> 01:12:07,074 For pokker. 1449 01:12:07,074 --> 01:12:07,740 [VIDEO PLAYBACK] 1450 01:12:07,740 --> 01:12:08,170 -Cars-- 1451 01:12:08,170 --> 01:12:09,919 DAVID MALAN: Det er klart, på YouTube, it's-- 1452 01:12:09,919 --> 01:12:12,500 - --the smarteste tegn i de Fast and Furious film. 1453 01:12:12,500 --> 01:12:16,080 I denne uge, tyske bilproducent Volkswagen befandt sig 1454 01:12:16,080 --> 01:12:19,430 midt i en skandale af potentielt kriminelle proportioner. 1455 01:12:19,430 --> 01:12:23,020 >> -Volkswagen Er forfriskende for milliarder i bøder, mulige strafferetlige anklager 1456 01:12:23,020 --> 01:12:25,530 for sine ledere, som selskabet undskylder 1457 01:12:25,530 --> 01:12:28,790 til rigning 11 millioner biler til hjælpe det slå emissionsprøvninger. 1458 01:12:28,790 --> 01:12:32,110 >> -Certain Diesel modeller designet med sofistikeret software, 1459 01:12:32,110 --> 01:12:35,410 brugt oplysninger, herunder positionen af rattet og køretøj 1460 01:12:35,410 --> 01:12:38,820 hastighed, for at bestemme bilen var under afprøvning emissioner. 1461 01:12:38,820 --> 01:12:42,620 Under denne omstændighed, at motoren ville reducere giftige emissioner. 1462 01:12:42,620 --> 01:12:46,040 Men bilen blev rigget til bypass at når det blev kørt. 1463 01:12:46,040 --> 01:12:51,370 Emissionerne steg 10 til 40 gange over acceptable EPA niveauer. 1464 01:12:51,370 --> 01:12:55,920 >> Wow, 10 til 40 gange større end EPA tillader. 1465 01:12:55,920 --> 01:12:59,570 Det er det værste Volkswagen har nogensinde gjort, 1466 01:12:59,570 --> 01:13:04,200 er noget du måske sige, hvis du havde aldrig hørt om Anden Verdenskrig. 1467 01:13:04,200 --> 01:13:09,710 Men måske det sikreste tegn på, hvor meget besvær Volkswagen er i, 1468 01:13:09,710 --> 01:13:12,730 er, at folk på meget top har trådt ned. 1469 01:13:12,730 --> 01:13:16,320 Den administrerende direktør fratrådte onsdag efter travlt med at gøre skade kontrol, 1470 01:13:16,320 --> 01:13:20,380 siger han var uendeligt ked af det, som lød store indtil det viste sig 1471 01:13:20,380 --> 01:13:22,920 han var kun 10% sorry men havde rigget munden 1472 01:13:22,920 --> 01:13:25,600 kunstigt øger sin sorriness. 1473 01:13:25,600 --> 01:13:29,700 Og i mellemtiden, Volkswagen USA chef havde en undskyldning for hans egen. 1474 01:13:29,700 --> 01:13:33,580 >> -Lad Os være klar over dette, vores virksomhed var uærlig. 1475 01:13:33,580 --> 01:13:37,140 Og i mine tyske ord, vi har fuldstændig skruet op. 1476 01:13:37,140 --> 01:13:41,360 >> -Ja, Men helt skruet op er ikke tyske værker. 1477 01:13:41,360 --> 01:13:43,750 Og det tyske sprog har mange smukke sætninger 1478 01:13:43,750 --> 01:13:50,070 til at beskrive situationer, ligesom denne, såsom [TYSK], hvilket betyder groft, 1479 01:13:50,070 --> 01:13:52,870 sorg, der kommer fra business-relaterede løgne, 1480 01:13:52,870 --> 01:13:59,060 eller [TYSK], som oversætter som shaming dem far involverer 1481 01:13:59,060 --> 01:14:00,352 skyer af benzin. 1482 01:14:00,352 --> 01:14:02,060 Det er en smuk sprog. 1483 01:14:02,060 --> 01:14:04,660 Det bare sejler ud tungen. 1484 01:14:04,660 --> 01:14:07,920 Og ved den måde, mens at menneskets undskyldning kan have lydt oprigtig, 1485 01:14:07,920 --> 01:14:12,260 det er værd at bemærke, at han talte på en officiel lancering fest for 2016 1486 01:14:12,260 --> 01:14:17,310 Volkswagen Passat, hvilket betyder, at om kort tid efter at sige undskyld, sagde han dette. 1487 01:14:17,310 --> 01:14:18,850 >> -Tak Meget for at komme. 1488 01:14:18,850 --> 01:14:19,630 Nyd aftenen. 1489 01:14:19,630 --> 01:14:21,300 Op næste er Lenny Kravitz. 1490 01:14:21,300 --> 01:14:24,640 >> [MUSIK AFSPILLER] 1491 01:14:24,640 --> 01:14:28,230 >> -OK, OK, slutter dit undskyldning med op næste 1492 01:14:28,230 --> 01:14:31,940 Lenny Kravitz ikke skrige ædru anger. 1493 01:14:31,940 --> 01:14:35,830 Det skriger, spurgte vi Bon Jovi, og han sagde nej. 1494 01:14:35,830 --> 01:14:38,600 Volkswagens mærke har blevet alvorligt beskadiget. 1495 01:14:38,600 --> 01:14:42,466 Og helt ærligt, deres nye annonce kampagne er ikke ligefrem hjælper. 1496 01:14:42,466 --> 01:14:47,289 >> - [TYSK], ville vi hos Volkswagen gerne at undskylde for at bedrage dig 1497 01:14:47,289 --> 01:14:47,930 vores biler. 1498 01:14:47,930 --> 01:14:48,513 >> [END AFSPIL] 1499 01:14:48,513 --> 01:14:54,090 DAVID MALAN: Så det var en rundkørsel måde of-- sorry-- 1500 01:14:54,090 --> 01:14:58,730 dette var en rundkørsel måde indføre et grundlæggende problem 1501 01:14:58,730 --> 01:15:02,810 i software, som er, at du brug for at detektere visse betingelser. 1502 01:15:02,810 --> 01:15:07,680 Og så spørgsmålet ved hånden her er, hvordan gør en bil potentielt 1503 01:15:07,680 --> 01:15:09,870 som implementeret i software af disse programmører, 1504 01:15:09,870 --> 01:15:11,850 opdage, at det faktisk er at blive testet? 1505 01:15:11,850 --> 01:15:14,150 Så for at være super klar, hvad de gjorde 1506 01:15:14,150 --> 01:15:17,940 var, i miljøer, hvor programmørerne regnede 1507 01:15:17,940 --> 01:15:20,460 bilen var ved at blive testet, de på en måde gjort 1508 01:15:20,460 --> 01:15:24,840 bilen udleder færre emissioner, færre emissioner, så mindre giftige dampe 1509 01:15:24,840 --> 01:15:25,470 og sådan. 1510 01:15:25,470 --> 01:15:27,261 Men når det er normalt kørsel på vej, 1511 01:15:27,261 --> 01:15:30,350 Det ville bare udlede så meget forurening, som det ønskede. 1512 01:15:30,350 --> 01:15:33,870 >> Så hvordan kunne vi skrive pseudokode for denne algoritme? 1513 01:15:33,870 --> 01:15:37,820 Hvordan kunne vi skrive pseudokode for software, der kører i bilen? 1514 01:15:37,820 --> 01:15:43,390 Jeg mener, i en nøddeskal, det koger ned til noget som dette. 1515 01:15:43,390 --> 01:15:48,000 hvis der testes, udleder mindre. 1516 01:15:48,000 --> 01:15:50,750 ellers udleder mere. 1517 01:15:50,750 --> 01:15:52,630 Men det er lidt for højt niveau, ikke? 1518 01:15:52,630 --> 01:15:58,580 >> Lad os prøve at dykke i, hvad dette indvinding af at blive testet midler. 1519 01:15:58,580 --> 01:16:06,340 Med andre ord, selvom du ikke ved noget om biler, hvilken slags spørgsmål 1520 01:16:06,340 --> 01:16:13,440 kunne man spørge, for at afgøre, om du bliver testet, hvis du er bilen? 1521 01:16:13,440 --> 01:16:19,638 Hvilke egenskaber kan være stede, hvis en bil er ved at blive testet? 1522 01:16:19,638 --> 01:16:21,026 >> PUBLIKUM: Test udstyr. 1523 01:16:21,026 --> 01:16:22,420 >> DAVID MALAN: Test udstyr. 1524 01:16:22,420 --> 01:16:26,060 Så hvis testudstyr i nærheden, så udleder mindre. 1525 01:16:26,060 --> 01:16:28,669 Så jeg kunne forestille mig at gennemføre at med en slags kameraer 1526 01:16:28,669 --> 01:16:29,960 eller påvisning hvad der foregår omkring dig. 1527 01:16:29,960 --> 01:16:32,870 Og lad mig foreslå, at bare føles for kompliceret 1528 01:16:32,870 --> 01:16:37,914 til faktisk har ekstra hardware netop til dette formål. 1529 01:16:37,914 --> 01:16:44,830 >> PUBLIKUM: Hvis du er i park, hvis din hætte er åben. 1530 01:16:44,830 --> 01:16:47,320 >> DAVID MALAN: I parken eller hætte åben, så det er godt. 1531 01:16:47,320 --> 01:16:47,420 >> PUBLIKUM: Og bil kørende. 1532 01:16:47,420 --> 01:16:50,480 >> DAVID MALAN: Så det er lidt mere concrete-- og bil kørende. 1533 01:16:50,480 --> 01:16:55,690 Så det ville være sammenfaldet af en nogle forskellige betingelser, hvis du vil. 1534 01:16:55,690 --> 01:16:59,227 Så hvis bilen er i parken, og selv selv om dette er en meget mekanisk ting 1535 01:16:59,227 --> 01:17:01,060 typisk, jeg kunne forestille skrive software, 1536 01:17:01,060 --> 01:17:03,476 især fordi der er ofte et lys der i disse dage, 1537 01:17:03,476 --> 01:17:07,400 Jeg kunne forestille mig at der er software, der kan forespørge Shifter 1538 01:17:07,400 --> 01:17:10,634 eller hvad ikke, er du i parken, er du i drevet, er du i bakgear. 1539 01:17:10,634 --> 01:17:12,550 Og jeg kan komme tilbage en besvare det er enten ja 1540 01:17:12,550 --> 01:17:14,400 eller nej til den slags spørgsmål. 1541 01:17:14,400 --> 01:17:17,630 >> Og så kunne jeg også nok svare et spørgsmål som, er hætten åben. 1542 01:17:17,630 --> 01:17:21,860 Måske er der en slags sensor at enten giver mig tilbage en 1 eller 0, 1543 01:17:21,860 --> 01:17:23,720 sandt eller falsk, motorhjelmen er åben. 1544 01:17:23,720 --> 01:17:28,180 Og så bil kørende, kunne jeg afsløre at en eller anden måde via hvilken mekanisme? 1545 01:17:28,180 --> 01:17:30,430 Ligesom, bilen kører, jeg kunne registrere, at det er på, 1546 01:17:30,430 --> 01:17:32,127 kunne jeg opdage en eller anden måde at bilen er i bevægelse? 1547 01:17:32,127 --> 01:17:32,881 >> Målgruppe: RPM'er. 1548 01:17:32,881 --> 01:17:35,190 >> DAVID MALAN: Ja, så der er altid, at nål, 1549 01:17:35,190 --> 01:17:38,034 fortæller dig, hvor mange omdrejninger i minut hjulene oplever. 1550 01:17:38,034 --> 01:17:39,200 Og så kunne jeg se på det. 1551 01:17:39,200 --> 01:17:43,090 Og hvis det ikke er 0, som sandsynligvis betyder, at bilen er i bevægelse. 1552 01:17:43,090 --> 01:17:45,400 Men vi er nødt til at være en lidt forsigtige der, 1553 01:17:45,400 --> 01:17:49,780 because-- lad os forenkle denne-- hvis vi bare sagde, hvis bilen kører, 1554 01:17:49,780 --> 01:17:53,070 Vi ønsker ikke at bare udlede mindre, Vi ønsker, hvis bilen kører 1555 01:17:53,070 --> 01:17:54,310 og det bliver testet. 1556 01:17:54,310 --> 01:17:56,320 >> Så der er et par andre ingredienser, folk 1557 01:17:56,320 --> 01:18:00,550 har en hypotese softwaren gør, fordi fraværende selve kildekoden, 1558 01:18:00,550 --> 01:18:05,130 du kan kun slags udlede af den fysiske virkninger af bilen, hvad der 1559 01:18:05,130 --> 01:18:08,280 måske foregår under hætten i software. 1560 01:18:08,280 --> 01:18:17,090 Så hvis bilen kører, og måske, sige, baghjul ikke bevæger sig, 1561 01:18:17,090 --> 01:18:19,420 kan dette være vejledende af en slags test? 1562 01:18:19,420 --> 01:18:22,830 Hvad skal jeg hentyder til her? 1563 01:18:22,830 --> 01:18:24,830 Ja, måske, det er på den ene af disse rullelejer ting, 1564 01:18:24,830 --> 01:18:28,340 hvor ens hjulene vender i den forreste eller i ryggen, 1565 01:18:28,340 --> 01:18:32,570 alt efter om det er forhjul eller baghjulstræk, så halvdelen af ​​hjulene 1566 01:18:32,570 --> 01:18:34,420 er i bevægelse, men den andre to er ikke, som 1567 01:18:34,420 --> 01:18:36,320 er en underlig situation i den virkelige verden. 1568 01:18:36,320 --> 01:18:38,110 Hvis du kører på vej, skal der ikke ske. 1569 01:18:38,110 --> 01:18:40,568 Men hvis du er i et lager på en slags rullesystem, 1570 01:18:40,568 --> 01:18:41,630 der kan faktisk ske. 1571 01:18:41,630 --> 01:18:46,980 >> Jeg tror folk også foreslået, at måske, hvis bilen kører og styring 1572 01:18:46,980 --> 01:18:51,300 hjulet ikke bevæger sig, at også kan være et signal, 1573 01:18:51,300 --> 01:18:54,090 fordi det er rimeligt for som en straks på en vej. 1574 01:18:54,090 --> 01:18:57,960 Men selv da, mennesket er sandsynligvis flytte det lidt eller helt sikkert 1575 01:18:57,960 --> 01:18:59,100 over et par sekunder. 1576 01:18:59,100 --> 01:19:01,030 Eller i løbet af et minut, odds er det ikke 1577 01:19:01,030 --> 01:19:03,510 vil blive fikseret i nøjagtig samme position. 1578 01:19:03,510 --> 01:19:05,440 >> Så med andre ord, vi kan tage subtraktion, 1579 01:19:05,440 --> 01:19:08,200 er du bliver testet, og nedbryde denne funktionalitet 1580 01:19:08,200 --> 01:19:10,420 ind i disse komponent ingredienser. 1581 01:19:10,420 --> 01:19:13,440 Og det er virkelig, hvad Volkswagens ingeniører eller anden måde gjorde. 1582 01:19:13,440 --> 01:19:17,070 De skrev software bevidst til opdage, hvis bilen bliver testet, 1583 01:19:17,070 --> 01:19:20,440 Derfor udleder mindre, ellers udsender på den sædvanlige måde. 1584 01:19:20,440 --> 01:19:22,690 >> Og problemet også her er, at software ikke er 1585 01:19:22,690 --> 01:19:26,080 noget, du virkelig kan se, medmindre du har den såkaldte kildekode. 1586 01:19:26,080 --> 01:19:29,060 Så der er to forskellige typer af code-- mindst to forskellige typer 1587 01:19:29,060 --> 01:19:30,130 kode i verden. 1588 01:19:30,130 --> 01:19:33,150 Der er noget, der hedder kilde kode, som ikke er ulig hvad 1589 01:19:33,150 --> 01:19:37,240 Vi har været at skrive, kildekode. 1590 01:19:37,240 --> 01:19:40,099 >> Dette er kildekode skrevet i et sprog kaldet pseudokode, 1591 01:19:40,099 --> 01:19:41,640 som er lige noget engelsk-lignende. 1592 01:19:41,640 --> 01:19:43,140 Der er ingen formel definition af det. 1593 01:19:43,140 --> 01:19:46,770 Men C og Java, C ++, der er alle formelle sprog,, 1594 01:19:46,770 --> 01:19:50,610 når du skriver i dem, hvad du har er en tekstfil, der indeholder kildekode. 1595 01:19:50,610 --> 01:19:54,850 >> Men der er også noget i verden kaldet maskinkode. 1596 01:19:54,850 --> 01:20:00,579 Og maskinkode, desværre, er kun 0'er og 1'er. 1597 01:20:00,579 --> 01:20:02,870 Så maskinkode er hvad maskiner forstå, selvfølgelig. 1598 01:20:02,870 --> 01:20:04,470 Kildekoden er, hvad mennesker forstår. 1599 01:20:04,470 --> 01:20:08,390 >> Og generelt, men ikke altid, er der et program 1600 01:20:08,390 --> 01:20:14,090 at en programmør bruger der tager kilde kode og forvandler det til maskinkode. 1601 01:20:14,090 --> 01:20:17,400 Og at programmet er generelt kaldes en compiler. 1602 01:20:17,400 --> 01:20:19,820 Så dit input er kildekode, dit output er maskinkode, 1603 01:20:19,820 --> 01:20:22,890 og compileren er et stykke software, der gør denne proces. 1604 01:20:22,890 --> 01:20:26,260 Så dette faktisk kort pænt til vores input, algoritmer, output. 1605 01:20:26,260 --> 01:20:30,400 >> Men det er en meget specifik inkarnation af det, hvilket vil sige, at, 1606 01:20:30,400 --> 01:20:34,200 selv hvis du ejer en af ​​Volkswagens biler, der er skyldige i denne, 1607 01:20:34,200 --> 01:20:38,390 det er ikke ligesom du kan bare åbne hætte eller åbne manualen eller se 1608 01:20:38,390 --> 01:20:42,690 på kildekoden, fordi på det tidspunkt det når din bil i din indkørsel, 1609 01:20:42,690 --> 01:20:45,580 Det er allerede blevet omdannet til 0'er og 1'er. 1610 01:20:45,580 --> 01:20:51,310 Og det er meget svært, ikke umuligt, men meget svært at indsamle meget af noget 1611 01:20:51,310 --> 01:20:53,710 fra bare at kigge på den underliggende 0'er og 1'er. 1612 01:20:53,710 --> 01:20:57,150 Så du kan finde ud af det i sidste ende, hvis du forstår, hvordan en maskine 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 meget tidskrævende. 1615 01:21:01,440 --> 01:21:05,010 Og selv der, måske du ikke være i stand til at se alt 1616 01:21:05,010 --> 01:21:08,220 at koden rent faktisk kan gøre. 1617 01:21:08,220 --> 01:21:12,521 >> Eventuelle spørgsmål vedrørende denne eller dette slags proces mere generelt? 1618 01:21:12,521 --> 01:21:15,134 1619 01:21:15,134 --> 01:21:18,300 Og faktisk kan vi binde denne diskussion til gårsdagens diskussion af Apple. 1620 01:21:18,300 --> 01:21:22,500 Dette er også er grunden til, at FBI kan ikke bare gå og kigge i den mistænktes telefon 1621 01:21:22,500 --> 01:21:26,820 og finde de linjer kode, for eksempel, at aktivere adgangskoden 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 på det tidspunkt, det er på stipendiaten iPhone, 1624 01:21:31,630 --> 01:21:34,975 Det er allerede blevet konverteret til 0 og 1'er. 1625 01:21:34,975 --> 01:21:38,015 1626 01:21:38,015 --> 01:21:40,820 >> Nå, lad os holde pause her for vores se på beregningsmæssige tænkning. 1627 01:21:40,820 --> 01:21:42,320 Hvorfor vi ikke tage en 15 minutters pause. 1628 01:21:42,320 --> 01:21:44,130 Og når vi vender tilbage, vil vi tage et kig på programmering 1629 01:21:44,130 --> 01:21:46,550 selv og begynde at kortlægge nogle af disse højt niveau begreber 1630 01:21:46,550 --> 01:21:49,780 til en faktisk, hvis legende, programmeringssprog. 1631 01:21:49,780 --> 01:21:51,089