1 00:00:00,000 --> 00:00:00,270 2 00:00:00,270 --> 00:00:01,790 DAVID MALAN: Welkom terug, iedereen. 3 00:00:01,790 --> 00:00:05,030 Dus gisteren, zult u zich herinneren dat richtten we ons op deze onderwerpen hier. 4 00:00:05,030 --> 00:00:08,380 Dus moesten we vier overkoepelende topics-- privacy, veiligheid, en de samenleving; 5 00:00:08,380 --> 00:00:11,960 internettechnologieën; cloud computing; en uiteindelijk, web development. 6 00:00:11,960 --> 00:00:14,170 >> Heeft iemand de bandbreedte of de tijd 7 00:00:14,170 --> 00:00:16,900 om een ​​beetje John kijken Oliver gisteravond? 8 00:00:16,900 --> 00:00:20,120 Het is eigenlijk vrij amusant, zo niet een beetje beangstigend. 9 00:00:20,120 --> 00:00:24,700 Heeft u vragen over om het even wat wij deden gisteren? 10 00:00:24,700 --> 00:00:27,600 Elke verduidelijkingen? 11 00:00:27,600 --> 00:00:35,580 Heeft u vragen die u wilt maken zeker dat we ingaan op vandaag de dag in een of andere vorm? 12 00:00:35,580 --> 00:00:37,300 Dus schone lei. 13 00:00:37,300 --> 00:00:38,760 >> Dus wat er op de agenda voor vandaag? 14 00:00:38,760 --> 00:00:41,301 Dus ik dacht dat we vandaag beginnen met een blik op wat er in het algemeen 15 00:00:41,301 --> 00:00:44,460 bekend als computationele thinking-- bij het risico van een te simpel, denken 16 00:00:44,460 --> 00:00:46,636 zoals een computer, misschien denken als een ingenieur, 17 00:00:46,636 --> 00:00:48,510 en proberen te beginnen het organiseren van uw gedachten 18 00:00:48,510 --> 00:00:52,039 of om u een beter gevoel van geven wat er bij eigenlijk commandant 19 00:00:52,039 --> 00:00:54,080 een computer om iets te doen bij wijze van programmeren. 20 00:00:54,080 --> 00:00:56,663 En we houden het bij een vrij hoog niveau, vrij veel Engels, 21 00:00:56,663 --> 00:00:59,850 maar probeer het gebruik van bekende voorbeelden te formaliseren hoe 22 00:00:59,850 --> 00:01:01,450 je zou gaan over het oplossen van problemen. 23 00:01:01,450 --> 00:01:04,080 >> En we zullen sommige CS opnieuw onderwerpen, zoals abstractie, 24 00:01:04,080 --> 00:01:06,040 die een paar kwam keren gisteren, 25 00:01:06,040 --> 00:01:07,554 algoritmes, en dan representatie. 26 00:01:07,554 --> 00:01:09,720 En dat is waar we zullen beginnen vandaag in slechts een moment. 27 00:01:09,720 --> 00:01:11,481 Dan zullen we een kijkje nemen op de programmering te nemen. 28 00:01:11,481 --> 00:01:13,480 We nemen een kijkje bij enkele nemen fundamentele constructen 29 00:01:13,480 --> 00:01:16,450 waarmee je misschien vertrouwd en zou zelfs kunnen vinden heel intuïtief. 30 00:01:16,450 --> 00:01:18,370 >> We zullen kijken, in feite, bij een steekproef programmering 31 00:01:18,370 --> 00:01:21,244 omgeving die is zeer toegankelijk, erg speels, en inderdaad gericht 32 00:01:21,244 --> 00:01:22,555 voor kinderen van 12 jaar en ouder. 33 00:01:22,555 --> 00:01:25,930 We zullen een paar minuten door te brengen en neem dan de dingen op een lager niveau 34 00:01:25,930 --> 00:01:30,360 en eigenlijk praten over een aantal van de algoritmes en datastructuren, 35 00:01:30,360 --> 00:01:32,360 zo te zeggen, dat programmeurs gebruiken meestal 36 00:01:32,360 --> 00:01:35,040 problemen veel oplossen efficiënter dan je misschien 37 00:01:35,040 --> 00:01:37,322 in staat zijn om helemaal te doen zonder hen. 38 00:01:37,322 --> 00:01:40,280 Dan na de lunch, zullen we een kijkje nemen op technologie stacks, dat is gewoon 39 00:01:40,280 --> 00:01:42,240 een mooie manier om te zeggen collecties van technologieën 40 00:01:42,240 --> 00:01:43,690 dat je zou kunnen gebruiken om het oplossen van een probleem. 41 00:01:43,690 --> 00:01:46,670 En we praten over het alfabet soep van de talen die er bestaan ​​today-- 42 00:01:46,670 --> 00:01:50,930 Java en Python en C ++ en PHP en Ruby en allerlei andere dingen. 43 00:01:50,930 --> 00:01:53,740 >> We nemen een kijkje te nemen in het kort op design patterns. 44 00:01:53,740 --> 00:01:57,730 Programmeurs, na verloop van tijd, hebben aangenomen methodologieën 45 00:01:57,730 --> 00:02:00,690 die de neiging hebben om hen te helpen problemen gemakkelijker. 46 00:02:00,690 --> 00:02:04,390 Als je begint om jezelf te zien schrijven het zelfde soort code opnieuw en opnieuw, 47 00:02:04,390 --> 00:02:08,080 mensen formaliseren die herhalingen en namen toeschrijven aan hen 48 00:02:08,080 --> 00:02:10,084 en vervolgens te gebruiken en bevorderen ze uiteindelijk. 49 00:02:10,084 --> 00:02:12,250 En we zullen een beetje praten over mobiele strategieën, 50 00:02:12,250 --> 00:02:16,099 als wat betekent het om werkelijk maken van een mobiele app of een mobiele website. 51 00:02:16,099 --> 00:02:17,140 Doe je het voor Android? 52 00:02:17,140 --> 00:02:17,730 Doe je het voor iOS? 53 00:02:17,730 --> 00:02:19,160 Doe je het voor deze beide? 54 00:02:19,160 --> 00:02:20,326 En wat zijn de trade-offs? 55 00:02:20,326 --> 00:02:23,180 En dan tot slot, zullen we nemen Kijk web programmeren, die 56 00:02:23,180 --> 00:02:25,380 is een verzamelnaam echt beschrijven elk moment 57 00:02:25,380 --> 00:02:28,410 je schrijft software die bedoeld om te draaien op het web, 58 00:02:28,410 --> 00:02:30,430 zowel op telefoons of desktops of laptops. 59 00:02:30,430 --> 00:02:33,490 We nemen een korte blik op te nemen databases en het ontwerp 60 00:02:33,490 --> 00:02:39,049 daarin, alleen al omdat vrijwel elk interessante web-based applicatie 61 00:02:39,049 --> 00:02:40,590 deze dagen heeft een soort van database. 62 00:02:40,590 --> 00:02:42,380 Anders, het zou gewoon statische content zijn. 63 00:02:42,380 --> 00:02:45,254 En een database kunt u bellen veranderingen in de tijd, of jezelf 64 00:02:45,254 --> 00:02:45,960 of van gebruikers. 65 00:02:45,960 --> 00:02:47,820 En we zullen nadenken over hoe je zou gaan over het ontwerpen 66 00:02:47,820 --> 00:02:50,510 die database en de aard van de jargon dat zou kunnen komen in een ingenieur 67 00:02:50,510 --> 00:02:52,790 bespreking op een wit bord wanneer de daadwerkelijke uitvoering 68 00:02:52,790 --> 00:02:53,900 een app voor de eerste keer. 69 00:02:53,900 --> 00:02:57,002 >> We zullen kort spreken over API's, nuttige diensten 70 00:02:57,002 --> 00:02:59,960 die u kunt gebruiken op te staan schouders van anderen, of bedrijven 71 00:02:59,960 --> 00:03:02,619 of individuen, en het oplossen van uw eigen problemen sneller. 72 00:03:02,619 --> 00:03:04,785 En dan zullen we misschien ploeteren een beetje met JavaScript, 73 00:03:04,785 --> 00:03:08,900 een programmeertaal die wordt gebruikt zowel in browsers deze dagen, maar ook 74 00:03:08,900 --> 00:03:09,820 in servers. 75 00:03:09,820 --> 00:03:11,890 En misschien zullen we opnieuw, de tijd het toelaat, 76 00:03:11,890 --> 00:03:15,670 een aantal van de hands-on web stuff we gisteren en de twee te integreren 77 00:03:15,670 --> 00:03:17,630 samen voordat we verdagen. 78 00:03:17,630 --> 00:03:22,380 >> Dus met dat-- wat ahead-- is er iets ontbreekt dat u 79 00:03:22,380 --> 00:03:26,289 wil ervoor zorgen dat we voegen en tik op op een bepaald punt. 80 00:03:26,289 --> 00:03:28,330 Als het veren voor de geest, breng het duurde niet lang. 81 00:03:28,330 --> 00:03:32,010 Maar waarom doen we niet beginnen met een kijk naar computationele denken. 82 00:03:32,010 --> 00:03:35,420 >> En laat me voorstellen dat computationele denken is, nogmaals, 83 00:03:35,420 --> 00:03:38,830 soort van het hoge niveau beschrijving van wat een computer wetenschapper zou kunnen doen. 84 00:03:38,830 --> 00:03:42,470 En inderdaad, laten we beginnen drie ingrediënten 85 00:03:42,470 --> 00:03:44,207 misschien gaan in computationele denken. 86 00:03:44,207 --> 00:03:45,790 Dit is slechts een manier om te beschrijven. 87 00:03:45,790 --> 00:03:48,490 We zouden zeker definiëren dit in een aantal manieren. 88 00:03:48,490 --> 00:03:50,630 >> Maar laat me voor te stellen, omwille vandaag 89 00:03:50,630 --> 00:03:53,910 dat de problemen in de wereld, alle problemen in de wereld, 90 00:03:53,910 --> 00:03:56,730 toen benaderd door een computer wetenschapper kon 91 00:03:56,730 --> 00:04:00,990 worden beschouwd als wat wij zullen oproepingangen, die 92 00:04:00,990 --> 00:04:08,142 nodig hebt om te eten krijgen in wat we zullen noemen algoritmen, die vervolgens verkregen uitgangen. 93 00:04:08,142 --> 00:04:10,600 Met andere woorden, het gehele wereld van probleemoplossende I vordering 94 00:04:10,600 --> 00:04:13,140 kan worden gedestilleerd tot Deze drie ingrediënten. 95 00:04:13,140 --> 00:04:14,450 Dus wat bedoel ik met ingangen? 96 00:04:14,450 --> 00:04:17,060 Ingangen is precies wat je bent overhandigd om op te lossen. 97 00:04:17,060 --> 00:04:20,052 >> Bijvoorbeeld, hier is een oude school probleem. 98 00:04:20,052 --> 00:04:22,760 Als ik een telefoonboek hier en Ik wil iets er naar kijken, 99 00:04:22,760 --> 00:04:23,760 dit is mijn inbreng. 100 00:04:23,760 --> 00:04:26,260 Ik heb 1000 of zo pagina's in een telefoonboek. 101 00:04:26,260 --> 00:04:27,780 Dit is de input voor mijn probleem. 102 00:04:27,780 --> 00:04:31,507 En ik wil om iets te vinden zoals Mike Smith, dus een vriend 103 00:04:31,507 --> 00:04:33,840 waarvan de naam en het nummer is hopelijk in dit adresboek. 104 00:04:33,840 --> 00:04:36,430 >> Dit is voor de tijd van cel telefoons, dus ik kan niet gewoon zoeken naar het. 105 00:04:36,430 --> 00:04:38,540 Dus ik heb het oude te doen school en eigenlijk zoeken 106 00:04:38,540 --> 00:04:41,331 deze ingangen voor enige antwoord. 107 00:04:41,331 --> 00:04:43,580 En dat antwoord is gewoon de uitgang te noemen. 108 00:04:43,580 --> 00:04:44,871 Dus de ingang is het telefoonboek. 109 00:04:44,871 --> 00:04:47,787 Het algoritme is wat set van stappen die ik gebruiken om Mike Smith te vinden. 110 00:04:47,787 --> 00:04:50,120 En de output is, hopelijk, Mike Smith telefoonnummer. 111 00:04:50,120 --> 00:04:52,703 En dit dan gewoon zou zijn representatief voor de meeste enig probleem 112 00:04:52,703 --> 00:04:55,210 om met je handen ingangen en willen uitgangen te produceren. 113 00:04:55,210 --> 00:04:59,459 >> Dus voordat we kijken naar het proces waarmee kunnen we dat probleem op te lossen, 114 00:04:59,459 --> 00:05:01,250 het vinden van Mike Smith en zoiets, 115 00:05:01,250 --> 00:05:04,090 laten we eens kijken naar de eerste en de de last-- in- en uitgangen. 116 00:05:04,090 --> 00:05:08,060 Fysiek natuurlijk de input here is een hele hoop papier aan elkaar gelijmd 117 00:05:08,060 --> 00:05:09,400 in de vorm van een telefoonboek. 118 00:05:09,400 --> 00:05:13,660 Maar computers, van laptops course-- en desktops en zelfs telefoons 119 00:05:13,660 --> 00:05:16,430 deze dagen-- dat zijn elektronische apparaten. 120 00:05:16,430 --> 00:05:20,920 >> En aan het eind van de dag, wat de enige ingevoerd in een computer? 121 00:05:20,920 --> 00:05:23,299 Nou, het is iets als Dit netsnoer hier. 122 00:05:23,299 --> 00:05:25,590 Ik steek de stekker in het stopcontact, en Ik krijg een stroom van elektronen, 123 00:05:25,590 --> 00:05:27,048 die me in staat stelt om de machine uit te voeren. 124 00:05:27,048 --> 00:05:30,420 Of misschien die elektronen door middel van mijn batterij. 125 00:05:30,420 --> 00:05:33,790 Maar aan het eind van de dag, dat het enige wat in te gaan op mijn laptop. 126 00:05:33,790 --> 00:05:35,772 En zo interessant spul is uiteindelijk 127 00:05:35,772 --> 00:05:37,480 coming out, of via de printer 128 00:05:37,480 --> 00:05:40,320 of het scherm of audially of dergelijke. 129 00:05:40,320 --> 00:05:45,320 >> Dus als alles wat we hebben als onze fundamentele ingevoerd in een computer 130 00:05:45,320 --> 00:05:49,160 is elektriciteit, dus gewoon elektronen gaan in en of uit 131 00:05:49,160 --> 00:05:54,465 en dus hoe kunnen we gebruik maken van die ingang om daadwerkelijk informatie te vertegenwoordigen? 132 00:05:54,465 --> 00:05:57,090 Met andere woorden, hoe krijgen we van een eenvoudige elektrische stroom 133 00:05:57,090 --> 00:06:00,350 gemaakt voor daadwerkelijke cijfers of letters feitelijke 134 00:06:00,350 --> 00:06:03,620 of daadwerkelijke beelden op het scherm of feitelijke films of e-mails 135 00:06:03,620 --> 00:06:05,690 of een aantal van deze hoger niveau concepten, 136 00:06:05,690 --> 00:06:07,680 als je wil, dat op het Uiteindelijk ergens 137 00:06:07,680 --> 00:06:11,950 moeten worden in deze elektronisch mechanisch apparaat 138 00:06:11,950 --> 00:06:16,260 met alleen de eenvoudige ingredients-- elektronen die in en uit? 139 00:06:16,260 --> 00:06:19,530 >> Dus het lijkt erop dat, in de eenvoudigste vorm, 140 00:06:19,530 --> 00:06:23,260 de enige soort van toestanden Ik heb in mijn wereld, dus 141 00:06:23,260 --> 00:06:25,350 voorwaarden speak-- in mijn wereld-- is ofwel 142 00:06:25,350 --> 00:06:33,020 Ik heb elektronen stromen, elektriciteit vloeiend, of doe ik niet-- zo aan, uit. 143 00:06:33,020 --> 00:06:35,850 En laten we formaliseren aan en uit, als een computer wetenschapper zou kunnen, 144 00:06:35,850 --> 00:06:37,255 met slechts 1 en 0. 145 00:06:37,255 --> 00:06:39,880 Laten we gewoon te beschrijven wat willekeurige maar consistent aantal aan. 146 00:06:39,880 --> 00:06:41,970 1 betekent op, 0 betekent uitgeschakeld. 147 00:06:41,970 --> 00:06:45,427 Of is dit misschien ook dit als true middelen aan en waar betekent. 148 00:06:45,427 --> 00:06:47,510 Je zou ook zwarte doen en wit of rood en blauw. 149 00:06:47,510 --> 00:06:48,759 Je hoeft alleen maar twee omschrijvingen. 150 00:06:48,759 --> 00:06:52,240 En een computer wetenschappers zou over het algemeen gewoon gebruik maken van 0 en 1. 151 00:06:52,240 --> 00:06:58,980 >> Dus als dat het geval is, mijn enige alfabet is bestaande uit 0 en 1 is, hoe 152 00:06:58,980 --> 00:07:03,360 zou ik misschien naar het nummer toe, ook 2 in een computer, laat staan ​​het nummer 3 153 00:07:03,360 --> 00:07:06,140 of een letter van het alfabet of een beeld of een film? 154 00:07:06,140 --> 00:07:08,910 Hoe kunnen we een soort van bootstrappen onszelf van dit basisbeginsel 155 00:07:08,910 --> 00:07:12,080 van 0 en 1 en daadwerkelijk iets interessanter te vertegenwoordigen? 156 00:07:12,080 --> 00:07:14,430 >> Nou, laten we deze vraag in de wacht voor slechts een moment 157 00:07:14,430 --> 00:07:17,520 en overwegen iets hopelijk bekend, 158 00:07:17,520 --> 00:07:21,150 zelfs als je niet echt over nagedacht Het in detail voor 10, 20, 30, 40, 50 159 00:07:21,150 --> 00:07:22,520 meer jaren. 160 00:07:22,520 --> 00:07:24,780 Dit is wat? 161 00:07:24,780 --> 00:07:28,050 Hoe zou je dat uit? 162 00:07:28,050 --> 00:07:30,770 Niet een strikvraag. 163 00:07:30,770 --> 00:07:32,950 Een aantal, maar wat is het? 164 00:07:32,950 --> 00:07:34,842 1, 2, 3 of 123. 165 00:07:34,842 --> 00:07:37,800 En ik vond hoe je zei dat 1, 2, 3, want dat is een manier van kijken naar het. 166 00:07:37,800 --> 00:07:39,870 1, 2, 3, is het een sequentie drie symbolen. 167 00:07:39,870 --> 00:07:42,005 Het is foto's die we nu hebben woorden voor. 168 00:07:42,005 --> 00:07:44,880 En als je een soort van lees ze allemaal samen een typisch menselijke in Engels 169 00:07:44,880 --> 00:07:46,600 zou zeggen 123. 170 00:07:46,600 --> 00:07:48,350 En dat is een soort van een hoger niveau concept, 171 00:07:48,350 --> 00:07:50,340 voelt als een redelijk groot aantal. 172 00:07:50,340 --> 00:07:51,490 >> Maar hoe we daar? 173 00:07:51,490 --> 00:07:54,640 Nou, het is misschien een tijdje geleden zijn je hebt nagedacht over het op deze manier, 174 00:07:54,640 --> 00:07:56,680 maar terug in mijn dag, ik soort van deze geleerde 175 00:07:56,680 --> 00:08:01,030 zoals kolom 1 van de 10's kolom en kolom 100 is. 176 00:08:01,030 --> 00:08:06,400 Dus als Lakisa zegt, is het 1, 2, 3, maar het is ook 123. 177 00:08:06,400 --> 00:08:08,700 Maar hoe komen we uit de eerste aan de laatste? 178 00:08:08,700 --> 00:08:12,340 >> Nou, je zou meestal doen in kolom van de 100's, ik heb een 1. 179 00:08:12,340 --> 00:08:14,794 Dus dat is hetzelfde als zeggen 100 keer 1. 180 00:08:14,794 --> 00:08:16,210 En dan in kolom 10's, ik heb 2. 181 00:08:16,210 --> 00:08:18,464 Dus dat is hetzelfde als zeggen 10 keer 2. 182 00:08:18,464 --> 00:08:19,630 In kolom 1's, ik heb 3. 183 00:08:19,630 --> 00:08:21,720 Dus dat is hetzelfde als zeggen dat 1 keer 3. 184 00:08:21,720 --> 00:08:24,290 >> En als ik deze dingen toe te voegen bijelkaar natuurlijk 185 00:08:24,290 --> 00:08:27,470 is 100 plus de 10 plus 3. 186 00:08:27,470 --> 00:08:31,750 En oh, dat is waarom ik dit te krijgen hoger niveau begrip 123. 187 00:08:31,750 --> 00:08:37,220 Het is gewoon elementaire wiskunde, waarbij deze symbolen gewichten aan hen, als je 188 00:08:37,220 --> 00:08:39,620 zal, placeholder of kolom waarden. 189 00:08:39,620 --> 00:08:42,090 En zodra ik vermenigvuldig alles out, krijg ik dit nummer. 190 00:08:42,090 --> 00:08:47,840 >> Hoeveel van jullie weten hoe om te spreken binary-- 0 en 1's-- als een computer? 191 00:08:47,840 --> 00:08:50,410 OK, perfect, niemand, of niemand van jullie denken dat je doet. 192 00:08:50,410 --> 00:08:52,550 Maar ik zou u aanspraak eigenlijk weten dit al. 193 00:08:52,550 --> 00:08:55,330 We moeten gewoon een soort van tweak onze mentale model een beetje. 194 00:08:55,330 --> 00:08:57,250 Maar de werkwijze is precies hetzelfde. 195 00:08:57,250 --> 00:09:01,460 >> Laat me deze daar te verlaten en in plaats daarvan trekken deze enkele seconden ingedrukt. 196 00:09:01,460 --> 00:09:05,060 In de wereld van computers, we hebben alleen 0 en 1's. 197 00:09:05,060 --> 00:09:07,240 En zo het ding dat is gaat veranderen is wat? 198 00:09:07,240 --> 00:09:10,920 Nou, in mijn menselijke wereld, de decimale stelsel, december betekenis 10, 199 00:09:10,920 --> 00:09:12,740 Ik heb hoeveel cijfers tot mijn beschikking? 200 00:09:12,740 --> 00:09:15,270 201 00:09:15,270 --> 00:09:16,540 10, toch? 202 00:09:16,540 --> 00:09:17,880 0 tot 9 natuurlijk. 203 00:09:17,880 --> 00:09:21,210 >> En dat is waarom we hebben de 10's plaats en de 100's plaats. 204 00:09:21,210 --> 00:09:22,380 Waar dat vandaan? 205 00:09:22,380 --> 00:09:24,430 Nou, dit is 10 tot de macht van 0. 206 00:09:24,430 --> 00:09:28,440 Dit is 10 tot de macht 1, 10 de macht van 2, enzovoort. 207 00:09:28,440 --> 00:09:32,110 Je houdt gewoon je columns vermenigvuldigen met 10, te beginnen met slechts 1 208 00:09:32,110 --> 00:09:33,700 in de meest rechtse hier. 209 00:09:33,700 --> 00:09:35,490 >> Dus in de wereld computers, als je alleen 210 00:09:35,490 --> 00:09:39,600 hebben binary-- bi betekenis 2-- of 0's en 1's, we hebben net 211 00:09:39,600 --> 00:09:42,420 echt nodig om te veranderen de basis van die wiskunde. 212 00:09:42,420 --> 00:09:46,410 Dus met andere woorden, nu gaan we gewoon hebben de kolom 1 en the-- 213 00:09:46,410 --> 00:09:51,270 Waar is deze going-- kolom 2's, kolom 4 is, en misschien daarbuiten. 214 00:09:51,270 --> 00:09:52,250 Waarom is dat? 215 00:09:52,250 --> 00:09:55,650 Nou, dit is 2 van de 0-de macht. 216 00:09:55,650 --> 00:09:57,270 Dit is de 2 1. 217 00:09:57,270 --> 00:09:59,610 Dit is 2 de 2, enzovoort. 218 00:09:59,610 --> 00:10:04,910 >> Dus terwijl hier, we hebben 1, 10's, 100's, 1000's, 10.000's, 100.000, op 1 219 00:10:04,910 --> 00:10:10,560 miljoenen, enzovoort, even Wij hebben 1, 2, 4, 8, 16, 32, 64. 220 00:10:10,560 --> 00:10:13,950 Je blijft gewoon te vermenigvuldigen met 2, plaats houden van vermenigvuldigen met 10. 221 00:10:13,950 --> 00:10:16,780 Dus nu, als het doel op hand te vertegenwoordigen 222 00:10:16,780 --> 00:10:20,240 getallen met alleen 0 en 1 is, laten we eens kijken hoe we er zijn. 223 00:10:20,240 --> 00:10:26,540 >> Dit is natuurlijk het patroon 0 0 0, maar welk nummer conceptueel 224 00:10:26,540 --> 00:10:27,490 doet het voor? 225 00:10:27,490 --> 00:10:35,430 Nou, 4 keer 0 plus 2 tijden 0 plus 1 tijden 0, laten we samen toe te voegen die. 226 00:10:35,430 --> 00:10:40,030 4 tijden 0 is, natuurlijk, 0, plus 2 tijden 0 is, natuurlijk, plus 1 0 0 tijden 227 00:10:40,030 --> 00:10:40,850 is natuurlijk, 0. 228 00:10:40,850 --> 00:10:44,910 Dus ach, dit is de aantal wij mensen kennen als 0. 229 00:10:44,910 --> 00:10:47,810 >> Welnu, laten we heel snel snel vooruit. 230 00:10:47,810 --> 00:10:53,600 Als ik in plaats daarvan geen deel uitmaken van 0 0 0, maar laten we doen 1 0 1, 231 00:10:53,600 --> 00:10:57,010 dat zou kunnen zijn hoe Lakisa, eerder, zou gewoon uitspreken 1 0 1. 232 00:10:57,010 --> 00:11:01,020 Maar nu, hoe kunnen we het aan de hogere niveau het aantal wij mensen zouden weten? 233 00:11:01,020 --> 00:11:04,220 Dus wat is dit nummer? 234 00:11:04,220 --> 00:11:06,060 Het is 5, het nummer dat we kennen als 5. 235 00:11:06,060 --> 00:11:06,870 >> Nou ja, waarom is dat? 236 00:11:06,870 --> 00:11:09,620 Nou ja, kunnen we echt soort doorheen lopen methodisch 237 00:11:09,620 --> 00:11:14,880 4 maal 1, 2 tijden 0, 1 keer 1. 238 00:11:14,880 --> 00:11:19,880 Voeg deze samen, zodat dit is 4 plus 0 plus 1. 239 00:11:19,880 --> 00:11:21,577 En dat is inderdaad 5. 240 00:11:21,577 --> 00:11:24,660 Dus het is een beetje vervelend nu doet het rekenkundig opnieuw en opnieuw. 241 00:11:24,660 --> 00:11:26,300 Maar de werkwijze is precies hetzelfde. 242 00:11:26,300 --> 00:11:28,380 >> Het enige dat heeft veranderd in onze wereld 243 00:11:28,380 --> 00:11:32,740 is dat onze kolommen 1, 2, 4, 8, 16, enzovoorts, in plaats van 1, 10, 100, 244 00:11:32,740 --> 00:11:33,740 1000. 245 00:11:33,740 --> 00:11:40,000 En dat is alleen maar omdat ons alfabet heeft gekrompen van 0 tot 9 tot slechts 0-1. 246 00:11:40,000 --> 00:11:50,851 >> Dus als een kleine quiz hier, hoe zou u het nummer 7 in binaire vertegenwoordigen? 247 00:11:50,851 --> 00:11:51,350 0? 248 00:11:51,350 --> 00:11:53,490 Nou, 0, je bedoelt 0 0 0? 249 00:11:53,490 --> 00:11:58,140 250 00:11:58,140 --> 00:11:59,693 Zeg het nog eens, Karina. 251 00:11:59,693 --> 00:12:03,010 252 00:12:03,010 --> 00:12:03,550 Perfect. 253 00:12:03,550 --> 00:12:04,370 Waarom is dat? 254 00:12:04,370 --> 00:12:08,530 Het is effectief 4 plus 2 plus 1. 255 00:12:08,530 --> 00:12:09,580 Geweldig. 256 00:12:09,580 --> 00:12:14,364 >> Hoe kunnen we vertegenwoordigen een beetje another-- hoe zit het nummer 2? 257 00:12:14,364 --> 00:12:18,360 258 00:12:18,360 --> 00:12:20,690 Close, maar naar achteren. 259 00:12:20,690 --> 00:12:21,660 Dus wat is dit? 260 00:12:21,660 --> 00:12:26,290 Is 4 plus 1, dus dat is 5 weer. 261 00:12:26,290 --> 00:12:28,310 >> Dus what's-- Het spijt me, 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 2 zou, omdat weer, zelfs als het soort van niet springen op je af, 264 00:12:34,762 --> 00:12:35,470 gewoon doen de wiskunde. 265 00:12:35,470 --> 00:12:40,390 4 tijden 0, 0, 2 maal 1 is 2, 1 tijden 0 0 is. 266 00:12:40,390 --> 00:12:42,830 Dit is dus het getal bekend als 2. 267 00:12:42,830 --> 00:12:44,030 >> Hoe zit het met 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 Goed. 271 00:12:53,330 --> 00:12:56,130 Dus we soort van een andere placeholder nodig. 272 00:12:56,130 --> 00:12:59,570 We moeten 1 0 0 0. 273 00:12:59,570 --> 00:13:02,280 En dat is waar van onze soort old school decimale stelsel. 274 00:13:02,280 --> 00:13:05,280 Hoe beoordeelt u het nummer 1000 te vertegenwoordigen? 275 00:13:05,280 --> 00:13:08,480 >> Nou, je lijkt te zijn soort in een moeilijke positie, 276 00:13:08,480 --> 00:13:10,390 als je vraagt ​​te vertegenwoordigen het nummer 1000, 277 00:13:10,390 --> 00:13:14,960 want zelfs als je jezelf als 9 van deze, 9 van deze, 0 daarvan, 278 00:13:14,960 --> 00:13:18,730 dat is het grootste aantal u hebt, heb je niet helemaal tot 1.000. 279 00:13:18,730 --> 00:13:26,920 Dus als je 1000, je hoeft alleen maar een ander positie, zodat u kunt doen 1 0 0 0, 280 00:13:26,920 --> 00:13:29,460 ergo het nummer 1000. 281 00:13:29,460 --> 00:13:34,200 >> Dus nu, laten we de kaart van dit soort conceptuele discussie terug naar hardware, 282 00:13:34,200 --> 00:13:37,470 waarbij opnieuw de input was gewoon deze kleine voedingskabel, elektriciteit 283 00:13:37,470 --> 00:13:39,300 die in en buiten stroomt. 284 00:13:39,300 --> 00:13:44,740 En zo daarvoor worden toegewezen vanaf hier om daar, nou, wat hebben we echt nodig? 285 00:13:44,740 --> 00:13:49,460 Nou ja, kunt u denken aan het zijn binnenkant van een computer, een hele hoop van gloeilampen, 286 00:13:49,460 --> 00:13:50,450 als je wil. 287 00:13:50,450 --> 00:13:52,040 Ze zijn echt transistors genoemd. 288 00:13:52,040 --> 00:13:55,121 En transistors zijn slechts schakelaars dat kan zowel in of uit. 289 00:13:55,121 --> 00:13:56,870 Zo kunt u denken aan een transistor dat er op 290 00:13:56,870 --> 00:14:00,730 is waardoor elektriciteit te stromen en een transistor die af als het stoppen 291 00:14:00,730 --> 00:14:02,170 elektriciteit uit stromend. 292 00:14:02,170 --> 00:14:04,130 En in plaats van te nemen over de verlichting hier, 293 00:14:04,130 --> 00:14:06,450 waarom heb ik dat niet doen dit soort van de nieuwe school stijl. 294 00:14:06,450 --> 00:14:11,360 Dus dit is misschien een 1, een zaklamp wezen op, nauwelijks dat wel. 295 00:14:11,360 --> 00:14:14,050 En dit zou kunnen zijn een 0, en nu is het af. 296 00:14:14,050 --> 00:14:18,277 >> Dus het gebruik van dit fysieke apparaat, I kunnen vertegenwoordigen nu het binaire systeem. 297 00:14:18,277 --> 00:14:19,235 Ik moet gewoon twee staten. 298 00:14:19,235 --> 00:14:21,660 Het maakt niet uit wat kleur het is of wat het is. 299 00:14:21,660 --> 00:14:25,920 Het enige dat telt is dat ik de ene staat op en een andere staat uit. 300 00:14:25,920 --> 00:14:30,605 Dus met behulp van mijn telefoon hier, hoe kan ik vertegenwoordigen de nummer wij kennen als 0? 301 00:14:30,605 --> 00:14:34,490 302 00:14:34,490 --> 00:14:38,550 Of equivalent gezet, wat nummer moet ik die nu? 303 00:14:38,550 --> 00:14:39,810 0, omdat het apparaat is uitgeschakeld. 304 00:14:39,810 --> 00:14:41,560 >> En als ik dit doe? 305 00:14:41,560 --> 00:14:43,583 En nu, hoe kan ik vertegenwoordigen de nummer 2? 306 00:14:43,583 --> 00:14:46,380 307 00:14:46,380 --> 00:14:50,930 Kan ik lenen uw telefoon hier, zoals wij deden gisteren? 308 00:14:50,930 --> 00:14:58,490 Dus laten we eens kijken, dus als ik wil vertegenwoordigen de nummer 2, is dit de nummer 2? 309 00:14:58,490 --> 00:14:59,050 Nee. 310 00:14:59,050 --> 00:15:02,250 Welk nummer ben ik per ongeluk vertegenwoordigen hier? 311 00:15:02,250 --> 00:15:03,550 Dit is eigenlijk het nummer 3. 312 00:15:03,550 --> 00:15:05,008 >> Ja, welke wil ik uit te schakelen? 313 00:15:05,008 --> 00:15:09,634 De zwarte telefoon of-- goed, als they're-- zwarte telefoon of de witte telefoon? 314 00:15:09,634 --> 00:15:10,300 De witte telefoon. 315 00:15:10,300 --> 00:15:17,020 Dus als ik dit uitschakelen en we lijn het omhoog hier, we hebben een 1 316 00:15:17,020 --> 00:15:19,487 in de 2 de plaats en een 0 in de 1's place. 317 00:15:19,487 --> 00:15:21,195 En dus ik ben nu dat het nummer 2. 318 00:15:21,195 --> 00:15:24,680 En, Natuurlijk zou het getal 3, want nu beide lichten 319 00:15:24,680 --> 00:15:25,350 zijn ingeschakeld. 320 00:15:25,350 --> 00:15:27,480 >> En ik zal hier stoppen, maar het spreekt vanzelf 321 00:15:27,480 --> 00:15:31,100 als ik wil de vertegenwoordigen 4 of 8 of hoger, 322 00:15:31,100 --> 00:15:32,529 Ik ga meer telefoons nodig hebben. 323 00:15:32,529 --> 00:15:33,820 Maar dat is alles wat er gaande is. 324 00:15:33,820 --> 00:15:37,800 Dus als je ooit gehoord dat binnenkant van een-- bedanken je-- computer 325 00:15:37,800 --> 00:15:42,269 is miljoenen transistors, dat is gewoon miljoenen piepkleine schakelaars. 326 00:15:42,269 --> 00:15:44,310 En ze zijn niet licht bollen die aan en uit te schakelen, 327 00:15:44,310 --> 00:15:48,340 maar ze ofwel laten elektriciteit om ergens te vloeien of te stoppen. 328 00:15:48,340 --> 00:15:52,140 En dus er is uw twee states-- aan of uit, in of uit. 329 00:15:52,140 --> 00:15:55,730 >> Dus zouden we nu lijken dit vermogen hebben 330 00:15:55,730 --> 00:16:00,590 dit concept verklaart dat we willen graag in de werkelijke hardware. 331 00:16:00,590 --> 00:16:05,520 Maar alles wat we nu hebben is het vermogen om nummers lijkt te vertegenwoordigen. 332 00:16:05,520 --> 00:16:08,580 Dus hoe kunnen we gaan over het vertegenwoordigen letters van het alfabet, waarbij 333 00:16:08,580 --> 00:16:12,310 voelt als de volgende soort functie die u zou willen toevoegen aan een moderne computer 334 00:16:12,310 --> 00:16:14,280 als je eenmaal hebt nummers? 335 00:16:14,280 --> 00:16:16,930 >> En inderdaad, als je erover nadenkt Het historisch gezien computers 336 00:16:16,930 --> 00:16:19,426 waren echt ingevoerd om te dienen als numeriek rekenmachines. 337 00:16:19,426 --> 00:16:21,300 Maar natuurlijk, deze dagen, ze doen nog veel meer. 338 00:16:21,300 --> 00:16:23,799 Zelfs als ze opstarten, u zie doorgaans één of meer woorden. 339 00:16:23,799 --> 00:16:27,420 Dus hoe kan je vertegenwoordigen woorden, als alles wat je hebt is, nogmaals, 340 00:16:27,420 --> 00:16:31,054 elektriciteit aan het einde van de dag of equivalent 0 en 1's? 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, ik bedoel, we soort deden dit gisteren in een bepaalde vorm, 344 00:16:38,320 --> 00:16:40,200 waarbij op een gegeven moment, Ik denk dat ik willekeurig 345 00:16:40,200 --> 00:16:46,741 zei dat, als we willen het te vertegenwoordigen letter A, konden we gewoon bellen dat een 1. 346 00:16:46,741 --> 00:16:49,990 Het was in de context van cryptografie, waar we hadden alleen een soort van code, 347 00:16:49,990 --> 00:16:51,160 een soort mapping. 348 00:16:51,160 --> 00:16:56,680 >> Dus misschien A zal worden voorgesteld als een 1, en B wordt weergegeven als 2, 349 00:16:56,680 --> 00:17:01,560 en Z zal worden vertegenwoordigd als 26 bijvoorbeeld. 350 00:17:01,560 --> 00:17:07,430 En dan is het enige nadeel is dat als ik ben ga brieven coderen in mijn e-mail 351 00:17:07,430 --> 00:17:10,430 of in mijn sms-berichten als getallen, u allen 352 00:17:10,430 --> 00:17:12,640 in te stemmen met het gebruik van dezelfde set van conventies. 353 00:17:12,640 --> 00:17:14,619 En inderdaad, de wereld heeft precies dat gedaan. 354 00:17:14,619 --> 00:17:18,040 >> Er is een systeem ter wereld genaamd ASCII, American Standard 355 00:17:18,040 --> 00:17:21,640 Code for Information Interchange, dat is gewoon een beslissing enkele jaren 356 00:17:21,640 --> 00:17:25,720 geleden dat de mens gemaakt dat besloten dat A gaat evenaren, niet 357 00:17:25,720 --> 00:17:32,260 1, 2, en 26, en dus het is een forth-- weinig different-- maar 65, 66, 67. 358 00:17:32,260 --> 00:17:34,010 En ik trek een diagram in slechts een moment. 359 00:17:34,010 --> 00:17:34,580 Maar het is willekeurig. 360 00:17:34,580 --> 00:17:36,329 Maar het maakt niet uit dat het arbitrair. 361 00:17:36,329 --> 00:17:38,620 De wereld moet gewoon consistent zijn. 362 00:17:38,620 --> 00:17:40,540 >> Nu, meer recentelijk, er is iets liefhebber 363 00:17:40,540 --> 00:17:45,430 genaamd Unicode, want soort in de wereld gerealiseerde, na het uitvinden van computers, 364 00:17:45,430 --> 00:17:50,977 dat er meer dan goed 256 symbolen in de wereld 365 00:17:50,977 --> 00:17:53,560 opdat wij zouden willen vertegenwoordigen, vooral als je te introduceren 366 00:17:53,560 --> 00:17:58,420 Aziatische talen en andere symbolieken dat er meer expressiviteit dan je nodig hebt 367 00:17:58,420 --> 00:18:02,150 past in de eerste versie van Deze code, die ASCII werd genoemd. 368 00:18:02,150 --> 00:18:05,250 Dus Unicode maakt eigenlijk u meer 0 en 2 te gebruiken. 369 00:18:05,250 --> 00:18:08,830 In het bijzonder, houdt u het horen van de woord bytes in de samenleving en zelfs alleen maar 370 00:18:08,830 --> 00:18:09,400 gisteren. 371 00:18:09,400 --> 00:18:12,040 En een byte is wat ook alweer? 372 00:18:12,040 --> 00:18:14,840 >> Wat is een byte? 373 00:18:14,840 --> 00:18:15,700 Het is slechts 8 bits. 374 00:18:15,700 --> 00:18:17,150 Dus wat betekent dat eigenlijk? 375 00:18:17,150 --> 00:18:22,400 Nou, dat betekent, eerder, toen we waren het over binaire en ik was met behulp van 376 00:18:22,400 --> 00:18:28,010 willekeurig drie bits toen we waren praten over binary-- de 1 plaats, 377 00:18:28,010 --> 00:18:33,600 de 2 de plaats, en de 4's plek-- goed, een byte betekent gewoon dat je praat 378 00:18:33,600 --> 00:18:38,730 niet in eenheden van drie, maar vier, vijf, zes, zeven acht, 379 00:18:38,730 --> 00:18:46,910 die geeft ons 8 plaats, 16's, 32's, 64's en 128's. 380 00:18:46,910 --> 00:18:50,010 >> Met andere woorden, wat is niet alles die nuttig zijn een maateenheid, 381 00:18:50,010 --> 00:18:53,132 want het is net als een klein stukje informatie, aan of uit. 382 00:18:53,132 --> 00:18:54,840 Dus een paar jaar geleden, de wereld net besloten 383 00:18:54,840 --> 00:18:59,060 het iets gemakkelijker te praten termen van bytes, acht dingen tegelijk. 384 00:18:59,060 --> 00:19:01,670 En dus zo werd geboren het begrip byte. 385 00:19:01,670 --> 00:19:03,640 En dus hebben we acht bits hier. 386 00:19:03,640 --> 00:19:06,810 >> En het blijkt ook, voor soortgelijke Daarom besloten de wereld jaren 387 00:19:06,810 --> 00:19:12,439 geleden dat een ASCII brief vertegenwoordigen, je gaat om eenheden van 8 bits. 388 00:19:12,439 --> 00:19:14,230 Dus zelfs als je dat niet doet nodig dat veel, je bent 389 00:19:14,230 --> 00:19:18,130 altijd gaat om 8 bits te gebruiken om vertegenwoordigen een letter van het alfabet. 390 00:19:18,130 --> 00:19:20,950 En dat is handig, want dan kun je 391 00:19:20,950 --> 00:19:28,720 een bericht ontvangt dat een 0 0 0 1 1 heeft 1 1 0 gevolgd door nog 1 1 1 0 1 0 392 00:19:28,720 --> 00:19:33,320 0 1, dus als u ontvangt 16 bits, de wereld kan gewoon 393 00:19:33,320 --> 00:19:37,460 aangenomen dat de eerste 8 zijn één letter en de tweede 8 zijn een andere letter. 394 00:19:37,460 --> 00:19:39,240 >> Maakt niet uit hoeveel het er zijn. 395 00:19:39,240 --> 00:19:41,460 Het doet gewoon dat we zijn allemaal consequent 396 00:19:41,460 --> 00:19:42,950 als we de interpretatie van deze bits. 397 00:19:42,950 --> 00:19:44,377 En dit was gewoon willekeurig. 398 00:19:44,377 --> 00:19:47,210 Dat betekent iets, maar ik deed het niet echt na te denken over wat het betekent. 399 00:19:47,210 --> 00:19:49,620 >> Dus het is een klein leugentje om bestwil. 400 00:19:49,620 --> 00:19:51,990 Oorspronkelijk ASCII feitelijk gebruikt 7 bits. 401 00:19:51,990 --> 00:19:54,180 De achtste bit genaamd extended ASCII. 402 00:19:54,180 --> 00:19:56,290 Maar het punt is uiteindelijk hetzelfde. 403 00:19:56,290 --> 00:19:58,850 De wereld in het algemeen gestandaardiseerd op 8 bits. 404 00:19:58,850 --> 00:20:04,290 >> Dus dit lijkt een beetje te zijn beperken, omdat ik alleen maar kan 405 00:20:04,290 --> 00:20:07,970 kapitaal vertegenwoordigen A, hoofdletter B door middel van kapitaal Z. 406 00:20:07,970 --> 00:20:10,940 Maar inderdaad niet, als ik ga to-- er is een heleboel van de middelen 407 00:20:10,940 --> 00:20:13,695 online, bijvoorbeeld, asciitable.com deze 408 00:20:13,695 --> 00:20:16,310 gaat een beetje te zijn overweldigend op het eerste. 409 00:20:16,310 --> 00:20:18,910 Maar ik zal erop wijzen wat is hier belangrijk. 410 00:20:18,910 --> 00:20:24,090 >> Dit toevallig be-- en ik zal walk-- laten we eens kijken, als ik hier te gaan. 411 00:20:24,090 --> 00:20:27,990 Hier is, in de decimale kolom, het nummer 65. 412 00:20:27,990 --> 00:20:32,201 En over de brief rechterkolom karakter, Chr, is de letter A. 413 00:20:32,201 --> 00:20:34,450 En je kunt negeren, voor nu, alles in het midden. 414 00:20:34,450 --> 00:20:36,769 Dit is hexadecimaal, octale en een HTML-code. 415 00:20:36,769 --> 00:20:39,810 Om deze site is gewoon proberen te gooien een heleboel informatie op je af in een keer. 416 00:20:39,810 --> 00:20:42,970 Maar alles wat we zorg over is de decimale kolom en de kolom karakter. 417 00:20:42,970 --> 00:20:46,190 >> Dus deze logica, wat het getal dat de wereld 418 00:20:46,190 --> 00:20:50,510 besloten is een kleine a? 419 00:20:50,510 --> 00:20:52,230 Ja, 97. 420 00:20:52,230 --> 00:20:55,850 En net te verwarren potentieel licht, 421 00:20:55,850 --> 00:21:03,715 welk nummer heeft de wereld besloten zou de nummer 1 te vertegenwoordigen? 422 00:21:03,715 --> 00:21:06,900 423 00:21:06,900 --> 00:21:10,910 Juist, omdat we-- 49, het lijkt Hier, in de linkerbenedenhoek. 424 00:21:10,910 --> 00:21:12,320 >> Nu, wat moet ik daarmee? 425 00:21:12,320 --> 00:21:14,830 Dus het blijkt dat in computersystemen, 426 00:21:14,830 --> 00:21:16,840 er over het algemeen een fundamenteel verschil 427 00:21:16,840 --> 00:21:19,920 tussen een nummer en een karakter. 428 00:21:19,920 --> 00:21:22,330 Een getal is het ding dat we geleerd opgroeien als 429 00:21:22,330 --> 00:21:23,830 we waren super jong in de lagere school. 430 00:21:23,830 --> 00:21:25,110 Het is dingen die je rekenen met. 431 00:21:25,110 --> 00:21:30,220 Maar een teken is gewoon een vorm, een glyph, om zo te zeggen, op het scherm. 432 00:21:30,220 --> 00:21:36,200 >> Nu, mensen we een soort van zien iets dat lijkt op dit. 433 00:21:36,200 --> 00:21:39,060 En wij zeggen: oh, dat is de nummer 2. 434 00:21:39,060 --> 00:21:44,999 Maar nee, dat is gewoon een symbool dat eruit ziet als wat we kennen als de nummer 2. 435 00:21:44,999 --> 00:21:46,790 En dus is er dit fundamenteel onderscheid 436 00:21:46,790 --> 00:21:50,340 tussen de werkelijke cijfers en letters. 437 00:21:50,340 --> 00:21:52,130 Dit is een getal. 438 00:21:52,130 --> 00:21:54,420 Maar over het algemeen, in de context van een computer, 439 00:21:54,420 --> 00:21:56,809 Als u in plaats daarvan zien zoiets als dit quoted-- 440 00:21:56,809 --> 00:21:58,600 en je hoeft niet altijd moet het zien geciteerd, 441 00:21:58,600 --> 00:22:01,474 maar omwille van discussion-- indien zie je aanhalingstekens rond het nummer, 442 00:22:01,474 --> 00:22:02,730 dit is nu een personage. 443 00:22:02,730 --> 00:22:06,330 Dus dit nummer 2 onderaan de kap binnenkant van een computer 444 00:22:06,330 --> 00:22:12,220 worden weergegeven met een patroon bits dat het aantal vertegenwoordigen 445 00:22:12,220 --> 00:22:14,850 50 volgens de grafiek online. 446 00:22:14,850 --> 00:22:18,300 >> Indien echter een computer alleen ziet dit, deze 447 00:22:18,300 --> 00:22:24,580 worden vertegenwoordigd met patroon van bit 0 0 0 0 0 0 1 0. 448 00:22:24,580 --> 00:22:29,595 Overwegende dat dit karakter zou eigenlijk as-- en nu worden vertegenwoordigd, 449 00:22:29,595 --> 00:22:34,710 Ik kreeg een beetje harder-- dus dit denken karakter vertegenwoordigd zouden zijn met 0 450 00:22:34,710 --> 00:22:39,080 0 1-- wat moet ik hier? 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 Hoe heb ik dit doen? 453 00:22:45,480 --> 00:22:49,580 Nou, dit is het nummer 50, als je vermenigvuldig het met behulp van deze kolommen, 454 00:22:49,580 --> 00:22:53,530 Dit is het nummer 2, enzovoort dat is waarom er deze tweedeling. 455 00:22:53,530 --> 00:22:55,850 >> En dit is slechts een teaser nu features 456 00:22:55,850 --> 00:22:59,710 die bestaan ​​in programmeertalen dat we ingaan op kort later vandaag. 457 00:22:59,710 --> 00:23:01,950 In programmeertalen, u hebben over het algemeen, 458 00:23:01,950 --> 00:23:04,495 maar niet altijd, beter noemen verschillende soorten data. 459 00:23:04,495 --> 00:23:06,870 Met andere woorden, een programmer-- wanneer hij schrijft, 460 00:23:06,870 --> 00:23:11,150 een programmeur krijgt om te bepalen hoe formaat zijn of haar gegevens. 461 00:23:11,150 --> 00:23:14,120 U kunt gegevens op te slaan als kale cijfers, zoals het aantal 2. 462 00:23:14,120 --> 00:23:17,940 Of je kunt ze opslaan als strings, of tekenreeksen 463 00:23:17,940 --> 00:23:21,550 dat je over het algemeen zou uitdrukken citaten in de programmeertaal. 464 00:23:21,550 --> 00:23:25,230 >> Je kunt dingen called-- Ik zal te eenvoudig en noemen ze 465 00:23:25,230 --> 00:23:28,870 reële numbers-- zodat getallen die zijn niet integers als de nummer 2, 466 00:23:28,870 --> 00:23:31,310 maar de aantallen willen 4.56. 467 00:23:31,310 --> 00:23:33,490 Zo kan ook reële getallen hebben cijfers achter de komma, 468 00:23:33,490 --> 00:23:36,340 dus dat is een andere fundamentele brok gegevens in een computer. 469 00:23:36,340 --> 00:23:41,920 En dan kun je zelfs andere soorten data nog steeds. 470 00:23:41,920 --> 00:23:45,810 Dus dat is slechts een teaser echt van de eenvoudigste van ontwerpbeslissingen 471 00:23:45,810 --> 00:23:50,960 dat een programmeur zou maken onder de motorkap. 472 00:23:50,960 --> 00:23:52,925 >> Dus gewoon nog vragen? 473 00:23:52,925 --> 00:23:57,320 474 00:23:57,320 --> 00:23:59,860 Dus laten we proberen te maken dit een beetje meer reëel. 475 00:23:59,860 --> 00:24:02,120 Deze hardware is niet zo veel meer in gebruik. 476 00:24:02,120 --> 00:24:07,420 Maar bijna iedereen in deze kamer waarschijnlijk opgegroeid met en gebruikt nog steeds harde schijven 477 00:24:07,420 --> 00:24:08,010 in zekere zin. 478 00:24:08,010 --> 00:24:10,100 >> Hoewel de meeste onze laptops niet meer 479 00:24:10,100 --> 00:24:15,900 hebben apparaten die werken als dit, in plaats laptops vandaag de dag over het algemeen 480 00:24:15,900 --> 00:24:18,590 hebben solid state drives zonder bewegende delen. 481 00:24:18,590 --> 00:24:22,840 En die meestal duurder zijn, helaas, maar een beetje sneller 482 00:24:22,840 --> 00:24:27,230 en een-- goed, vaak een stuk sneller, dat is een van de redenen. 483 00:24:27,230 --> 00:24:28,980 En ook niet genereren veel warmte. 484 00:24:28,980 --> 00:24:31,680 Het kan kleiner zijn, dus het is over het algemeen een netto positief. 485 00:24:31,680 --> 00:24:35,030 >> Maar dit laat ons toe om een ​​kaart beetje meer concreet wat 486 00:24:35,030 --> 00:24:38,460 we hebben het hier over de 0 en 1 het niveau nu een fysiek apparaat. 487 00:24:38,460 --> 00:24:40,810 Het is één ding voor mij om te praten ongeveer 0 en 1 in termen 488 00:24:40,810 --> 00:24:43,990 van mijn telefoon of abstract in termen schakelaars zijn in en uit. 489 00:24:43,990 --> 00:24:45,340 Maar hoe zit het met harde schijven? 490 00:24:45,340 --> 00:24:48,495 In uw laptop, als je een oudere één, of in uw desktop computer, 491 00:24:48,495 --> 00:24:51,200 of in ieder geval in servers vandaag de dag, waar je 492 00:24:51,200 --> 00:24:53,070 harde schijven die hebben een terabyte aan ruimte, 493 00:24:53,070 --> 00:24:55,560 4 terabyte aan ruimte, goed wat betekent dat? 494 00:24:55,560 --> 00:24:59,560 >> Een harde schijf met 1 terabyte aan ruimte middelen 495 00:24:59,560 --> 00:25:03,890 er is 1 triljoen bytes binnenkant van een of andere manier, 496 00:25:03,890 --> 00:25:10,450 of equivalent 8000000000000 bits in. 497 00:25:10,450 --> 00:25:16,240 1 terabyte zou zijn 8 terabits of 1 triljoen bits, die 498 00:25:16,240 --> 00:25:19,330 betekent dat als u een harde drive, heb je een of andere manier 499 00:25:19,330 --> 00:25:22,400 of andere van een biljoen 0's 1 en de binnenkant ervan. 500 00:25:22,400 --> 00:25:25,360 En als we gewoon een kijkje nemen op een willekeurige foto van een harde schijf 501 00:25:25,360 --> 00:25:30,110 vertegenwoordiger, dit is wat een harde schijf kan meestal uitzien binnen. 502 00:25:30,110 --> 00:25:32,600 >> Ook zij is een soort een oude grammofoon speler 503 00:25:32,600 --> 00:25:35,350 maar meestal met meerdere records binnen, dus 504 00:25:35,350 --> 00:25:38,270 naar speak-- meerdere schotels, zoals ze heten, 505 00:25:38,270 --> 00:25:42,259 metaal cirkelvormige schijven, en dan een beetje leeskop, 506 00:25:42,259 --> 00:25:43,550 net als een oude platenspeler. 507 00:25:43,550 --> 00:25:46,589 En dat leeskop heen en heen en een of andere manier leest de bits. 508 00:25:46,589 --> 00:25:49,380 En wat er op deze schotels, zelfs hoewel wij mensen ze niet kunnen zien, 509 00:25:49,380 --> 00:25:52,757 hetzij in werkelijkheid of in dit beeld, er piepkleine magnetische deeltjes. 510 00:25:52,757 --> 00:25:55,090 En zelfs als je hebt lang vergeten hoe elektriciteit werkt, 511 00:25:55,090 --> 00:25:57,550 een magnetisch deeltje dat is over het algemeen in rekening gebracht 512 00:25:57,550 --> 00:26:00,570 heeft een noordelijke uiteinde en een zuid end-- dus noorden en het zuiden. 513 00:26:00,570 --> 00:26:03,000 En dus is de wereld enkel besloot enige tijd geleden 514 00:26:03,000 --> 00:26:06,570 dat indien een magnetisch protocol hoofdzaak is uitgelijnd als deze, noord-zuid, 515 00:26:06,570 --> 00:26:07,610 laten we noemen dat een 1. 516 00:26:07,610 --> 00:26:10,470 Als het in plaats zuid-noord, laten we noemen dat een 0. 517 00:26:10,470 --> 00:26:13,350 En dus als je op de beschikking over een biljoen 518 00:26:13,350 --> 00:26:16,300 piepkleine magnetische particles-- en hopelijk, 519 00:26:16,300 --> 00:26:18,740 de hardware vindingrijkheid in Om rond te draaien die 520 00:26:18,740 --> 00:26:24,450 zoals je ziet fit-- als je wilt vertegenwoordigen een hele hoop van 0's, je 521 00:26:24,450 --> 00:26:28,120 hoeft alleen maar 8 magnetische deeltjes Alle uitgelijnd als deze. 522 00:26:28,120 --> 00:26:30,330 En als je wilt vertegenwoordigen acht 1's, je gewoon 523 00:26:30,330 --> 00:26:33,170 moet 8 magnetische deeltjes uitgelijnd rug aan rug aan rug als dit. 524 00:26:33,170 --> 00:26:35,515 >> Wat bedoel ik door de magnetische deeltjes? 525 00:26:35,515 --> 00:26:38,390 Eerlijk gezegd, al die jaren later, de wat nog komt naar mijn mening 526 00:26:38,390 --> 00:26:42,139 is deze man, als je opgegroeid met dit ding. 527 00:26:42,139 --> 00:26:43,930 Dit is een voor little-- die unfamiliar-- een 528 00:26:43,930 --> 00:26:47,810 weinig kindertijd speelgoed dat Dit heeft haarloze man hier 529 00:26:47,810 --> 00:26:51,690 dat heeft al deze piepkleine zwarte magnetische deeltjes die daarbij horen. 530 00:26:51,690 --> 00:26:53,930 En met behulp van dat rode stok, dat is gewoon een magneet, 531 00:26:53,930 --> 00:26:58,460 je kunt een soort van hem een ​​snor of wenkbrauwen of haar of om het even wat op hem. 532 00:26:58,460 --> 00:27:00,710 Dus in feite, als we zoomen in, bijvoorbeeld, deze 533 00:27:00,710 --> 00:27:02,950 is het soort spel dat je kan spelen met Wooly Willy. 534 00:27:02,950 --> 00:27:06,570 >> En dit is alleen te zeggen dat deze veel grotere magnetische deeltjes 535 00:27:06,570 --> 00:27:09,890 dan zijn eigenlijk op een harde schijf, en veel minder magnetische deeltjes. 536 00:27:09,890 --> 00:27:11,640 Maar laten we eigenlijk zien dan kun je het hebben 537 00:27:11,640 --> 00:27:14,720 kleine magnetische deeltjes in een harde schijf, hoe kun je eigenlijk 538 00:27:14,720 --> 00:27:19,090 die te gebruiken om gegevens te vertegenwoordigen. 539 00:27:19,090 --> 00:27:20,070 >> [VIDEO AFSPELEN] 540 00:27:20,070 --> 00:27:24,190 >> -De Harde schijf is waar uw PC winkels het grootste deel van haar vaste data. 541 00:27:24,190 --> 00:27:27,170 Daarvoor gegevens reist van RAM samen 542 00:27:27,170 --> 00:27:31,720 met software signalen die het vertellen harde schijf hoe die gegevens op te slaan. 543 00:27:31,720 --> 00:27:36,570 De harde schijf circuits vertalen die signalen in spanningsschommelingen. 544 00:27:36,570 --> 00:27:40,880 Deze, op hun beurt, de controle van de harde schijf bewegende parts-- enkele van de weinige bewegende 545 00:27:40,880 --> 00:27:43,440 onderdelen links in de moderne computer. 546 00:27:43,440 --> 00:27:47,650 >> Enkele signalen bestuurt een motor, die draait met metaal beklede schotels. 547 00:27:47,650 --> 00:27:50,980 Uw gegevens is eigenlijk die zijn opgeslagen op deze schotels. 548 00:27:50,980 --> 00:27:56,250 Andere signalen bewegen de lees / schrijfkoppen om te lezen of gegevens op de platters te schrijven. 549 00:27:56,250 --> 00:28:00,100 Deze machine is zo nauwkeurig dat een menselijke haar kon niet eens 550 00:28:00,100 --> 00:28:02,800 passeren tussen de koppen en spinnen platters. 551 00:28:02,800 --> 00:28:04,887 Toch, het allemaal werkt op geweldige snelheden. 552 00:28:04,887 --> 00:28:05,470 [END AFSPELEN] 553 00:28:05,470 --> 00:28:06,780 En je kunt zien op de tail einde van de video, 554 00:28:06,780 --> 00:28:08,340 er over het algemeen meerdere platters. 555 00:28:08,340 --> 00:28:10,250 En zodat leeskop is niet alleen het lezen van de top. 556 00:28:10,250 --> 00:28:12,458 Het is net zoiets als drie of vier of meer leeskoppen 557 00:28:12,458 --> 00:28:14,920 die bewegen als deze, lezen van gegevens tegelijkertijd. 558 00:28:14,920 --> 00:28:17,407 >> Dus er is een heleboel complexiteit en de aard van de timing 559 00:28:17,407 --> 00:28:18,740 dat is betrokken bij een harde schijf. 560 00:28:18,740 --> 00:28:21,920 En het ding draait echt darn snel, dus er is veel complexiteit. 561 00:28:21,920 --> 00:28:25,220 Maar laten we in een beetje dieper te zoomen en zien waar zijn deze magnetische deeltjes 562 00:28:25,220 --> 00:28:27,370 en hoe we krijgen naar hen. 563 00:28:27,370 --> 00:28:28,750 >> [VIDEO AFSPELEN] 564 00:28:28,750 --> 00:28:31,830 >> -Laat blik bij wat we net zag in slow motion. 565 00:28:31,830 --> 00:28:35,230 Wanneer een korte puls van elektriciteit wordt naar de lees / schrijfkop, 566 00:28:35,230 --> 00:28:39,000 Het draait op een kleine elektromagnetische een fractie van een seconde. 567 00:28:39,000 --> 00:28:41,390 De magneet zorgt voor een veld, welke veranderingen 568 00:28:41,390 --> 00:28:44,600 de polariteit van een klein, klein gedeelte van de metaaldeeltjes 569 00:28:44,600 --> 00:28:46,960 die jas oppervlak elke schotel's. 570 00:28:46,960 --> 00:28:50,020 Een patroon reeks van deze minuscule opgeladen gebieden op de schijf 571 00:28:50,020 --> 00:28:54,590 een enkele bit van gegevens in de binair getal dat wordt gebruikt door computers. 572 00:28:54,590 --> 00:28:57,510 >> Nu, als de stroom stuurde een weg door de lees / schrijfkop, 573 00:28:57,510 --> 00:28:59,899 het gebied is gepolariseerd in een richting. 574 00:28:59,899 --> 00:29:01,940 Als de stroom wordt verzonden de tegengestelde richting, 575 00:29:01,940 --> 00:29:04,020 de polarisatie omgekeerd. 576 00:29:04,020 --> 00:29:06,440 Hoe krijg je de gegevens van de harde schijf? 577 00:29:06,440 --> 00:29:08,190 Gewoon het proces omkeren. 578 00:29:08,190 --> 00:29:10,440 Het is dus de deeltjes op de disk dat de huidige te krijgen 579 00:29:10,440 --> 00:29:12,260 in de lees / schrijfkop beweegt. 580 00:29:12,260 --> 00:29:14,580 Samen miljoenen deze gemagnetiseerde segmenten, 581 00:29:14,580 --> 00:29:16,220 en je hebt een bestand gekregen. 582 00:29:16,220 --> 00:29:21,030 >> Nu kan de stukken van een bestand verspreid over platters van een schijf, 583 00:29:21,030 --> 00:29:24,060 net zoiets als de puinhoop papieren op uw bureau. 584 00:29:24,060 --> 00:29:27,590 Dus een speciale extra bestand houdt spoor van waar alles is. 585 00:29:27,590 --> 00:29:30,440 Heb je niet wensen u had zoiets? 586 00:29:30,440 --> 00:29:31,290 >> [END AFSPELEN] 587 00:29:31,290 --> 00:29:36,260 >> Dus wordt gezinspeeld op daar, misschien, is dat onderwerp van gisteren van verwijdering. 588 00:29:36,260 --> 00:29:38,380 Als u verwijdert een file, gisteren zeiden we 589 00:29:38,380 --> 00:29:41,020 dat een computer eigenlijk doet wat, als je iets te slepen 590 00:29:41,020 --> 00:29:44,110 naar de prullenbak of afvalbak? 591 00:29:44,110 --> 00:29:45,150 Hij vergeet het gewoon. 592 00:29:45,150 --> 00:29:47,540 Maar de 0 en 1 is, de magnetische deeltjes 593 00:29:47,540 --> 00:29:50,640 die er uitzien als rood en blauw hier dingen, of mijn arm hier, 594 00:29:50,640 --> 00:29:52,350 zijn er nog steeds op de harde schijf. 595 00:29:52,350 --> 00:29:56,090 >> En dus bestaat er software-- Norton Utilities en Yesteryear 596 00:29:56,090 --> 00:29:58,159 en andere meer moderne software-- die net 597 00:29:58,159 --> 00:30:01,200 zal een hele harde schijf scannen op zoek naar al die 0 en 1 is, omdat het 598 00:30:01,200 --> 00:30:06,890 blijkt dat de meeste file formats-- Word-documenten, Excel-bestanden, afbeeldingen, 599 00:30:06,890 --> 00:30:10,380 video files-- allemaal bepaalde patronen die gemeenschappelijk onder hen zijn. 600 00:30:10,380 --> 00:30:12,550 Elk videobestand misschien zijn van een andere video, 601 00:30:12,550 --> 00:30:14,870 maar het eerste paar bits meestal hetzelfde. 602 00:30:14,870 --> 00:30:16,790 Of de laatste paar stukjes zijn meestal hetzelfde. 603 00:30:16,790 --> 00:30:19,910 >> En dus met een hoge waarschijnlijkheid, U kunt kijken voor die patronen. 604 00:30:19,910 --> 00:30:23,700 En zelfs als het bestand is vergeten, je kunt zeggen met een grote kans, 605 00:30:23,700 --> 00:30:28,460 maar dit ziet eruit als een Word-document, laat terug te krijgen en niet-vergeet het maar, 606 00:30:28,460 --> 00:30:28,990 als je wil. 607 00:30:28,990 --> 00:30:32,330 En dus dat is hoe u kunt herstellen gegevens die hetzij per ongeluk is geweest 608 00:30:32,330 --> 00:30:36,560 gewist of verwijderd of opzettelijk verwijderd wat doeleinden. 609 00:30:36,560 --> 00:30:42,530 >> Daarentegen veilige verwijdering doet wat in het kader van een foto als deze? 610 00:30:42,530 --> 00:30:44,059 Precies, maakt ze allemaal willekeurig. 611 00:30:44,059 --> 00:30:46,350 Dus het soort beweegt sommige ze naar beneden, sommigen van hen omhoog, 612 00:30:46,350 --> 00:30:49,433 laat sommige ongewijzigd, en over het algemeen maakt willekeurige ruis van te maken, 613 00:30:49,433 --> 00:30:52,960 of heel misschien maakt van al ze 0 of allemaal 1's. 614 00:30:52,960 --> 00:30:56,350 En ook dat kan in het algemeen scrub je data weg. 615 00:30:56,350 --> 00:31:00,160 >> Dus laten we nu terugkeren naar de kwestie van de computationele denken, waarbij 616 00:31:00,160 --> 00:31:03,270 we hebben de formule ingangen. 617 00:31:03,270 --> 00:31:06,390 En algoritmen geeft U voert uiteindelijk. 618 00:31:06,390 --> 00:31:09,270 Wij richten ons nu op de inputs en uitgangen, want nu heb ik 619 00:31:09,270 --> 00:31:12,159 vordering hebben we een manier van wat neerkomt op in- en uitgangen. 620 00:31:12,159 --> 00:31:13,450 We gaan gewoon naar binair gebruiken. 621 00:31:13,450 --> 00:31:15,910 >> En het maakt niet uit wat we willen vandaag te vertegenwoordigen, 622 00:31:15,910 --> 00:31:20,230 of het nu een nummer of een letter of duizenden daarvan in een telefoonboek 623 00:31:20,230 --> 00:31:23,210 of beelden of films aan het einde van de dag, het is allemaal 0's en 1's. 624 00:31:23,210 --> 00:31:26,640 En ik beweer dat, ook al is dit is een super eenvoudige wereld met slechts 0's 625 00:31:26,640 --> 00:31:28,240 en 1's, kunnen we onszelf op te bouwen. 626 00:31:28,240 --> 00:31:32,210 En we hebben een voorbeeld van gezien die met letters tot nu toe. 627 00:31:32,210 --> 00:31:35,615 >> Dus laten we nu concentreren op deze midden bestanddeel, een algoritme. 628 00:31:35,615 --> 00:31:38,190 En laten we terugkeren naar dit voorbeeld van Mike Smith. 629 00:31:38,190 --> 00:31:41,689 Dus in dit telefoonboek, die weliswaar, we niet zo veel meer te gebruiken, 630 00:31:41,689 --> 00:31:42,980 er een probleem op te lossen. 631 00:31:42,980 --> 00:31:45,040 We willen iemand als Mike Smith te vinden. 632 00:31:45,040 --> 00:31:47,520 >> En wat zou ik doen om Mike te vinden? 633 00:31:47,520 --> 00:31:51,197 Nou, ik kon gewoon openen van deze boek, beginnen bij de eerste pagina, 634 00:31:51,197 --> 00:31:52,780 en beseffen, oh, ik ben in de A sectie. 635 00:31:52,780 --> 00:31:53,510 Mike is er niet. 636 00:31:53,510 --> 00:31:55,510 Ik heb de S sectie voor Smith. 637 00:31:55,510 --> 00:31:58,192 Dus gewoon blijven draaien één pagina tegelijk. 638 00:31:58,192 --> 00:32:00,900 Laat me doen alsof dit allemaal witte pagina's en niet gele pagina's, 639 00:32:00,900 --> 00:32:02,910 omdat we niet van plan om uit te vinden Mike in de gele pagina's toch. 640 00:32:02,910 --> 00:32:04,034 Maar ik ben in de witte pagina's. 641 00:32:04,034 --> 00:32:05,340 En nu, ik ben in de sectie B. 642 00:32:05,340 --> 00:32:06,810 Ik heb nog steeds heb hem niet gevonden. 643 00:32:06,810 --> 00:32:08,890 Dus ik blijf het draaien van een pagina per keer. 644 00:32:08,890 --> 00:32:10,130 >> Dit is een algoritme. 645 00:32:10,130 --> 00:32:12,440 Het is een reeks instructies voor het oplossen van een probleem. 646 00:32:12,440 --> 00:32:16,480 Met andere woorden, kijk naar pagina, als Mike is niet op, 647 00:32:16,480 --> 00:32:20,020 draaien pagina en herhalingen opnieuw en opnieuw en opnieuw, 648 00:32:20,020 --> 00:32:21,760 idealiter op zoek naar beneden als je het doet. 649 00:32:21,760 --> 00:32:24,120 Dus is dit algoritme, Hierbij correct? 650 00:32:24,120 --> 00:32:27,400 651 00:32:27,400 --> 00:32:28,830 >> Sorry. 652 00:32:28,830 --> 00:32:30,056 Nee, ik hoor wat nos. 653 00:32:30,056 --> 00:32:33,250 654 00:32:33,250 --> 00:32:36,125 OK, maar het is-- ja, het is zeker vervelend. 655 00:32:36,125 --> 00:32:39,000 Zoals, zullen we hier de hele dag als ik blijven zoeken naar Mike op deze snelheid. 656 00:32:39,000 --> 00:32:41,430 Maar laat me beweren dat het correct is. 657 00:32:41,430 --> 00:32:43,850 Het is dom, maar het is correct. 658 00:32:43,850 --> 00:32:47,209 >> Aan het eind van de dag, zolang het misschien nemen, ik zal Mike vinden als hij daar 659 00:32:47,209 --> 00:32:48,250 en ik ben op te letten. 660 00:32:48,250 --> 00:32:50,230 En ik uiteindelijk zijn pagina te bereiken. 661 00:32:50,230 --> 00:32:52,890 En als ik te ver, als Ik krijg de T sectie, 662 00:32:52,890 --> 00:32:55,900 dan kan ik iets te optimaliseren en gewoon zeggen, hm, allemaal gedaan. 663 00:32:55,900 --> 00:32:57,980 Ik weet niet eens hoeft te verspillen tijd naar de Z's. 664 00:32:57,980 --> 00:33:00,010 Maar dit is een zeer lineaire benadering, als je 665 00:33:00,010 --> 00:33:03,370 zal een soort van links naar rechts aanpak, een rechte lijn. 666 00:33:03,370 --> 00:33:05,560 En zijn correct maar traag. 667 00:33:05,560 --> 00:33:09,250 >> Zo herinner ik me uit de lagere school, een soort van een optimalisatie van een eerste grader, 668 00:33:09,250 --> 00:33:13,756 waar ik geleerd hoe om te tellen niet mee door degenen maar door twos-- zo 2, 4, 6. 669 00:33:13,756 --> 00:33:15,630 Het is een, stuk moeilijker om , maar in principe is het 670 00:33:15,630 --> 00:33:20,149 faster-- 8, 10, 12, 14, enzovoort. 671 00:33:20,149 --> 00:33:21,190 Hoe zit dat algoritme? 672 00:33:21,190 --> 00:33:23,150 Is het efficiënter? 673 00:33:23,150 --> 00:33:23,880 Is het sneller? 674 00:33:23,880 --> 00:33:25,365 >> PUBLIEK: Het is efficiënt. 675 00:33:25,365 --> 00:33:28,560 >> DAVID MALAN: Ja, dus het is def-- het is letterlijk twee keer zo snel, uitgaande I 676 00:33:28,560 --> 00:33:30,170 niet omhoog krijgen struikelde met mijn vingers. 677 00:33:30,170 --> 00:33:32,294 Het is twee keer zo snel, want Ik ben het draaien door middel van twee 678 00:33:32,294 --> 00:33:36,560 pagina's tegelijk in plaats van één, maar het is potentieel in de juiste, want waarom? 679 00:33:36,560 --> 00:33:37,852 >> PUBLIEK: U bent het overslaan van een aantal. 680 00:33:37,852 --> 00:33:41,185 DAVID MALAN: Juist, wat als Mike gebeurt om misschien worden sandwiched-- toen ik later ben 681 00:33:41,185 --> 00:33:44,370 in het telefoonboek, Mike gebeurt te zijn ingeklemd tussen deze twee bladzijden, 682 00:33:44,370 --> 00:33:46,720 en ik gewoon blindelings over te slaan. 683 00:33:46,720 --> 00:33:48,490 Dus we moeten een beetje fix daar. 684 00:33:48,490 --> 00:33:51,290 Zodra ik raakte de T sectie, I kan niet zomaar gerust zeggen, 685 00:33:51,290 --> 00:33:52,420 we vonden het niet Mike Smith. 686 00:33:52,420 --> 00:33:53,770 Ik moet waarschijnlijk om terug te verdubbelen. 687 00:33:53,770 --> 00:34:00,210 Of in feite, zodra ik bij iemand genaamd S-N in plaats van S-M Smith, 688 00:34:00,210 --> 00:34:02,790 meteen, ik kon verdubbelen terug, want misschien is hij 689 00:34:02,790 --> 00:34:03,900 was op de vorige pagina. 690 00:34:03,900 --> 00:34:05,070 >> Maar ik wil niet te ver terug te verdubbelen. 691 00:34:05,070 --> 00:34:08,030 In theorie, als ik doe het op het juiste tijd, ik een pagina terug te gaan. 692 00:34:08,030 --> 00:34:10,139 Dus het is het toevoegen van slechts een extra stap. 693 00:34:10,139 --> 00:34:13,070 Dus ik heb twee keer zo snel gegaan, maar het kostte me een extra pagina. 694 00:34:13,070 --> 00:34:14,699 Maar dat voelt als een netto winst. 695 00:34:14,699 --> 00:34:17,230 >> Maar dit is niet hoe de meeste mensen in Deze kamer zou dit probleem op te lossen. 696 00:34:17,230 --> 00:34:20,313 Wat zou een typische persoon, misschien een Enkele jaren geleden doen, Mike Smith vinden? 697 00:34:20,313 --> 00:34:22,900 698 00:34:22,900 --> 00:34:24,800 Ja, niet vinden Mike. 699 00:34:24,800 --> 00:34:27,190 Wat zal ik doen? 700 00:34:27,190 --> 00:34:31,027 Dus maak je een beetje dichterbij, maar ik doe weten-- wat waar is over een telefoonboek? 701 00:34:31,027 --> 00:34:32,110 PUBLIEK: Het is sequentieel. 702 00:34:32,110 --> 00:34:32,760 DAVID MALAN: Het is sequentieel. 703 00:34:32,760 --> 00:34:33,750 Het is alfabetisch. 704 00:34:33,750 --> 00:34:36,540 En dus als ik ben in de M sectie, Mike is duidelijk naar rechts, 705 00:34:36,540 --> 00:34:39,949 Ik kan letterlijk scheuren het probleem in half-- 706 00:34:39,949 --> 00:34:44,360 het is meestal makkelijker dan dat-- traan het probleem in de helft en gooi het weg, 707 00:34:44,360 --> 00:34:47,627 zodat nu, ik heb een probleem dat is niet langer 1000 pages-- dat hard was, 708 00:34:47,627 --> 00:34:50,210 omdat ik denk dat ik eigenlijk scheurde het telefoonboek dit tijd-- niet 709 00:34:50,210 --> 00:34:52,219 1000 pagina's, maar 500. 710 00:34:52,219 --> 00:34:54,750 >> Het probleem is dus letterlijk half zo groot. 711 00:34:54,750 --> 00:34:58,170 En dat is vrij overtuigend, omdat met mijn vorige algoritmen, versie 712 00:34:58,170 --> 00:35:02,870 1 en 2, was ik alleen maar het maken van het probleem één pagina kleinere, twee pagina's kleiner 713 00:35:02,870 --> 00:35:03,470 tegelijk. 714 00:35:03,470 --> 00:35:07,230 Overwegende dat nu, ik maakte het 500 pagina's kleinere allemaal tegelijk. 715 00:35:07,230 --> 00:35:10,089 >> OK, dus nu, Karim stelt dat ik naar de rechter helft. 716 00:35:10,089 --> 00:35:12,380 Dus ik ga ruwweg gaan naar het midden, geven of te nemen. 717 00:35:12,380 --> 00:35:15,185 En als ik dat deed dit wiskundig, Ik kon gaan recht naar het midden. 718 00:35:15,185 --> 00:35:17,060 En nu realiseer ik me, oh, Ik ben in de T sectie. 719 00:35:17,060 --> 00:35:18,280 Ik eigenlijk te ver gaan. 720 00:35:18,280 --> 00:35:21,670 >> Maar ik kan, nogmaals, scheur de probleem in de helft, gooi het weg. 721 00:35:21,670 --> 00:35:23,330 En mijn bytes niet zo groot. 722 00:35:23,330 --> 00:35:28,780 Het is alleen maar, wat, 256 pagina's of 250 pagina's, geven of nemen op dit moment. 723 00:35:28,780 --> 00:35:31,570 Maar het is nog veel meer dan één pagina of twee pagina's. 724 00:35:31,570 --> 00:35:33,345 >> En nu, ga ik ongeveer in het midden. 725 00:35:33,345 --> 00:35:35,330 Oh, ik heb niet heel ver genoeg nu gaan. 726 00:35:35,330 --> 00:35:37,880 Dus ik herhaal, herhalen, herhalen, herhalen, totdat ik ben hopelijk 727 00:35:37,880 --> 00:35:40,360 vertrokken met slechts één pagina. 728 00:35:40,360 --> 00:35:44,000 >> Dus dat roept de vraag, als ik begonnen met zo'n 1.000 pagina's, 729 00:35:44,000 --> 00:35:47,340 hoeveel stappen duurde het me met versie 1 van mijn algoritme? 730 00:35:47,340 --> 00:35:50,420 Nou, als Mike is in de S sectie, in het ergste geval, 731 00:35:50,420 --> 00:35:52,630 dat is vrij dicht bij het einde van het alfabet. 732 00:35:52,630 --> 00:35:56,559 Dus als het telefoonboek heeft 1.000 pagina's, Ik zal Mike vinden binnen 1.000 pagina's, 733 00:35:56,559 --> 00:35:57,100 Ongeveer. 734 00:35:57,100 --> 00:35:59,750 Misschien is het net als 800 of zo, maar het is vrij dicht bij 1000. 735 00:35:59,750 --> 00:36:01,680 >> Overwegende dat, in de tweede algoritme, hoeveel 736 00:36:01,680 --> 00:36:06,840 pagina wordt maximaal zou ik nodig hebben om Mike Smith vinden? 737 00:36:06,840 --> 00:36:09,970 Er is 1000 pagina's, maar ik ben doen ze twee tegelijk. 738 00:36:09,970 --> 00:36:13,045 Juist, dus max zoals 500ish, omdat als ik ga door het hele telefoonboek, 739 00:36:13,045 --> 00:36:14,170 op welk punt, kan ik stoppen. 740 00:36:14,170 --> 00:36:16,669 Maar ik kan afscheren een paar door gewoon stoppen bij de T sectie. 741 00:36:16,669 --> 00:36:19,880 Maar het is in het slechtste geval 500 pagina's. 742 00:36:19,880 --> 00:36:24,710 >> Dus hoe vaak kan ik delen een 1,00o-pagina telefoonboek in de helft weer 743 00:36:24,710 --> 00:36:30,450 en opnieuw en again-- uit 1000 500 tot 250-125? 744 00:36:30,450 --> 00:36:32,250 Hoe lang voordat ik raakte één pagina? 745 00:36:32,250 --> 00:36:35,510 746 00:36:35,510 --> 00:36:36,370 Ja, het is ongeveer 10. 747 00:36:36,370 --> 00:36:40,780 Afhankelijk afronding en zodanig is ongeveer 10 bladzijden totaal moeten worden gedraaid 748 00:36:40,780 --> 00:36:43,290 of telefonisch boeken moeten worden gescheurd. 749 00:36:43,290 --> 00:36:44,710 >> Dus dat is vrij krachtig. 750 00:36:44,710 --> 00:36:48,170 We zijn begonnen met een 1000-pagina probleem in alle drie van deze verhalen. 751 00:36:48,170 --> 00:36:51,850 Maar in het eerste algoritme, is nam me mee, het ergste geval, 1000 pagina 752 00:36:51,850 --> 00:36:52,740 draait om Mike te vinden. 753 00:36:52,740 --> 00:36:55,590 Ten tweede algoritme, 500 pagina's om Mike te vinden. 754 00:36:55,590 --> 00:36:58,480 Ten derde algoritme, 10 pagina's om Mike te vinden. 755 00:36:58,480 --> 00:37:00,230 En het is nog krachtig wanneer je denkt 756 00:37:00,230 --> 00:37:01,860 over een soort van een tegenovergestelde scenario. 757 00:37:01,860 --> 00:37:05,680 Stel dat de telefoonmaatschappij volgende jaar fuseert misschien twee steden samen, 758 00:37:05,680 --> 00:37:08,550 en het telefoonboek is plotseling deze dikke, in plaats van deze die, 759 00:37:08,550 --> 00:37:12,470 dus 2.000 pagina's in plaats van 1000. 760 00:37:12,470 --> 00:37:15,640 Wel, mijn eerste algoritme op zoek naar Mike Smith in een 2000-pagina telefoonboek, 761 00:37:15,640 --> 00:37:21,460 het ergste geval, het gaat over te nemen hoeveel pagina verandert volgend jaar? 762 00:37:21,460 --> 00:37:24,800 >> Telefoonboek is 2000 pagina's, so-- goed, niet één meer. 763 00:37:24,800 --> 00:37:29,540 Als het telefoonboek is twee keer zo dik in het eerste algoritme, eerste algoritme, 764 00:37:29,540 --> 00:37:30,380 2000, toch? 765 00:37:30,380 --> 00:37:33,005 In het ergste geval, Mike echt dicht bij het einde van het boek, 766 00:37:33,005 --> 00:37:34,110 dus het is pagina bochten 2000. 767 00:37:34,110 --> 00:37:38,070 Tweede algoritme gaat door tweeën, net als 1.000 pagina's. 768 00:37:38,070 --> 00:37:41,490 >> Maar hoe zit het in mijn derde en de meest recente algoritme? 769 00:37:41,490 --> 00:37:44,950 Als de telefoon bedrijf verdubbelt de aantal pagina's van 1000 tot 2000, 770 00:37:44,950 --> 00:37:47,770 hoeveel keren moet ik scheur dat boek in de helft om Mike te vinden? 771 00:37:47,770 --> 00:37:48,710 >> PUBLIEK: Slechts één. 772 00:37:48,710 --> 00:37:51,001 >> DAVID MALAN: Nog een, want met pagina scheur één, 773 00:37:51,001 --> 00:37:53,270 Ik kan letterlijk verdelen en overwinnen, als je wil, 774 00:37:53,270 --> 00:37:57,410 dat probleem doormidden nemen een enorme hap uit het. 775 00:37:57,410 --> 00:38:01,420 Dit is dus een voorbeeld van efficiëntie en misschien wel een algoritme 776 00:38:01,420 --> 00:38:04,100 waarmee we allemaal soort van intuïtief vertrouwd. 777 00:38:04,100 --> 00:38:07,780 Maar het is net zo goed als mijn andere algoritmen 778 00:38:07,780 --> 00:38:09,630 met deze tweak voor de tweede algoritme, 779 00:38:09,630 --> 00:38:11,290 maar het is zo veel efficiënter. 780 00:38:11,290 --> 00:38:14,030 >> En inderdaad, wat een computer wetenschapper, of op zijn beurt een programmeur, 781 00:38:14,030 --> 00:38:17,580 zouden in het algemeen doen bij het schrijven code is proberen te achterhalen, 782 00:38:17,580 --> 00:38:19,960 Oké, ik wil niet dat mijn programma alleen maar om juist te zijn, 783 00:38:19,960 --> 00:38:23,220 Ik wil ook dat het efficiënt zijn en het oplossen van problemen ook. 784 00:38:23,220 --> 00:38:26,450 Stelt u zich eens in de echte wereld van vandaag, zoals Google indexeert, zoekopdrachten 785 00:38:26,450 --> 00:38:31,580 als miljarden pagina's, stel je voor dat deze gebruikt het eerste algoritme katten vinden 786 00:38:31,580 --> 00:38:34,620 onder een miljard pages-- kijken de eerste pagina in hun database, 787 00:38:34,620 --> 00:38:37,700 de tweede, de derde, gewoon op zoek voor een kat, op zoek naar een kat. 788 00:38:37,700 --> 00:38:40,350 Dat is pretty darn langzaam lijkt. 789 00:38:40,350 --> 00:38:43,170 Zij kunnen in plaats daarvan gebruik iets genoemd binary search, die 790 00:38:43,170 --> 00:38:47,420 is geen coincidence-- bi betekent twee, we blijven delen iets 2, in half-- 791 00:38:47,420 --> 00:38:50,205 ze konden binary search gebruiken en misschien vind katten nog sneller, 792 00:38:50,205 --> 00:38:51,830 of wat het ook is dat je op zoek bent naar. 793 00:38:51,830 --> 00:38:54,125 >> En eerlijk gezegd, er is zelfs liefhebber algoritmen 794 00:38:54,125 --> 00:38:56,250 die veel meer dan alleen maar te doen het verdelen van dingen in de helft 795 00:38:56,250 --> 00:38:58,180 om informatie snel te vinden. 796 00:38:58,180 --> 00:39:00,880 En we zullen een beetje praten over die na de lunch vandaag. 797 00:39:00,880 --> 00:39:02,640 Dus laat me gewoon proberen om dit te vertegenwoordigen. 798 00:39:02,640 --> 00:39:05,380 We hoeven niet in te gaan geen wiskunde of het werkelijke aantal. 799 00:39:05,380 --> 00:39:07,070 We kunnen in de abstracte praten. 800 00:39:07,070 --> 00:39:11,580 >> Maar laat me voorstellen, als je hadden een discussie nu 801 00:39:11,580 --> 00:39:13,491 met de ingenieurs het voorstellen van dit algoritme 802 00:39:13,491 --> 00:39:15,490 en je probeert te maken een berekende beslissing, 803 00:39:15,490 --> 00:39:17,285 want misschien de engineer zegt tegen je, 804 00:39:17,285 --> 00:39:19,910 Weet je wat, ik kan implementeren lineair zoeken in als twee minuten. 805 00:39:19,910 --> 00:39:21,150 Het is zo makkelijk. 806 00:39:21,150 --> 00:39:24,790 Binary search is niet zo mooi, maar het gaat om me als 10 minuten, 807 00:39:24,790 --> 00:39:26,650 zo 5 keer zo lang. 808 00:39:26,650 --> 00:39:30,900 >> Er is een handel hier, zelfs in termen te beslissen welke software te schrijven. 809 00:39:30,900 --> 00:39:34,760 Heeft u het eenvoudiger algoritme te schrijven, die slechts twee minuten neemt u mee? 810 00:39:34,760 --> 00:39:39,880 Of heb je meer tijd besteden, 10 minuten, het schrijven van de liefhebber algoritme? 811 00:39:39,880 --> 00:39:43,540 Hoe bepaal je dat soort vragen? 812 00:39:43,540 --> 00:39:46,710 Of je kan het een beetje meer echt. 813 00:39:46,710 --> 00:39:50,610 Ik vertel mijn baas het gaat nemen me één week of 10 weken 814 00:39:50,610 --> 00:39:52,490 het werktuig software op deze manier, hoe 815 00:39:52,490 --> 00:39:56,103 beslis je welk algoritme om groen licht? 816 00:39:56,103 --> 00:39:56,603 Karim? 817 00:39:56,603 --> 00:39:57,550 >> Doelgroep: Het publiek, denk ik. 818 00:39:57,550 --> 00:39:57,960 >> DAVID MALAN: Het publiek. 819 00:39:57,960 --> 00:39:59,460 Wat bedoel je met het publiek? 820 00:39:59,460 --> 00:40:03,460 >> Publiek: Als het gaat te gebruiken door gebruikers 821 00:40:03,460 --> 00:40:09,050 die [onhoorbaar] door de gebruikers [ONVERSTAANBAAR]. 822 00:40:09,050 --> 00:40:11,232 Maar als het is iets wat je bent gewoon doen voor jezelf 823 00:40:11,232 --> 00:40:13,946 om bij te dragen, [Onhoorbaar] sneller. 824 00:40:13,946 --> 00:40:16,820 DAVID MALAN: Ja, het is snel en vuile is een goede manier om het te beschrijven. 825 00:40:16,820 --> 00:40:18,695 In feite, als je het beschrijven van een groot deel van mijn tijd 826 00:40:18,695 --> 00:40:23,630 in graduate school, waarbij vaak tijden, Ik schreef slechte code bewust so-- 827 00:40:23,630 --> 00:40:26,490 althans, dat is hoe ik gerationaliseerd het-- bewust zo, 828 00:40:26,490 --> 00:40:30,670 want hoewel ik code schrijven dat was relatief langzaam uit te voeren, 829 00:40:30,670 --> 00:40:33,750 Ik was in staat om de code zelf te schrijven vrij snel, de uitgaven slechts enkele minuten 830 00:40:33,750 --> 00:40:35,107 of uren in plaats van dagen. 831 00:40:35,107 --> 00:40:37,190 En het bleek, ik soms nodig om te slapen. 832 00:40:37,190 --> 00:40:41,270 Dus zelfs als mijn code vereist 8 uur te lopen, goed, dat is prima, 833 00:40:41,270 --> 00:40:42,850 Ik zal gewoon gaan slapen, terwijl het loopt. 834 00:40:42,850 --> 00:40:46,350 >> Dus op het moment, ik dacht dat dit was heel slim, hoewel ik blijkbaar 835 00:40:46,350 --> 00:40:48,990 doorgewerkt mijn promotieonderzoek heel langzaam. 836 00:40:48,990 --> 00:40:52,270 Maar het omgekeerde daarvan is dat, als ik het schrijven van software 837 00:40:52,270 --> 00:40:55,930 voor andere mensen die telde meer dan ik, nou ja, 838 00:40:55,930 --> 00:40:59,580 het hebben van hen wacht 8 uur terug te krijgen hun zoekresultaten 839 00:40:59,580 --> 00:41:01,350 is niet zo overtuigend. 840 00:41:01,350 --> 00:41:04,090 En dus meer tijd besteden up front om software te schrijven 841 00:41:04,090 --> 00:41:07,300 dat is efficiënter, zoals onze derde algoritme, 842 00:41:07,300 --> 00:41:09,780 waarschijnlijk ten goede aan de gebruikers in de tijd. 843 00:41:09,780 --> 00:41:12,710 Dus het hangt echt voorbij tijd hoe die kosten oplopen. 844 00:41:12,710 --> 00:41:14,960 Als je gaat schrijven software te gebruiken keer, 845 00:41:14,960 --> 00:41:17,240 Waarschijnlijk kan net zo goed doen quick and dirty, zoals ze zeggen. 846 00:41:17,240 --> 00:41:18,198 gooi het gewoon bij elkaar. 847 00:41:18,198 --> 00:41:20,560 Het is code die gênant u, het is zo slecht, 848 00:41:20,560 --> 00:41:23,860 maar het wordt het werk correct gedaan, ook al is het niet efficiënt. 849 00:41:23,860 --> 00:41:27,200 Omgekeerd, je meer tijd besteden aan op iets, krijgen het precies goed. 850 00:41:27,200 --> 00:41:30,730 En dan afgeschreven over de tijd, dat upfront kosten van de tijd 851 00:41:30,730 --> 00:41:34,330 is waarschijnlijk de moeite waard, als je blijft optimaliseren voor de gemeenschappelijke zaak. 852 00:41:34,330 --> 00:41:37,620 >> En inderdaad, dat is een thema in programmeren, of informatica meer 853 00:41:37,620 --> 00:41:41,390 algemeen proberen te optimaliseren niet voor de ongewone zaak 854 00:41:41,390 --> 00:41:44,390 maar de gemeenschappelijke case-- welke bewerking gaat weer gebeuren? 855 00:41:44,390 --> 00:41:47,730 Als je gaat om miljarden hebben van gebruikers die zoeken op uw website, 856 00:41:47,730 --> 00:41:52,030 moet je waarschijnlijk breng de extra weken van te voren schriftelijk betere software, 857 00:41:52,030 --> 00:41:53,670 zodat alle gebruikers ten goede komen. 858 00:41:53,670 --> 00:41:57,840 Laten we nu eens proberen om dit een te vangen weinig pictorially, maar niet zo veel 859 00:41:57,840 --> 00:41:58,610 numeriek. 860 00:41:58,610 --> 00:42:01,680 >> Dus hier is gewoon een oude school grafiek. 861 00:42:01,680 --> 00:42:04,260 En laat me zeggen dat dit de tijd. 862 00:42:04,260 --> 00:42:06,660 En het maakt niet uit what-- eigenlijk, nee, geen tijd. 863 00:42:06,660 --> 00:42:08,320 Laten we deze op de andere as. 864 00:42:08,320 --> 00:42:15,700 Laten we zeggen dat dit de tijd is, en dit is groot probleem. 865 00:42:15,700 --> 00:42:17,830 >> En een computer wetenschapper misschien over het algemeen noemen 866 00:42:17,830 --> 00:42:20,820 dit gewoon n. n is als onze go-to variabele, waarbij 867 00:42:20,820 --> 00:42:26,351 n een getal, n nummer, en het is de aantal van welke ingangen u hebt. 868 00:42:26,351 --> 00:42:28,100 Dus in dit geval, n het aantal pagina's. 869 00:42:28,100 --> 00:42:30,150 Dus het zou kunnen zijn in 1000 het geval dat we net verteld. 870 00:42:30,150 --> 00:42:31,969 >> Dus tijd kan een eenheid van de maatregel. 871 00:42:31,969 --> 00:42:32,760 Misschien is het tweede. 872 00:42:32,760 --> 00:42:33,410 Misschien is het dagen. 873 00:42:33,410 --> 00:42:34,590 Misschien is het net pagina bochten. 874 00:42:34,590 --> 00:42:35,215 Maakt niet uit. 875 00:42:35,215 --> 00:42:38,840 Wat u ook wilt in te tellen, dat zal tijd kosten of gelijkwaardig. 876 00:42:38,840 --> 00:42:42,400 >> Dus met dat allereerste algoritme, als ik bijvoorbeeld 877 00:42:42,400 --> 00:42:45,920 had een 1000-pagina telefoonboek, Ik ga naar een punt daar te tekenen, 878 00:42:45,920 --> 00:42:51,450 want als het 1.000 pagina's, het duurde ongeveer 1.000 pagina draait, geven of te nemen. 879 00:42:51,450 --> 00:42:54,100 En dan, als ik had een 2000-pagina telefoonboek, 880 00:42:54,100 --> 00:42:57,200 en ik ga naar een tweede te trekken dot hier, want voor 2000 pagina's, 881 00:42:57,200 --> 00:42:59,810 het is net als 2.000 seconden of een pagina omslaan of wat dan ook. 882 00:42:59,810 --> 00:43:02,480 En dus toen ik al eerder zei, het is vorm van een lineair verband, 883 00:43:02,480 --> 00:43:06,020 dat was opzettelijk, want ik wilde later on-- recht now-- om een ​​lijn te trekken. 884 00:43:06,020 --> 00:43:07,770 Het is een soort van een rechte lijn relatie. 885 00:43:07,770 --> 00:43:10,180 De helling is 1/1, als je wil. 886 00:43:10,180 --> 00:43:14,630 >> Intussen is de tweede algoritme zei, als je hebt 1.000 pagina's 887 00:43:14,630 --> 00:43:17,680 en je met behulp van de tweede algoritme, waar ik met 2's geteld, draaien 888 00:43:17,680 --> 00:43:22,564 twee pagina's tegelijk, zou ik trek een punt onder of boven mijn originele dot? 889 00:43:22,564 --> 00:43:23,450 >> PUBLIEK: Onder. 890 00:43:23,450 --> 00:43:27,992 >> DAVID MALAN: Onder, want zoals we zagen, het kost minder tijd, half zo veel tijd. 891 00:43:27,992 --> 00:43:29,950 Dus de dot moet helft zo hoog als de andere. 892 00:43:29,950 --> 00:43:33,330 En dezelfde deal hier, deze dot moet ongeveer er waarschijnlijk. 893 00:43:33,330 --> 00:43:39,666 En dus mijn tweede algoritme, op dezelfde manier, een lineaire relatie met de tijd. 894 00:43:39,666 --> 00:43:41,990 En we kunnen het tekenen als zodanig. 895 00:43:41,990 --> 00:43:45,950 >> Dus nu, de derde en laatste algoritme is een beetje moeilijker om te tekenen. 896 00:43:45,950 --> 00:43:49,530 Maar intuïtief, als ik heb 1000 pagina's met mijn derde algoritme, 897 00:43:49,530 --> 00:43:52,340 het moet alleen me als 10 stappen. 898 00:43:52,340 --> 00:43:57,500 En als ik heb 2.000 pagina's gekregen met mijn derde algoritme, 899 00:43:57,500 --> 00:44:01,570 het zou me niet 10 stappen, maar 11, slechts één meer. 900 00:44:01,570 --> 00:44:03,610 Dus we nauwelijks gaan om dit te zien. 901 00:44:03,610 --> 00:44:06,010 >> En het blijkt, als Ik opnieuw in op deze, ik ben 902 00:44:06,010 --> 00:44:09,320 gaan overdrijven voor effect, de vorm van die lijn, uiteindelijk, 903 00:44:09,320 --> 00:44:11,990 is geen rechte line-- want zelfs als het, 904 00:44:11,990 --> 00:44:15,390 het zou meer als het kijken others-- het is eigenlijk een gebogen lijn 905 00:44:15,390 --> 00:44:19,265 dat, als we inzoomen, gaat veel meer zo uitzien. 906 00:44:19,265 --> 00:44:21,670 Het-- goed, OK, negeren dit deel. 907 00:44:21,670 --> 00:44:25,330 Dat was mijn pen te gaan van de hoek. 908 00:44:25,330 --> 00:44:29,000 Het is een gebogen lijn die altijd verhogen, altijd, altijd, altijd 909 00:44:29,000 --> 00:44:32,100 toegenomen, maar slechts nauwelijks. 910 00:44:32,100 --> 00:44:36,260 >> En dus na verloop van tijd, heb je een relatie die is meer als dit. 911 00:44:36,260 --> 00:44:37,540 Het ziet er bijna recht. 912 00:44:37,540 --> 00:44:40,330 Maar het is heel langzaam toeneemt. 913 00:44:40,330 --> 00:44:44,780 Maar voor bijna alle punten langs Uw x-as, horizontale as, 914 00:44:44,780 --> 00:44:46,550 het is lager dan die andere lijnen. 915 00:44:46,550 --> 00:44:49,930 >> Dus dit is misschien een relatie n, waarbij als je n pagina's, 916 00:44:49,930 --> 00:44:51,100 neemt u mee n seconden. 917 00:44:51,100 --> 00:44:53,320 Dit kan een verhouding n / 2 zijn. 918 00:44:53,320 --> 00:44:56,710 Je hebt n pagina's, het duurt je n / 2 seconden, half zoveel. 919 00:44:56,710 --> 00:45:00,590 Dit is een logaritmische verhouding, die 920 00:45:00,590 --> 00:45:08,920 Als u herinnert aan, log base 2 van n vangt dergelijke groei zogezegd. 921 00:45:08,920 --> 00:45:12,000 Dus dit is het soort van heilige graal onder de drie van deze 922 00:45:12,000 --> 00:45:15,940 hier, want het is gewoon zo veel meer efficiënt, maar misschien wel meer complexe 923 00:45:15,940 --> 00:45:18,610 implementeren. 924 00:45:18,610 --> 00:45:20,510 Nog vragen? 925 00:45:20,510 --> 00:45:26,220 >> Nou laat me dit doen, laat me open te stellen een tekstvenster 926 00:45:26,220 --> 00:45:29,100 gewoon zo kunnen we proberen om formaliseren hier iets. 927 00:45:29,100 --> 00:45:32,410 Dus laat me nu ga je gang en uitvoering van dit algoritme 928 00:45:32,410 --> 00:45:35,170 voor het vinden van Mike Smith in de code, als je wil, pseudo-code. 929 00:45:35,170 --> 00:45:36,620 Ik ga niet naar Java of C ++ te gebruiken. 930 00:45:36,620 --> 00:45:38,610 Ik ga gewoon een soort van te gebruiken Engels-achtige syntax, die we 931 00:45:38,610 --> 00:45:40,151 zou over het algemeen noemen pseudo-code. 932 00:45:40,151 --> 00:45:41,660 Hier, ik heb een leeg venster. 933 00:45:41,660 --> 00:45:48,180 En ik zeg stap 1 van de zeer eerste algoritme is pick-up telefoonboek. 934 00:45:48,180 --> 00:45:51,740 Stap 2 is open boek tot de eerste pagina. 935 00:45:51,740 --> 00:45:58,080 Stap 3 zal kijken pagina voor Mike Smith. 936 00:45:58,080 --> 00:46:02,740 Als op pagina, bel Mike. 937 00:46:02,740 --> 00:46:11,640 anders turn pagina en ga naar stap 3. 938 00:46:11,640 --> 00:46:13,590 Gedaan, laten we zeggen. 939 00:46:13,590 --> 00:46:18,110 >> En dus het is niet helemaal perfect, die we zullen zien in een moment. 940 00:46:18,110 --> 00:46:21,050 Maar laten we eens kijken wat concepten Ik ben hier geïntroduceerd. 941 00:46:21,050 --> 00:46:24,450 Zo stappen 1 en 2 en 3 zijn vrij veel werkwoorden. 942 00:46:24,450 --> 00:46:26,544 Ze zijn verklaringen, actions-- doen. 943 00:46:26,544 --> 00:46:28,710 En dus in een programmeertaal taal, zouden wij over het algemeen 944 00:46:28,710 --> 00:46:32,349 noemen ze verklaringen of functies of procedures, 945 00:46:32,349 --> 00:46:33,640 noemen ze een aantal dingen. 946 00:46:33,640 --> 00:46:35,460 Maar ze actions-- gewoon dit te doen. 947 00:46:35,460 --> 00:46:40,370 >> Stap 4 is fundamenteel verschillend, want het is een soort van een vraag. 948 00:46:40,370 --> 00:46:42,400 Het is te zeggen dat we zijn soort of bij een splitsing in de weg. 949 00:46:42,400 --> 00:46:48,000 Als Mike is op de pagina, bel hem, dus linksaf, als je wil. 950 00:46:48,000 --> 00:46:52,170 En zo niet, ga dan terug naar een aantal andere page-- of liever gezegd, sorry, 951 00:46:52,170 --> 00:46:56,650 ga terug naar een andere stap, die induceert een soort van looping construct. 952 00:46:56,650 --> 00:46:59,530 En we doen het opnieuw en opnieuw en opnieuw. 953 00:46:59,530 --> 00:47:01,300 >> En eigenlijk, weet je wat? 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 anders als aan het eind van het boek te stoppen. 957 00:47:09,010 --> 00:47:11,624 Dus we moeten soort van een derde staat, omdat je 958 00:47:11,624 --> 00:47:14,290 kan niet blijven draaien van de pagina advertentie nauseum, want uiteindelijk, zal ik 959 00:47:14,290 --> 00:47:15,320 raakte het einde van het boek. 960 00:47:15,320 --> 00:47:18,546 En een bug in een programma zou kunnen zijn niet anticiperen op dat scenario. 961 00:47:18,546 --> 00:47:21,420 En toen ik besefte, oh, wacht even, ik heb een derde scenario. 962 00:47:21,420 --> 00:47:23,900 Als ik uit van pagina's, I moet echt gewoon stoppen. 963 00:47:23,900 --> 00:47:25,330 Anders is het niet gedefinieerd. 964 00:47:25,330 --> 00:47:29,260 Wat gaat er gebeuren als ik blijf zeggen de bladzijde omslaan en terug te gaan, 965 00:47:29,260 --> 00:47:31,810 dit is wanneer computers bevriezen of crash, wanneer je geraakt 966 00:47:31,810 --> 00:47:34,160 een aantal onverwachte situatie als dat. 967 00:47:34,160 --> 00:47:37,280 >> Nu, hoe zit het met Mike derde algorithm-- Smith's 968 00:47:37,280 --> 00:47:43,150 pak de telefoon boek, open boek te first-- aan 969 00:47:43,150 --> 00:47:48,640 nee, niet de eerste pagina deze keer, naar middle-- oh, nou ja, dat zouden 970 00:47:48,640 --> 00:47:49,640 zijn de tweede algoritme. 971 00:47:49,640 --> 00:47:50,590 Laten we gewoon doorgaan naar de derde plaats. 972 00:47:50,590 --> 00:47:50,930 >> PUBLIEK: Oh, het spijt me. 973 00:47:50,930 --> 00:47:51,971 >> DAVID MALAN: Dat is prima. 974 00:47:51,971 --> 00:47:58,590 Laten we gewoon doorgaan naar de third-- geopend naar het midden en nu op zoek naar Mike Smith. 975 00:47:58,590 --> 00:48:02,300 indien op pagina, bel Mike. 976 00:48:02,300 --> 00:48:04,910 En wat doen we hier willen zeggen? 977 00:48:04,910 --> 00:48:06,134 anders wat? 978 00:48:06,134 --> 00:48:10,620 979 00:48:10,620 --> 00:48:12,370 We kunnen dit uitdrukken in een aantal manieren. 980 00:48:12,370 --> 00:48:13,369 Er is geen juiste antwoord. 981 00:48:13,369 --> 00:48:20,819 982 00:48:20,819 --> 00:48:23,735 OK, als niet meer, maar we moeten be-- OK, willen we verdelen in twee, 983 00:48:23,735 --> 00:48:25,630 maar willen we links gaan of naar rechts? 984 00:48:25,630 --> 00:48:29,560 Hoe kunnen we uitdrukken dat begrip? 985 00:48:29,560 --> 00:48:31,790 Nou, in het geval Mike's, ja, dat is eerlijk. 986 00:48:31,790 --> 00:48:35,050 Maar goed, dus dat is eigenlijk een goed punt. 987 00:48:35,050 --> 00:48:35,550 Dat is prima. 988 00:48:35,550 --> 00:48:36,924 We zullen blijven gaan met deze logica. 989 00:48:36,924 --> 00:48:38,182 Zo-- 990 00:48:38,182 --> 00:48:39,810 >> PUBLIEK: Minder dan de helft. 991 00:48:39,810 --> 00:48:40,560 DAVID MALAN: Yeah. 992 00:48:40,560 --> 00:48:49,820 Dus anders als pagina is, zullen we zeggen, minder dan Smith, links van Smith, 993 00:48:49,820 --> 00:48:52,220 then-- laten we eens kijken, is dit gaat bemoeilijken? 994 00:48:52,220 --> 00:49:01,885 anders als pagina komt voor Smith, scheur in de helft, weggooien waarvan de helft? 995 00:49:01,885 --> 00:49:05,643 996 00:49:05,643 --> 00:49:09,140 >> Publiek: Ik dacht dat was [ONVERSTAANBAAR]. 997 00:49:09,140 --> 00:49:11,650 >> DAVID MALAN: Ik hoor en antwoorden. 998 00:49:11,650 --> 00:49:12,431 >> PUBLIEK: Left. 999 00:49:12,431 --> 00:49:14,430 DAVID MALAN: Oké, gooi weg links de helft, zoals Lakisa 1000 00:49:14,430 --> 00:49:19,700 al eerder zei, de linker half, toen ik soort van 1001 00:49:19,700 --> 00:49:23,940 willen gewoon gaan to-- ik naar rechts. 1002 00:49:23,940 --> 00:49:27,380 Of equivalent, en ik maakte een klein beetje een puinhoop van het begin hier, 1003 00:49:27,380 --> 00:49:30,760 Ik wil effectief te ga dan naar stap 2 weer, 1004 00:49:30,760 --> 00:49:38,270 waarbij open voor het middle-- of open-- ja, laten we maar zeggen, pagina's te midden. 1005 00:49:38,270 --> 00:49:39,020 En hiermee is opgelost is. 1006 00:49:39,020 --> 00:49:39,936 Het is niet langer een boek. 1007 00:49:39,936 --> 00:49:42,210 Het is maar de helft van een boek, zo open pagina's te midden. 1008 00:49:42,210 --> 00:49:44,010 >> else-- waren er bijna. 1009 00:49:44,010 --> 00:49:54,000 Stap 6, anders als pagina komt na Smith, scheur in de helft, weggooien rechter helft, 1010 00:49:54,000 --> 00:49:55,680 ga dan naar stap 2. 1011 00:49:55,680 --> 00:49:58,920 1012 00:49:58,920 --> 00:50:05,230 anders stoppen, een vierde scenario als we hebben geen pagina's naar links te draaien. 1013 00:50:05,230 --> 00:50:06,394 Dus konden we dit opruimen. 1014 00:50:06,394 --> 00:50:07,560 En we moeten dit opruimen. 1015 00:50:07,560 --> 00:50:10,656 Dit is zeer pseudocode code, als je zal, zeer hoog niveau beschrijving. 1016 00:50:10,656 --> 00:50:12,280 Maar het doet in het algemeen vast te leggen op het idee. 1017 00:50:12,280 --> 00:50:16,040 >> En, nogmaals, in dit scenario, we de notie van een aandoening, 1018 00:50:16,040 --> 00:50:20,450 een tak, een vork in de weg, waardoor een decision-- als dit, ga op deze manier, 1019 00:50:20,450 --> 00:50:23,082 anders als, ga op deze manier, anders als, ga op die manier. 1020 00:50:23,082 --> 00:50:25,040 En dit is een veel voorkomende programmeertechniek 1021 00:50:25,040 --> 00:50:27,721 beslissen welke richting om te gaan, om zo te zeggen. 1022 00:50:27,721 --> 00:50:29,970 En we hebben ook een soort van looping structuur, waarbij 1023 00:50:29,970 --> 00:50:32,440 we iets te doen opnieuw en opnieuw. 1024 00:50:32,440 --> 00:50:34,820 >> Nu, zo blijkt, veel zoals in dit voorbeeld 1025 00:50:34,820 --> 00:50:37,660 zijnde super precies is belangrijk. 1026 00:50:37,660 --> 00:50:42,180 Maar we hebben ook iets gezien dat we blijven bellen abstractie. 1027 00:50:42,180 --> 00:50:45,490 Wat betekent het te halen telefoonboek? 1028 00:50:45,490 --> 00:50:47,740 We zijn gewoon een soort van het nemen van als vanzelfsprekend in deze kamer 1029 00:50:47,740 --> 00:50:49,340 dat heeft enkele semantische betekenis. 1030 00:50:49,340 --> 00:50:51,740 Ieder van ons gewoon een soort van weten, oh, goed, pak de telefoon boek. 1031 00:50:51,740 --> 00:50:52,864 Wat betekent dat eigenlijk? 1032 00:50:52,864 --> 00:50:59,060 Nou, dat betekent echt uit te breiden de hand, mager over, uit te breiden vingers, 1033 00:50:59,060 --> 00:51:03,890 knijpen boek tussen de vingers, sta op, trek de hand naar u toe. 1034 00:51:03,890 --> 00:51:05,940 En we konden echt pedant over dit, 1035 00:51:05,940 --> 00:51:08,640 echt zijn super nauwkeurige in verband met wat ik doe. 1036 00:51:08,640 --> 00:51:13,300 Maar al die stappen gezamenlijk zijn wat het betekent om pick-up een telefoonboek. 1037 00:51:13,300 --> 00:51:16,940 >> En dus eerder, toen ik zei, elk van deze eerste twee verklaringen 1038 00:51:16,940 --> 00:51:20,830 kan worden gezien als een gaan of een functie, 1039 00:51:20,830 --> 00:51:24,090 echt het vertegenwoordigt wat we blijven bellen een abstractie. 1040 00:51:24,090 --> 00:51:28,770 Het is als een hoog niveau conceptuele Beschrijving van een probleem dat 1041 00:51:28,770 --> 00:51:31,110 eigenlijk gaat om een ​​flink aantal stappen. 1042 00:51:31,110 --> 00:51:34,190 En zo ook dit is een terugkerend onderwerp in de programmering, 1043 00:51:34,190 --> 00:51:41,125 waarbij Ik heb misschien een programma te schrijven met behulp van syntax zoals dit-- 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 En dan syntactisch, ben ik ga iets te stelen 1047 00:51:46,510 --> 00:51:48,090 de meeste programmeertalen. 1048 00:51:48,090 --> 00:51:51,270 >> Nu, stap 1 ziet er zelfs meer een functie, 1049 00:51:51,270 --> 00:51:53,160 als programmeur zou noemen. 1050 00:51:53,160 --> 00:51:58,650 Het lijkt erop dat iemand code heeft een naam gegeven en gegeven 1051 00:51:58,650 --> 00:52:03,300 mij somehow-- gebruiken in andere woorden, wat de lijn die ik heb gewezen op 1052 00:52:03,300 --> 00:52:07,050 staat voor functionaliteit die misschien Ik wist niet eens uit te voeren mezelf. 1053 00:52:07,050 --> 00:52:10,410 Iemand ouder, wijzer dan me al bedacht 1054 00:52:10,410 --> 00:52:12,700 hoe je het begrip uitdrukken van het oppakken van een telefoonboek. 1055 00:52:12,700 --> 00:52:15,860 En het is net als de vijf stappen die ik net ratelde, uit de top van mijn hoofd. 1056 00:52:15,860 --> 00:52:19,350 >> Maar hij of zij reeds uitgevoerde Dit gaf de verschillende stappen 1057 00:52:19,350 --> 00:52:22,339 een naam, pick_up_phone_book. 1058 00:52:22,339 --> 00:52:24,380 En de haakjes net wat de meeste programmeurs 1059 00:52:24,380 --> 00:52:27,100 doen aan het einde van uitspraken als deze. 1060 00:52:27,100 --> 00:52:30,190 Ik kan nu op staan ​​zijn of haar schouders en nooit meer, 1061 00:52:30,190 --> 00:52:32,465 na te denken over wat het betekent te halen een telefoonboek. 1062 00:52:32,465 --> 00:52:34,090 Ik kan alleen maar zeggen, pak de telefoon boek. 1063 00:52:34,090 --> 00:52:36,690 En dat is precies wat allemaal van ons mensen hier deed. 1064 00:52:36,690 --> 00:52:38,940 >> Toen we waren waarschijnlijk 1 jaar oud, 2 jaar oud, 1065 00:52:38,940 --> 00:52:41,690 iemand had om ons te leren wat het bedoeld om pick-up een telefoonboek. 1066 00:52:41,690 --> 00:52:43,810 En sindsdien, we hebben weg geabstraheerd 1067 00:52:43,810 --> 00:52:46,739 van die zeer oninteressant mechanische stappen. 1068 00:52:46,739 --> 00:52:48,530 En we hebben gewoon een intuïtief begrip 1069 00:52:48,530 --> 00:52:50,480 van wat het betekent om pick-up een telefoonboek. 1070 00:52:50,480 --> 00:52:55,730 >> En je kunt nu extrapoleren om meer gecompliceerde things-- 1071 00:52:55,730 --> 00:52:57,640 bouw van een gebouw. 1072 00:52:57,640 --> 00:52:59,940 Zoals, voor sommige mensen, dat daadwerkelijk betekenis. 1073 00:52:59,940 --> 00:53:03,080 Om aannemers, architecten, dat een betekenis heeft. 1074 00:53:03,080 --> 00:53:06,400 En ze zouden weten wat te doen, als Ik zei, ga de bouw van een gebouw. 1075 00:53:06,400 --> 00:53:10,520 >> Maar de meesten van ons in de kamer kon niet omgaan met dat niveau van abstractie. 1076 00:53:10,520 --> 00:53:14,850 U moet ons vertellen graag gaan halen de schop en gaan halen de betonnen 1077 00:53:14,850 --> 00:53:17,250 en nagel de stukken hout samen en wat anders 1078 00:53:17,250 --> 00:53:18,830 is betrokken bij de bouw van een gebouw. 1079 00:53:18,830 --> 00:53:21,690 En dat is omdat we niet Nog geprogrammeerd begrijpen 1080 00:53:21,690 --> 00:53:23,629 wat het betekent om een ​​gebouw te bouwen. 1081 00:53:23,629 --> 00:53:24,920 We hebben dat niet abstractie. 1082 00:53:24,920 --> 00:53:26,570 We hebben dat niet functionaliteit. 1083 00:53:26,570 --> 00:53:29,930 >> En dus wat je ziet in programmeertalen, in het algemeen, 1084 00:53:29,930 --> 00:53:34,570 vooral meer moderne talen, zoals Java, PHP, Ruby en Python, 1085 00:53:34,570 --> 00:53:37,610 ze veel meer volwassen dan oudere talen, 1086 00:53:37,610 --> 00:53:40,140 zoals C en C ++ en nog anderen. 1087 00:53:40,140 --> 00:53:42,580 En zo komen ze met meer functionaliteit ingebouwd. 1088 00:53:42,580 --> 00:53:45,640 Meer code is geschreven door mensen in het verleden 1089 00:53:45,640 --> 00:53:50,520 dat we nu kunnen bellen of te roepen of te gebruiken, aangezien ik zinspeelde 1090 00:53:50,520 --> 00:53:52,231 op met benadrukte deze lijn hier. 1091 00:53:52,231 --> 00:53:55,230 En dus hoewel we praten niet over programmeertalen per se, 1092 00:53:55,230 --> 00:54:00,230 slechts pseudocode code, alle ideeën zijn nog steeds in die discussie. 1093 00:54:00,230 --> 00:54:04,600 En het blijkt precisie super belangrijk, evenals abstractie. 1094 00:54:04,600 --> 00:54:06,570 En laten we proberen om communiceren dat als volgt. 1095 00:54:06,570 --> 00:54:11,000 >> Ik heb per ongeluk zou hebben verwend dit door te knipperen met een dia op het scherm 1096 00:54:11,000 --> 00:54:12,260 voortijdig. 1097 00:54:12,260 --> 00:54:16,550 Maar laat me vragen om een ​​dappere vrijwilliger, als je het niet erg vindt komen. 1098 00:54:16,550 --> 00:54:19,040 Je zou in de voorkant van de camera, als je met dat OK. 1099 00:54:19,040 --> 00:54:24,950 Zou iemand graag te komen en geef instructies om uw collega's? 1100 00:54:24,950 --> 00:54:29,540 Gewoon hier te komen en sta hier over en zeggen sommige woorden. 1101 00:54:29,540 --> 00:54:32,890 >> Victoria lacht de meest en het vermijden van mijn ogen het meest. 1102 00:54:32,890 --> 00:54:34,740 Zou u bereid zijn om verder te komen zijn? 1103 00:54:34,740 --> 00:54:35,240 OK. 1104 00:54:35,240 --> 00:54:38,480 En als iedereen op uw plaatsen zou kunnen nemen uit een stuk van oud papier, 1105 00:54:38,480 --> 00:54:39,750 als je wil. 1106 00:54:39,750 --> 00:54:40,760 Gelinieerd papier is prima. 1107 00:54:40,760 --> 00:54:41,990 Kom rond op deze manier. 1108 00:54:41,990 --> 00:54:44,580 Of een deel van het papier je gisteren werden gegeven, 1109 00:54:44,580 --> 00:54:46,493 zomaar een blanco vel van papier, als je kon. 1110 00:54:46,493 --> 00:54:52,240 1111 00:54:52,240 --> 00:54:54,870 En als je die niet hebt, gewoon Vraag je buurman als je kon. 1112 00:54:54,870 --> 00:55:04,220 1113 00:55:04,220 --> 00:55:07,580 >> Dus voor het moment, voor dit voorbeeld, Victoria 1114 00:55:07,580 --> 00:55:11,520 gaat naar de rol van spelen een programmeur, een ingenieur, die 1115 00:55:11,520 --> 00:55:16,130 moet u het programma al, als de computers, om iets te doen. 1116 00:55:16,130 --> 00:55:19,570 En we zullen zien wat aannames u besluit te maken. 1117 00:55:19,570 --> 00:55:22,700 We zullen zien hoe nauwkeurig ze kiest te zijn. 1118 00:55:22,700 --> 00:55:26,220 En als deze demonstratie gaat pedagogisch goed, veel fouten 1119 00:55:26,220 --> 00:55:29,220 zal worden gemaakt, dat we dan zullen gebruiken dat als een kans voor discussie. 1120 00:55:29,220 --> 00:55:32,010 Maar de uitdaging voor u moet om deze fouten te voorkomen, 1121 00:55:32,010 --> 00:55:32,896 een goede programmeur. 1122 00:55:32,896 --> 00:55:35,520 En dus is de uitdaging bij de hand, als zou je graag om hier te lopen, 1123 00:55:35,520 --> 00:55:38,799 ligt tegenover Victoria op het scherm hier-- en hopelijk niemand van jullie 1124 00:55:38,799 --> 00:55:40,590 herinner me toen ik geflitst op het scherm. 1125 00:55:40,590 --> 00:55:44,097 En draai je niet om helemaal niet, want is er een ander scherm in deze kamer 1126 00:55:44,097 --> 00:55:44,930 dat ik uit kan draaien. 1127 00:55:44,930 --> 00:55:46,620 Dus niet omdraaien. 1128 00:55:46,620 --> 00:55:49,090 >> Voor Victoria is dat dezelfde schreeuw. 1129 00:55:49,090 --> 00:55:54,170 En haar taak is nu om u te vertellen alle op uw stuk papier wat te tekenen. 1130 00:55:54,170 --> 00:55:57,020 En we zullen zien, op basis van mondelinge instructies alleen, 1131 00:55:57,020 --> 00:56:00,020 computer code, als je wil, hoe nauwkeurig uw tekeningen 1132 00:56:00,020 --> 00:56:02,330 zijn-- uw implementaties. 1133 00:56:02,330 --> 00:56:02,980 Zinvol? 1134 00:56:02,980 --> 00:56:03,604 >> Publiek: Ja. 1135 00:56:03,604 --> 00:56:04,980 DAVID MALAN: OK, uit te voeren. 1136 00:56:04,980 --> 00:56:06,030 >> PUBLIEK: Teken een vierkant. 1137 00:56:06,030 --> 00:56:09,050 >> [GELACH] 1138 00:56:09,050 --> 00:56:12,310 >> DAVID MALAN: En nee vragen kunnen worden gesteld. 1139 00:56:12,310 --> 00:56:13,720 Kan alleen doen wat je gezegd wordt. 1140 00:56:13,720 --> 00:56:17,570 1141 00:56:17,570 --> 00:56:22,550 Oh, en als je slides van vandaag openen in een tab, kijk niet naar het tabblad. 1142 00:56:22,550 --> 00:56:23,670 OK? 1143 00:56:23,670 --> 00:56:26,135 >> PUBLIEK: OK, trek een cirkel. 1144 00:56:26,135 --> 00:56:32,544 1145 00:56:32,544 --> 00:56:34,872 Een slope-- kan ik zeggen helling? 1146 00:56:34,872 --> 00:56:35,830 DAVID MALAN: aan jou. 1147 00:56:35,830 --> 00:56:38,230 1148 00:56:38,230 --> 00:56:38,980 PUBLIEK: Een helling. 1149 00:56:38,980 --> 00:56:46,330 1150 00:56:46,330 --> 00:56:49,795 En een driehoek. 1151 00:56:49,795 --> 00:56:50,850 >> DAVID MALAN: Oké. 1152 00:56:50,850 --> 00:56:52,286 En blijf hier maar voor een ogenblik. 1153 00:56:52,286 --> 00:56:56,046 1154 00:56:56,046 --> 00:56:58,910 En ik ga om te komen rond in slechts een moment. 1155 00:56:58,910 --> 00:57:02,420 En geen behoefte om uw namen op het te zetten. 1156 00:57:02,420 --> 00:57:05,030 Laat me rond te komen en het verzamelen van uw tekeningen, 1157 00:57:05,030 --> 00:57:08,330 Als je het niet erg scheuren ze uit. 1158 00:57:08,330 --> 00:57:12,110 >> Hier is wat we terug kwamen. 1159 00:57:12,110 --> 00:57:14,770 Ik zal het op het scherm projecteren. 1160 00:57:14,770 --> 00:57:18,310 Ik zie een vierkant, een cirkel, een helling, en een driehoek. 1161 00:57:18,310 --> 00:57:20,130 Dus dat was een antwoord daar. 1162 00:57:20,130 --> 00:57:23,640 En let's-- whoops. 1163 00:57:23,640 --> 00:57:25,370 Dank je. 1164 00:57:25,370 --> 00:57:30,710 Hier is nog een assortiment, en één erachter. 1165 00:57:30,710 --> 00:57:34,130 1166 00:57:34,130 --> 00:57:37,120 >> Dus ze lijken allemaal om de geest te vangen. 1167 00:57:37,120 --> 00:57:38,600 Dank je. 1168 00:57:38,600 --> 00:57:44,970 Er is een andere, en hier is een andere. 1169 00:57:44,970 --> 00:57:51,590 De helling interpretatie is een beetje anders, weinig curvy. 1170 00:57:51,590 --> 00:57:57,140 En de dichtstbijzijnde, hetzij vanwege de prachtige specificiteit waarmee je hebt 1171 00:57:57,140 --> 00:58:03,520 beschreven, of misschien heb je soort zag het al eerder, dit is inderdaad 1172 00:58:03,520 --> 00:58:06,340 wat Victoria was eigenlijk beschrijven. 1173 00:58:06,340 --> 00:58:09,190 >> Maar nu, degenen onder u die niet krijgen helemaal gelijk, 1174 00:58:09,190 --> 00:58:11,140 laten we bieden een aantal bezwaren hier. 1175 00:58:11,140 --> 00:58:13,770 Dus Victoria zei eerst tekenen van een plein. 1176 00:58:13,770 --> 00:58:15,830 En nu, kunnen we aannemen omwille van vandaag 1177 00:58:15,830 --> 00:58:17,538 dat iedereen weet hoe je een vierkant te tekenen. 1178 00:58:17,538 --> 00:58:20,590 Maar dat is niet geheel duidelijk, toch? 1179 00:58:20,590 --> 00:58:23,220 Hoe anders zou je hebt getrokken een vierkant, of wanneer 1180 00:58:23,220 --> 00:58:27,114 misschien wel een deel van de onduidelijkheden hier voor de computer? 1181 00:58:27,114 --> 00:58:28,280 PUBLIEK: Locatie en oppervlakte. 1182 00:58:28,280 --> 00:58:28,980 DAVID MALAN: Location, toch? 1183 00:58:28,980 --> 00:58:32,070 Ieder van jullie had een paper van een aantal vorm, algemeen rechthoeken, maar enigszins 1184 00:58:32,070 --> 00:58:32,830 verschillende maten. 1185 00:58:32,830 --> 00:58:36,250 Maar je hebt zeker zou hebben getrokken, als je wilde, een groot plein, misschien 1186 00:58:36,250 --> 00:58:37,220 een klein plein. 1187 00:58:37,220 --> 00:58:38,417 Misschien werd gedraaid. 1188 00:58:38,417 --> 00:58:39,500 Ik denk niet dat we zagen dat. 1189 00:58:39,500 --> 00:58:41,790 Maar het zou meer diamanten zijn geweest zoals maar toch, toch, 1190 00:58:41,790 --> 00:58:42,900 mathematisch een vierkant. 1191 00:58:42,900 --> 00:58:44,850 Dus dat was misschien wel dubbelzinnig. 1192 00:58:44,850 --> 00:58:46,709 >> Toen zei ze, trek een cirkel. 1193 00:58:46,709 --> 00:58:49,250 Sommigen van jullie hebben het naast trekken het, dat is niet onredelijk, 1194 00:58:49,250 --> 00:58:52,450 omdat mensen de neiging om te denken of te lezen rechts naar links in de meeste talen, dus niet 1195 00:58:52,450 --> 00:58:53,017 een slechte gok. 1196 00:58:53,017 --> 00:58:55,100 Maar die kring zou kunnen hebben geweest in het vierkant, 1197 00:58:55,100 --> 00:58:57,600 rond kunnen zijn vierkant, zou elders zijn geweest 1198 00:58:57,600 --> 00:58:59,480 op het blad, dus misschien wel dubbelzinnig. 1199 00:58:59,480 --> 00:59:03,290 >> Slope zou misschien zijn geweest het nemen van de meest vrijheden verbaal 1200 00:59:03,290 --> 00:59:04,200 met wat dat betekent. 1201 00:59:04,200 --> 00:59:06,980 En sommigen van jullie geïnterpreteerd het als een kronkelende lijn 1202 00:59:06,980 --> 00:59:08,560 of een rechte lijn of iets dergelijks. 1203 00:59:08,560 --> 00:59:11,719 Driehoek en dan ook kunnen hebben georiënteerd in een aantal manieren. 1204 00:59:11,719 --> 00:59:14,760 Dus in het kort, zelfs met iets dat je blik en je net als, wow, dus 1205 00:59:14,760 --> 00:59:17,020 simpel, een kind kan trekken dit, nou niet 1206 00:59:17,020 --> 00:59:19,640 echt, tenzij je super, super overtuigend 1207 00:59:19,640 --> 00:59:22,045 en vertel de computer precies wat te doen. 1208 00:59:22,045 --> 00:59:24,420 Dus als we konden, als u een ander vel papier, laten we 1209 00:59:24,420 --> 00:59:26,710 probeer dit eens te meer. 1210 00:59:26,710 --> 00:59:29,880 En ik ga naar Victoria één geven ander voorbeeld op het scherm in. 1211 00:59:29,880 --> 00:59:34,060 En nogmaals, niet omdraaien en kijk niet naar uw dia's. 1212 00:59:34,060 --> 00:59:37,304 En ik zal haar even de tijd om te geven na te denken over hoe om dit te beschrijven. 1213 00:59:37,304 --> 00:59:39,012 Laat ze niet te zien de angst in je ogen. 1214 00:59:39,012 --> 00:59:40,820 >> [GELACH] 1215 00:59:40,820 --> 00:59:43,710 >> En opnieuw, dit keer leverage sommige van die afhaalrestaurants 1216 00:59:43,710 --> 00:59:48,130 en proberen om bijna iedereen te krijgen in ieder geval het juiste antwoord. 1217 00:59:48,130 --> 00:59:52,260 >> PUBLIEK: OK, neem een stuk papier, kijk 1218 00:59:52,260 --> 00:59:54,500 in het midden van dat stuk papier. 1219 00:59:54,500 --> 00:59:59,591 In het midden van dat stuk papier, trek je een kubus. 1220 00:59:59,591 --> 01:00:01,244 >> [GELACH] 1221 01:00:01,244 --> 01:00:02,660 DAVID MALAN: Wat hebben we geleerd? 1222 01:00:02,660 --> 01:00:03,540 We waren zo dichtbij. 1223 01:00:03,540 --> 01:00:06,320 1224 01:00:06,320 --> 01:00:09,045 OK, herhalen als je kon, voor iedereen. 1225 01:00:09,045 --> 01:00:13,210 >> PUBLIEK: In het midden van de stuk papier, teken een object, 1226 01:00:13,210 --> 01:00:14,842 die eruit ziet als een kubus. 1227 01:00:14,842 --> 01:00:17,332 >> DAVID MALAN: OK, dat is alles wat je krijgt om mee te werken. 1228 01:00:17,332 --> 01:00:20,010 1229 01:00:20,010 --> 01:00:23,080 Sta mij toe analytisch en niet zo kritisch, 1230 01:00:23,080 --> 01:00:25,720 maar om de claim te maken dat Victoria zeker 1231 01:00:25,720 --> 01:00:28,967 lijkt te zeer te denken in hoog niveau abstracties, die 1232 01:00:28,967 --> 01:00:29,800 is niet onredelijk. 1233 01:00:29,800 --> 01:00:32,160 Want anders zouden we allemaal zijn mooie disfunctionele, 1234 01:00:32,160 --> 01:00:35,740 als we ooit zo precies te zijn met alles wat we doen in de wereld. 1235 01:00:35,740 --> 01:00:38,890 >> Maar zeggen ga naar het middle-- I dachten dat we op zo'n goede track 1236 01:00:38,890 --> 01:00:42,340 daar, net als naar de middelste van de pagina, en teken een kubus. 1237 01:00:42,340 --> 01:00:45,730 Dus ze denken in abstracties, omdat ze nog steeds het bekijken 1238 01:00:45,730 --> 01:00:48,490 wat er op het scherm als inderdaad een kubus. 1239 01:00:48,490 --> 01:00:51,185 Maar er zijn zo veel mogelijkheden voor de interpretatie daar. 1240 01:00:51,185 --> 01:00:53,560 En in feite is er zo veel andere manieren waarop je zou kunnen uitdrukken 1241 01:00:53,560 --> 01:00:55,101 dat, wat ik stel in een moment. 1242 01:00:55,101 --> 01:00:59,770 Dus hier hebben we een incarnatie van de picture-- whoops-- één 1243 01:00:59,770 --> 01:01:02,830 incarnatie van het beeld, zodat een kleine drie dimensionaliteit aan, 1244 01:01:02,830 --> 01:01:04,160 dat is leuk. 1245 01:01:04,160 --> 01:01:08,470 >> Hier is nog een, waar u de hetzelfde, maar het is een soort van een open kubus. 1246 01:01:08,470 --> 01:01:12,020 Sommige mensen hebben het een beetje meer platte, tweedimensionale. 1247 01:01:12,020 --> 01:01:13,910 En dat is prima. 1248 01:01:13,910 --> 01:01:17,380 Dus er inderdaad in de midden van het papier. 1249 01:01:17,380 --> 01:01:22,720 Deze Ik denk dat je net, want als we hier naartoe te gaan, 1250 01:01:22,720 --> 01:01:25,130 dit is wat ze beschreef. 1251 01:01:25,130 --> 01:01:29,570 Dus nu, laat me voorstellen hoe anders we zouden deze situatie te beschrijven. 1252 01:01:29,570 --> 01:01:34,070 >> Vroeger, een van de meest meest voorkomende manieren om te leren programmeren 1253 01:01:34,070 --> 01:01:38,900 was om code te schrijven, schrijft lijnen instructies, 1254 01:01:38,900 --> 01:01:42,640 dat gecontroleerd een beetje schildpad op het scherm. 1255 01:01:42,640 --> 01:01:45,660 Logo en andere varianten van deze was de naam van de taal. 1256 01:01:45,660 --> 01:01:47,550 En de schildpad leefde in een wereld. 1257 01:01:47,550 --> 01:01:49,970 >> Dus neem aan dat dit rechthoekige ruimte is zijn wereld. 1258 01:01:49,970 --> 01:01:53,340 En je zou beginnen met assuming-- I niet echt weten hoe schildpad te trekken, 1259 01:01:53,340 --> 01:01:54,740 dus laten we doen als dit. 1260 01:01:54,740 --> 01:01:57,340 En dan heeft hij een schelp en dan misschien wat voeten. 1261 01:01:57,340 --> 01:01:59,840 Dus je zou dit hebben weinig karakter op het scherm. 1262 01:01:59,840 --> 01:02:02,270 >> En het doel van deze programmeertaal 1263 01:02:02,270 --> 01:02:06,070 was om de schildpad te dwingen om omhoog te gaan, omlaag, links, rechts 1264 01:02:06,070 --> 01:02:08,420 en zijn pen neer te zetten of pick-up zijn pen, 1265 01:02:08,420 --> 01:02:12,720 dus hij kon eigenlijk tekenen op het scherm in deze zeer vlak rechthoekig wereld. 1266 01:02:12,720 --> 01:02:16,850 Dus waar ik dacht dat je zou kunnen gaan, en waar je moet duiken overwegen 1267 01:02:16,850 --> 01:02:19,520 naar beneden om mentaal bij het beschrijven instructies algemeen, 1268 01:02:19,520 --> 01:02:21,720 Ik zou beweren, is zet je pen neer in de middle-- 1269 01:02:21,720 --> 01:02:23,100 en we zullen ontdoen van de te krijgen schildpad, want ik kan niet echt 1270 01:02:23,100 --> 01:02:24,680 houden tekenen hem heel goed. 1271 01:02:24,680 --> 01:02:27,170 >> En nu, hoe anders kan Ik zeg trek een kubus? 1272 01:02:27,170 --> 01:02:32,830 Nou, we konden iets als gelijkspel zeggen een diagonale lijn noordoosten, bijvoorbeeld, 1273 01:02:32,830 --> 01:02:35,182 of bij een hoek van 45 graden naar boven. 1274 01:02:35,182 --> 01:02:36,640 En dat zou me hier hebben gekregen. 1275 01:02:36,640 --> 01:02:38,380 En ik ben vrij ver van een kubus. 1276 01:02:38,380 --> 01:02:42,430 Maar nu kon ik iets te zeggen achtige draai 90 graden naar links 1277 01:02:42,430 --> 01:02:47,370 en trek een lijn van gelijke lengte noordwesten. 1278 01:02:47,370 --> 01:02:49,470 En ik kon blijven met gelijkaardige richtingen. 1279 01:02:49,470 --> 01:02:50,720 En het is niet makkelijk zal zijn. 1280 01:02:50,720 --> 01:02:53,345 En eerlijk gezegd, we waarschijnlijk zijn hier al vijf minuten bezig. 1281 01:02:53,345 --> 01:02:59,600 Maar misschien zouden we hebben gekregen om iets dat aan het eind van de dag, 1282 01:02:59,600 --> 01:03:04,280 eindigt in een kubus, maar we dook binnenkant van die abstractie 1283 01:03:04,280 --> 01:03:06,370 het doen op zo'n lage level dat je niet kunt echt 1284 01:03:06,370 --> 01:03:09,795 zien wat je aan het doen bent totdat de hele ding is eigenlijk is er op de pagina. 1285 01:03:09,795 --> 01:03:12,670 En dus dit is een algemeen principe, opnieuw, van programming-- dit idee 1286 01:03:12,670 --> 01:03:13,320 abstractie. 1287 01:03:13,320 --> 01:03:15,920 Het is zo heerlijk krachtig, omdat weer, 1288 01:03:15,920 --> 01:03:19,281 ze net zei, trek je een kubus, waarin alle ons vrij veel zou zeer snel Grok. 1289 01:03:19,281 --> 01:03:21,030 We zouden alleen te begrijpen, OK, trek je een kubus. 1290 01:03:21,030 --> 01:03:24,030 We weten misschien niet de oriëntatie, dus we konden een beetje meer precies te zijn, 1291 01:03:24,030 --> 01:03:26,297 maar we kunnen over het algemeen beeld of weet wat een kubus is. 1292 01:03:26,297 --> 01:03:28,130 En dat is handig, want als elke keer dat je 1293 01:03:28,130 --> 01:03:31,540 ging zitten als programmeur bij uw toetsenbord om code te schrijven, 1294 01:03:31,540 --> 01:03:33,912 als je moest denken op zo'n een laag niveau, niemand van ons 1295 01:03:33,912 --> 01:03:35,120 zou wel eens iets gedaan. 1296 01:03:35,120 --> 01:03:38,259 En zeker, niemand van ons zou genieten van het proces van het schrijven van code. 1297 01:03:38,259 --> 01:03:41,550 Het zou zijn alsof schrijven in 0's en 1's, dat eerlijk gezegd was niet zo lang geleden 1298 01:03:41,550 --> 01:03:43,680 mensen werden code schrijven in 0's en 1's. 1299 01:03:43,680 --> 01:03:46,960 En we kwamen al snel met deze hogere niveau languages-- 1300 01:03:46,960 --> 01:03:49,410 C ++ en Java en anderen. 1301 01:03:49,410 --> 01:03:52,500 >> Dus laten we proberen dit eens te meer alleen maar om flip de tafels, zodat ieder van ons 1302 01:03:52,500 --> 01:03:55,450 de kans hebben om na te denken in plaats dezelfde manier. 1303 01:03:55,450 --> 01:03:59,230 Kunnen we nog een vrijwilliger deze tijd om te komen aan de raad en te tekenen, 1304 01:03:59,230 --> 01:04:01,480 niet reciteren? 1305 01:04:01,480 --> 01:04:02,070 Ja oke. 1306 01:04:02,070 --> 01:04:04,820 Ben, kom op maximaal. 1307 01:04:04,820 --> 01:04:08,510 En, Ben, in dit geval, als je eenmaal het gezicht van de raad van bestuur, niet kijk naar links, 1308 01:04:08,510 --> 01:04:09,370 kijk niet naar rechts. 1309 01:04:09,370 --> 01:04:12,367 Alleen doen wat je collega's vertellen. 1310 01:04:12,367 --> 01:04:14,950 En voor iedereen in de kamer, je hebt nu de programmeur. 1311 01:04:14,950 --> 01:04:16,020 Hij is de computer. 1312 01:04:16,020 --> 01:04:21,395 En het beeld dat ik heb hier gekozen op voorhand is dit hier. 1313 01:04:21,395 --> 01:04:24,490 1314 01:04:24,490 --> 01:04:27,660 Ze gewoon-- ze denken van een leuke grap is alles. 1315 01:04:27,660 --> 01:04:31,510 >> Dus ik zou doet iemand willen vrijwilliger de eerste instructie 1316 01:04:31,510 --> 01:04:35,470 of verklaring dat moet pen commando Ben's? 1317 01:04:35,470 --> 01:04:40,850 En we zullen dit gezamenlijk doen, misschien een instructie van elke persoon. 1318 01:04:40,850 --> 01:04:41,440 Het spijt me? 1319 01:04:41,440 --> 01:04:42,440 >> PUBLIEK: Teken een cirkel. 1320 01:04:42,440 --> 01:04:45,866 DAVID MALAN: Teken een cirkel is het eerste wat ik hoorde. 1321 01:04:45,866 --> 01:04:47,100 >> PUBLIEK: Up top. 1322 01:04:47,100 --> 01:04:48,140 >> DAVID MALAN: Up top. 1323 01:04:48,140 --> 01:04:52,504 OK, kunnen we u laten verwijderen, ongedaan te maken. 1324 01:04:52,504 --> 01:04:53,420 En nu, iemand anders. 1325 01:04:53,420 --> 01:04:55,994 Dan, zou je comfortabel zijn die de volgende instructie? 1326 01:04:55,994 --> 01:05:02,070 >> PUBLIEK: Zeker, trek het centrum van de onderkant van de cirkel, 1327 01:05:02,070 --> 01:05:07,121 met een small-- een beetje kleine ruimte van dat, 1328 01:05:07,121 --> 01:05:15,420 trek je een rechte lijn naar beneden tot drie kwart van de weg naar beneden het bord 1329 01:05:15,420 --> 01:05:17,845 een lichte hoek aan uw linkerhand. 1330 01:05:17,845 --> 01:05:21,250 1331 01:05:21,250 --> 01:05:22,620 >> DAVID MALAN: Goed. 1332 01:05:22,620 --> 01:05:24,086 >> PUBLIEK: lichte hoek. 1333 01:05:24,086 --> 01:05:32,807 >> DAVID MALAN: Undo, de Control-Z. OK. 1334 01:05:32,807 --> 01:05:34,890 Andrew, je wilt bieden de volgende instructie? 1335 01:05:34,890 --> 01:05:35,515 >> PUBLIEK: Zeker. 1336 01:05:35,515 --> 01:05:43,250 Van de bodem van die lijn, een verdere lichte angle-- 1337 01:05:43,250 --> 01:05:49,024 whoops-- misschien ongeveer een derde van de lengte [ONHOORBAAR] 1338 01:05:49,024 --> 01:05:52,928 lichte hoek naar beneden en als een derde van de lengte van [ONVERSTAANBAAR]. 1339 01:05:52,928 --> 01:05:57,550 1340 01:05:57,550 --> 01:06:00,578 Dus ja, vanaf dat punt, trek een lijn een derde 1341 01:06:00,578 --> 01:06:04,150 van de lengte van de vorige lijn verder naar links. 1342 01:06:04,150 --> 01:06:08,416 1343 01:06:08,416 --> 01:06:10,040 >> DAVID MALAN: Dat OK? 1344 01:06:10,040 --> 01:06:12,330 Rechte lijn, dat is OK? 1345 01:06:12,330 --> 01:06:14,900 OK, Olivier, je wilt naar de volgende offeren? 1346 01:06:14,900 --> 01:06:28,564 >> PUBLIEK: [onhoorbaar] in de onderkant van de cirkel, [ONVERSTAANBAAR]. 1347 01:06:28,564 --> 01:06:32,000 1348 01:06:32,000 --> 01:06:45,126 Teken aan de rechterzijde van [onhoorbaar] centimeter. 1349 01:06:45,126 --> 01:06:46,560 >> [GELACH] 1350 01:06:46,560 --> 01:06:49,872 >> DAVID MALAN: Ik denk dat je gaat te zetten die naast hier. 1351 01:06:49,872 --> 01:06:50,764 >> PUBLIEK: Stop. 1352 01:06:50,764 --> 01:06:52,186 >> [GELACH] 1353 01:06:52,186 --> 01:06:54,570 >> DAVID MALAN: OK. 1354 01:06:54,570 --> 01:06:56,660 [? Ara,?] Je wilt naar de volgende offeren? 1355 01:06:56,660 --> 01:07:00,653 1356 01:07:00,653 --> 01:07:15,443 >> PUBLIEK: Teken een [ONVERSTAANBAAR] de bovenste [ONHOORBAAR] hetzelfde. 1357 01:07:15,443 --> 01:07:28,829 [ONHOORBAAR] cirkel, te vestigen op de [Onhoorbaar] en teken [ONVERSTAANBAAR]. 1358 01:07:28,829 --> 01:07:33,799 1359 01:07:33,799 --> 01:07:36,730 >> DAVID MALAN: OK, niet meer ongedaan maken. 1360 01:07:36,730 --> 01:07:38,390 Laten we één of twee meer instructies. 1361 01:07:38,390 --> 01:07:40,825 Chris, wil je een aanbod? 1362 01:07:40,825 --> 01:07:46,182 >> PUBLIEK: Aan de onderkant van de cirkel, [ONVERSTAANBAAR] 1363 01:07:46,182 --> 01:07:51,528 trek een gelijke lijn slopping naar beneden naar links [ONVERSTAANBAAR]. 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 We did-- Karim? 1368 01:08:02,472 --> 01:08:06,891 1369 01:08:06,891 --> 01:08:13,765 >> Publiek: Vanaf de juiste lijn, het eind van de linkerlijn de bodem, 1370 01:08:13,765 --> 01:08:21,012 je gaat naar rechts over te gaan dezelfde lengte als die lijn 1371 01:08:21,012 --> 01:08:27,680 je bent op, tekenen aan de rechter [ONVERSTAANBAAR]. 1372 01:08:27,680 --> 01:08:33,572 1373 01:08:33,572 --> 01:08:37,991 [ONHOORBAAR] graden, zodat [ONVERSTAANBAAR] graden aan de rechterkant. 1374 01:08:37,991 --> 01:08:41,919 1375 01:08:41,919 --> 01:08:43,500 >> DAVID MALAN: Oké. 1376 01:08:43,500 --> 01:08:44,029 Laten we pauzeren. 1377 01:08:44,029 --> 01:08:44,950 Nog niet omdraaien. 1378 01:08:44,950 --> 01:08:46,783 Laten we pauzeren, en laten we probeer een andere poging 1379 01:08:46,783 --> 01:08:48,850 voordat we onthullen Ben wat hij al getekend. 1380 01:08:48,850 --> 01:08:51,189 Kun je shuffle Ben naar de right-- of eigenlijk, 1381 01:08:51,189 --> 01:08:54,080 Nee, laten we gewoon je geeft een ander board, nog beter. 1382 01:08:54,080 --> 01:08:57,640 Zo iemand zou nu graag om meer van de aanpak 1383 01:08:57,640 --> 01:09:02,149 dat Victoria nam eerder, waarbij we spreken in een hoger abstractieniveau 1384 01:09:02,149 --> 01:09:05,149 en in slechts een zin of twee beschrijven Ben 1385 01:09:05,149 --> 01:09:07,229 wat te tekenen zonder krijgen in het onkruid, 1386 01:09:07,229 --> 01:09:10,670 dus op dit een lager niveau te spreken? 1387 01:09:10,670 --> 01:09:11,206 Victoria. 1388 01:09:11,206 --> 01:09:11,706 [GELACH] 1389 01:09:11,706 --> 01:09:14,249 PUBLIEK: Teken een cijfer van de lopende mens. 1390 01:09:14,249 --> 01:09:18,866 En zijn benen en armen moet de juiste kant. 1391 01:09:18,866 --> 01:09:20,505 >> DAVID MALAN: OK, dat is alles wat je krijgt. 1392 01:09:20,505 --> 01:09:27,210 1393 01:09:27,210 --> 01:09:27,710 Okee. 1394 01:09:27,710 --> 01:09:31,609 Waarom gaan we niet onthullen Ben wat hij deed. 1395 01:09:31,609 --> 01:09:32,890 Dus een applaus. 1396 01:09:32,890 --> 01:09:35,700 Dat was het moeilijkste misschien. 1397 01:09:35,700 --> 01:09:37,931 >> Dus hoewel we praten in tamelijk domme termen 1398 01:09:37,931 --> 01:09:39,680 over enkel trekken foto's, hopelijk 1399 01:09:39,680 --> 01:09:44,226 kan echt genieten van de mate van expressiviteit die nodig zouden kunnen zijn 1400 01:09:44,226 --> 01:09:45,850 met het oog op een computer wat te doen te vertellen. 1401 01:09:45,850 --> 01:09:50,370 En inderdaad, dat Ben was in staat om dit zo snel te trekken 1402 01:09:50,370 --> 01:09:54,227 is een soort van bewijs van het gebruik van een taal, misschien een hoger niveau 1403 01:09:54,227 --> 01:09:57,060 versie van het Engels, die hem toestaat om gewoon gebruik maken van woorden, of woorden te horen 1404 01:09:57,060 --> 01:09:59,990 van Victoria, die hem mogelijk maken deze abstractions-- gewoon te trekken 1405 01:09:59,990 --> 01:10:03,020 een figuur lopen naar de right-- dat soort heeft 1406 01:10:03,020 --> 01:10:07,100 sommige semantische betekenis aan dat niet bijna net zo duidelijk als je gewoon 1407 01:10:07,100 --> 01:10:10,310 zeggen, zet je pen neer, trek naar rechts, trek naar links. 1408 01:10:10,310 --> 01:10:12,420 >> En zo ook dit is zeer gebruikelijk in de programmering. 1409 01:10:12,420 --> 01:10:15,253 Dit kan worden gezegd dat als een zeer laag niveau taal, programmering 1410 01:10:15,253 --> 01:10:16,730 in 0's en 1's als je wil. 1411 01:10:16,730 --> 01:10:19,320 En dit zou een hoger niveau taal programmeren in Java, 1412 01:10:19,320 --> 01:10:20,278 of zoiets. 1413 01:10:20,278 --> 01:10:22,050 Een beetje een oversimplificatie, maar dat is 1414 01:10:22,050 --> 01:10:24,310 het een beetje als emotioneel het gevoel dat je voelt wanneer 1415 01:10:24,310 --> 01:10:26,630 via een soort dingen of een ander. 1416 01:10:26,630 --> 01:10:32,650 Een beetje frustratie hier door de noodzaak dergelijke precisie, maar de kans 1417 01:10:32,650 --> 01:10:34,930 een beetje losser zijn met de interpretatie hier. 1418 01:10:34,930 --> 01:10:38,060 Maar natuurlijk, insecten kan voortvloeien. 1419 01:10:38,060 --> 01:10:40,500 >> Als u wilt op thuis-- we zal deze in class-- niet doen 1420 01:10:40,500 --> 01:10:41,900 maar als je wilt breng dit één huis, 1421 01:10:41,900 --> 01:10:43,387 Ik dacht dat we zouden duiken in deze. 1422 01:10:43,387 --> 01:10:45,970 Dus als je wilt om dit te spelen spel met uw partner 1423 01:10:45,970 --> 01:10:49,180 of kinderen of iets dergelijks, u zou kunnen genieten dat ook. 1424 01:10:49,180 --> 01:10:54,460 >> Dus laten we gaan vooruit en kijken naar een laatste ding hier voor computational denken. 1425 01:10:54,460 --> 01:10:57,010 En dat brengt ons bij John Oliver, niet voor de clip 1426 01:10:57,010 --> 01:11:00,070 je zou gisteravond hebben gezien, maar om een ​​enigszins recente uitgave. 1427 01:11:00,070 --> 01:11:03,310 Een paar maanden terug, Volkswagen nam nogal wat flak 1428 01:11:03,310 --> 01:11:05,651 om welke reden, als je weet? 1429 01:11:05,651 --> 01:11:07,025 Wat hebben ze in de problemen komen voor? 1430 01:11:07,025 --> 01:11:10,270 1431 01:11:10,270 --> 01:11:14,030 >> Ja, dus ze emissions-- probeerden om de uitstoot te verslaan 1432 01:11:14,030 --> 01:11:19,100 proeven in hoofdzaak met die hun auto's vervuilen het milieu minder 1433 01:11:19,100 --> 01:11:23,620 toen hun auto's werden getest en vervuilen het milieu meer 1434 01:11:23,620 --> 01:11:25,547 wanneer de auto niet getest. 1435 01:11:25,547 --> 01:11:28,630 En wat is er steeds interessanter in de wereld, zoals u wellicht afgeleid hebben 1436 01:11:28,630 --> 01:11:34,072 Uit gesprekken van like-- wat is het-- CarPlay, Apple's software voor auto's 1437 01:11:34,072 --> 01:11:35,780 en het feit dat veel van ons in toenemende mate 1438 01:11:35,780 --> 01:11:38,390 hebben touch screens in onze auto's, er is een angstaanjagende hoeveelheid 1439 01:11:38,390 --> 01:11:41,250 van de software in de mensen's auto's vandaag, die 1440 01:11:41,250 --> 01:11:45,650 eerlijk gezegd opent een blik wormen bij het gaat om veiligheid en fysieke risico's. 1441 01:11:45,650 --> 01:11:48,070 Maar voor vandaag, laten we concentreren op slechts wat 1442 01:11:48,070 --> 01:11:52,170 die betrokken zijn bij het schrijven van software dat kan het systeem gamed. 1443 01:11:52,170 --> 01:11:54,510 >> Voor de definitie van de probleem, voor degenen die niet bekend, 1444 01:11:54,510 --> 01:11:55,740 laten we eens een kijkje nemen op John Oliver. 1445 01:11:55,740 --> 01:11:58,115 En voor wie vertrouwd is met het probleem, laten we eens kijken 1446 01:11:58,115 --> 01:12:00,480 in een leuke lens via John Oliver ook. 1447 01:12:00,480 --> 01:12:05,810 Dus laat me hit spelen op dit, ik denk, drie minuten durende introductie. 1448 01:12:05,810 --> 01:12:07,074 Verdorie. 1449 01:12:07,074 --> 01:12:07,740 [VIDEO AFSPELEN] 1450 01:12:07,740 --> 01:12:08,170 -Cars-- 1451 01:12:08,170 --> 01:12:09,919 DAVID MALAN: Uiteraard, op YouTube, it's-- 1452 01:12:09,919 --> 01:12:12,500 - --de Slimste tekens in de Fast and Furious films. 1453 01:12:12,500 --> 01:12:16,080 Deze week, de Duitse automaker Volkswagen zag zich 1454 01:12:16,080 --> 01:12:19,430 in het midden van een schandaal potentieel criminele proporties. 1455 01:12:19,430 --> 01:12:23,020 >> -Volkswagen Is schrap voor miljarden in boetes, mogelijk strafrechtelijke vervolging 1456 01:12:23,020 --> 01:12:25,530 voor zijn leidinggevenden, zoals het bedrijf verontschuldigt zich 1457 01:12:25,530 --> 01:12:28,790 voor rigging 11 miljoen auto's aan helpen verslaan uitstoot testen. 1458 01:12:28,790 --> 01:12:32,110 >> -bepaalde Diesel modellen werden ontworpen met geavanceerde software die 1459 01:12:32,110 --> 01:12:35,410 gebruikte informatie, met inbegrip van de positie van het stuurwiel en het voertuig 1460 01:12:35,410 --> 01:12:38,820 snelheid, bepalen de auto ondergaat uitstoot testen. 1461 01:12:38,820 --> 01:12:42,620 Onder deze omstandigheid, de motor zou giftige uitstoot te verminderen. 1462 01:12:42,620 --> 01:12:46,040 Maar de auto werd opgetuigd om bypass dat wanneer het werd bestuurd. 1463 01:12:46,040 --> 01:12:51,370 Emissies zijn gestegen 10-40 keer hoger EPA aanvaardbare niveaus. 1464 01:12:51,370 --> 01:12:55,920 >> -Wow, 10 tot 40 keer groter dan de EPO zorgt. 1465 01:12:55,920 --> 01:12:59,570 Dat is het ergste Volkswagen heeft ooit heb gedaan, 1466 01:12:59,570 --> 01:13:04,200 is iets wat je zou kunnen zeggen als zou je nog nooit gehoord van de Tweede Wereldoorlog. 1467 01:13:04,200 --> 01:13:09,710 Maar misschien is de zekerste teken van hoe veel moeite Volkswagen is in, 1468 01:13:09,710 --> 01:13:12,730 is dat mensen aan het top hebben afgetreden. 1469 01:13:12,730 --> 01:13:16,320 De CEO ontslag op woensdag na klauteren om damage control te doen, 1470 01:13:16,320 --> 01:13:20,380 zeggen dat hij eindeloos speet, dat klonk geweldig totdat het bleek 1471 01:13:20,380 --> 01:13:22,920 Hij was slechts 10% spijt maar had zijn mond opgetuigd 1472 01:13:22,920 --> 01:13:25,600 om kunstmatig zijn sorriness. 1473 01:13:25,600 --> 01:13:29,700 En ondertussen, Volkswagen US chief had een verontschuldiging van zijn eigen. 1474 01:13:29,700 --> 01:13:33,580 >> -Laten We duidelijk zijn over dit, ons bedrijf was oneerlijk. 1475 01:13:33,580 --> 01:13:37,140 En in mijn Duitse woorden, we hebben helemaal verpest. 1476 01:13:37,140 --> 01:13:41,360 >> -Ja, Maar totaal geschroefd up zijn geen Duits werken. 1477 01:13:41,360 --> 01:13:43,750 En de Duitse taal heeft vele mooie zinnen 1478 01:13:43,750 --> 01:13:50,070 om situaties te beschrijven net als dit, zoals [GERMAN], die ruwweg betekent, 1479 01:13:50,070 --> 01:13:52,870 het verdriet dat komt van zakelijke leugens, 1480 01:13:52,870 --> 01:13:59,060 of [DUITS], wat zich vertaalt als shaming degenen vader betrekken 1481 01:13:59,060 --> 01:14:00,352 wolken benzine. 1482 01:14:00,352 --> 01:14:02,060 Het is een mooie taal. 1483 01:14:02,060 --> 01:14:04,660 Het vaart net buiten de tong. 1484 01:14:04,660 --> 01:14:07,920 En door de manier, terwijl dat van de mens verontschuldiging kan oprecht hebben geklonken, 1485 01:14:07,920 --> 01:14:12,260 het is vermeldenswaard dat hij sprak op een officiële launch party voor de 2016 1486 01:14:12,260 --> 01:14:17,310 Volkswagen Passat, wat betekent dat kort na het zeggen sorry, zei hij dit. 1487 01:14:17,310 --> 01:14:18,850 >> -Dank U hartelijk voor uw komst. 1488 01:14:18,850 --> 01:14:19,630 Geniet van de avond. 1489 01:14:19,630 --> 01:14:21,300 Up next is Lenny Kravitz. 1490 01:14:21,300 --> 01:14:24,640 >> [Muziek] 1491 01:14:24,640 --> 01:14:28,230 >> -OK, OK, het beëindigen van uw verontschuldiging met naast 1492 01:14:28,230 --> 01:14:31,940 Lenny Kravitz niet schreeuwen sober berouw. 1493 01:14:31,940 --> 01:14:35,830 Het schreeuwt, vroegen we Bon Jovi, en hij zei nee. 1494 01:14:35,830 --> 01:14:38,600 merk Volkswagen heeft is zwaar beschadigd. 1495 01:14:38,600 --> 01:14:42,466 En eerlijk gezegd, hun nieuwe advertentie campagne is niet echt helpen. 1496 01:14:42,466 --> 01:14:47,289 >> - [DUITS], we bij Volkswagen zouden willen om zich te verontschuldigen voor u bedriegen met 1497 01:14:47,289 --> 01:14:47,930 onze voertuigen. 1498 01:14:47,930 --> 01:14:48,513 >> [END AFSPELEN] 1499 01:14:48,513 --> 01:14:54,090 DAVID MALAN: Dus dit was een omweg van-- sorry-- 1500 01:14:54,090 --> 01:14:58,730 dit was een omweg inbrengen van een fundamenteel probleem 1501 01:14:58,730 --> 01:15:02,810 in software, die je moeten bepaalde ziektebeelden. 1502 01:15:02,810 --> 01:15:07,680 En dus is de vraag bij de hand hier is, hoe werkt een auto potentieel, 1503 01:15:07,680 --> 01:15:09,870 zoals geïmplementeerd in software door deze programmeurs, 1504 01:15:09,870 --> 01:15:11,850 detecteren dat het eigenlijk wordt getest? 1505 01:15:11,850 --> 01:15:14,150 Dus om super duidelijk te zijn, wat ze deden 1506 01:15:14,150 --> 01:15:17,940 was in omgevingen waar de programmeurs bedacht 1507 01:15:17,940 --> 01:15:20,460 de auto werd getest, ze een of andere manier gemaakt 1508 01:15:20,460 --> 01:15:24,840 de auto stoten minder uitstoot, minder uitstoot, dus minder giftige dampen 1509 01:15:24,840 --> 01:15:25,470 en zo. 1510 01:15:25,470 --> 01:15:27,261 Maar als het is normaal rijden op de weg, 1511 01:15:27,261 --> 01:15:30,350 het zou net zo veel uitstoten vervuiling als het wilde. 1512 01:15:30,350 --> 01:15:33,870 >> Dus hoe kunnen we schrijven de pseudocode voor dit algoritme? 1513 01:15:33,870 --> 01:15:37,820 Hoe konden we schrijven de pseudocode voor de software die in de auto? 1514 01:15:37,820 --> 01:15:43,390 Ik bedoel, in een notendop, het kookt naar beneden om iets als dit. 1515 01:15:43,390 --> 01:15:48,000 indien getest, stoten minder. 1516 01:15:48,000 --> 01:15:50,750 anders stoot meer. 1517 01:15:50,750 --> 01:15:52,630 Maar dat is een beetje te hoog niveau, toch? 1518 01:15:52,630 --> 01:15:58,580 >> Laten we proberen om te duiken in wat dit abstractie van het zijn geteste middelen. 1519 01:15:58,580 --> 01:16:06,340 Met andere woorden, zelfs als je niets weet over auto's, wat voor soort vragen 1520 01:16:06,340 --> 01:16:13,440 kan u vragen om te bepalen of je wordt getest, als u de auto bent? 1521 01:16:13,440 --> 01:16:19,638 Welke eigenschappen zou kunnen zijn presenteren als een auto wordt getest? 1522 01:16:19,638 --> 01:16:21,026 >> PUBLIEK: testapparatuur. 1523 01:16:21,026 --> 01:16:22,420 >> DAVID MALAN: testapparatuur. 1524 01:16:22,420 --> 01:16:26,060 Dus als het testen van apparatuur in de buurt, dan stoten minder. 1525 01:16:26,060 --> 01:16:28,669 Dus ik kan me voorstellen uitvoering die met een soort camera 1526 01:16:28,669 --> 01:16:29,960 of het opsporen van wat er om je heen. 1527 01:16:29,960 --> 01:16:32,870 En laat me voorstellen dat voelt gewoon te ingewikkeld 1528 01:16:32,870 --> 01:16:37,914 daadwerkelijk aanvullende hardware voor dat doel. 1529 01:16:37,914 --> 01:16:44,830 >> Publiek: Als je in park, als uw motorkap open is. 1530 01:16:44,830 --> 01:16:47,320 >> DAVID MALAN: In park of motorkap geopend, dus dat is goed. 1531 01:16:47,320 --> 01:16:47,420 >> Publiek: En rijdende auto. 1532 01:16:47,420 --> 01:16:50,480 >> DAVID MALAN: Dus dat is een beetje meer concrete-- en auto lopen. 1533 01:16:50,480 --> 01:16:55,690 Dus zou dit de combinatie van een te zijn paar verschillende omstandigheden, als je wil. 1534 01:16:55,690 --> 01:16:59,227 Dus als de auto in het park, en zelfs al is dit een zeer mechanisch ding 1535 01:16:59,227 --> 01:17:01,060 typisch, ik kon stel je het schrijven van software, 1536 01:17:01,060 --> 01:17:03,476 vooral omdat er vaak een lichte daar deze dagen, 1537 01:17:03,476 --> 01:17:07,400 Ik kon er voorstellen dat software die de shifter kan opvragen 1538 01:17:07,400 --> 01:17:10,634 of wat niet, bent u in het park, zijn u rijden, ben je in omgekeerde richting. 1539 01:17:10,634 --> 01:17:12,550 En ik kan weer een antwoorden dat is ofwel ja 1540 01:17:12,550 --> 01:17:14,400 of nee tegen dat soort vragen. 1541 01:17:14,400 --> 01:17:17,630 >> En dus kon ik ook waarschijnlijk beantwoorden een vraag willen, is de kap geopend. 1542 01:17:17,630 --> 01:17:21,860 Misschien is er een soort van sensor dat ofwel geeft me terug een 1 of een 0, 1543 01:17:21,860 --> 01:17:23,720 waar of onwaar, de motorkap open is. 1544 01:17:23,720 --> 01:17:28,180 En dan de auto lopen, ik kon detecteren dat een of andere manier via welk mechanisme? 1545 01:17:28,180 --> 01:17:30,430 Zoals, de auto loopt, I kan detecteren dat het op, 1546 01:17:30,430 --> 01:17:32,127 kon ik een of andere manier op te sporen dat de auto in beweging is? 1547 01:17:32,127 --> 01:17:32,881 >> PUBLIEK: RPM. 1548 01:17:32,881 --> 01:17:35,190 >> DAVID MALAN: Ja, dus er is altijd dat naald die 1549 01:17:35,190 --> 01:17:38,034 vertelt u hoeveel omwentelingen per minuten de wielen ervaren. 1550 01:17:38,034 --> 01:17:39,200 En dus ik kon kijken. 1551 01:17:39,200 --> 01:17:43,090 En als het niet 0, die waarschijnlijk betekent dat de auto in beweging is. 1552 01:17:43,090 --> 01:17:45,400 Maar we moeten een zijn beetje voorzichtig daar, 1553 01:17:45,400 --> 01:17:49,780 because-- laten we vereenvoudigen dit-- als we alleen maar gezegd, als de auto lopen, 1554 01:17:49,780 --> 01:17:53,070 we willen niet alleen stoten minder, we willen als de auto loopt 1555 01:17:53,070 --> 01:17:54,310 en het wordt getest. 1556 01:17:54,310 --> 01:17:56,320 >> Dus er zijn een paar andere ingrediënten die mensen 1557 01:17:56,320 --> 01:18:00,550 hebben de hypothese de software doet, omdat afwezig zijn van de werkelijke broncode, 1558 01:18:00,550 --> 01:18:05,130 u kunt alleen een soort van af te leiden uit de fysische effecten van de wagen wat 1559 01:18:05,130 --> 01:18:08,280 zou kunnen gaan op onderstaande de kap software. 1560 01:18:08,280 --> 01:18:17,090 Dus als de auto loopt en misschien, laten we zeggen, achterwielen niet beweegt, 1561 01:18:17,090 --> 01:18:19,420 kan dit indicatief van een soort test? 1562 01:18:19,420 --> 01:18:22,830 Wat ben ik zinspeelde op hier? 1563 01:18:22,830 --> 01:18:24,830 Ja, misschien, is het op één van die rol dingen, 1564 01:18:24,830 --> 01:18:28,340 waarbij net als de wielen draaien voorin of achterin, 1565 01:18:28,340 --> 01:18:32,570 afhankelijk van of het voorwiel of achterwiel aandrijving, zodat de helft van de wielen 1566 01:18:32,570 --> 01:18:34,420 zijn het bewegen, maar de twee andere niet, welke 1567 01:18:34,420 --> 01:18:36,320 is een vreemde situatie in de echte wereld. 1568 01:18:36,320 --> 01:18:38,110 Als je rijdt op de weg, dat mag niet gebeuren. 1569 01:18:38,110 --> 01:18:40,568 Maar als je in een pakhuis op een of ander rolsysteem, 1570 01:18:40,568 --> 01:18:41,630 dat zou inderdaad gebeuren. 1571 01:18:41,630 --> 01:18:46,980 >> Ik denk dat mensen ook voorgesteld dat misschien, als de auto loopt en stuurinrichting 1572 01:18:46,980 --> 01:18:51,300 wiel niet beweegt, dat Ook kan een signaal zijn, 1573 01:18:51,300 --> 01:18:54,090 want dat is redelijk voor als een direct op een weg. 1574 01:18:54,090 --> 01:18:57,960 Maar zelfs dan, de mens is waarschijnlijk het verplaatsen van het een beetje of zeker 1575 01:18:57,960 --> 01:18:59,100 meer dan een paar seconden. 1576 01:18:59,100 --> 01:19:01,030 Of de loop van een minute, is de kans groot dat het niet 1577 01:19:01,030 --> 01:19:03,510 zal worden gefixeerd in precies dezelfde positie. 1578 01:19:03,510 --> 01:19:05,440 >> Met andere woorden, we kan aftrekken nemen, 1579 01:19:05,440 --> 01:19:08,200 ben je wordt getest, en breken die functionaliteit 1580 01:19:08,200 --> 01:19:10,420 in deze component ingrediënten. 1581 01:19:10,420 --> 01:19:13,440 En dat is echt wat Volkswagen ingenieurs of andere manier deed. 1582 01:19:13,440 --> 01:19:17,070 Zij schreven software bewust te detecteren of de auto wordt getest 1583 01:19:17,070 --> 01:19:20,440 Daarom stoten minder, anders uitstoten op de gebruikelijke wijze. 1584 01:19:20,440 --> 01:19:22,690 >> Het probleem ook hier is dat de software is niet 1585 01:19:22,690 --> 01:19:26,080 iets wat je kunt echt zien, tenzij u de zogenaamde broncode. 1586 01:19:26,080 --> 01:19:29,060 Zodat er twee verschillende soorten code-- ten minste twee verschillende types 1587 01:19:29,060 --> 01:19:30,130 code ter wereld. 1588 01:19:30,130 --> 01:19:33,150 Er is zoiets als bron code, die niet anders dan wat 1589 01:19:33,150 --> 01:19:37,240 we zijn het schrijven, broncode. 1590 01:19:37,240 --> 01:19:40,099 >> Dit is de broncode geschreven in een taal genaamd pseudocode, 1591 01:19:40,099 --> 01:19:41,640 dat is gewoon iets Engels-achtig. 1592 01:19:41,640 --> 01:19:43,140 Er is geen formele definitie van het. 1593 01:19:43,140 --> 01:19:46,770 Maar C en Java, C ++, die zijn alle formele talen die, 1594 01:19:46,770 --> 01:19:50,610 als je schrijft in hen, wat je hebt is een tekstbestand met de broncode. 1595 01:19:50,610 --> 01:19:54,850 >> Maar er is ook iets in de wereld genaamd machine code. 1596 01:19:54,850 --> 01:20:00,579 En machine code, helaas, is gewoon 0's en 1's. 1597 01:20:00,579 --> 01:20:02,870 Dus machine code is wat machines te begrijpen, natuurlijk. 1598 01:20:02,870 --> 01:20:04,470 Broncode is wat de mens te begrijpen. 1599 01:20:04,470 --> 01:20:08,390 >> En in het algemeen, maar niet steeds is er een programma 1600 01:20:08,390 --> 01:20:14,090 dat een programmeur gebruikt dat duurt bron code en verandert het in machine code. 1601 01:20:14,090 --> 01:20:17,400 En dat programma is algemeen genoemd een compiler. 1602 01:20:17,400 --> 01:20:19,820 Dus uw inbreng is de broncode, Uw output is machinecode, 1603 01:20:19,820 --> 01:20:22,890 en de compiler is een stuk van software die dat proces doet. 1604 01:20:22,890 --> 01:20:26,260 Dus deze kaarten eigenlijk mooi aan onze ingangen, algoritmen, uitgangen. 1605 01:20:26,260 --> 01:20:30,400 >> Maar dit is een zeer specifieke belichaming dat, dat wil zeggen, 1606 01:20:30,400 --> 01:20:34,200 zelfs als u zelf een van Volkswagen auto's die zich schuldig maakt aan deze, 1607 01:20:34,200 --> 01:20:38,390 het is niet alsof je kunt gewoon open de motorkap of open de handleiding of kijk 1608 01:20:38,390 --> 01:20:42,690 de broncode, omdat tegen de tijd het uw auto komt in uw oprit, 1609 01:20:42,690 --> 01:20:45,580 Het is al omgezet in 0 en 1 is. 1610 01:20:45,580 --> 01:20:51,310 En het is heel moeilijk, niet onmogelijk, maar zeer moeilijk om op te lezen veel van iets 1611 01:20:51,310 --> 01:20:53,710 van alleen te kijken naar de onderliggende 0 en 1 is. 1612 01:20:53,710 --> 01:20:57,150 Dus je kunt uitzoeken, uiteindelijk, als je begrijpt hoe een machine operates-- 1613 01:20:57,150 --> 01:20:59,870 Intel inside-- als je begrijpt de Intel-architectuur, 1614 01:20:59,870 --> 01:21:01,440 maar het is zeer tijdrovend. 1615 01:21:01,440 --> 01:21:05,010 En zelfs daar, zou je niet in staat zijn om alles te zien 1616 01:21:05,010 --> 01:21:08,220 dat de code daadwerkelijk kan doen. 1617 01:21:08,220 --> 01:21:12,521 >> Heeft u vragen over dit of dit soort proces meer in het algemeen? 1618 01:21:12,521 --> 01:21:15,134 1619 01:21:15,134 --> 01:21:18,300 En eigenlijk kunnen we deze discussie te binden om de discussie over Apple gisteren. 1620 01:21:18,300 --> 01:21:22,500 Ook dit is de reden waarom de FBI niet zomaar gaan kijken in de telefoon van de verdachte 1621 01:21:22,500 --> 01:21:26,820 en vind de regels code, voor Zo, die het mogelijk maken de toegangscode 1622 01:21:26,820 --> 01:21:28,940 of in staat stellen dat 80 milliseconden vertraging. 1623 01:21:28,940 --> 01:21:31,630 Omdat tegen de tijd dat het op de iPhone van de collega's, 1624 01:21:31,630 --> 01:21:34,975 Het is al geconverteerd naar 0 en 1 is. 1625 01:21:34,975 --> 01:21:38,015 1626 01:21:38,015 --> 01:21:40,820 >> Nou, laten we pauzeren hier voor onze kijk naar computationele denken. 1627 01:21:40,820 --> 01:21:42,320 Waarom gaan we niet nemen een pauze van 15 minuten. 1628 01:21:42,320 --> 01:21:44,130 En wanneer we terugkeren, zullen we neem een ​​kijkje op de programmering 1629 01:21:44,130 --> 01:21:46,550 zelf en beginnen met een aantal in kaart van deze hoog niveau concepten 1630 01:21:46,550 --> 01:21:49,780 tot een feitelijke, als speels, programmeertaal. 1631 01:21:49,780 --> 01:21:51,089