1 00:00:00,000 --> 00:00:07,700 2 00:00:07,700 --> 00:00:15,180 >> SPEAKER: OK, så vil du ikke tro det, men i sidste uge, mandag, i Pierce, jeg 3 00:00:15,180 --> 00:00:16,090 var nede i kælderen. 4 00:00:16,090 --> 00:00:17,010 Jeg går aldrig til Pierce. 5 00:00:17,010 --> 00:00:20,530 Og jeg kommer aldrig tilbage igen, fordi Jeg forlod mine ting alene, 6 00:00:20,530 --> 00:00:23,950 gerne, fem minutter og nogen stjal min computer og min 7 00:00:23,950 --> 00:00:26,050 telefon ud af min rygsæk. 8 00:00:26,050 --> 00:00:28,780 Hvilket betyder, at jeg fik det tilbage, og så mindre end en uge senere 9 00:00:28,780 --> 00:00:30,220 det fik stjålet igen. 10 00:00:30,220 --> 00:00:31,570 >> Og så fik tændt - 11 00:00:31,570 --> 00:00:34,540 Find min iPhone fortsætter at være uhensigtsmæssigt. 12 00:00:34,540 --> 00:00:37,340 Så jeg fortsætter med at opmuntre du ikke at bruge det. 13 00:00:37,340 --> 00:00:42,270 Det viste sig på én gang, og det var i MIT, ligesom 15 minutter senere, og den person, 14 00:00:42,270 --> 00:00:45,770 kaldte dette telefonnummer, der viste op i min AT & T opkaldsloggen. 15 00:00:45,770 --> 00:00:48,830 >> Så jeg gik på nettet, kaldet den telefon nummer, og det gik lige til dette 16 00:00:48,830 --> 00:00:50,540 telefonsvarer på spansk. 17 00:00:50,540 --> 00:00:52,520 Og jeg har ikke hørt om det siden. 18 00:00:52,520 --> 00:00:54,800 Så jeg var nødt til at få en ny computer og telefon. 19 00:00:54,800 --> 00:00:55,150 Jeg kender. 20 00:00:55,150 --> 00:00:56,326 Ja. 21 00:00:56,326 --> 00:01:00,110 Men hvis du fyre ønsker at chip i at min computer fond efter dette, det er derfor 22 00:01:00,110 --> 00:01:01,030 Jeg har spurgt dig her. 23 00:01:01,030 --> 00:01:02,280 Just kidding. 24 00:01:02,280 --> 00:01:04,239 25 00:01:04,239 --> 00:01:07,420 Men det var virkelig trist og traumatisk. 26 00:01:07,420 --> 00:01:10,700 >> Men det er alle tilbage nu, og det var derfor p-sæt 8 tog så lang tid, fordi 27 00:01:10,700 --> 00:01:12,480 Jeg havde ikke en computer. 28 00:01:12,480 --> 00:01:13,730 Og nogen stjal det. 29 00:01:13,730 --> 00:01:16,940 Og jeg mailede og spurgte, om de ville lønklasse din p-sæt 8. 30 00:01:16,940 --> 00:01:18,790 Men de sagde nej. 31 00:01:18,790 --> 00:01:20,000 Og jeg var ligesom, kan jeg have min computer tilbage? 32 00:01:20,000 --> 00:01:21,270 Og de er ligesom, nej. 33 00:01:21,270 --> 00:01:22,130 Just kidding. 34 00:01:22,130 --> 00:01:22,930 >> OK. 35 00:01:22,930 --> 00:01:28,140 Dette er vores sidste afsnit, og jeg har et par - vi har kun tre 36 00:01:28,140 --> 00:01:29,790 ting på dagsordenen. 37 00:01:29,790 --> 00:01:31,330 Vi kommer til at tale lidt om Q vejledning. 38 00:01:31,330 --> 00:01:33,900 Så vi kommer til at tilbringe 15 minutter på et køligt demo. 39 00:01:33,900 --> 00:01:36,890 Så vi vil alle sige farvel til hinanden. 40 00:01:36,890 --> 00:01:41,460 Du behøver ikke virkelig har brug for dine computere eller en pen eller papir til at tage noter, eller 41 00:01:41,460 --> 00:01:42,410 følge med. 42 00:01:42,410 --> 00:01:45,620 Så jeg antager, hvis du har din computer op, så er du på Facebook. 43 00:01:45,620 --> 00:01:46,530 Bare at sige. 44 00:01:46,530 --> 00:01:49,650 Medmindre du udfylde Q vejledning, der er først. 45 00:01:49,650 --> 00:01:50,690 >> Q-guide er åben. 46 00:01:50,690 --> 00:01:53,520 Du har haft en e-mail om det. 47 00:01:53,520 --> 00:01:56,930 Når alle de Q ting er blevet forelagt ved slutningen af ​​året, jeg får alle de 48 00:01:56,930 --> 00:02:03,710 Q kommentarer i scoringer fra alle der vælger at give mig feedback. 49 00:02:03,710 --> 00:02:04,810 Og så når du går i Q - 50 00:02:04,810 --> 00:02:07,440 Jeg ved ikke, om du kan gøre dette, Jeff, fordi du er og udvidelse studerende. 51 00:02:07,440 --> 00:02:12,730 Men når du går i Q, hvis du ikke har gjort det før, du vælger dit 52 00:02:12,730 --> 00:02:14,020 lærer, der er David Malan. 53 00:02:14,020 --> 00:02:14,970 Du er nødt til at gøre ham. 54 00:02:14,970 --> 00:02:15,690 >> Og så kan du vælge TFs. 55 00:02:15,690 --> 00:02:17,750 Og du kan vælge lige så mange TFs som du ønsker. 56 00:02:17,750 --> 00:02:18,990 Men der er 60 af os. 57 00:02:18,990 --> 00:02:20,350 Du behøver ikke at hente alle. 58 00:02:20,350 --> 00:02:23,090 Du kan bare hente mig, eller bare vælge en par andre mennesker, hvis du ønsker, at 59 00:02:23,090 --> 00:02:24,470 give dem tilbagemeldinger så godt. 60 00:02:24,470 --> 00:02:27,595 Og så får du score på alle disse forskellige akser og så kan du lade 61 00:02:27,595 --> 00:02:28,570 dem feedback. 62 00:02:28,570 --> 00:02:31,520 >> Og, som en måned senere, Jeg får alt det feedback. 63 00:02:31,520 --> 00:02:34,570 Og ligesom den feedback, du har været giver mig hele semestret, jeg 64 00:02:34,570 --> 00:02:35,790 læse alt dette. 65 00:02:35,790 --> 00:02:39,620 Og det er virkelig nyttige, og det hjælper mig vokse som lærer og som en 66 00:02:39,620 --> 00:02:40,680 person. 67 00:02:40,680 --> 00:02:43,360 Så please, tage lidt tid til at gøre det. 68 00:02:43,360 --> 00:02:45,020 Vi kun vil være her i omkring 30 minutter. 69 00:02:45,020 --> 00:02:48,090 Så hvis du ønsker, i slutningen af ​​dette, at tage fem minutter, og bare udfylde 70 00:02:48,090 --> 00:02:49,960 Q, fordi den ikke tager mere tid end det. 71 00:02:49,960 --> 00:02:53,410 Det ville være vidunderligt, og du også få dine karakterer tilbage hurtigere, hvis 72 00:02:53,410 --> 00:02:54,620 du udfylde Q. 73 00:02:54,620 --> 00:02:56,580 >> Så de fleste af jer har gjort det før - 74 00:02:56,580 --> 00:02:58,240 eller nej, omkring halvdelen af ​​jer har gjort det før. 75 00:02:58,240 --> 00:03:00,060 Men hvis du er en freshman, det er hvad det er. 76 00:03:00,060 --> 00:03:01,910 Det vil være den samme for alle klasser. 77 00:03:01,910 --> 00:03:02,270 Gør det. 78 00:03:02,270 --> 00:03:02,900 Det tager fem minutter. 79 00:03:02,900 --> 00:03:07,610 Men også, hvis du gør det en smule alvorligt, det er ikke det værste 80 00:03:07,610 --> 00:03:10,270 i verden, fordi jeg helt sikkert tage det alvorligt. 81 00:03:10,270 --> 00:03:13,000 >> Så hvis du forlader mig et smilende ansigt, Jeg vil sætte pris på det. 82 00:03:13,000 --> 00:03:17,550 Men jeg vil også sætte pris på, hvis du efterlod mig mere end et smilende ansigt. 83 00:03:17,550 --> 00:03:18,270 Men det er op til dig. 84 00:03:18,270 --> 00:03:21,540 Jeg kan ikke fortælle dig - eller som en stor smiley ansigt, med en kapital D. Det ville 85 00:03:21,540 --> 00:03:23,060 være endnu bedre. 86 00:03:23,060 --> 00:03:27,860 >> OK, det er alt jeg har for den Q. Hvis du har spørgsmål, kan du spørge 87 00:03:27,860 --> 00:03:29,370 mig, men temmelig selvforklarende. 88 00:03:29,370 --> 00:03:31,090 Just, please, udfyld den. 89 00:03:31,090 --> 00:03:34,390 Jeg ville virkelig sætte pris på det, og det betyder meget for mig. 90 00:03:34,390 --> 00:03:38,910 >> OK, det er, hvad vi kommer til at tilbringe 15 minutter går igennem. 91 00:03:38,910 --> 00:03:39,800 Jeg har tænkt mig at vise dig nogle koder. 92 00:03:39,800 --> 00:03:42,080 Jeg tror, ​​det er virkelig cool, og dette fik mig mere 93 00:03:42,080 --> 00:03:43,810 ophidset i datalogi. 94 00:03:43,810 --> 00:03:46,480 Så jeg håber, at det vil gøre det samme for jer alle. 95 00:03:46,480 --> 00:03:51,760 >> Vi kommer til at åbne op - og alt dette kode vil jeg sende til dig senere. 96 00:03:51,760 --> 00:03:52,680 Men vi bare at åbne op - 97 00:03:52,680 --> 00:03:54,310 Jeg er i min terminal - 98 00:03:54,310 --> 00:03:56,810 vi kommer til at åbne op for dette program kaldet [? MySum. ?] 99 00:03:56,810 --> 00:04:01,290 100 00:04:01,290 --> 00:04:02,540 >> Kan alle læse det, eller skal jeg gøre det større? 101 00:04:02,540 --> 00:04:07,670 102 00:04:07,670 --> 00:04:13,040 Kan nogen fortælle mig, hvad denne kode vil gøre, når jeg kører det, eller hvad det 103 00:04:13,040 --> 00:04:14,320 Programmet vil gøre, når jeg kører det? 104 00:04:14,320 --> 00:04:30,710 105 00:04:30,710 --> 00:04:32,400 >> [? Avi,?] Hvad tror du det kommer til at gøre? 106 00:04:32,400 --> 00:04:33,335 Finish tygge. 107 00:04:33,335 --> 00:04:35,033 Du bør ikke tale med munden åben. 108 00:04:35,033 --> 00:04:38,330 109 00:04:38,330 --> 00:04:42,860 >> PUBLIKUM: Er det tage en masse argumenter, find summen af ​​dem vender tilbage 110 00:04:42,860 --> 00:04:45,285 sum, og derefter printe det ud? 111 00:04:45,285 --> 00:04:53,045 Eller tager det i to argumenter, og så gør det [uhørligt]. 112 00:04:53,045 --> 00:04:56,460 Og så udskriver hvad resultaterne er. 113 00:04:56,460 --> 00:04:58,100 >> SPEAKER: Luk, virkelig tæt. 114 00:04:58,100 --> 00:04:59,840 Nogen ønsker at tilføje til [? hvad Avi?] sagt? 115 00:04:59,840 --> 00:05:04,830 116 00:05:04,830 --> 00:05:07,293 Har du nødt til at give dette program eventuelle kommandolinjeargumenter? 117 00:05:07,293 --> 00:05:09,145 >> PUBLIKUM: Nej. 118 00:05:09,145 --> 00:05:09,610 >> SPEAKER: Nej. 119 00:05:09,610 --> 00:05:11,250 Hvad sker der, hvis du ikke giver det eventuelle kommandolinjeargumenter? 120 00:05:11,250 --> 00:05:12,500 Jeg bare skrive dot skråstreg MySum. 121 00:05:12,500 --> 00:05:15,145 122 00:05:15,145 --> 00:05:16,630 >> PUBLIKUM: 1 plus 2 er lig med 3. 123 00:05:16,630 --> 00:05:17,250 >> SPEAKER: 1 plus 2 er lig med 3. 124 00:05:17,250 --> 00:05:18,570 Og det vil printe det ud. 125 00:05:18,570 --> 00:05:19,450 Det er helt rigtigt. 126 00:05:19,450 --> 00:05:21,370 Du vil se, at udskrive f nederst. 127 00:05:21,370 --> 00:05:23,450 Det vil udskrive a, b, og så summen af ​​a og b. 128 00:05:23,450 --> 00:05:26,360 Og jeg tror du antager, at sum fungerer korrekt. 129 00:05:26,360 --> 00:05:28,120 Godt antagelse. 130 00:05:28,120 --> 00:05:32,250 >> OK, og hvad sker der, hvis jeg give det hvad argument? 131 00:05:32,250 --> 00:05:33,010 [? Manu? ?] 132 00:05:33,010 --> 00:05:36,230 >> PUBLIKUM: Det vil tilføje uanset det første argument er at b.. 133 00:05:36,230 --> 00:05:37,150 Eller til 2, undskyld. 134 00:05:37,150 --> 00:05:38,480 >> SPEAKER: Right, til 2.. 135 00:05:38,480 --> 00:05:42,470 Er der nogen vide, hvad strtol gør? 136 00:05:42,470 --> 00:05:43,960 Det er dybest set Atoi. 137 00:05:43,960 --> 00:05:47,240 Atoi er faktisk en dekorativ version af - 138 00:05:47,240 --> 00:05:49,600 eller en enklere version af strtol. 139 00:05:49,600 --> 00:05:51,790 Men det bruger faktisk strtol. 140 00:05:51,790 --> 00:05:54,610 141 00:05:54,610 --> 00:05:58,010 Og jeg fandt ud af, fordi jeg ønskede noget som atoi, og så når jeg 142 00:05:58,010 --> 00:06:01,110 gjorde atoi, læste jeg herned. 143 00:06:01,110 --> 00:06:04,380 Og jeg fandt "denne adfærd er det samme som "strtol. 144 00:06:04,380 --> 00:06:06,850 Så det er dybest set atoi for alle henseender. 145 00:06:06,850 --> 00:06:09,320 Og du ser jeg endda bruge nul og 10.. 146 00:06:09,320 --> 00:06:14,390 >> Dette faktisk lader dig tage en streng, og gøre det til et nummer, og vælg 147 00:06:14,390 --> 00:06:15,970 hvad basen, du ønsker at gøre det i. 148 00:06:15,970 --> 00:06:17,370 Så dette er basis 10 lige her. 149 00:06:17,370 --> 00:06:20,455 Jeg kunne have gjort basen to til decimal basis 16 for hexadecimal. 150 00:06:20,455 --> 00:06:22,090 Det er temmelig cool. 151 00:06:22,090 --> 00:06:25,860 Men lang historie kort, det tager to numre og lægger dem sammen. 152 00:06:25,860 --> 00:06:29,260 >> Så lad os køre den. 153 00:06:29,260 --> 00:06:32,560 Og du vil også bemærke, at der er nogle ting - 154 00:06:32,560 --> 00:06:37,830 så jeg har en Makefile lige her, og Hvis du åbner det op, nogle ting 155 00:06:37,830 --> 00:06:39,270 du lægger mærke til er forskellige. 156 00:06:39,270 --> 00:06:42,370 Især dette argument lige her, har du sandsynligvis 157 00:06:42,370 --> 00:06:43,010 har ikke set det før. 158 00:06:43,010 --> 00:06:45,770 Generelt vi kompilere ting med bindestreg nul, nul. 159 00:06:45,770 --> 00:06:51,500 Dash nul, nul, betyder ikke gør nogen optimeringer, compiler. 160 00:06:51,500 --> 00:06:54,950 Forsøg ikke at gøre noget fancy, eller gøre noget løbe hurtigere, eller få 161 00:06:54,950 --> 00:06:56,530 slippe af variabler, der er nødvendige. 162 00:06:56,530 --> 00:06:58,080 Må ikke optimere denne kode på alle, 163 00:06:58,080 --> 00:07:00,110 >> Jeg beder om tredje niveau optimering. 164 00:07:00,110 --> 00:07:02,580 Så jeg beder compiler til at gøre en masse af optimeringer. 165 00:07:02,580 --> 00:07:05,870 Du kan ændre det i Makefile når du har denne kode, hvis du vil 166 00:07:05,870 --> 00:07:07,190 at se forskellige ting. 167 00:07:07,190 --> 00:07:08,660 Hvilket vi vil vise i en anden. 168 00:07:08,660 --> 00:07:12,080 Så vi køre min sum 1 plus 2 plus 3. 169 00:07:12,080 --> 00:07:13,445 Nogen give mig to argumenter. 170 00:07:13,445 --> 00:07:17,221 171 00:07:17,221 --> 00:07:18,210 >> PUBLIKUM: 4 og 5.. 172 00:07:18,210 --> 00:07:18,966 >> SPEAKER: 4 og 5.. 173 00:07:18,966 --> 00:07:19,900 Tak. 174 00:07:19,900 --> 00:07:20,860 Store, det fungerer. 175 00:07:20,860 --> 00:07:25,700 Hvad er nogle andre gode argumenter at prøve, for at sikre dette virker? 176 00:07:25,700 --> 00:07:27,050 Nogen? 177 00:07:27,050 --> 00:07:27,430 >> PUBLIKUM: 0. 178 00:07:27,430 --> 00:07:29,210 >> SPEAKER: 0 og? 179 00:07:29,210 --> 00:07:31,010 >> PUBLIKUM: Negativ 3.. 180 00:07:31,010 --> 00:07:32,040 >> SPEAKER: Det virker. 181 00:07:32,040 --> 00:07:33,670 Men de var gode valg. 182 00:07:33,670 --> 00:07:36,600 OK, så lad os gå tilbage her. 183 00:07:36,600 --> 00:07:38,540 Dette er mysum.c. 184 00:07:38,540 --> 00:07:42,440 Du vil bemærke, er der også noget kaldet sumfunction.c. 185 00:07:42,440 --> 00:07:48,110 Og det siger, åh, der er noget defineret i sumfunction.c. 186 00:07:48,110 --> 00:07:51,480 Jeg kan ikke medtage denne fil i her fordi jeg ikke behøver at. 187 00:07:51,480 --> 00:07:54,840 Men jeg linke det i, når jeg kompilere, som du bemærket. 188 00:07:54,840 --> 00:07:57,380 >> Lad os rulle op. 189 00:07:57,380 --> 00:08:02,880 Vi så da vi kompileret mysum, højre der, vi er forbundet i det binære fra 190 00:08:02,880 --> 00:08:04,130 sumfunction.o. 191 00:08:04,130 --> 00:08:05,780 192 00:08:05,780 --> 00:08:08,470 Og jeg har ikke brug for header fil fordi, selvfølgelig, der er den 193 00:08:08,470 --> 00:08:09,240 funktion erklæring. 194 00:08:09,240 --> 00:08:12,200 Så skarp omfatter normalt kun puts i en funktion erklæring. 195 00:08:12,200 --> 00:08:13,730 Her har jeg bare sætte det lige i koden. 196 00:08:13,730 --> 00:08:16,370 Og så jeg er nødt til at gøre, er at link i binær, som jeg gør. 197 00:08:16,370 --> 00:08:19,950 >> Enhver gæt for hvad er i sumfunction.c? 198 00:08:19,950 --> 00:08:21,950 Hvilken kode jeg har skrevet i sumfunction.c? 199 00:08:21,950 --> 00:08:25,445 200 00:08:25,445 --> 00:08:26,695 >> PUBLIKUM: [uhørligt]. 201 00:08:26,695 --> 00:08:29,460 202 00:08:29,460 --> 00:08:30,630 >> SPEAKER: Enhver gæt? 203 00:08:30,630 --> 00:08:30,940 Ja? 204 00:08:30,940 --> 00:08:33,710 >> Publikum: Jeg tror, ​​definerer nogle [uhørligt]. 205 00:08:33,710 --> 00:08:33,975 >> SPEAKER: Ja. 206 00:08:33,975 --> 00:08:37,650 Så jeg gør skrive int sum int en. 207 00:08:37,650 --> 00:08:41,120 Jeg skriver denne linje, og så har jeg åbent klammeparentes, lukket klammeparentes. 208 00:08:41,120 --> 00:08:46,160 Hvad tror du, jeg skriver inde dem krøllede parenteser, indenfor denne funktion? 209 00:08:46,160 --> 00:08:46,600 Ja? 210 00:08:46,600 --> 00:08:48,150 >> PUBLIKUM: Return lig en. 211 00:08:48,150 --> 00:08:50,010 >> Processor: Det er en rigtig god gæt. 212 00:08:50,010 --> 00:08:51,720 Hvem tænker [? Manu?] Er rigtigt? 213 00:08:51,720 --> 00:08:54,122 Den siger returnere en plus b.. 214 00:08:54,122 --> 00:08:55,860 OK, ikke alle. 215 00:08:55,860 --> 00:08:56,520 [? Akshar,?] 216 00:08:56,520 --> 00:08:57,390 du gør det, også? 217 00:08:57,390 --> 00:09:00,430 Er du sikker? 218 00:09:00,430 --> 00:09:01,680 OK. 219 00:09:01,680 --> 00:09:09,551 220 00:09:09,551 --> 00:09:10,050 Hvad? 221 00:09:10,050 --> 00:09:11,662 >> PUBLIKUM: Du stavet det forkert. 222 00:09:11,662 --> 00:09:13,000 >> SPEAKER: Nej, det gjorde jeg ikke. 223 00:09:13,000 --> 00:09:13,966 Ja, bare for sjov. 224 00:09:13,966 --> 00:09:15,300 Du har ret. 225 00:09:15,300 --> 00:09:15,930 Det er præcis, hvad det siger. 226 00:09:15,930 --> 00:09:17,110 Det er returnere et plus b. 227 00:09:17,110 --> 00:09:18,570 Det gør en masse forstand. 228 00:09:18,570 --> 00:09:20,240 >> OK, lad os gå tilbage her. 229 00:09:20,240 --> 00:09:21,490 Vi ser, hvordan overskriften - 230 00:09:21,490 --> 00:09:24,540 231 00:09:24,540 --> 00:09:25,660 det er den tilbagevenden type. 232 00:09:25,660 --> 00:09:29,100 Husk, vi har set, at dag ét, de returnere typen af ​​funktionen, men går 233 00:09:29,100 --> 00:09:30,160 før navnet på int-funktionen. 234 00:09:30,160 --> 00:09:31,560 Her har jeg skrevet int. 235 00:09:31,560 --> 00:09:35,680 Hvad tror du vil ske, hvis dette funktion, kan jeg ikke skrive int, men 236 00:09:35,680 --> 00:09:38,270 Jeg skriver usigneret? 237 00:09:38,270 --> 00:09:41,050 Forskellen, selvfølgelig, er, at usigneret udgør kun positive 238 00:09:41,050 --> 00:09:43,620 heltal, og int kan være positiv eller negativ. 239 00:09:43,620 --> 00:09:45,450 >> Så jeg har ændret afkastet type af denne funktion. 240 00:09:45,450 --> 00:09:49,370 Denne kode svarer ikke denne tilbagevenden skriv her. 241 00:09:49,370 --> 00:09:50,925 Hvad tror du, der vil ske når jeg kompilere? 242 00:09:50,925 --> 00:09:53,840 243 00:09:53,840 --> 00:09:56,240 Du bør råbe ad mig. 244 00:09:56,240 --> 00:09:57,700 Ingen råben. 245 00:09:57,700 --> 00:10:00,050 >> Hvad så når jeg kører programmet? 246 00:10:00,050 --> 00:10:05,810 Lad os gøre før 0 negativ 3, eller negativ 1. 247 00:10:05,810 --> 00:10:10,180 Det virker stadig, selvom jeg siger det returnere en usigneret heltal. 248 00:10:10,180 --> 00:10:12,060 Det er klart det ikke vender tilbage en usigneret heltal. 249 00:10:12,060 --> 00:10:13,520 Det er at vende tilbage en underskrevet heltal. 250 00:10:13,520 --> 00:10:16,130 Det vender tilbage negativ 1. 251 00:10:16,130 --> 00:10:17,830 OK, det er underligt. 252 00:10:17,830 --> 00:10:27,030 >> Hvad hvis jeg går i her og gøre det? 253 00:10:27,030 --> 00:10:29,700 Så jeg har ændret alt fra int til usigneret. 254 00:10:29,700 --> 00:10:31,590 Det kan kun tage unsigned heltal. 255 00:10:31,590 --> 00:10:33,840 Men har vi synes stadig det vil løbe? 256 00:10:33,840 --> 00:10:35,652 >> PUBLIKUM: Ja. 257 00:10:35,652 --> 00:10:37,270 >> SPEAKER: det vil. 258 00:10:37,270 --> 00:10:39,410 Det er vanvittigt. 259 00:10:39,410 --> 00:10:43,140 Og vi passere i et tydeligt tildelt heltal, kan vi passere to underskrevet 260 00:10:43,140 --> 00:10:46,280 heltal, det virker stadig. 261 00:10:46,280 --> 00:10:52,150 >> OK, nogen ideer om, hvorfor det stadig virker, eller hvad sker der? 262 00:10:52,150 --> 00:10:53,368 Ja, Jeff. 263 00:10:53,368 --> 00:10:56,296 >> PUBLIKUM: Det har noget at gøre med din optimering, som du 264 00:10:56,296 --> 00:10:57,760 fremhævet. 265 00:10:57,760 --> 00:10:58,210 >> SPEAKER: Nej. 266 00:10:58,210 --> 00:11:00,570 Vi kunne ændre optimering, ville det stadig arbejde. 267 00:11:00,570 --> 00:11:02,240 Jeg kan gøre det for dig, men - 268 00:11:02,240 --> 00:11:02,930 >> PUBLIKUM: Jeg tager dit ord for det. 269 00:11:02,930 --> 00:11:03,690 >> SPEAKER: Ja. 270 00:11:03,690 --> 00:11:09,690 Hvis du åbner Makefile lige her, Jeg har ændret optimering. 271 00:11:09,690 --> 00:11:11,570 Så du kan gøre Dash nul, nul. 272 00:11:11,570 --> 00:11:12,820 Det vil stadig fungere. 273 00:11:12,820 --> 00:11:16,839 274 00:11:16,839 --> 00:11:20,280 Andre tanker? 275 00:11:20,280 --> 00:11:22,600 >> Du fyre alle forventes at arbejde, så Hvorfor skulle du forventer det til at virke? 276 00:11:22,600 --> 00:11:31,210 277 00:11:31,210 --> 00:11:32,150 Nej? 278 00:11:32,150 --> 00:11:33,660 Stilhed. 279 00:11:33,660 --> 00:11:34,910 OK. 280 00:11:34,910 --> 00:11:39,271 281 00:11:39,271 --> 00:11:41,650 Jeg er nødt til at vente syv sekunder, fordi jeg stillede et spørgsmål. 282 00:11:41,650 --> 00:11:44,190 283 00:11:44,190 --> 00:11:48,660 >> Så cool ting om C, og du har sikkert oplevet før - du 284 00:11:48,660 --> 00:11:50,260 måske ikke har, kan dette være første gang. 285 00:11:50,260 --> 00:11:57,030 Men som alle ved, når jeg skriver noget i C, betyder det ikke gemme som 286 00:11:57,030 --> 00:11:57,760 dette på computeren. 287 00:11:57,760 --> 00:11:59,440 Det er gemt som ettaller og nuller. 288 00:11:59,440 --> 00:12:02,970 Det går fra C-kode til samling kode. 289 00:12:02,970 --> 00:12:09,460 >> Har nogen set forsamling kode før, maskine forsamling kode? 290 00:12:09,460 --> 00:12:10,630 Vi vil se på i et sekund. 291 00:12:10,630 --> 00:12:12,040 Det går fra C-kode til samling kode. 292 00:12:12,040 --> 00:12:13,755 Og du fyre kender etaperne opgørelsestidspunktet. 293 00:12:13,755 --> 00:12:17,410 Du var nødt til at huske, at for quiz én, og derefter skrive det ud på quiz nul. 294 00:12:17,410 --> 00:12:18,240 De fleste mennesker fik det galt. 295 00:12:18,240 --> 00:12:19,760 Jeg tror du fyre naglet det. 296 00:12:19,760 --> 00:12:22,880 >> Men du fyre er bedst sektion for quizzer, ved den måde. 297 00:12:22,880 --> 00:12:25,210 Hvilket er awesome. 298 00:12:25,210 --> 00:12:25,910 Det vil ikke gøre dig fortræd. 299 00:12:25,910 --> 00:12:26,900 Må ikke være bekymret. 300 00:12:26,900 --> 00:12:28,800 Men det er virkelig cool. 301 00:12:28,800 --> 00:12:29,660 Godt arbejde. 302 00:12:29,660 --> 00:12:32,870 >> Så det går til assembler, og så det går til nuller og ettaller. 303 00:12:32,870 --> 00:12:35,500 Og nuller og ettaller gemmes på computer, og det er hvad der er gemt i 304 00:12:35,500 --> 00:12:38,340 den a.out, eller i dette tilfælde, den eksekverbare fil. 305 00:12:38,340 --> 00:12:41,040 Og computeren kører nuller og ettaller. 306 00:12:41,040 --> 00:12:41,670 Right? 307 00:12:41,670 --> 00:12:43,890 Vi har lært det før. 308 00:12:43,890 --> 00:12:47,490 >> Så cool ting er, dette signeret idé, ideen om typer Ints usigneret, 309 00:12:47,490 --> 00:12:50,490 et cetera, et cetera, det er op her i C-sprog. 310 00:12:50,490 --> 00:12:51,110 De eksisterer. 311 00:12:51,110 --> 00:12:53,770 Men typer findes ikke på de nuller og ettaller. 312 00:12:53,770 --> 00:12:57,110 Typer ikke engang eksisterer i virkeligheden på assembler niveau. 313 00:12:57,110 --> 00:13:00,075 Så det er noget, der eksisterer i C verden, men findes ikke i computer 314 00:13:00,075 --> 00:13:01,640 verden eller processor verden. 315 00:13:01,640 --> 00:13:04,660 Det er nogle abstraktion, at C sprog har medtaget, at gøre vores 316 00:13:04,660 --> 00:13:06,240 liv lettere. 317 00:13:06,240 --> 00:13:09,990 >> Så i slutningen af ​​dagen, kan jeg skrive mange forskellige ting her, og det 318 00:13:09,990 --> 00:13:10,700 ikke gør en forskel. 319 00:13:10,700 --> 00:13:12,060 Fordi der kun eksisterer i C verden. 320 00:13:12,060 --> 00:13:14,100 Det eksisterer ikke i nuller og ettaller verden. 321 00:13:14,100 --> 00:13:17,310 Og vores programmets udførelse i de nuller og ettaller verden. 322 00:13:17,310 --> 00:13:21,170 Så dit sind klart ikke blæst endnu. 323 00:13:21,170 --> 00:13:22,740 Men jeg tror, ​​det er cool. 324 00:13:22,740 --> 00:13:23,530 Ja, Jeff. 325 00:13:23,530 --> 00:13:27,298 >> PUBLIKUM: Så hvis i stedet for gør int, du gør char. 326 00:13:27,298 --> 00:13:27,770 Og du var - 327 00:13:27,770 --> 00:13:29,311 >> SPEAKER: Lad os gøre det i et sek. 328 00:13:29,311 --> 00:13:32,583 >> PUBLIKUM: Fordi så får du en unsigned går fra negativ 128 til 329 00:13:32,583 --> 00:13:34,720 127 eller 0 til 255. 330 00:13:34,720 --> 00:13:36,760 >> SPEAKER: Så char er problematisk. 331 00:13:36,760 --> 00:13:39,460 Er der nogen vide, hvorfor char ville være problematisk, og det ville faktisk 332 00:13:39,460 --> 00:13:42,930 ændre tingene i dem og nuller verden? 333 00:13:42,930 --> 00:13:44,370 >> PUBLIKUM: På grund af størrelsen af ​​char. 334 00:13:44,370 --> 00:13:46,200 >> SPEAKER: Størrelse af char er 1. 335 00:13:46,200 --> 00:13:48,260 Så unsigned er også 4 byte. 336 00:13:48,260 --> 00:13:50,080 Så char ville skrue tingene op. 337 00:13:50,080 --> 00:13:55,660 Men hvad er 4 byte, der findes i relateret til en char? 338 00:13:55,660 --> 00:13:57,820 Eller der tilføjer en ekstra - 339 00:13:57,820 --> 00:13:59,760 du kan sætte en mere karakter efter char. 340 00:13:59,760 --> 00:14:00,200 >> PUBLIKUM: Char stjerne. 341 00:14:00,200 --> 00:14:01,220 >> SPEAKER: Char stjerne har 4 byte. 342 00:14:01,220 --> 00:14:02,490 Så lad os gøre noget det er en char stjerne. 343 00:14:02,490 --> 00:14:05,470 344 00:14:05,470 --> 00:14:07,240 >> Så det ville nok fungere, men vi er kommer til at gøre noget selv 345 00:14:07,240 --> 00:14:09,710 skør end dette. 346 00:14:09,710 --> 00:14:10,960 Efter min mening, skør. 347 00:14:10,960 --> 00:14:21,060 348 00:14:21,060 --> 00:14:24,570 >> Jeg har nu skrevet en funktion, der returnerer en pointer, og det tager en 349 00:14:24,570 --> 00:14:29,480 pointer og en usigneret værdi - vi vil ændre dette tilbage til int så vi ikke 350 00:14:29,480 --> 00:14:31,250 lave for mange ændringer på én gang. 351 00:14:31,250 --> 00:14:35,370 Og det har en matrix kaldes en, indekser ind i matrix og returnerer 352 00:14:35,370 --> 00:14:35,850 adresse. 353 00:14:35,850 --> 00:14:37,470 Vi har set disse operatører før. 354 00:14:37,470 --> 00:14:43,340 Dette, hvad tror du det går at gøre gengæld, når jeg kører det? 355 00:14:43,340 --> 00:14:48,280 356 00:14:48,280 --> 00:14:49,070 Hvad tror du, det kommer til at gøre? 357 00:14:49,070 --> 00:14:50,320 Enhver gæt? 358 00:14:50,320 --> 00:14:54,220 359 00:14:54,220 --> 00:14:55,320 >> PUBLIKUM: segfault. 360 00:14:55,320 --> 00:14:55,600 >> SPEAKER: Hvad? 361 00:14:55,600 --> 00:14:56,660 Segfault? 362 00:14:56,660 --> 00:14:58,520 Det er et godt gæt. 363 00:14:58,520 --> 00:14:59,430 Tom siger det samme. 364 00:14:59,430 --> 00:15:02,240 Alle andre gæt? 365 00:15:02,240 --> 00:15:05,260 >> Hvem tror det kommer til at gøre det samme? 366 00:15:05,260 --> 00:15:06,510 Hvem tror det kommer til at segfault? 367 00:15:06,510 --> 00:15:09,350 368 00:15:09,350 --> 00:15:10,230 Det gør det samme. 369 00:15:10,230 --> 00:15:11,880 Undskyld. 370 00:15:11,880 --> 00:15:13,860 >> Men, selvfølgelig, vi sætter i 1 og 2.. 371 00:15:13,860 --> 00:15:16,470 Og de er begge gyldige, right? 372 00:15:16,470 --> 00:15:19,420 Lad os se, kan vi gå til andenpladsen i et array. 373 00:15:19,420 --> 00:15:24,010 Men hvad hvis vi gjorde b et negativt tal? 374 00:15:24,010 --> 00:15:26,380 Det er nok et bedre gæt for noget segfaulting. 375 00:15:26,380 --> 00:15:30,310 376 00:15:30,310 --> 00:15:32,260 Det virker stadig. 377 00:15:32,260 --> 00:15:35,020 >> OK, det er nu vanvittigt. 378 00:15:35,020 --> 00:15:38,350 Dette er lige gyldige sum funktion. 379 00:15:38,350 --> 00:15:40,470 Dette gør nøjagtig de samme ting som afkast a og b. 380 00:15:40,470 --> 00:15:44,600 Kan nogen forklare, hvorfor dette er en god funktionen Sum, eller hvorfor det virker? 381 00:15:44,600 --> 00:15:45,850 Hvad sker der her? 382 00:15:45,850 --> 00:15:49,360 383 00:15:49,360 --> 00:15:55,750 Hvorfor dette gøre præcis samme ting som vores gamle sum funktion? 384 00:15:55,750 --> 00:15:56,890 [? Akshar,?] 385 00:15:56,890 --> 00:15:58,155 hvad sker der? 386 00:15:58,155 --> 00:16:01,540 >> PUBLIKUM: Fordi når du har en a, der er en adresse til 387 00:16:01,540 --> 00:16:03,950 placering hukommelse - 388 00:16:03,950 --> 00:16:07,910 og når du gør-tegnet, er det går til denne hukommelse adresse. 389 00:16:07,910 --> 00:16:13,610 Og når du går til B, er du slags bevægelige skridt fra denne hukommelse adresse, 390 00:16:13,610 --> 00:16:15,550 du returnere det. 391 00:16:15,550 --> 00:16:20,083 Så du er faktisk i virkeligheden, tilsætning af a og b [uhørlig]. 392 00:16:20,083 --> 00:16:23,300 393 00:16:23,300 --> 00:16:26,222 Hvor er standard operationer om at vende tilbage? 394 00:16:26,222 --> 00:16:27,683 Ligesom, hvor skal parenteserne falde? 395 00:16:27,683 --> 00:16:30,610 Er en tilbagevenden til adressen på et før eller efter [uhørligt]? 396 00:16:30,610 --> 00:16:32,380 >> SPEAKER: Det kommer til at indekset i b - 397 00:16:32,380 --> 00:16:34,430 eller indeks ind i en - og så returnere adresse. 398 00:16:34,430 --> 00:16:38,800 399 00:16:38,800 --> 00:16:41,340 OK, så gjorde alle forstår hvad [? Akshar?] 400 00:16:41,340 --> 00:16:45,830 sagt, og forklarede, hvorfor det virker? 401 00:16:45,830 --> 00:16:49,430 Jeg gjorde ikke, den første gang nogen forklarede dette til mig. 402 00:16:49,430 --> 00:16:51,900 Ville nogen gerne et billede at forklare dette? 403 00:16:51,900 --> 00:16:55,320 Vi kommer til at tegne et billede, med ingen markører, det er fantastisk. 404 00:16:55,320 --> 00:16:57,920 Fundet nogle. 405 00:16:57,920 --> 00:17:03,390 >> Så vi har et array, der er en række af bokse. 406 00:17:03,390 --> 00:17:07,160 407 00:17:07,160 --> 00:17:13,710 Den første er et indeks 0, indeks 1, 2, 3, 4, prik, prik, prik. 408 00:17:13,710 --> 00:17:15,609 En typisk array. 409 00:17:15,609 --> 00:17:19,540 Og ud over at have indekser de alle har hukommelse adresser. 410 00:17:19,540 --> 00:17:30,190 Så lad os give denne hukommelse adresse 13, 14, 15, 16, 17, et cetera. 411 00:17:30,190 --> 00:17:32,490 Alle er her hidtil. 412 00:17:32,490 --> 00:17:35,810 >> Så et er en adresse. 413 00:17:35,810 --> 00:17:38,850 Navnet på et array, en pointer gemmes der. 414 00:17:38,850 --> 00:17:42,730 Det er en pointer, det er en hukommelsesplacering, til starten af ​​matrixen. 415 00:17:42,730 --> 00:17:45,910 Så hvis dette var array, en ville være en værdi på 13. 416 00:17:45,910 --> 00:17:49,110 Og selvfølgelig kan vi give en hvilken som helst værdi, vi ønsker. 417 00:17:49,110 --> 00:17:52,450 Char stjerne en, kan vi give en hvilken som helst hukommelse adresse, vi ønsker. 418 00:17:52,450 --> 00:17:55,940 Vi kan give det 0, kan vi give det negativ 1 - negativ 1 eksisterer ikke, 419 00:17:55,940 --> 00:17:58,820 så det er nok problematisk, men du så, at det stadig arbejdede. 420 00:17:58,820 --> 00:18:03,070 Så vi kan give et hvilket som helst antal, vi ønsker, nogen hukommelse adresse, vi ønsker. 421 00:18:03,070 --> 00:18:08,720 >> Så, int b siger, OK, gå dette nummer skridt ind i array. 422 00:18:08,720 --> 00:18:13,150 Så hvis b er lig med 2, og a er lig med 13, vi er på hukommelse adresse 13.. 423 00:18:13,150 --> 00:18:17,330 Og vi går to trin i, og så er vi her. 424 00:18:17,330 --> 00:18:21,150 Og tegnet betyder tilbagevenden adressen på denne placering. 425 00:18:21,150 --> 00:18:23,990 Og adressen er selvfølgelig, 15.. 426 00:18:23,990 --> 00:18:28,710 Så vi får 13 plus 2 eller et plus b, hvilket er 15. 427 00:18:28,710 --> 00:18:29,590 >> Spørgsmålet er, men - 428 00:18:29,590 --> 00:18:30,250 Undskyld. 429 00:18:30,250 --> 00:18:34,324 Betyder at afklare tingene for hvorfor det virker? 430 00:18:34,324 --> 00:18:36,300 >> PUBLIKUM: Hvorfor ville det arbejde går - 431 00:18:36,300 --> 00:18:38,770 så du kan have en matrix og gå til en negativ indeks? 432 00:18:38,770 --> 00:18:39,050 >> SPEAKER: Right. 433 00:18:39,050 --> 00:18:40,870 Så vi gjorde negative tal, så det er det - 434 00:18:40,870 --> 00:18:42,770 Giver det mening selv, første, [? Avi,?] 435 00:18:42,770 --> 00:18:43,120 for dig? 436 00:18:43,120 --> 00:18:48,840 >> PUBLIKUM: Ja, jeg er bare [Uhørligt], men - 437 00:18:48,840 --> 00:18:50,440 >> SPEAKER: Ja, det ville vende tilbage 15. 438 00:18:50,440 --> 00:18:53,523 Hvis en var 13, og b var 2, dette ville vende tilbage 15. 439 00:18:53,523 --> 00:18:58,160 >> PUBLIKUM: Så nul indeksering ikke blive et problem, right? 440 00:18:58,160 --> 00:19:00,160 Fordi du flytter fra 0. 441 00:19:00,160 --> 00:19:00,470 >> SPEAKER: Right. 442 00:19:00,470 --> 00:19:05,000 Så du er ved at flytte - så hvis b var 0, ville du ikke flytte overalt. 443 00:19:05,000 --> 00:19:06,330 Og du ville blot returneres adressen - 444 00:19:06,330 --> 00:19:10,830 hvis b var 0, det er hovedsageligt returnering, at adressen på en. 445 00:19:10,830 --> 00:19:13,960 Passing i char stjerne en og returnere adressen på en bare returnere en, 446 00:19:13,960 --> 00:19:15,860 væsentlige. 447 00:19:15,860 --> 00:19:18,280 >> OK, spørgsmålet er hvorfor negative tal virker? 448 00:19:18,280 --> 00:19:21,670 Og det er virkelig cool ting om dette, fordi dette burde segfault. 449 00:19:21,670 --> 00:19:25,110 Og det ville segfault hvis vi gjorde noget som dette. 450 00:19:25,110 --> 00:19:28,050 451 00:19:28,050 --> 00:19:29,300 Lad os sige, int. 452 00:19:29,300 --> 00:19:34,390 453 00:19:34,390 --> 00:19:39,810 Så denne kode ser identisk og bør opføre sig ens. 454 00:19:39,810 --> 00:19:44,550 Væsentlige, x er en skraldespand variabel, og så dette bør opføre sig ens. 455 00:19:44,550 --> 00:19:46,370 >> Lad os gøre dette - 456 00:19:46,370 --> 00:19:47,620 oops - 457 00:19:47,620 --> 00:19:54,790 458 00:19:54,790 --> 00:19:56,040 i stjerne. 459 00:19:56,040 --> 00:19:59,160 460 00:19:59,160 --> 00:20:02,733 OK, vi allerede få fejl her, fordi det allerede vil være vred 461 00:20:02,733 --> 00:20:04,610 på mig, fordi det allerede ved, hvad der kommer. 462 00:20:04,610 --> 00:20:07,060 Især den anden. 463 00:20:07,060 --> 00:20:09,800 Adresse på stablet hukommelse forbundet med en lokal variabel. 464 00:20:09,800 --> 00:20:14,220 >> Væsentlige, jeg ikke kommer til at kompilere dette, og så vil jeg fortryde gøre 465 00:20:14,220 --> 00:20:14,920 hvad vi lige gjorde. 466 00:20:14,920 --> 00:20:19,130 Men fordi vi er faktisk aldrig adgang til, hvad der er på hukommelsen 467 00:20:19,130 --> 00:20:21,930 placering, er det ikke kommer til at segfault. 468 00:20:21,930 --> 00:20:26,450 Vi faktisk aldrig at se på, hvad der er i den anden boks eller hvad der er i enhver kasse 469 00:20:26,450 --> 00:20:28,340 af dette array. 470 00:20:28,340 --> 00:20:30,980 Vi siger kun, her er adressen af de ting, vi leder efter, og 471 00:20:30,980 --> 00:20:32,410 returnere den adresse. 472 00:20:32,410 --> 00:20:35,700 Vi faktisk aldrig gå ind i array til at se på dette sted. 473 00:20:35,700 --> 00:20:39,140 Og fordi vi rører aldrig hukommelsen, vi ikke komme i problemer. 474 00:20:39,140 --> 00:20:40,760 Vi får ikke en segfault. 475 00:20:40,760 --> 00:20:46,225 >> Hvis vi forsøgte at, igen, touch at hukommelse, skal du trykke, hvad der var på a eller b - 476 00:20:46,225 --> 00:20:49,940 eller en konsol b og antager a var 0 og - 477 00:20:49,940 --> 00:20:53,040 hvis en var 0, selv, det ville være temmelig dårligt, fordi vi ikke kan gå 478 00:20:53,040 --> 00:20:54,090 ned hele vejen der. 479 00:20:54,090 --> 00:20:58,250 Hvis A og B begge er 0, og vi prøvede at røre ved, hvad der var, så ville vi 480 00:20:58,250 --> 00:20:59,110 komme i problemer. 481 00:20:59,110 --> 00:21:02,160 Men hvis vi ikke røre ved, hvad er der, vi bare returnere adressen, er det 482 00:21:02,160 --> 00:21:08,300 faktisk ikke kommer til at segfault fordi det kan du udføre disse operationer. 483 00:21:08,300 --> 00:21:11,920 Det bliver kun vred på dig, og får super vred, når du prøver og røre 484 00:21:11,920 --> 00:21:15,740 den faktiske hukommelse og vende tilbage, hvad der er på denne hukommelse. 485 00:21:15,740 --> 00:21:17,690 >> Giver det mening? 486 00:21:17,690 --> 00:21:24,820 Det er bare en vanvittig del af C. Så vi har en flere af disse. 487 00:21:24,820 --> 00:21:27,760 488 00:21:27,760 --> 00:21:29,700 >> Hvem mener, at dette er cool? 489 00:21:29,700 --> 00:21:30,280 Flere mennesker. 490 00:21:30,280 --> 00:21:31,070 Det er godt. 491 00:21:31,070 --> 00:21:34,860 OK, det er vores sidste. 492 00:21:34,860 --> 00:21:37,314 Og jeg vil gerne have dig til at fortælle mig, om eller du tror ikke det vil 493 00:21:37,314 --> 00:21:38,564 til at gøre nøjagtig de samme ting. 494 00:21:38,564 --> 00:22:06,050 495 00:22:06,050 --> 00:22:07,390 >> Jeg har disse skrevet ned et eller andet sted. 496 00:22:07,390 --> 00:22:08,640 Jeg er ikke huske dem. 497 00:22:08,640 --> 00:22:33,350 498 00:22:33,350 --> 00:22:42,900 >> Lad os se, 8, B 4, 4, 2, 4, 0, 8, 0, 3, 4, 4, 2, 4, 0, 4. 499 00:22:42,900 --> 00:22:46,670 Så dette er et array, nu, ikke en funktion. 500 00:22:46,670 --> 00:22:49,640 Og det er et array, fordi vi har firkantet beslag, ikke krøllede parenteser. 501 00:22:49,640 --> 00:22:52,360 Og det er en bred vifte af hvilken type? 502 00:22:52,360 --> 00:22:55,540 503 00:22:55,540 --> 00:22:56,862 Enhver, hmm? 504 00:22:56,862 --> 00:22:57,694 >> PUBLIKUM: Deres hexadecimale tal? 505 00:22:57,694 --> 00:22:59,650 >> SPEAKER: Men hvad er C-type? 506 00:22:59,650 --> 00:23:00,710 De har alle hexadecimale tal. 507 00:23:00,710 --> 00:23:01,960 Hvad er C-type? 508 00:23:01,960 --> 00:23:04,730 509 00:23:04,730 --> 00:23:05,480 Det fortæller dig. 510 00:23:05,480 --> 00:23:07,350 >> PUBLIKUM: Det er tegn usignerede. 511 00:23:07,350 --> 00:23:09,170 >> SPEAKER: højre, unsigned chars. 512 00:23:09,170 --> 00:23:13,050 Og to hexadecimale tal er en byte. 513 00:23:13,050 --> 00:23:18,540 Så disse er 1, 2, 3, 4, 5, 6, 7, 8, 9 byte. 514 00:23:18,540 --> 00:23:21,360 Det er en bred vifte af 9 byte. 515 00:23:21,360 --> 00:23:25,530 >> OK, du sikkert allerede kender Svaret på dette spørgsmål. 516 00:23:25,530 --> 00:23:29,840 Men hvad tror du ske, når jeg køre dette? 517 00:23:29,840 --> 00:23:34,110 Jeg siger igen, i mysum.c, Jeg venter en funktion 518 00:23:34,110 --> 00:23:36,280 der tager to heltal. 519 00:23:36,280 --> 00:23:40,265 Og jeg i stedet sige, at summen er en vifte af tegn. 520 00:23:40,265 --> 00:23:42,780 521 00:23:42,780 --> 00:23:48,070 Hvad kommer til at ske, når Jeg køre. / Mysum og gøre? 522 00:23:48,070 --> 00:23:53,230 >> Nå, det første, de fleste af jer vil formentlig enige om, at make - åh nej, bare for sjov. 523 00:23:53,230 --> 00:23:54,746 Hvad sagde jeg gør forkert? 524 00:23:54,746 --> 00:23:55,996 Uh oh. 525 00:23:55,996 --> 00:23:59,220 526 00:23:59,220 --> 00:24:01,160 Det burde være krøllede parenteser. 527 00:24:01,160 --> 00:24:02,790 Det er hvordan du initialisere et array. 528 00:24:02,790 --> 00:24:04,040 Min dårlige. 529 00:24:04,040 --> 00:24:07,530 530 00:24:07,530 --> 00:24:11,670 >> Så vi har allerede set før, at typer er en C-abstraktionsniveau, ikke en 531 00:24:11,670 --> 00:24:12,610 computer niveau abstraktion. 532 00:24:12,610 --> 00:24:16,360 Så de fleste af jer sikkert forventede, at det gøre, eller at antage, at det ville gøre. 533 00:24:16,360 --> 00:24:18,680 Men hvad, når jeg kører. / Mysum? 534 00:24:18,680 --> 00:24:19,930 Hvad kommer til at ske? 535 00:24:19,930 --> 00:24:21,790 536 00:24:21,790 --> 00:24:23,422 Enhver gæt? 537 00:24:23,422 --> 00:24:25,270 >> PUBLIKUM: Det kommer til at udskrive et ord. 538 00:24:25,270 --> 00:24:26,310 >> SPEAKER: Det kommer til at udskrive et ord. 539 00:24:26,310 --> 00:24:29,335 Hvilket ord? 540 00:24:29,335 --> 00:24:32,200 >> PUBLIKUM: [uhørligt]. 541 00:24:32,200 --> 00:24:33,240 >> SPEAKER: Alle andre gæt? 542 00:24:33,240 --> 00:24:34,000 OK, udskrive en sætning. 543 00:24:34,000 --> 00:24:35,130 Du kan have nogen sætning. 544 00:24:35,130 --> 00:24:36,240 Det vil være din side. 545 00:24:36,240 --> 00:24:38,480 Enhver, der har en anden gæt? 546 00:24:38,480 --> 00:24:39,730 Anna, hvad er dit gæt? 547 00:24:39,730 --> 00:24:42,675 548 00:24:42,675 --> 00:24:44,615 >> PUBLIKUM: Det vil udskrive - 549 00:24:44,615 --> 00:24:47,525 550 00:24:47,525 --> 00:24:49,480 to bogstaver eller [uhørligt] ét bogstav. 551 00:24:49,480 --> 00:24:51,460 >> SPEAKER: Et brev. 552 00:24:51,460 --> 00:24:53,260 >> PUBLIKUM: Kan jeg tælle, hvor mange [uhørligt]? 553 00:24:53,260 --> 00:24:55,426 >> SPEAKER: Ni. 554 00:24:55,426 --> 00:24:56,640 Nå, jeg har tænkt mig at køre den. 555 00:24:56,640 --> 00:24:58,650 Det gør nøjagtig de samme ting. 556 00:24:58,650 --> 00:25:00,190 Det tilføjer to tal sammen. 557 00:25:00,190 --> 00:25:02,740 Nå, lad os passere de to argumenter. 558 00:25:02,740 --> 00:25:03,710 Det tager ikke argumenter. 559 00:25:03,710 --> 00:25:06,080 Så jeg ved ikke, hvor det kunne muligvis få disse argumenter. 560 00:25:06,080 --> 00:25:07,710 Men lad os gå på 100 og 0. 561 00:25:07,710 --> 00:25:09,200 Og det tilføjer 100 og 0. 562 00:25:09,200 --> 00:25:10,220 Det er sindssygt. 563 00:25:10,220 --> 00:25:12,280 Jeg tror det. 564 00:25:12,280 --> 00:25:14,480 >> Negativ 4, der virker også. 565 00:25:14,480 --> 00:25:15,650 Du kan gøre hvad du vil. 566 00:25:15,650 --> 00:25:17,920 Det er en lige så gyldig sum funktion. 567 00:25:17,920 --> 00:25:19,640 Dette er en funktion sum. 568 00:25:19,640 --> 00:25:21,510 Men, nej, du siger det er et array af bytes. 569 00:25:21,510 --> 00:25:23,570 Så hvad der foregår her? 570 00:25:23,570 --> 00:25:27,240 >> Så igen, lad os gå tilbage til denne idé at vi sagde i begyndelsen. 571 00:25:27,240 --> 00:25:32,050 Du går fra C-niveau kode, til samling sprog til nuller og ettaller. 572 00:25:32,050 --> 00:25:33,050 Dette er hexadecimal. 573 00:25:33,050 --> 00:25:35,780 Men det er egentlig bare en masse af nuller og ettaller. 574 00:25:35,780 --> 00:25:39,230 Det er 72 nuller og ettaller, right? 575 00:25:39,230 --> 00:25:40,550 72 nuller og ettaller. 576 00:25:40,550 --> 00:25:42,160 9 bytes. 577 00:25:42,160 --> 00:25:43,740 Hver byte har 8 bit. 578 00:25:43,740 --> 00:25:44,760 Hver bit er et ettal eller et nul. 579 00:25:44,760 --> 00:25:45,920 Så 72 dem eller nuller. 580 00:25:45,920 --> 00:25:48,780 Jeg har lige skrevet dem som dette - snarere end at skrive det ud som en masse 581 00:25:48,780 --> 00:25:49,730 nuller og ettaller. 582 00:25:49,730 --> 00:25:53,560 >> Men det vil gå fra C-niveau sprog samling 583 00:25:53,560 --> 00:25:54,620 sprog, til koden. 584 00:25:54,620 --> 00:25:59,020 Og det vil udskrive i kode, et sted, disse 72 nuller og ettaller 585 00:25:59,020 --> 00:26:00,910 at jeg har skrevet her. 586 00:26:00,910 --> 00:26:03,610 Så sted ved, at - 587 00:26:03,610 --> 00:26:04,850 lad os gå her - 588 00:26:04,850 --> 00:26:11,240 sted i mysum programmet, der er disse 72 nuller og ettaller, som jeg har 589 00:26:11,240 --> 00:26:14,930 skrevet og fortalte det til at skrive. 590 00:26:14,930 --> 00:26:19,331 >> Nu, eventuelle gæt, hvad de 72 nuller og ettaller betyde? 591 00:26:19,331 --> 00:26:21,240 >> PUBLIKUM: Sandsynligvis den samme ting som returnere et plus b.. 592 00:26:21,240 --> 00:26:22,890 >> SPEAKER: Sandsynligvis den samme ting som returnere et plus b.. 593 00:26:22,890 --> 00:26:23,730 Lad os kontrollere, at. 594 00:26:23,730 --> 00:26:25,210 Lad os finde ud af hvordan jeg gjorde det. 595 00:26:25,210 --> 00:26:31,840 >> Så hvis du går tilbage her, jeg fortælle dig at køre denne kommando, objdump-S 596 00:26:31,840 --> 00:26:34,290 sumfunction.o. 597 00:26:34,290 --> 00:26:36,230 Lad os gå køre den. objdump - 598 00:26:36,230 --> 00:26:37,990 obj, dump. 599 00:26:37,990 --> 00:26:39,840 Dybest set kan give mig hvad jeg ønsker at se. 600 00:26:39,840 --> 00:26:40,840 Det kan give mig assembler. 601 00:26:40,840 --> 00:26:42,730 Det kan give mig de nuller og ettaller. 602 00:26:42,730 --> 00:26:43,840 Det har et væld af flag. 603 00:26:43,840 --> 00:26:45,860 Det er den, vi skal hen til brug for nu. 604 00:26:45,860 --> 00:26:46,980 Dot - 605 00:26:46,980 --> 00:26:48,810 som du kan se i dias - 606 00:26:48,810 --> 00:26:53,840 dash hovedstad S siger intersperse, kildekode - 607 00:26:53,840 --> 00:26:58,410 denne linje er fra C - med montage kode, og med nuller og ettaller. 608 00:26:58,410 --> 00:27:00,350 Og vi kommer til at løbe det på sumfunction.o. 609 00:27:00,350 --> 00:27:01,410 Fordi det vil være nemmere at se. 610 00:27:01,410 --> 00:27:02,670 Igen - hmm? 611 00:27:02,670 --> 00:27:04,700 >> PUBLIKUM: Du stavet det forkert. 612 00:27:04,700 --> 00:27:05,930 >> SPEAKER: Men jeg faktisk går at klare det for en anden. 613 00:27:05,930 --> 00:27:09,160 Jeg først kommer til at åbne bare sumfuntion.o. 614 00:27:09,160 --> 00:27:11,170 >> PUBLIKUM: Du stavet det forkert første gang. 615 00:27:11,170 --> 00:27:12,420 >> SPEAKER: Classic. 616 00:27:12,420 --> 00:27:14,790 617 00:27:14,790 --> 00:27:15,480 Sum - 618 00:27:15,480 --> 00:27:16,680 der er et hårdt ord, selv om. 619 00:27:16,680 --> 00:27:19,050 Du ville blive overrasket. 620 00:27:19,050 --> 00:27:21,560 OK, så dette er sumfunction.o. 621 00:27:21,560 --> 00:27:24,494 622 00:27:24,494 --> 00:27:26,220 Jeg kunne ikke engang fortælle dig. 623 00:27:26,220 --> 00:27:30,250 Der er en masse nuller, klart en masse af nuller, og der er nogle andre 624 00:27:30,250 --> 00:27:31,930 ting, der ikke er nuller. 625 00:27:31,930 --> 00:27:33,220 Men det meste nuller. 626 00:27:33,220 --> 00:27:35,120 Ser ud som om der er nogle dem. 627 00:27:35,120 --> 00:27:36,810 Så klart, det er svært at læse. 628 00:27:36,810 --> 00:27:39,320 Det er den binære sprog. 629 00:27:39,320 --> 00:27:40,710 >> Lad os nu åbne den - 630 00:27:40,710 --> 00:27:50,190 631 00:27:50,190 --> 00:27:52,350 hvad? 632 00:27:52,350 --> 00:27:53,600 Hvad gør jeg forkert? 633 00:27:53,600 --> 00:27:56,955 634 00:27:56,955 --> 00:27:58,434 Har jeg stave det korrekt? 635 00:27:58,434 --> 00:28:09,865 636 00:28:09,865 --> 00:28:11,120 OK, det er akavet. 637 00:28:11,120 --> 00:28:37,560 638 00:28:37,560 --> 00:28:40,158 Jeg har brug for et sekund for at regne ud af, hvad jeg gør forkert. 639 00:28:40,158 --> 00:28:46,030 640 00:28:46,030 --> 00:28:49,310 Det er en fejl. 641 00:28:49,310 --> 00:28:50,560 Det er underligt. 642 00:28:50,560 --> 00:28:58,080 643 00:28:58,080 --> 00:29:01,800 Åh, det er hvorfor. 644 00:29:01,800 --> 00:29:09,880 >> Jeg har tænkt mig at gå tilbage til vores oprindelige en, så vi kan se på 645 00:29:09,880 --> 00:29:10,560 objektkode af dette. 646 00:29:10,560 --> 00:29:13,390 Fordi der er ikke rigtig kommer til at være noget, når vi bare sætte 647 00:29:13,390 --> 00:29:14,640 ettaller og nuller i. 648 00:29:14,640 --> 00:29:29,000 649 00:29:29,000 --> 00:29:30,200 Der vi går. 650 00:29:30,200 --> 00:29:32,425 OK, så alle kan se det. 651 00:29:32,425 --> 00:29:38,130 Denne funktion, som jeg sagde, sat ud C-linjer - 652 00:29:38,130 --> 00:29:39,060 linjer kildekode - 653 00:29:39,060 --> 00:29:41,000 med nogle monteringsvejledning. 654 00:29:41,000 --> 00:29:42,760 >> Her er vores kildekode linje. 655 00:29:42,760 --> 00:29:44,910 Her er en, her er en anden. 656 00:29:44,910 --> 00:29:46,540 Her er samlevejledning. 657 00:29:46,540 --> 00:29:47,820 Det er, hvad de ser ud. 658 00:29:47,820 --> 00:29:49,010 Monteringsvejledning - 659 00:29:49,010 --> 00:29:51,530 du kan lære mere af disse, hvis du tager andre CS klasser, men de er 660 00:29:51,530 --> 00:29:53,500 generelt en instruktion. 661 00:29:53,500 --> 00:29:57,940 Og så en kilde og en destination. 662 00:29:57,940 --> 00:30:02,740 >> Og så herovre er den binære kode , der svarer til samling 663 00:30:02,740 --> 00:30:04,940 instruktion. 664 00:30:04,940 --> 00:30:09,760 Så som du kan se, denne funktion sum, ved slutningen af ​​dagen, er tre 665 00:30:09,760 --> 00:30:10,950 monteringsvejledning. 666 00:30:10,950 --> 00:30:12,870 Kun tre. 667 00:30:12,870 --> 00:30:14,180 Én mov - 668 00:30:14,180 --> 00:30:16,740 m-o-v står for en Move. 669 00:30:16,740 --> 00:30:17,780 Tilføj står for Add. 670 00:30:17,780 --> 00:30:20,440 Og r-e-t står for Return. 671 00:30:20,440 --> 00:30:22,540 Så en mov, en add, en tilbagevenden. 672 00:30:22,540 --> 00:30:27,970 Og disse, herovre, er de nuller og dem, der svarer til denne kode. 673 00:30:27,970 --> 00:30:31,100 >> Så dem nuller og ettaller, hvis du kender dem, kan du bare sætte 674 00:30:31,100 --> 00:30:32,140 de lige i. 675 00:30:32,140 --> 00:30:34,130 Og så det vil gøre samme nøjagtige ting. 676 00:30:34,130 --> 00:30:37,260 Fordi ved slutningen af ​​dagen, alt du udfører, er en lang række af 677 00:30:37,260 --> 00:30:38,480 nuller og ettaller. 678 00:30:38,480 --> 00:30:40,700 Og det er, hvad din kode egentlig er. 679 00:30:40,700 --> 00:30:41,770 >> Og årsagen - 680 00:30:41,770 --> 00:30:43,680 lad os se på én ting. 681 00:30:43,680 --> 00:30:45,440 Havde jeg Makefile åbent? 682 00:30:45,440 --> 00:30:48,510 Så hvis vi gik tilbage til dash nul, nul op her - 683 00:30:48,510 --> 00:30:52,220 684 00:30:52,220 --> 00:30:57,300 undskyld, kapital o, kapital o nul, nul, nul. 685 00:30:57,300 --> 00:31:01,810 Og vi gjorde, ville det arbejder stadig det samme. 686 00:31:01,810 --> 00:31:05,420 Men nu er du bemærke, at der er en meget mere monteringsvejledning. 687 00:31:05,420 --> 00:31:09,090 Det er fordi, igen, spurgte jeg compiler ikke at gøre noget optimering. 688 00:31:09,090 --> 00:31:12,800 >> Så jeg kunne stadig tage alle disse nuller og ettaller, og smide dem i, 689 00:31:12,800 --> 00:31:13,390 og det ville fungere. 690 00:31:13,390 --> 00:31:15,850 Jeg gjorde bare de optimeringer, fordi det er lidt nemmere, da 691 00:31:15,850 --> 00:31:17,310 at skrive, at array. 692 00:31:17,310 --> 00:31:19,730 Men dette ville arbejde lige så godt. 693 00:31:19,730 --> 00:31:24,460 >> OK, vi kommer til at gøre en sidste ting, fordi jeg mener er den fedeste del. 694 00:31:24,460 --> 00:31:27,410 Selvom alle er klart allerede blæst og målløs. 695 00:31:27,410 --> 00:31:30,520 696 00:31:30,520 --> 00:31:31,670 Vores sind er blæst. 697 00:31:31,670 --> 00:31:32,920 [Uhørligt] 698 00:31:32,920 --> 00:31:47,580 699 00:31:47,580 --> 00:31:51,520 >> Så disse er fra en anden CS klasse, som er super interessant, 700 00:31:51,520 --> 00:31:52,970 at jeg har taget - 701 00:31:52,970 --> 00:31:54,140 CS61. 702 00:31:54,140 --> 00:31:55,910 Jeg stærkt opfordre dig til at tage det. 703 00:31:55,910 --> 00:31:58,990 Men den kølige del om denne kendsgerning, at ting er bare nuller og ettaller, 704 00:31:58,990 --> 00:32:01,270 er, at alt er nuller og ettaller. 705 00:32:01,270 --> 00:32:05,330 >> Så du kan tage en fil, der har den korrekte nuller og dem, du ønsker 706 00:32:05,330 --> 00:32:10,390 et eller andet sted i det, og bruge denne sektion af nuller og ettaller som en funktion sum. 707 00:32:10,390 --> 00:32:11,480 >> Hvad mener jeg med det? 708 00:32:11,480 --> 00:32:15,755 Jeg mener du kan tage en billedfil, der har den korrekte serie af nuller og 709 00:32:15,755 --> 00:32:17,120 dem, der udskrives noget ud til et billede. 710 00:32:17,120 --> 00:32:20,070 Og ét program kan fortolke en billede, men du kan fortolke det, hvis 711 00:32:20,070 --> 00:32:22,040 du ønsker, som en funktion sum. 712 00:32:22,040 --> 00:32:27,010 >> Så hvis vi ønskede at åbne for F.eks dette billede. 713 00:32:27,010 --> 00:32:37,440 Lad os gå, Hello Kitty. 714 00:32:37,440 --> 00:32:38,810 Vidunderlige lille billede. 715 00:32:38,810 --> 00:32:42,260 Herinde er der denne streng af nuller og ettaller. 716 00:32:42,260 --> 00:32:45,500 De 72 nuller og ettaller eksisterer i dette billede. 717 00:32:45,500 --> 00:32:47,695 >> Så hvad jeg kan gøre, så er skrive - 718 00:32:47,695 --> 00:32:50,510 719 00:32:50,510 --> 00:32:51,760 Jeg er nødt til at huske, hvor de er. 720 00:32:51,760 --> 00:32:54,550 721 00:32:54,550 --> 00:32:55,720 Jeg finder, at der i et sekund. 722 00:32:55,720 --> 00:32:57,840 Men vi gør - 723 00:32:57,840 --> 00:32:59,440 lad mig finde ud af hvor de er. 724 00:32:59,440 --> 00:33:00,020 Én sek. 725 00:33:00,020 --> 00:33:01,270 Lad os gøre - 726 00:33:01,270 --> 00:33:05,800 727 00:33:05,800 --> 00:33:07,240 >> PUBLIKUM: [uhørligt]. 728 00:33:07,240 --> 00:33:08,490 >> SPEAKER: Thanks. 729 00:33:08,490 --> 00:33:24,240 730 00:33:24,240 --> 00:33:28,740 Så hvis vi udfører dette program, som i stedet læser i en fil, så går det 731 00:33:28,740 --> 00:33:33,160 til dette indeks i filen. 732 00:33:33,160 --> 00:33:35,500 Og så igen, bare gerne mysum, tager to numre. 733 00:33:35,500 --> 00:33:41,410 Vi kan tilføje numre nøjagtig det samme som vi lavede før, som går til 734 00:33:41,410 --> 00:33:44,850 vise dig, hvordan det faktum, at i slutningen af dagen, er alle disse ting 735 00:33:44,850 --> 00:33:45,350 nuller og ettaller. 736 00:33:45,350 --> 00:33:48,170 Og det er bare hvordan du vælger at fortolke dem. 737 00:33:48,170 --> 00:33:50,770 >> Og hvis du rent faktisk ser på dette billede - 738 00:33:50,770 --> 00:33:52,930 Lad os zoome ind lidt. 739 00:33:52,930 --> 00:33:53,720 Kan alle se det? 740 00:33:53,720 --> 00:33:57,570 Du vil opdage lige her, der er nogle underlige plamage. 741 00:33:57,570 --> 00:34:00,130 742 00:34:00,130 --> 00:34:02,290 Lad os gå - det er det originale billede. 743 00:34:02,290 --> 00:34:04,540 Du vil bemærke her er der ingen plamage. 744 00:34:04,540 --> 00:34:08,420 Det er den kode for funktionen summen er, at lille plamage lige der. 745 00:34:08,420 --> 00:34:13,449 >> Og faktisk, igen, hvis du lærer mere om dette, vil du indse, at dette 746 00:34:13,449 --> 00:34:18,270 Hello Kitty, der selv har en større tvære har kode, der kan overtage en 747 00:34:18,270 --> 00:34:21,800 computer, hvis den er ikke beskyttet hensigtsmæssigt. 748 00:34:21,800 --> 00:34:23,920 Så du kan faktisk køre dette. 749 00:34:23,920 --> 00:34:25,380 Jeg har ikke tænkt mig at køre det lige nu. 750 00:34:25,380 --> 00:34:30,600 Men du kan køre dette Hello Kitty billede, og det kan 751 00:34:30,600 --> 00:34:32,429 overtage din computer. 752 00:34:32,429 --> 00:34:35,159 >> Så det er alt for demoen. 753 00:34:35,159 --> 00:34:38,560 Er der nogen har nogen spørgsmål, kommentarer, bekymringer? 754 00:34:38,560 --> 00:34:39,515 Jeg tror, ​​denne ting er fascinerende. 755 00:34:39,515 --> 00:34:41,500 Det inspirerede mig til at lære mere. 756 00:34:41,500 --> 00:34:44,980 Jeg kan varmt anbefale, hvis du er interesseret overhovedet på CS, tale med mig. 757 00:34:44,980 --> 00:34:50,250 Selvom jeg er en Samfundsfag Koncentrator, jeg er en CS, sekundære, så 758 00:34:50,250 --> 00:34:52,340 Jeg ved stadig en lille smule. 759 00:34:52,340 --> 00:34:53,810 Men jeg helt sikkert ved, hvad klasser, du bør tage. 760 00:34:53,810 --> 00:34:57,940 Jeg synes det er alle virkelig interessant, og jeg vil opfordre dig, helt sikkert, at 761 00:34:57,940 --> 00:35:00,330 lære mere, hvis du er interesseret. 762 00:35:00,330 --> 00:35:02,090 >> OK, jeg har en sidste ting. 763 00:35:02,090 --> 00:35:05,530 764 00:35:05,530 --> 00:35:05,870 Undskyld. 765 00:35:05,870 --> 00:35:06,460 Eventuelle spørgsmål? 766 00:35:06,460 --> 00:35:10,010 Jeg havde ikke pause til at vente, hvis nogen havde spørgsmål om det. 767 00:35:10,010 --> 00:35:13,220 768 00:35:13,220 --> 00:35:16,900 >> Er der nogen kommer til at være en CS koncentrator? 769 00:35:16,900 --> 00:35:18,580 Eller tænke over det? 770 00:35:18,580 --> 00:35:20,730 En, to, tre, fire. 771 00:35:20,730 --> 00:35:21,620 One - eneste. 772 00:35:21,620 --> 00:35:24,680 Annas er den eneste hånd, der er rejst myndigt. 773 00:35:24,680 --> 00:35:27,640 774 00:35:27,640 --> 00:35:29,390 OK, det er cool. 775 00:35:29,390 --> 00:35:30,110 Assam, hvad vil du gøre? 776 00:35:30,110 --> 00:35:33,220 >> PUBLIKUM: [uhørligt]. 777 00:35:33,220 --> 00:35:33,910 >> SPEAKER: Constantine? 778 00:35:33,910 --> 00:35:34,990 >> PUBLIKUM: fysik. 779 00:35:34,990 --> 00:35:36,720 >> SPEAKER: Whoa, det var hurtigt. 780 00:35:36,720 --> 00:35:40,770 Du havde en dårlig oplevelse i CS50? 781 00:35:40,770 --> 00:35:42,015 [Uhørligt], hvad vil du gøre? 782 00:35:42,015 --> 00:35:42,980 >> PUBLIKUM: Jeg har ingen idé. 783 00:35:42,980 --> 00:35:43,924 >> SPEAKER: Curt? 784 00:35:43,924 --> 00:35:45,900 >> PUBLIKUM: Econ eller CS. 785 00:35:45,900 --> 00:35:46,910 >> SPEAKER: Econ eller CS. 786 00:35:46,910 --> 00:35:47,840 Tom? 787 00:35:47,840 --> 00:35:48,385 >> PUBLIKUM: Jeg gør Stat. 788 00:35:48,385 --> 00:35:48,950 >> SPEAKER: Stat? 789 00:35:48,950 --> 00:35:50,100 OK. 790 00:35:50,100 --> 00:35:51,000 Hvad er du? 791 00:35:51,000 --> 00:35:51,310 >> PUBLIKUM: Mig? 792 00:35:51,310 --> 00:35:51,750 >> SPEAKER: Ja. 793 00:35:51,750 --> 00:35:52,190 >> PUBLIKUM: Stat. 794 00:35:52,190 --> 00:35:52,520 >> SPEAKER: Stat. 795 00:35:52,520 --> 00:35:53,500 Åh, der du går. 796 00:35:53,500 --> 00:35:55,200 Tom, tal med Alden. 797 00:35:55,200 --> 00:35:56,932 Emily, hvad er du? 798 00:35:56,932 --> 00:35:57,396 >> PUBLIKUM: Biomedical - 799 00:35:57,396 --> 00:36:00,178 >> SPEAKER: Er du i dette afsnit? 800 00:36:00,178 --> 00:36:03,040 >> PUBLIKUM: Nej. 801 00:36:03,040 --> 00:36:04,530 >> SPEAKER: OK, det er Emily. 802 00:36:04,530 --> 00:36:05,670 Hun er min ven. 803 00:36:05,670 --> 00:36:10,080 Det er klart ikke så god en ven, fordi hun giver mig en hård tid. 804 00:36:10,080 --> 00:36:13,223 Du kunne være pænere til mig foran af alle, min elev - 805 00:36:13,223 --> 00:36:14,580 >> PUBLIKUM: Jeg gør dit Q-guide. 806 00:36:14,580 --> 00:36:14,870 >> SPEAKER: Virkelig? 807 00:36:14,870 --> 00:36:15,510 Uh oh. 808 00:36:15,510 --> 00:36:17,224 OK, du er fantastisk. 809 00:36:17,224 --> 00:36:19,380 Jeg elsker dig så meget. 810 00:36:19,380 --> 00:36:20,600 Oh boy. 811 00:36:20,600 --> 00:36:28,320 >> Anyway, jeg, i går aftes, ligesom alt - 812 00:36:28,320 --> 00:36:32,220 Jeg er sikker på alle synes virkelig understregede lige nu. 813 00:36:32,220 --> 00:36:35,970 Jeg ved det ikke, er freshman - er du fyre føler dig stresset? 814 00:36:35,970 --> 00:36:36,855 Jeg føler stresset. 815 00:36:36,855 --> 00:36:37,980 Det var ligesom, du går hjem til Thanksgiving. 816 00:36:37,980 --> 00:36:40,660 Du er ligesom, jeg har tænkt mig at gøre alle disse ting. 817 00:36:40,660 --> 00:36:41,530 >> PUBLIKUM: Det er så anderledes. 818 00:36:41,530 --> 00:36:42,560 >> SPEAKER: Ja, og du kommer tilbage. 819 00:36:42,560 --> 00:36:45,290 Jeff, du ikke føler, at vejen? 820 00:36:45,290 --> 00:36:46,610 >> PUBLIKUM: Jeg troede bare Jeg ville gøre en lille smule. 821 00:36:46,610 --> 00:36:48,660 >> SPEAKER: OK, godt. 822 00:36:48,660 --> 00:36:51,650 Så jeg kommer tilbage, og jeg har ikke gjort noget. 823 00:36:51,650 --> 00:36:53,260 Og det er alle super stressende. 824 00:36:53,260 --> 00:36:55,640 Og jeg er bekymret, virkelig bekymret, om, hvorvidt jeg 825 00:36:55,640 --> 00:36:57,380 kommer til at afslutte alt jeg nødt til. 826 00:36:57,380 --> 00:37:01,750 Men i går aftes, var jeg ikke stresset, Jeg var bare en lille smule trist. 827 00:37:01,750 --> 00:37:04,520 Så jeg skrev i min dagbog om hvad jeg var ked af. 828 00:37:04,520 --> 00:37:08,020 Og jeg var ked af denne sektion i denne klasse kommer til en ende. 829 00:37:08,020 --> 00:37:11,100 >> Så jeg skulle lige til at læse for jer et lille uddrag af min dagbog, 830 00:37:11,100 --> 00:37:12,950 fra i aftes. 831 00:37:12,950 --> 00:37:17,400 Kan jeg få nogle servietter nogle væv fra Tom? 832 00:37:17,400 --> 00:37:18,040 Nej, jeg har tænkt mig at græde. 833 00:37:18,040 --> 00:37:19,720 Jeg græder ikke. 834 00:37:19,720 --> 00:37:22,030 Ikke at du ikke kan græde, Jeg kan bare ikke græde. 835 00:37:22,030 --> 00:37:24,040 Jeg ved ikke engang, om min tåre kirtler arbejdede - tårekanalerne. 836 00:37:24,040 --> 00:37:25,630 Jeg har ikke grædt i lang tid. 837 00:37:25,630 --> 00:37:26,510 >> PUBLIKUM: [uhørligt]. 838 00:37:26,510 --> 00:37:28,920 >> SPEAKER: OK, thanks. 839 00:37:28,920 --> 00:37:30,070 OK, der er en lille forord - 840 00:37:30,070 --> 00:37:32,480 der er nogle andre dele af min dagbog indrejse, fordi jeg forsøger at dagbog hver 841 00:37:32,480 --> 00:37:33,600 natten før jeg kom i seng. 842 00:37:33,600 --> 00:37:34,900 Jeg kan varmt anbefale journal. 843 00:37:34,900 --> 00:37:38,600 Det hjælper dig med at behandle tingene, og også være meget taknemmelige for din dag. 844 00:37:38,600 --> 00:37:43,063 Og det gør det meget lettere at se tilbage på din dag og indse, at 845 00:37:43,063 --> 00:37:44,240 der var en masse god ting, der skete. 846 00:37:44,240 --> 00:37:47,240 Selv hvis du føler virkelig stresset natten eller virkelig ked af, eller 847 00:37:47,240 --> 00:37:49,022 virkelig trist eller træt. 848 00:37:49,022 --> 00:37:50,272 >> Åh, min gud. 849 00:37:50,272 --> 00:37:52,546 850 00:37:52,546 --> 00:37:54,400 Jeg ved ikke engang, om det er skrevet, at godt, fordi jeg ikke læse korrektur det. 851 00:37:54,400 --> 00:37:55,780 Men vi vil læse det. 852 00:37:55,780 --> 00:37:59,950 Jeg plejer ikke læse min tidsskrift, naturligvis. 853 00:37:59,950 --> 00:38:03,720 >> "I morgen, jeg vil lære min endelige CS50 del af året. 854 00:38:03,720 --> 00:38:05,860 Det er vanvittigt, hvor hurtigt tiden flyver. 855 00:38:05,860 --> 00:38:09,900 Alligevel er jeg slået af, hvor anderledes min erfaring med undervisning i dette år var 856 00:38:09,900 --> 00:38:11,365 end da jeg var en sophomore. 857 00:38:11,365 --> 00:38:14,120 For startere, jeg absolut ved materialet bedre. 858 00:38:14,120 --> 00:38:16,820 Men du behøver ikke fortælle min første kohorte af de studerende, der. 859 00:38:16,820 --> 00:38:20,030 Endnu vigtigere er dog, jeg indså at den glæde, der kommer fra stående 860 00:38:20,030 --> 00:38:23,160 op foran et rum af hvad der starter ud som fremmede, men ender som på 861 00:38:23,160 --> 00:38:27,150 mindst, Facebook-venner, er ikke en første-års lykketræf. 862 00:38:27,150 --> 00:38:29,970 Snarere er det at vide, at i nogle små måde, hjælper du 863 00:38:29,970 --> 00:38:32,980 talentfuld, tankevækkende, dejlige, og passionerede mennesker lære lidt mere 864 00:38:32,980 --> 00:38:34,750 om datalogi. 865 00:38:34,750 --> 00:38:37,480 >> Du skifter at pære bare en bit i sin sokkel, så det er i stand 866 00:38:37,480 --> 00:38:42,120 at skinne lysere end dig, eller de, kunne have forestillet sig ved semesterstart. 867 00:38:42,120 --> 00:38:45,390 Du hjælper vende disse rynker brynene på hovedet ned og stille spørgsmål, der 868 00:38:45,390 --> 00:38:49,240 yde støtte, men stadig tillade studerende til at stå op på egen hånd. 869 00:38:49,240 --> 00:38:52,190 >> Det er bestemt ikke en overdrivelse at sige, at denne del er min favorit 870 00:38:52,190 --> 00:38:53,190 del af ugen. 871 00:38:53,190 --> 00:38:57,930 Eller endda, at jeg tøver med at sige, det er alle ved 5:30 hver uge, vel vidende 872 00:38:57,930 --> 00:39:00,640 at det vil være alt for lang indtil vi mødes igen. 873 00:39:00,640 --> 00:39:02,740 >> Men jeg er utrolig taknemmelig for alle, der har givet mig dette 874 00:39:02,740 --> 00:39:05,010 mulighed for at give tilbage til andre. 875 00:39:05,010 --> 00:39:07,340 Til David, for hans tålmodighed og tillid. 876 00:39:07,340 --> 00:39:11,040 Til film og produktion besætning, for gør mig ser lidt respektabel. 877 00:39:11,040 --> 00:39:15,380 Og vigtigst af alt, at mine elever, uden hvem jeg ville have nogen grund til at 878 00:39:15,380 --> 00:39:17,890 tilbringe 10 timer at finde ud af den bedste måde at trække pegepinde, eller lægge en 879 00:39:17,890 --> 00:39:20,330 bord af delfiner, via JavaScript. 880 00:39:20,330 --> 00:39:22,620 Som altid har det været en velsignelse. " 881 00:39:22,620 --> 00:39:25,420 >> Så med dette, tak gutter. 882 00:39:25,420 --> 00:39:29,000 Jeg vil se jer alle på CS50 fair, og den hackathon, hvis du er der. 883 00:39:29,000 --> 00:39:32,020 Og hvis du har spørgsmål, vil jeg holde rundt, indtil der ikke er flere. 884 00:39:32,020 --> 00:39:33,760 Men jeg takker jer for en vidunderlig år. 885 00:39:33,760 --> 00:39:37,290 >> [Applaus] 886 00:39:37,290 --> 00:39:38,540 >> SPEAKER: jeg kunne græde. 887 00:39:38,540 --> 00:39:40,800