1 00:00:00,000 --> 00:00:07,700 2 00:00:07,700 --> 00:00:15,180 >> SPEAKER: OK, então, você não vai acreditar, mas na semana passada, na segunda-feira, em Pierce, eu 3 00:00:15,180 --> 00:00:16,090 estava no porão. 4 00:00:16,090 --> 00:00:17,010 Eu nunca ir para Pierce. 5 00:00:17,010 --> 00:00:20,530 E eu nunca vou voltar novamente, porque Deixei minhas coisas sozinha, 6 00:00:20,530 --> 00:00:23,950 como, cinco minutos e alguém roubou meu computador e meu 7 00:00:23,950 --> 00:00:26,050 telefone da minha mochila. 8 00:00:26,050 --> 00:00:28,780 O que significa que eu tenho que voltar, e em seguida, menos de uma semana depois 9 00:00:28,780 --> 00:00:30,220 ele foi roubado novamente. 10 00:00:30,220 --> 00:00:31,570 >> E então ele ficou ligado - 11 00:00:31,570 --> 00:00:34,540 Find My iPhone continua ser inúteis. 12 00:00:34,540 --> 00:00:37,340 Então eu continuar a encorajar você não usá-lo. 13 00:00:37,340 --> 00:00:42,270 Descobriu-se em uma vez, e foi no MIT, uns 15 minutos depois, ea pessoa 14 00:00:42,270 --> 00:00:45,770 chamado este número de telefone, que mostrou no meu registo de chamadas AT & T. 15 00:00:45,770 --> 00:00:48,830 >> Então eu fui em linha, chamado de que o telefone número, e foi direto para este 16 00:00:48,830 --> 00:00:50,540 atendedor de chamadas em espanhol. 17 00:00:50,540 --> 00:00:52,520 E eu não ter ouvido falar dele desde então. 18 00:00:52,520 --> 00:00:54,800 Então eu tive que começar um novo computador e telefone. 19 00:00:54,800 --> 00:00:55,150 Eu sei. 20 00:00:55,150 --> 00:00:56,326 É. 21 00:00:56,326 --> 00:01:00,110 Mas se vocês querem lascar na minha fundo de computador, depois disso, é por isso que 22 00:01:00,110 --> 00:01:01,030 Pedi-lhe aqui. 23 00:01:01,030 --> 00:01:02,280 Brincadeirinha. 24 00:01:02,280 --> 00:01:04,239 25 00:01:04,239 --> 00:01:07,420 Mas isso foi muito triste e traumático. 26 00:01:07,420 --> 00:01:10,700 >> Mas é tudo para trás agora, e foi por isso o set-p 8 demorou tanto tempo, porque 27 00:01:10,700 --> 00:01:12,480 Eu não tinha um computador. 28 00:01:12,480 --> 00:01:13,730 E alguém roubou. 29 00:01:13,730 --> 00:01:16,940 E eu por e-mail, perguntando se eles seria o seu grau-p set 8. 30 00:01:16,940 --> 00:01:18,790 Mas eles disseram que não. 31 00:01:18,790 --> 00:01:20,000 E eu era como, eu posso ter meu computador de volta? 32 00:01:20,000 --> 00:01:21,270 E eles são como, não. 33 00:01:21,270 --> 00:01:22,130 Brincadeirinha. 34 00:01:22,130 --> 00:01:22,930 >> OK. 35 00:01:22,930 --> 00:01:28,140 Esta é a nossa seção final, e eu tenho um par de - nós só temos três 36 00:01:28,140 --> 00:01:29,790 coisas na agenda. 37 00:01:29,790 --> 00:01:31,330 Vamos falar um pouco sobre o guia Q. 38 00:01:31,330 --> 00:01:33,900 Então, nós vamos gastar 15 minutos em uma demonstração legal. 39 00:01:33,900 --> 00:01:36,890 Então vamos todos dizer despedir um ao outro. 40 00:01:36,890 --> 00:01:41,460 Você realmente não precisa de seus computadores ou uma caneta ou um papel para tomar notas, ou 41 00:01:41,460 --> 00:01:42,410 acompanhar. 42 00:01:42,410 --> 00:01:45,620 Então eu suponho que, se você tem o seu computador , então você está no Facebook. 43 00:01:45,620 --> 00:01:46,530 Basta dizer. 44 00:01:46,530 --> 00:01:49,650 A menos que você está preenchendo o Guia de Q, o qual é em primeiro lugar. 45 00:01:49,650 --> 00:01:50,690 >> O guia Q está aberta. 46 00:01:50,690 --> 00:01:53,520 Você já teve um e-mail sobre isso. 47 00:01:53,520 --> 00:01:56,930 Uma vez que todas as coisas Q é submetida ao final do ano, eu recebo todas as 48 00:01:56,930 --> 00:02:03,710 Comentários Q nos escores de todos que escolhe para me dar feedback. 49 00:02:03,710 --> 00:02:04,810 E assim, quando você vai no Q - 50 00:02:04,810 --> 00:02:07,440 Eu não sei se você pode fazer isso, Jeff, porque você é estudante e extensão. 51 00:02:07,440 --> 00:02:12,730 Mas quando você vai no Q, se você não tiver feito isso antes, você escolhe seu 52 00:02:12,730 --> 00:02:14,020 professor, que é David Malan. 53 00:02:14,020 --> 00:02:14,970 Você tem que fazer ele. 54 00:02:14,970 --> 00:02:15,690 >> E então você pode escolher TFs. 55 00:02:15,690 --> 00:02:17,750 E você pode escolher como muitos TFs como você quer. 56 00:02:17,750 --> 00:02:18,990 Mas existem 60 de nós. 57 00:02:18,990 --> 00:02:20,350 Você não tem que pegar todo mundo. 58 00:02:20,350 --> 00:02:23,090 Você pode escolher apenas me, ou apenas escolher um algumas outras pessoas, se você quer, para 59 00:02:23,090 --> 00:02:24,470 dar-lhes feedback também. 60 00:02:24,470 --> 00:02:27,595 E então você obter pontuação em todos estes diferentes eixos, e então você pode sair 61 00:02:27,595 --> 00:02:28,570 lhes feedback. 62 00:02:28,570 --> 00:02:31,520 >> E então, como um mês depois, Vou pegar tudo o que feedback. 63 00:02:31,520 --> 00:02:34,570 E, assim como o feedback que você esteve dando-me ao longo do semestre, eu 64 00:02:34,570 --> 00:02:35,790 ler tudo isso. 65 00:02:35,790 --> 00:02:39,620 E é realmente útil, e ajuda me crescer como professor e como um 66 00:02:39,620 --> 00:02:40,680 indivíduo. 67 00:02:40,680 --> 00:02:43,360 Então, por favor, tome algum tempo para fazê-lo. 68 00:02:43,360 --> 00:02:45,020 Nós só vamos ficar aqui para, assim, 30 minutos. 69 00:02:45,020 --> 00:02:48,090 Então, se você quiser, no final deste, para levar cinco minutos, e basta preencher 70 00:02:48,090 --> 00:02:49,960 o Q, porque não é preciso mais tempo do que isso. 71 00:02:49,960 --> 00:02:53,410 Isso seria maravilhoso, e você também obter suas notas para trás mais rapidamente se 72 00:02:53,410 --> 00:02:54,620 você preencher o Q. 73 00:02:54,620 --> 00:02:56,580 >> Assim, a maioria de vocês têm feito isso antes - 74 00:02:56,580 --> 00:02:58,240 ou não, cerca de metade do que você ter feito isso antes. 75 00:02:58,240 --> 00:03:00,060 Mas se você é um calouro, isso é o que é. 76 00:03:00,060 --> 00:03:01,910 Vai ser o mesmo para todas as classes. 77 00:03:01,910 --> 00:03:02,270 Faça-o. 78 00:03:02,270 --> 00:03:02,900 Leva cinco minutos. 79 00:03:02,900 --> 00:03:07,610 Mas também, se você fizer isso um pouco a sério, essa não é a pior coisa 80 00:03:07,610 --> 00:03:10,270 no mundo, porque eu certamente levar a sério. 81 00:03:10,270 --> 00:03:13,000 >> Então, se você me deixar um rosto sorridente, Eu aprecio isso. 82 00:03:13,000 --> 00:03:17,550 Mas eu também gostaria de receber se você me deixou mais do que um rosto sorridente. 83 00:03:17,550 --> 00:03:18,270 Mas cabe a você. 84 00:03:18,270 --> 00:03:21,540 Eu não posso te dizer - ou como uma grande emoticon cara, com um capital D. Isso seria 85 00:03:21,540 --> 00:03:23,060 ser ainda melhor. 86 00:03:23,060 --> 00:03:27,860 >> OK, isso é tudo que eu tenho para o P. Se você tiver alguma dúvida, você pode pedir 87 00:03:27,860 --> 00:03:29,370 me, mas bastante auto-explicativo. 88 00:03:29,370 --> 00:03:31,090 Assim, por favor, preencha-o. 89 00:03:31,090 --> 00:03:34,390 Eu realmente aprecio isso, e isso significa muito para mim. 90 00:03:34,390 --> 00:03:38,910 >> OK, é isso que nós vamos passar 15 minutos passando. 91 00:03:38,910 --> 00:03:39,800 Vou mostrar-lhe algum código. 92 00:03:39,800 --> 00:03:42,080 Eu acho que isso é muito legal, e isso me deixou mais 93 00:03:42,080 --> 00:03:43,810 excitado em ciência da computação. 94 00:03:43,810 --> 00:03:46,480 Então eu espero que ele vai fazer o mesmo para todos vocês. 95 00:03:46,480 --> 00:03:51,760 >> Vamos abrir - e tudo isso código eu vou mandar para você mais tarde. 96 00:03:51,760 --> 00:03:52,680 Mas nós apenas estamos indo para abrir - 97 00:03:52,680 --> 00:03:54,310 Estou no meu terminal - 98 00:03:54,310 --> 00:03:56,810 vamos abrir este programa chamado [? MySum. ?] 99 00:03:56,810 --> 00:04:01,290 100 00:04:01,290 --> 00:04:02,540 >> Qualquer pessoa pode ler isso, ou devo torná-lo maior? 101 00:04:02,540 --> 00:04:07,670 102 00:04:07,670 --> 00:04:13,040 Alguém pode me dizer o que este código vai fazer quando eu executá-lo, ou o que esta 103 00:04:13,040 --> 00:04:14,320 programa vai fazer quando eu executá-lo? 104 00:04:14,320 --> 00:04:30,710 105 00:04:30,710 --> 00:04:32,400 >> [? Avi,?] O que você acha ele vai fazer? 106 00:04:32,400 --> 00:04:33,335 Concluir mastigação. 107 00:04:33,335 --> 00:04:35,033 Você não deve falar com a boca aberta. 108 00:04:35,033 --> 00:04:38,330 109 00:04:38,330 --> 00:04:42,860 >> AUDIÊNCIA: Será que tomar um monte de argumentos, encontrar soma deles retornando 110 00:04:42,860 --> 00:04:45,285 soma, em seguida, imprimi-lo? 111 00:04:45,285 --> 00:04:53,045 Ou leva em dois argumentos, e em seguida, ele faz [inaudível]. 112 00:04:53,045 --> 00:04:56,460 E então ela mostra o que quer os resultados são. 113 00:04:56,460 --> 00:04:58,100 >> SPEAKER: Close, muito perto. 114 00:04:58,100 --> 00:04:59,840 Alguém quer adicionar [? Avi o que?] disse? 115 00:04:59,840 --> 00:05:04,830 116 00:05:04,830 --> 00:05:07,293 Você precisa dar a este programa quaisquer argumentos de linha de comando? 117 00:05:07,293 --> 00:05:09,145 >> AUDIÊNCIA: Não. 118 00:05:09,145 --> 00:05:09,610 >> COLUNA: Não. 119 00:05:09,610 --> 00:05:11,250 O que acontece se você não dá-la quaisquer argumentos de linha de comando? 120 00:05:11,250 --> 00:05:12,500 Eu só escrevo dot MySum barra. 121 00:05:12,500 --> 00:05:15,145 122 00:05:15,145 --> 00:05:16,630 >> AUDIÊNCIA: 1 mais 2 é igual a 3. 123 00:05:16,630 --> 00:05:17,250 >> SPEAKER: 1 mais 2 é igual a 3. 124 00:05:17,250 --> 00:05:18,570 E vai imprimir isso. 125 00:05:18,570 --> 00:05:19,450 Isto é exatamente correto. 126 00:05:19,450 --> 00:05:21,370 Você vai ver que impressão f linha na parte inferior. 127 00:05:21,370 --> 00:05:23,450 Vai imprimir a, b, e em seguida, a soma de a e b. 128 00:05:23,450 --> 00:05:26,360 E eu acho que você assume que soma funciona corretamente. 129 00:05:26,360 --> 00:05:28,120 Boa suposição. 130 00:05:28,120 --> 00:05:32,250 >> OK, eo que acontece se eu dar-lhe o argumento? 131 00:05:32,250 --> 00:05:33,010 [? Manu? ?] 132 00:05:33,010 --> 00:05:36,230 >> AUDIÊNCIA: Vai adicionar o que o primeiro argumento é o de b. 133 00:05:36,230 --> 00:05:37,150 Ou a 2, desculpe. 134 00:05:37,150 --> 00:05:38,480 >> COLUNA: Certo, para 2. 135 00:05:38,480 --> 00:05:42,470 Alguém sabe o que strtol faz? 136 00:05:42,470 --> 00:05:43,960 É basicamente atoi. 137 00:05:43,960 --> 00:05:47,240 Atoi é na verdade uma versão de fantasia de - 138 00:05:47,240 --> 00:05:49,600 ou uma versão mais simples do strtol. 139 00:05:49,600 --> 00:05:51,790 Mas ele realmente usa strtol. 140 00:05:51,790 --> 00:05:54,610 141 00:05:54,610 --> 00:05:58,010 E eu descobri isso porque eu queria algo como atoi, e então quando eu 142 00:05:58,010 --> 00:06:01,110 se atoi, eu li aqui. 143 00:06:01,110 --> 00:06:04,380 E eu encontrei "este comportamento é o mesmo que "strtol. 144 00:06:04,380 --> 00:06:06,850 Então, é basicamente para atoi todos os efeitos. 145 00:06:06,850 --> 00:06:09,320 E você vê que eu mesmo usar nulo e 10. 146 00:06:09,320 --> 00:06:14,390 >> Isso realmente permite que você leve uma corda, e transformá-lo em um número, e escolher 147 00:06:14,390 --> 00:06:15,970 que base você quiser fazê-lo dentro 148 00:06:15,970 --> 00:06:17,370 Portanto, esta é a base 10 aqui. 149 00:06:17,370 --> 00:06:20,455 Eu poderia ter feito base de dois para decimal, base 16 para hexadecimal. 150 00:06:20,455 --> 00:06:22,090 É muito legal. 151 00:06:22,090 --> 00:06:25,860 Mas short longo da história, isso leva dois números e adiciona-los juntos. 152 00:06:25,860 --> 00:06:29,260 >> Então, vamos executá-lo. 153 00:06:29,260 --> 00:06:32,560 E você também vai notar, há algumas coisas - 154 00:06:32,560 --> 00:06:37,830 então eu tenho um makefile bem aqui, e Se você abrir-se que, algumas coisas 155 00:06:37,830 --> 00:06:39,270 você notará são diferentes. 156 00:06:39,270 --> 00:06:42,370 Em particular, este argumento aqui, você provavelmente 157 00:06:42,370 --> 00:06:43,010 não vi isso antes. 158 00:06:43,010 --> 00:06:45,770 Geralmente, nós compilamos as coisas com traço zero, zero. 159 00:06:45,770 --> 00:06:51,500 Traço zero, zero, significa não fazer qualquer otimizações, compilador. 160 00:06:51,500 --> 00:06:54,950 Não tente fazer nada extravagante, ou fazer qualquer coisa funcionar mais rapidamente, ou obter 161 00:06:54,950 --> 00:06:56,530 livrar de variáveis ​​que são necessárias. 162 00:06:56,530 --> 00:06:58,080 Não otimizar este código em tudo, 163 00:06:58,080 --> 00:07:00,110 >> Estou pedindo de terceiro nível otimização. 164 00:07:00,110 --> 00:07:02,580 Então eu estou pedindo compilador para fazer uma série de otimizações. 165 00:07:02,580 --> 00:07:05,870 Você pode mudar isso no makefile quando você tem esse código, se você quiser 166 00:07:05,870 --> 00:07:07,190 ver coisas diferentes. 167 00:07:07,190 --> 00:07:08,660 Que vamos mostrar em um segundo. 168 00:07:08,660 --> 00:07:12,080 Então, corremos o meu soma 1 mais 2 mais 3. 169 00:07:12,080 --> 00:07:13,445 Alguém me dê dois argumentos. 170 00:07:13,445 --> 00:07:17,221 171 00:07:17,221 --> 00:07:18,210 >> AUDIÊNCIAS: 4 e 5. 172 00:07:18,210 --> 00:07:18,966 >> SPEAKER: 4 e 5. 173 00:07:18,966 --> 00:07:19,900 Obrigado. 174 00:07:19,900 --> 00:07:20,860 Grande, ele funciona. 175 00:07:20,860 --> 00:07:25,700 Quais são alguns outros bons argumentos para tentar, para se certificar de que isso funciona? 176 00:07:25,700 --> 00:07:27,050 Qualquer um? 177 00:07:27,050 --> 00:07:27,430 >> AUDIÊNCIA: 0. 178 00:07:27,430 --> 00:07:29,210 >> COLUNA: 0 e? 179 00:07:29,210 --> 00:07:31,010 >> AUDIÊNCIA: Negativo 3. 180 00:07:31,010 --> 00:07:32,040 >> SPEAKER: Ele funciona. 181 00:07:32,040 --> 00:07:33,670 Mas aqueles eram boas escolhas. 182 00:07:33,670 --> 00:07:36,600 OK, então vamos voltar aqui. 183 00:07:36,600 --> 00:07:38,540 Este é mysum.c. 184 00:07:38,540 --> 00:07:42,440 Você vai notar que há também algo chamado sumfunction.c. 185 00:07:42,440 --> 00:07:48,110 E isso, diz, oh, há algo definido em sumfunction.c. 186 00:07:48,110 --> 00:07:51,480 Eu não incluir esse arquivo aqui porque eu não preciso. 187 00:07:51,480 --> 00:07:54,840 Mas eu vinculá-lo em quando eu compilo, que você notou. 188 00:07:54,840 --> 00:07:57,380 >> Vamos ir para cima. 189 00:07:57,380 --> 00:08:02,880 Vimos quando compilado MySum, certo lá, nós ligado no binário de 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 E eu não preciso de o arquivo de cabeçalho porque, é claro, há o 193 00:08:08,470 --> 00:08:09,240 declaração da função. 194 00:08:09,240 --> 00:08:12,200 Então acentuada incluem normalmente apenas coloca em uma declaração de função. 195 00:08:12,200 --> 00:08:13,730 Aqui eu só colocá-lo em linha reta no código. 196 00:08:13,730 --> 00:08:16,370 E assim que eu preciso fazer é o elo no binário, o que eu faço. 197 00:08:16,370 --> 00:08:19,950 >> Algum palpite para o que é em sumfunction.c? 198 00:08:19,950 --> 00:08:21,950 O código que eu escrevi em sumfunction.c? 199 00:08:21,950 --> 00:08:25,445 200 00:08:25,445 --> 00:08:26,695 >> AUDIÊNCIA: [inaudível]. 201 00:08:26,695 --> 00:08:29,460 202 00:08:29,460 --> 00:08:30,630 >> SPEAKER: Algum palpite? 203 00:08:30,630 --> 00:08:30,940 Sim? 204 00:08:30,940 --> 00:08:33,710 >> Audiência: penso, define alguns [inaudível]. 205 00:08:33,710 --> 00:08:33,975 >> Speaker: Sim. 206 00:08:33,975 --> 00:08:37,650 Então eu faço gravação int soma int a. 207 00:08:37,650 --> 00:08:41,120 Escrevo esta linha, e então eu tenho aberto chaveta, fechou chaveta. 208 00:08:41,120 --> 00:08:46,160 O que você acha que eu escrevo dentro aqueles chaves, dentro dessa função? 209 00:08:46,160 --> 00:08:46,600 Sim? 210 00:08:46,600 --> 00:08:48,150 >> AUDIÊNCIA: Return é igual a um. 211 00:08:48,150 --> 00:08:50,010 >> PROCESSADOR: Isso é realmente um bom palpite. 212 00:08:50,010 --> 00:08:51,720 Quem pensa que [? Manu?] Está certo? 213 00:08:51,720 --> 00:08:54,122 Diz retornar a mais b. 214 00:08:54,122 --> 00:08:55,860 OK, não todos. 215 00:08:55,860 --> 00:08:56,520 [? Akshar,?] 216 00:08:56,520 --> 00:08:57,390 você também? 217 00:08:57,390 --> 00:09:00,430 Você tem certeza? 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 O quê? 221 00:09:10,050 --> 00:09:11,662 >> AUDIÊNCIA: Você digitou errado. 222 00:09:11,662 --> 00:09:13,000 >> COLUNA: Não, eu não fiz. 223 00:09:13,000 --> 00:09:13,966 Sim, apenas brincando. 224 00:09:13,966 --> 00:09:15,300 Você está certo. 225 00:09:15,300 --> 00:09:15,930 Isso é exatamente o que diz. 226 00:09:15,930 --> 00:09:17,110 É voltar a mais b. 227 00:09:17,110 --> 00:09:18,570 Isso faz muito sentido. 228 00:09:18,570 --> 00:09:20,240 >> OK, vamos voltar aqui. 229 00:09:20,240 --> 00:09:21,490 Vemos como o cabeçalho - 230 00:09:21,490 --> 00:09:24,540 231 00:09:24,540 --> 00:09:25,660 esse é o tipo de retorno. 232 00:09:25,660 --> 00:09:29,100 Lembre-se, nós vimos que um dia, o tipo de retorno da função, mas vai 233 00:09:29,100 --> 00:09:30,160 antes do nome da função int. 234 00:09:30,160 --> 00:09:31,560 Aqui, eu tenho escrito int. 235 00:09:31,560 --> 00:09:35,680 O que você acha que vai acontecer se neste função, eu não escrever int, mas 236 00:09:35,680 --> 00:09:38,270 Eu escrevo sem sinal? 237 00:09:38,270 --> 00:09:41,050 A diferença, é claro, que ser não assinado representa apenas positivo 238 00:09:41,050 --> 00:09:43,620 números inteiros, e pode ser int positivo ou negativo. 239 00:09:43,620 --> 00:09:45,450 >> Então eu mudei o retorno tipo desta função. 240 00:09:45,450 --> 00:09:49,370 Este código não corresponde este tipo de retorno aqui. 241 00:09:49,370 --> 00:09:50,925 O que você acha que vai acontecer quando eu compilar? 242 00:09:50,925 --> 00:09:53,840 243 00:09:53,840 --> 00:09:56,240 Você deve gritar comigo. 244 00:09:56,240 --> 00:09:57,700 Sem gritos. 245 00:09:57,700 --> 00:10:00,050 >> E quando eu executo o programa? 246 00:10:00,050 --> 00:10:05,810 Vamos fazer antes 0 negative 3 ou negativo 1. 247 00:10:05,810 --> 00:10:10,180 Ele ainda funciona, mesmo que eu estou dizendo ele está retornando um inteiro sem sinal. 248 00:10:10,180 --> 00:10:12,060 É claro que não está retornando um inteiro sem sinal. 249 00:10:12,060 --> 00:10:13,520 Ele está retornando um inteiro assinado. 250 00:10:13,520 --> 00:10:16,130 Ele está retornando negativo 1. 251 00:10:16,130 --> 00:10:17,830 OK, isso é estranho. 252 00:10:17,830 --> 00:10:27,030 >> Que tal se eu entrar aqui e fazer isso? 253 00:10:27,030 --> 00:10:29,700 Então eu mudei tudo de int para unsigned. 254 00:10:29,700 --> 00:10:31,590 Ele só pode ter inteiros sem sinal. 255 00:10:31,590 --> 00:10:33,840 Mas nós ainda acho que vai correr? 256 00:10:33,840 --> 00:10:35,652 >> AUDIÊNCIA: sim. 257 00:10:35,652 --> 00:10:37,270 >> SPEAKER: Vai. 258 00:10:37,270 --> 00:10:39,410 Isso é loucura. 259 00:10:39,410 --> 00:10:43,140 E nós passamos em uma atribuído claramente inteiro, podemos passar dois assinaram 260 00:10:43,140 --> 00:10:46,280 inteiro, ele ainda funciona. 261 00:10:46,280 --> 00:10:52,150 >> OK, alguma idéia de por que ele ainda funciona, ou o que está acontecendo? 262 00:10:52,150 --> 00:10:53,368 Sim, Jeff. 263 00:10:53,368 --> 00:10:56,296 >> AUDIÊNCIA: Tem alguma coisa a ver com sua otimização que você 264 00:10:56,296 --> 00:10:57,760 destaque. 265 00:10:57,760 --> 00:10:58,210 >> COLUNA: Não. 266 00:10:58,210 --> 00:11:00,570 Poderíamos mudar a otimização, ele continuaria a trabalhar. 267 00:11:00,570 --> 00:11:02,240 Eu posso fazer isso por você, mas - 268 00:11:02,240 --> 00:11:02,930 >> AUDIÊNCIA: Vou levar a sua palavra para ela. 269 00:11:02,930 --> 00:11:03,690 >> COLUNA: Yeah. 270 00:11:03,690 --> 00:11:09,690 Se você abrir o makefile bem aqui, Mudei a otimização. 271 00:11:09,690 --> 00:11:11,570 Assim você pode fazer traço zero, zero. 272 00:11:11,570 --> 00:11:12,820 Ele ainda vai funcionar. 273 00:11:12,820 --> 00:11:16,839 274 00:11:16,839 --> 00:11:20,280 Outros pensamentos? 275 00:11:20,280 --> 00:11:22,600 >> Vocês todos devem trabalhar, de modo por que você espera que ele funcione? 276 00:11:22,600 --> 00:11:31,210 277 00:11:31,210 --> 00:11:32,150 Não? 278 00:11:32,150 --> 00:11:33,660 Silêncio. 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 Eu tenho que esperar sete segundos porque eu fiz uma pergunta. 282 00:11:41,650 --> 00:11:44,190 283 00:11:44,190 --> 00:11:48,660 >> Então, a coisa legal sobre C, e você tem provavelmente experimentado antes - você 284 00:11:48,660 --> 00:11:50,260 pode não ter, isso pode a primeira vez. 285 00:11:50,260 --> 00:11:57,030 Mas, como todos sabem, quando eu escrevo algo em C, ele não salva como 286 00:11:57,030 --> 00:11:57,760 esta no computador. 287 00:11:57,760 --> 00:11:59,440 É salvo como uns e zeros. 288 00:11:59,440 --> 00:12:02,970 Vai de código C para código de montagem. 289 00:12:02,970 --> 00:12:09,460 >> Alguém viu código de montagem antes, código de montagem da máquina? 290 00:12:09,460 --> 00:12:10,630 Nós vamos olhar para em um segundo. 291 00:12:10,630 --> 00:12:12,040 Vai de código C para código de montagem. 292 00:12:12,040 --> 00:12:13,755 E vocês sabem os estágios de compilação. 293 00:12:13,755 --> 00:12:17,410 Você tinha que memorizar que, para um questionário, e, em seguida, escrevê-lo em teste zero. 294 00:12:17,410 --> 00:12:18,240 A maioria das pessoas entendeu errado. 295 00:12:18,240 --> 00:12:19,760 Eu acho que vocês acertou em cheio. 296 00:12:19,760 --> 00:12:22,880 >> Mas, vocês são a melhor parte para testes, por sinal. 297 00:12:22,880 --> 00:12:25,210 O que é incrível. 298 00:12:25,210 --> 00:12:25,910 Ele não vai te machucar. 299 00:12:25,910 --> 00:12:26,900 Não se preocupe. 300 00:12:26,900 --> 00:12:28,800 Mas é muito legal. 301 00:12:28,800 --> 00:12:29,660 Bom trabalho. 302 00:12:29,660 --> 00:12:32,870 >> Então, ele vai para a linguagem assembly, e em seguida, ele vai para uns e zeros. 303 00:12:32,870 --> 00:12:35,500 E os uns e zeros são guardados no computador, e isso é o que salva em 304 00:12:35,500 --> 00:12:38,340 o a.out, ou neste caso, o arquivo executável. 305 00:12:38,340 --> 00:12:41,040 E o computador executa uns e zeros. 306 00:12:41,040 --> 00:12:41,670 Certo? 307 00:12:41,670 --> 00:12:43,890 Nós aprendemos isso antes. 308 00:12:43,890 --> 00:12:47,490 >> Então, a coisa legal é que esta sem sinal idéia, a idéia de tipos de ints não assinado, 309 00:12:47,490 --> 00:12:50,490 et cetera, et cetera, que é aqui na linguagem C. 310 00:12:50,490 --> 00:12:51,110 Aqueles existir. 311 00:12:51,110 --> 00:12:53,770 Mas os tipos não existem no os uns e zeros. 312 00:12:53,770 --> 00:12:57,110 Tipos nem sequer existe de verdade em o nível de linguagem de montagem. 313 00:12:57,110 --> 00:13:00,075 Então, isso é algo que existe em C mundo, mas não existe no computador 314 00:13:00,075 --> 00:13:01,640 mundo ou o mundo do processador. 315 00:13:01,640 --> 00:13:04,660 Isso é uma abstração que o C língua incluiu, para tornar a nossa 316 00:13:04,660 --> 00:13:06,240 vida mais fácil. 317 00:13:06,240 --> 00:13:09,990 >> Assim, no final do dia, que pode escrever muitas coisas diferentes aqui, e 318 00:13:09,990 --> 00:13:10,700 não faz a diferença. 319 00:13:10,700 --> 00:13:12,060 Porque que só existe no mundo da C. 320 00:13:12,060 --> 00:13:14,100 Não existe na uns e zeros mundo. 321 00:13:14,100 --> 00:13:17,310 E o nosso programa de execução em os uns e zeros mundo. 322 00:13:17,310 --> 00:13:21,170 Então, sua mente claramente não explodido ainda. 323 00:13:21,170 --> 00:13:22,740 Mas eu acho que isso é legal. 324 00:13:22,740 --> 00:13:23,530 Sim, Jeff. 325 00:13:23,530 --> 00:13:27,298 >> AUDIÊNCIA: Então, se em vez de fazendo int, você faz carvão. 326 00:13:27,298 --> 00:13:27,770 E você era - 327 00:13:27,770 --> 00:13:29,311 >> SPEAKER: Vamos fazê-lo em um segundo. 328 00:13:29,311 --> 00:13:32,583 >> AUDIÊNCIA: Porque então você começa uma não assinado que vai de 128 a negativa 329 00:13:32,583 --> 00:13:34,720 127 ou 0 a 255. 330 00:13:34,720 --> 00:13:36,760 >> COLUNA: Então char é problemático. 331 00:13:36,760 --> 00:13:39,460 Alguém sabe por que seria de char problemático, e que seria, na verdade, 332 00:13:39,460 --> 00:13:42,930 mudar as coisas nos mais e zera mundo? 333 00:13:42,930 --> 00:13:44,370 >> AUDIÊNCIA: Devido ao tamanho do caractere. 334 00:13:44,370 --> 00:13:46,200 >> SPEAKER: Tamanho do char é 1. 335 00:13:46,200 --> 00:13:48,260 Então não assinado também é 4 bytes. 336 00:13:48,260 --> 00:13:50,080 Então caractere seria estragar as coisas. 337 00:13:50,080 --> 00:13:55,660 Mas o que é de 4 bytes isso é relacionada com um char? 338 00:13:55,660 --> 00:13:57,820 Ou em que adiciona um adicional - 339 00:13:57,820 --> 00:13:59,760 você pode colocar mais um personagem depois de char. 340 00:13:59,760 --> 00:14:00,200 >> AUDIÊNCIA: Char estrela. 341 00:14:00,200 --> 00:14:01,220 >> SPEAKER: Char estrela tem 4 bytes. 342 00:14:01,220 --> 00:14:02,490 Então, vamos fazer alguma coisa que é uma estrela de char. 343 00:14:02,490 --> 00:14:05,470 344 00:14:05,470 --> 00:14:07,240 >> Então isso provavelmente funcionaria, mas estamos vai fazer alguma coisa, mesmo 345 00:14:07,240 --> 00:14:09,710 mais louco do que isso. 346 00:14:09,710 --> 00:14:10,960 Na minha opinião, mais louco. 347 00:14:10,960 --> 00:14:21,060 348 00:14:21,060 --> 00:14:24,570 >> Eu já escrevi uma função que retorna um ponteiro, e é preciso 349 00:14:24,570 --> 00:14:29,480 ponteiro e um valor sem sinal - vamos alterar esta de volta para int então não sabemos 350 00:14:29,480 --> 00:14:31,250 fazer muitas mudanças ao mesmo tempo. 351 00:14:31,250 --> 00:14:35,370 E tem uma matriz chamado, um índice para a matriz e retorna o 352 00:14:35,370 --> 00:14:35,850 endereço. 353 00:14:35,850 --> 00:14:37,470 Vimos esses operadores antes. 354 00:14:37,470 --> 00:14:43,340 Este, o que você acha que isso vai fazer, em troca, quando eu executá-lo? 355 00:14:43,340 --> 00:14:48,280 356 00:14:48,280 --> 00:14:49,070 O que você acha que vai fazer? 357 00:14:49,070 --> 00:14:50,320 Algum palpite? 358 00:14:50,320 --> 00:14:54,220 359 00:14:54,220 --> 00:14:55,320 >> AUDIÊNCIA: Segfault. 360 00:14:55,320 --> 00:14:55,600 >> COLUNA: O quê? 361 00:14:55,600 --> 00:14:56,660 Segfault? 362 00:14:56,660 --> 00:14:58,520 Isso é um bom palpite. 363 00:14:58,520 --> 00:14:59,430 Tom diz a mesma coisa. 364 00:14:59,430 --> 00:15:02,240 Qualquer outro palpite? 365 00:15:02,240 --> 00:15:05,260 >> Quem pensa que vai fazer a mesma coisa? 366 00:15:05,260 --> 00:15:06,510 Quem pensa que vai segfault? 367 00:15:06,510 --> 00:15:09,350 368 00:15:09,350 --> 00:15:10,230 Ele faz a mesma coisa. 369 00:15:10,230 --> 00:15:11,880 Desculpe. 370 00:15:11,880 --> 00:15:13,860 >> Mas, é claro, nós colocamos em 1 e 2. 371 00:15:13,860 --> 00:15:16,470 E esses são ambos válidos, certo? 372 00:15:16,470 --> 00:15:19,420 Vamos ver, podemos ir para o o segundo lugar de uma matriz. 373 00:15:19,420 --> 00:15:24,010 Mas o que se fez b um número negativo? 374 00:15:24,010 --> 00:15:26,380 Isso é provavelmente um palpite melhor por algo segmento padrão. 375 00:15:26,380 --> 00:15:30,310 376 00:15:30,310 --> 00:15:32,260 Ele ainda funciona. 377 00:15:32,260 --> 00:15:35,020 >> OK, isso agora é loucura. 378 00:15:35,020 --> 00:15:38,350 Esta é a função de soma igualmente válidos. 379 00:15:38,350 --> 00:15:40,470 Isso faz exatamente a mesma coisa como retorno a e b. 380 00:15:40,470 --> 00:15:44,600 Alguém pode explicar por que isso é uma boa Resumindo função, ou por que isso funciona? 381 00:15:44,600 --> 00:15:45,850 O que está acontecendo aqui? 382 00:15:45,850 --> 00:15:49,360 383 00:15:49,360 --> 00:15:55,750 Por que isso faz exatamente o mesmo coisa como a nossa função soma de idade? 384 00:15:55,750 --> 00:15:56,890 [? Akshar,?] 385 00:15:56,890 --> 00:15:58,155 o que está acontecendo? 386 00:15:58,155 --> 00:16:01,540 >> AUDIÊNCIA: Porque quando você tem um um que é um endereço para 387 00:16:01,540 --> 00:16:03,950 a memória local - 388 00:16:03,950 --> 00:16:07,910 e quando você faz o comercial, é vai para esse endereço de memória. 389 00:16:07,910 --> 00:16:13,610 E quando você vai para b, você é do tipo passos que o endereço de memória em movimento, 390 00:16:13,610 --> 00:16:15,550 você está retornando isso. 391 00:16:15,550 --> 00:16:20,083 Então você é realmente, de fato, a adição de um e b [inaudível]. 392 00:16:20,083 --> 00:16:23,300 393 00:16:23,300 --> 00:16:26,222 Onde estão as operações padrão em que o retorno? 394 00:16:26,222 --> 00:16:27,683 Como, onde os parênteses cair? 395 00:16:27,683 --> 00:16:30,610 É o retorno do endereço em um antes ou depois [inaudível]? 396 00:16:30,610 --> 00:16:32,380 >> SPEAKER: Vai índice em b - 397 00:16:32,380 --> 00:16:34,430 ou índice em um - e, em seguida, retornar o endereço. 398 00:16:34,430 --> 00:16:38,800 399 00:16:38,800 --> 00:16:41,340 OK, então se todo mundo entender o que [? Akshar?] 400 00:16:41,340 --> 00:16:45,830 disse, e explicou por que isso funciona? 401 00:16:45,830 --> 00:16:49,430 Eu não, a primeira vez que alguém explicou isso para mim. 402 00:16:49,430 --> 00:16:51,900 Será que alguém gosta de uma imagem para explicar isso? 403 00:16:51,900 --> 00:16:55,320 Vamos tirar uma foto, com sem marcadores, isso é ótimo. 404 00:16:55,320 --> 00:16:57,920 Encontrado algum. 405 00:16:57,920 --> 00:17:03,390 >> Portanto, temos uma matriz que é uma série de caixas. 406 00:17:03,390 --> 00:17:07,160 407 00:17:07,160 --> 00:17:13,710 O primeiro é um índice 0, o índice de 1, 2, 3, 4, ponto, ponto, ponto. 408 00:17:13,710 --> 00:17:15,609 Uma matriz típica. 409 00:17:15,609 --> 00:17:19,540 E além de ter índices, todos eles têm endereços de memória. 410 00:17:19,540 --> 00:17:30,190 Então, vamos dar a este endereço de memória 13, 14, 15, 16, 17, et cetera. 411 00:17:30,190 --> 00:17:32,490 Todo mundo está aqui até agora. 412 00:17:32,490 --> 00:17:35,810 >> Assim, a é um endereço. 413 00:17:35,810 --> 00:17:38,850 O nome de uma matriz, um ponteiro é guardada lá. 414 00:17:38,850 --> 00:17:42,730 É um ponteiro, é um local de memória, para o início da matriz. 415 00:17:42,730 --> 00:17:45,910 Portanto, se esse fosse o array, uma seria um valor de 13. 416 00:17:45,910 --> 00:17:49,110 E, claro, nós podemos dar um qualquer valor que queremos. 417 00:17:49,110 --> 00:17:52,450 Char estrelar um, podemos dar um qualquer endereço de memória que queremos. 418 00:17:52,450 --> 00:17:55,940 Nós podemos dar-lhe 0, podemos dar-lhe negativo 1 - 1 negativo não existe, 419 00:17:55,940 --> 00:17:58,820 então isso é provavelmente problemático, mas você viu que ainda funcionava. 420 00:17:58,820 --> 00:18:03,070 Assim, podemos dar um qualquer número que queremos, qualquer endereço de memória que queremos. 421 00:18:03,070 --> 00:18:08,720 >> Então, int b diz: OK, vá este número de passos para a matriz. 422 00:18:08,720 --> 00:18:13,150 Portanto, se b é igual a 2, e um é igual a 13, estamos no endereço de memória 13. 423 00:18:13,150 --> 00:18:17,330 E nós vamos duas etapas, e por isso que estamos aqui. 424 00:18:17,330 --> 00:18:21,150 E o comercial significa retorno o endereço do local. 425 00:18:21,150 --> 00:18:23,990 E o endereço é, é claro, 15. 426 00:18:23,990 --> 00:18:28,710 Então, nós temos 13 mais 2, ou A mais B, que é 15. 427 00:18:28,710 --> 00:18:29,590 >> A questão é, no entanto - 428 00:18:29,590 --> 00:18:30,250 Sinto muito. 429 00:18:30,250 --> 00:18:34,324 Será que esclarecer as coisas por que isso funciona? 430 00:18:34,324 --> 00:18:36,300 >> AUDIÊNCIA: Por que ele iria trabalhar acontecendo - 431 00:18:36,300 --> 00:18:38,770 assim você pode ter uma matriz e ir a um índice negativo? 432 00:18:38,770 --> 00:18:39,050 >> COLUNA: Certo. 433 00:18:39,050 --> 00:18:40,870 Então fizemos números negativos, de modo que é o - 434 00:18:40,870 --> 00:18:42,770 isso faz sentido, porém, primeiro, [? Avi,?] 435 00:18:42,770 --> 00:18:43,120 para você? 436 00:18:43,120 --> 00:18:48,840 >> AUDIÊNCIA: Sim, eu sou apenas [Inaudível], mas - 437 00:18:48,840 --> 00:18:50,440 >> COLUNA: Sim, este retornaria 15. 438 00:18:50,440 --> 00:18:53,523 Se uma foi 13, e b é 2, isso iria retornar 15. 439 00:18:53,523 --> 00:18:58,160 >> AUDIÊNCIA: Então, a indexação zero não faz se tornar um problema, certo? 440 00:18:58,160 --> 00:19:00,160 Porque você está se movendo a partir de 0. 441 00:19:00,160 --> 00:19:00,470 >> COLUNA: Certo. 442 00:19:00,470 --> 00:19:05,000 Então você está em movimento - por isso, se b é 0, você não iria passar em qualquer lugar. 443 00:19:05,000 --> 00:19:06,330 E você só retornou o endereço - 444 00:19:06,330 --> 00:19:10,830 se b é 0, que é essencialmente retornando o endereço de um arquivo. 445 00:19:10,830 --> 00:19:13,960 Passando em caractere estrela um e retornando o endereço de um está apenas retornando uma, 446 00:19:13,960 --> 00:19:15,860 essencialmente. 447 00:19:15,860 --> 00:19:18,280 >> OK, a pergunta é por que números negativos funciona? 448 00:19:18,280 --> 00:19:21,670 E isso é a coisa muito legal sobre isto, porque este deve segmento padrão. 449 00:19:21,670 --> 00:19:25,110 E seria segfault se fez algo assim. 450 00:19:25,110 --> 00:19:28,050 451 00:19:28,050 --> 00:19:29,300 Digamos, int. 452 00:19:29,300 --> 00:19:34,390 453 00:19:34,390 --> 00:19:39,810 Portanto, este código é idêntico e devem comportar-se de forma idêntica. 454 00:19:39,810 --> 00:19:44,550 Essencialmente, x é uma variável de lixo, e por isso deve se comportar de forma idêntica. 455 00:19:44,550 --> 00:19:46,370 >> Vamos fazer isso - 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 em estrela. 459 00:19:56,040 --> 00:19:59,160 460 00:19:59,160 --> 00:20:02,733 OK, já estamos recebendo erros aqui, porque ele já vai estar com raiva 461 00:20:02,733 --> 00:20:04,610 para mim, porque já sabe o que está por vir. 462 00:20:04,610 --> 00:20:07,060 Em particular, o segundo. 463 00:20:07,060 --> 00:20:09,800 Endereço de memória empilhados associado com uma variável local. 464 00:20:09,800 --> 00:20:14,220 >> Essencialmente, eu não estou indo para compilar isso, e então eu vou fazer para desfazer 465 00:20:14,220 --> 00:20:14,920 o que nós fizemos. 466 00:20:14,920 --> 00:20:19,130 Mas porque nunca está realmente acessando o que está na memória 467 00:20:19,130 --> 00:20:21,930 localização, não vai segfault. 468 00:20:21,930 --> 00:20:26,450 Estamos na verdade nunca olhando para o que está na segunda caixa ou o que está em qualquer caixa 469 00:20:26,450 --> 00:20:28,340 desta matriz. 470 00:20:28,340 --> 00:20:30,980 Estamos apenas dizendo, aqui vai o endereço da coisa que estamos procurando e 471 00:20:30,980 --> 00:20:32,410 retornar esse endereço. 472 00:20:32,410 --> 00:20:35,700 Estamos, na verdade, nunca indo para o disposição de olhar para esse local. 473 00:20:35,700 --> 00:20:39,140 E porque nós nunca tocar a memória, não ficar em apuros. 474 00:20:39,140 --> 00:20:40,760 Nós não temos um segfault. 475 00:20:40,760 --> 00:20:46,225 >> Se tentássemos, mais uma vez, toque que memória, toque o que estava em a ou b - 476 00:20:46,225 --> 00:20:49,940 ou b suporte, e supondo um é 0 e - 477 00:20:49,940 --> 00:20:53,040 se uma é 0, mesmo, que seria muito ruim, porque nós não podemos ir 478 00:20:53,040 --> 00:20:54,090 para baixo todo o caminho até lá. 479 00:20:54,090 --> 00:20:58,250 Se A e B foram ambos 0, e tentamos tocar o que estava lá, então nós 480 00:20:58,250 --> 00:20:59,110 ficar em apuros. 481 00:20:59,110 --> 00:21:02,160 Mas, se não tocamos o que está lá, nós apenas retornar o endereço, é 482 00:21:02,160 --> 00:21:08,300 realmente não vai segfault porque que permite executar essas operações. 483 00:21:08,300 --> 00:21:11,920 Ele só fica com raiva de você, e fica super com raiva, quando você tentar e tocar 484 00:21:11,920 --> 00:21:15,740 a memória real e devolver o que é em que a localização de memória. 485 00:21:15,740 --> 00:21:17,690 >> Será que isso faz sentido? 486 00:21:17,690 --> 00:21:24,820 Isso é apenas uma parte louca de C. Assim, temos um mais destes. 487 00:21:24,820 --> 00:21:27,760 488 00:21:27,760 --> 00:21:29,700 >> Quem acha que isso é legal? 489 00:21:29,700 --> 00:21:30,280 Mais pessoas. 490 00:21:30,280 --> 00:21:31,070 Isso é bom. 491 00:21:31,070 --> 00:21:34,860 OK, este é o nosso último. 492 00:21:34,860 --> 00:21:37,314 E eu gostaria que você me dizer se ou não você acha que isso vai 493 00:21:37,314 --> 00:21:38,564 para fazer exatamente a mesma coisa. 494 00:21:38,564 --> 00:22:06,050 495 00:22:06,050 --> 00:22:07,390 >> Tenho estes escrito em algum lugar. 496 00:22:07,390 --> 00:22:08,640 Eu não estou memorizá-las. 497 00:22:08,640 --> 00:22:33,350 498 00:22:33,350 --> 00:22:42,900 >> Vamos ver, 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 Portanto, este é um array, agora, não uma função. 500 00:22:46,670 --> 00:22:49,640 E é uma matriz porque temos quadrado colchetes, chaves não encaracolado. 501 00:22:49,640 --> 00:22:52,360 E é uma matriz de que tipo? 502 00:22:52,360 --> 00:22:55,540 503 00:22:55,540 --> 00:22:56,862 Qualquer pessoa, hein? 504 00:22:56,862 --> 00:22:57,694 >> AUDIÊNCIA: Seus números hexadecimais? 505 00:22:57,694 --> 00:22:59,650 >> SPEAKER: Mas qual é o tipo C? 506 00:22:59,650 --> 00:23:00,710 Todos eles têm números hexadecimais. 507 00:23:00,710 --> 00:23:01,960 Qual é o tipo C? 508 00:23:01,960 --> 00:23:04,730 509 00:23:04,730 --> 00:23:05,480 Diz-lhe. 510 00:23:05,480 --> 00:23:07,350 >> AUDIÊNCIA: É caracteres não assinados. 511 00:23:07,350 --> 00:23:09,170 >> COLUNA: Certo, caracteres não assinados. 512 00:23:09,170 --> 00:23:13,050 E dois números hexadecimais é um byte. 513 00:23:13,050 --> 00:23:18,540 Então, essas são 1, 2, 3, 4, 5, 6, 7, 8, 9 bytes. 514 00:23:18,540 --> 00:23:21,360 É uma matriz de 9 bytes. 515 00:23:21,360 --> 00:23:25,530 >> OK, você provavelmente já sabe a resposta para esta pergunta. 516 00:23:25,530 --> 00:23:29,840 Mas, o que você acha que vai acontecer quando eu executo isso? 517 00:23:29,840 --> 00:23:34,110 Eu digo, mais uma vez, em mysum.c, Estou esperando uma função 518 00:23:34,110 --> 00:23:36,280 que recebe dois números inteiros. 519 00:23:36,280 --> 00:23:40,265 E eu estou dizendo que em vez soma é um array de caracteres. 520 00:23:40,265 --> 00:23:42,780 521 00:23:42,780 --> 00:23:48,070 O que vai acontecer quando Eu corro. / MySum e fazer? 522 00:23:48,070 --> 00:23:53,230 >> Bem, em primeiro lugar, a maioria de vocês provavelmente concorda que make - oh não, estou brincando. 523 00:23:53,230 --> 00:23:54,746 O que eu fiz de errado? 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 Isso deve ser chaves. 527 00:24:01,160 --> 00:24:02,790 É assim que você inicializar uma matriz. 528 00:24:02,790 --> 00:24:04,040 My bad. 529 00:24:04,040 --> 00:24:07,530 530 00:24:07,530 --> 00:24:11,670 >> Então, nós já vimos antes que os tipos são uma abstração de nível C, e não um 531 00:24:11,670 --> 00:24:12,610 abstração nível do computador. 532 00:24:12,610 --> 00:24:16,360 Assim, a maioria de vocês provavelmente esperava que fazer, ou supondo que ele iria fazer. 533 00:24:16,360 --> 00:24:18,680 Mas o que, quando eu corro. / MySum? 534 00:24:18,680 --> 00:24:19,930 O que vai acontecer? 535 00:24:19,930 --> 00:24:21,790 536 00:24:21,790 --> 00:24:23,422 Algum palpite? 537 00:24:23,422 --> 00:24:25,270 >> AUDIÊNCIA: Vai imprimir uma palavra. 538 00:24:25,270 --> 00:24:26,310 >> SPEAKER: Vai imprimir uma palavra. 539 00:24:26,310 --> 00:24:29,335 Que palavra? 540 00:24:29,335 --> 00:24:32,200 >> AUDIÊNCIA: [inaudível]. 541 00:24:32,200 --> 00:24:33,240 >> SPEAKER: Quaisquer outras suposições? 542 00:24:33,240 --> 00:24:34,000 OK, imprimir uma frase. 543 00:24:34,000 --> 00:24:35,130 Você pode ter qualquer frase. 544 00:24:35,130 --> 00:24:36,240 Esse será seu lado. 545 00:24:36,240 --> 00:24:38,480 Qualquer pessoa que tem um palpite diferente? 546 00:24:38,480 --> 00:24:39,730 Anna, qual o seu palpite? 547 00:24:39,730 --> 00:24:42,675 548 00:24:42,675 --> 00:24:44,615 >> AUDIÊNCIA: Vai imprimir - 549 00:24:44,615 --> 00:24:47,525 550 00:24:47,525 --> 00:24:49,480 duas letras, ou [inaudível] uma letra. 551 00:24:49,480 --> 00:24:51,460 >> COLUNA: Uma letra. 552 00:24:51,460 --> 00:24:53,260 >> AUDIÊNCIA: Posso contar como muitos [inaudível]? 553 00:24:53,260 --> 00:24:55,426 >> SPEAKER: Nine. 554 00:24:55,426 --> 00:24:56,640 Bem, eu estou indo para executá-lo. 555 00:24:56,640 --> 00:24:58,650 Ele faz exatamente a mesma coisa. 556 00:24:58,650 --> 00:25:00,190 Ele adiciona dois números juntos. 557 00:25:00,190 --> 00:25:02,740 Bem, vamos passar os dois argumentos. 558 00:25:02,740 --> 00:25:03,710 Ele não leva argumentos. 559 00:25:03,710 --> 00:25:06,080 Então, eu não sei onde ele poderia possivelmente, obter esses argumentos. 560 00:25:06,080 --> 00:25:07,710 Mas vamos passar a 100 e 0. 561 00:25:07,710 --> 00:25:09,200 E acrescenta 100 e 0. 562 00:25:09,200 --> 00:25:10,220 Isso é loucura. 563 00:25:10,220 --> 00:25:12,280 Acho que sim. 564 00:25:12,280 --> 00:25:14,480 >> Negativo 4, que funciona também. 565 00:25:14,480 --> 00:25:15,650 Você pode fazer o que quiser. 566 00:25:15,650 --> 00:25:17,920 Esta é uma função soma igualmente válidos. 567 00:25:17,920 --> 00:25:19,640 Esta é uma função soma. 568 00:25:19,640 --> 00:25:21,510 Mas, não, você está dizendo que é uma matriz de bytes. 569 00:25:21,510 --> 00:25:23,570 Então o que está acontecendo aqui? 570 00:25:23,570 --> 00:25:27,240 >> Então, mais uma vez, vamos voltar a essa idéia que dissemos no início. 571 00:25:27,240 --> 00:25:32,050 Você vai de código de nível C, para montagem linguagem, para uns e zeros. 572 00:25:32,050 --> 00:25:33,050 Este é hexadecimal. 573 00:25:33,050 --> 00:25:35,780 Mas isso é realmente apenas uma monte de zeros e uns. 574 00:25:35,780 --> 00:25:39,230 Este é de 72 zeros e uns, certo? 575 00:25:39,230 --> 00:25:40,550 72 zeros e uns. 576 00:25:40,550 --> 00:25:42,160 9 bytes. 577 00:25:42,160 --> 00:25:43,740 Cada byte tem 8 bits. 578 00:25:43,740 --> 00:25:44,760 Cada bit é um um ou um zero. 579 00:25:44,760 --> 00:25:45,920 Então, queridos ou 72 zeros. 580 00:25:45,920 --> 00:25:48,780 Acabei de lhes escrito assim - em vez de escrevê-lo fora como um monte de 581 00:25:48,780 --> 00:25:49,730 uns e zeros. 582 00:25:49,730 --> 00:25:53,560 >> Mas isso vai passar de nível C linguagem, a montagem 583 00:25:53,560 --> 00:25:54,620 linguagem, código. 584 00:25:54,620 --> 00:25:59,020 E isso vai imprimir no código, em algum lugar, esses 72 zeros e uns 585 00:25:59,020 --> 00:26:00,910 que eu escrevi aqui. 586 00:26:00,910 --> 00:26:03,610 Então, em algum lugar em que - 587 00:26:03,610 --> 00:26:04,850 vamos por aqui - 588 00:26:04,850 --> 00:26:11,240 em algum lugar MySum, o programa, não são estes 72 zeros e uns que eu 589 00:26:11,240 --> 00:26:14,930 escrito e disse que para escrever. 590 00:26:14,930 --> 00:26:19,331 >> Agora, algum palpite para o que aqueles 72 uns e zeros significa? 591 00:26:19,331 --> 00:26:21,240 >> AUDIÊNCIA: Provavelmente o mesmo coisa como voltar a mais b. 592 00:26:21,240 --> 00:26:22,890 >> SPEAKER: Provavelmente o mesmo coisa como voltar a mais b. 593 00:26:22,890 --> 00:26:23,730 Vamos verificar isso. 594 00:26:23,730 --> 00:26:25,210 Vamos descobrir como eu fiz isso. 595 00:26:25,210 --> 00:26:31,840 >> Então, se você voltar aqui, eu te digo para executar este comando, objdump-S 596 00:26:31,840 --> 00:26:34,290 sumfunction.o. 597 00:26:34,290 --> 00:26:36,230 Vamos executá-lo. objdump - 598 00:26:36,230 --> 00:26:37,990 obj, despejar. 599 00:26:37,990 --> 00:26:39,840 Basicamente ele pode me dar tudo o que eu quero ver. 600 00:26:39,840 --> 00:26:40,840 Ele pode me dar a linguagem assembly. 601 00:26:40,840 --> 00:26:42,730 Ele pode me dar os uns e zeros. 602 00:26:42,730 --> 00:26:43,840 Tem uma tonelada de bandeiras. 603 00:26:43,840 --> 00:26:45,860 Isso é o que nós vamos usar por enquanto. 604 00:26:45,860 --> 00:26:46,980 Dot - 605 00:26:46,980 --> 00:26:48,810 como você pode ver nos slides - 606 00:26:48,810 --> 00:26:53,840 capital de traço S diz: intersperse, código-fonte - 607 00:26:53,840 --> 00:26:58,410 esta linha é de C - com a montagem código e com os uns e zeros. 608 00:26:58,410 --> 00:27:00,350 E nós estamos indo para executar lo em sumfunction.o. 609 00:27:00,350 --> 00:27:01,410 Porque vai ser mais fácil de ver. 610 00:27:01,410 --> 00:27:02,670 Again - hmm? 611 00:27:02,670 --> 00:27:04,700 >> AUDIÊNCIA: Você digitou errado. 612 00:27:04,700 --> 00:27:05,930 >> COLUNA: Mas eu estou indo realmente para limpá-la por um segundo. 613 00:27:05,930 --> 00:27:09,160 Vou primeiro para abrir apenas sumfuntion.o. 614 00:27:09,160 --> 00:27:11,170 >> AUDIÊNCIA: Você soletrou errado na primeira vez. 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 Soma - 618 00:27:15,480 --> 00:27:16,680 que é uma palavra difícil, no entanto. 619 00:27:16,680 --> 00:27:19,050 Você ficaria surpreso. 620 00:27:19,050 --> 00:27:21,560 OK, então isso é sumfunction.o. 621 00:27:21,560 --> 00:27:24,494 622 00:27:24,494 --> 00:27:26,220 Eu não poderia mesmo dizer-lhe. 623 00:27:26,220 --> 00:27:30,250 Há um monte de zeros, claramente muito de zeros, e não há outro 624 00:27:30,250 --> 00:27:31,930 coisas que não é zeros. 625 00:27:31,930 --> 00:27:33,220 Mas a maioria zeros. 626 00:27:33,220 --> 00:27:35,120 Parece que há alguns mais. 627 00:27:35,120 --> 00:27:36,810 Então, claramente, isso é difícil de ler. 628 00:27:36,810 --> 00:27:39,320 Essa é a linguagem binária. 629 00:27:39,320 --> 00:27:40,710 >> Vamos agora abri-lo - 630 00:27:40,710 --> 00:27:50,190 631 00:27:50,190 --> 00:27:52,350 o quê? 632 00:27:52,350 --> 00:27:53,600 O que estou fazendo de errado? 633 00:27:53,600 --> 00:27:56,955 634 00:27:56,955 --> 00:27:58,434 Eu soletrá-lo corretamente? 635 00:27:58,434 --> 00:28:09,865 636 00:28:09,865 --> 00:28:11,120 OK, isso é estranho. 637 00:28:11,120 --> 00:28:37,560 638 00:28:37,560 --> 00:28:40,158 Preciso de um segundo para descobrir o que eu estou fazendo errado. 639 00:28:40,158 --> 00:28:46,030 640 00:28:46,030 --> 00:28:49,310 Isso é um erro. 641 00:28:49,310 --> 00:28:50,560 Isso é estranho. 642 00:28:50,560 --> 00:28:58,080 643 00:28:58,080 --> 00:29:01,800 Ah, é por isso. 644 00:29:01,800 --> 00:29:09,880 >> Eu vou voltar para o nosso inicial um, para que possamos olhar para o 645 00:29:09,880 --> 00:29:10,560 código objeto desta. 646 00:29:10,560 --> 00:29:13,390 Porque não é realmente vai ser qualquer coisa, quando acabamos de colocar o 647 00:29:13,390 --> 00:29:14,640 uns e zeros pol 648 00:29:14,640 --> 00:29:29,000 649 00:29:29,000 --> 00:29:30,200 Lá vamos nós. 650 00:29:30,200 --> 00:29:32,425 OK, então todo mundo pode ver isso. 651 00:29:32,425 --> 00:29:38,130 Esta função, como eu disse, colocar para fora as linhas C - 652 00:29:38,130 --> 00:29:39,060 linhas de código-fonte - 653 00:29:39,060 --> 00:29:41,000 com algumas instruções de montagem. 654 00:29:41,000 --> 00:29:42,760 >> Aqui é a nossa linha de código-fonte. 655 00:29:42,760 --> 00:29:44,910 Aqui está um, aqui é outra. 656 00:29:44,910 --> 00:29:46,540 Aqui é a instrução de montagem. 657 00:29:46,540 --> 00:29:47,820 Isso é o que eles se parecem. 658 00:29:47,820 --> 00:29:49,010 Instruções de montagem - 659 00:29:49,010 --> 00:29:51,530 você pode aprender mais destes se você tomar outras classes de CS, mas eles são 660 00:29:51,530 --> 00:29:53,500 geralmente uma instrução. 661 00:29:53,500 --> 00:29:57,940 E, em seguida, uma fonte e um destino. 662 00:29:57,940 --> 00:30:02,740 >> E então aqui é o código binário que corresponde a esse conjunto 663 00:30:02,740 --> 00:30:04,940 instrução. 664 00:30:04,940 --> 00:30:09,760 Então, como você pode ver, esta função soma, no fim do dia, é de três 665 00:30:09,760 --> 00:30:10,950 instruções de montagem. 666 00:30:10,950 --> 00:30:12,870 Apenas três. 667 00:30:12,870 --> 00:30:14,180 Um mov - 668 00:30:14,180 --> 00:30:16,740 esta m-o-v representa um Move. 669 00:30:16,740 --> 00:30:17,780 Adicionar stands para Adicionar. 670 00:30:17,780 --> 00:30:20,440 E r-e-t significa Return. 671 00:30:20,440 --> 00:30:22,540 Então, um mov, um add, um retorno. 672 00:30:22,540 --> 00:30:27,970 E estes, por aqui, são os zeros e aquelas que correspondem a esse código. 673 00:30:27,970 --> 00:30:31,100 >> Portanto, aqueles zeros e uns, se sabe aqueles, você pode simplesmente colocar 674 00:30:31,100 --> 00:30:32,140 aqueles em linha reta dentro 675 00:30:32,140 --> 00:30:34,130 E então ele vai fazer o mesma coisa. 676 00:30:34,130 --> 00:30:37,260 Porque, no fim do dia, todos você está executando uma longa série de 677 00:30:37,260 --> 00:30:38,480 zeros e uns. 678 00:30:38,480 --> 00:30:40,700 E é isso que o seu código é realmente. 679 00:30:40,700 --> 00:30:41,770 >> E a razão - 680 00:30:41,770 --> 00:30:43,680 vamos olhar para uma coisa. 681 00:30:43,680 --> 00:30:45,440 Será que eu tenho o makefile aberta? 682 00:30:45,440 --> 00:30:48,510 Então, se nós voltamos para correr zero, zero até aqui - 683 00:30:48,510 --> 00:30:52,220 684 00:30:52,220 --> 00:30:57,300 desculpe, o capital o, de capital o zero, não zero, zero. 685 00:30:57,300 --> 00:31:01,810 E nós fizemos, seria ainda funcionam da mesma forma. 686 00:31:01,810 --> 00:31:05,420 Mas agora você percebe que há um muito mais instruções de montagem. 687 00:31:05,420 --> 00:31:09,090 Isso porque, mais uma vez, perguntei ao compilador não faz nenhuma otimização. 688 00:31:09,090 --> 00:31:12,800 >> Então, eu ainda poderia ter tudo isso zeros e uns, e jogá-los em, 689 00:31:12,800 --> 00:31:13,390 e que iria funcionar. 690 00:31:13,390 --> 00:31:15,850 Acabei de fazer as otimizações, porque é um pouco mais fácil, então, 691 00:31:15,850 --> 00:31:17,310 para escrever essa matriz. 692 00:31:17,310 --> 00:31:19,730 Mas isso iria funcionar tão bem. 693 00:31:19,730 --> 00:31:24,460 >> OK, vamos fazer uma coisa final, porque eu acho que é a parte mais legal. 694 00:31:24,460 --> 00:31:27,410 Mesmo que todo mundo está claramente já soprado e sem palavras. 695 00:31:27,410 --> 00:31:30,520 696 00:31:30,520 --> 00:31:31,670 Nossas mentes estão queimados. 697 00:31:31,670 --> 00:31:32,920 [Inaudível] 698 00:31:32,920 --> 00:31:47,580 699 00:31:47,580 --> 00:31:51,520 >> Portanto, estes são de uma classe CS diferente, que é super interessante, 700 00:31:51,520 --> 00:31:52,970 que tomei - 701 00:31:52,970 --> 00:31:54,140 CS61. 702 00:31:54,140 --> 00:31:55,910 Eu altamente incentivá-lo a levá-la. 703 00:31:55,910 --> 00:31:58,990 Mas a parte legal sobre esse fato, que coisas são apenas zeros e uns, 704 00:31:58,990 --> 00:32:01,270 são de que tudo está zeros e uns. 705 00:32:01,270 --> 00:32:05,330 >> Assim, você pode ter um arquivo que tem o zeros corretas e que você quer 706 00:32:05,330 --> 00:32:10,390 em algum lugar nele, e usar essa seção de zeros e uns em função soma. 707 00:32:10,390 --> 00:32:11,480 >> O que quero dizer com isso? 708 00:32:11,480 --> 00:32:15,755 Quer dizer que você pode ter um arquivo de imagem que tem a série correta de zeros e 709 00:32:15,755 --> 00:32:17,120 queridos, que imprimem algo para uma imagem. 710 00:32:17,120 --> 00:32:20,070 E um programa pode interpretar é uma imagem, mas você pode interpretá-lo, se 711 00:32:20,070 --> 00:32:22,040 você quer, como uma função soma. 712 00:32:22,040 --> 00:32:27,010 >> Então, se nós queria abrir, por exemplo, esta imagem. 713 00:32:27,010 --> 00:32:37,440 Vamos, Olá Kitty. 714 00:32:37,440 --> 00:32:38,810 Imagem pouco maravilhoso. 715 00:32:38,810 --> 00:32:42,260 Aqui há essa seqüência de zeros e uns. 716 00:32:42,260 --> 00:32:45,500 Esses 72 zeros e uns Existem nesta imagem. 717 00:32:45,500 --> 00:32:47,695 >> Então, o que eu posso fazer, então, é escrever - 718 00:32:47,695 --> 00:32:50,510 719 00:32:50,510 --> 00:32:51,760 Eu tenho que lembrar onde eles estão. 720 00:32:51,760 --> 00:32:54,550 721 00:32:54,550 --> 00:32:55,720 Eu vou encontrar isso em um segundo. 722 00:32:55,720 --> 00:32:57,840 Mas o que fazemos - 723 00:32:57,840 --> 00:32:59,440 deixe-me saber onde eles estão. 724 00:32:59,440 --> 00:33:00,020 Um segundo. 725 00:33:00,020 --> 00:33:01,270 Vamos fazer - 726 00:33:01,270 --> 00:33:05,800 727 00:33:05,800 --> 00:33:07,240 >> AUDIÊNCIA: [inaudível]. 728 00:33:07,240 --> 00:33:08,490 >> SPEAKER: Obrigado. 729 00:33:08,490 --> 00:33:24,240 730 00:33:24,240 --> 00:33:28,740 Então, se nós executarmos este programa, que em vez lê um arquivo, então ele vai 731 00:33:28,740 --> 00:33:33,160 a este índice no arquivo. 732 00:33:33,160 --> 00:33:35,500 E então, mais uma vez, assim como MySum, toma dois números. 733 00:33:35,500 --> 00:33:41,410 Podemos acrescentar números exatamente o mesmo que estávamos fazendo antes, que vai para 734 00:33:41,410 --> 00:33:44,850 mostrar como o facto de, no final do dia, todas essas coisas são 735 00:33:44,850 --> 00:33:45,350 zeros e uns. 736 00:33:45,350 --> 00:33:48,170 E é exatamente como você escolhe interpretá-los. 737 00:33:48,170 --> 00:33:50,770 >> E se você realmente olhar nesta imagem - 738 00:33:50,770 --> 00:33:52,930 vamos ampliar um pouco. 739 00:33:52,930 --> 00:33:53,720 Todos podem ver isso? 740 00:33:53,720 --> 00:33:57,570 Você notará aqui, há alguma mancha estranha. 741 00:33:57,570 --> 00:34:00,130 742 00:34:00,130 --> 00:34:02,290 Vamos - esta é a imagem original. 743 00:34:02,290 --> 00:34:04,540 Você notará aqui não há nenhuma mancha. 744 00:34:04,540 --> 00:34:08,420 Esse é o código para a função soma, é que pouco mancha ali mesmo. 745 00:34:08,420 --> 00:34:13,449 >> E, na verdade, mais uma vez, se você aprender mais sobre isso, você vai perceber que este 746 00:34:13,449 --> 00:34:18,270 Olá Kitty, que tem até mesmo uma maior mancha, tem um código que pode levar mais de um 747 00:34:18,270 --> 00:34:21,800 computador se ele não está protegido apropriadamente. 748 00:34:21,800 --> 00:34:23,920 Então você pode realmente executar este. 749 00:34:23,920 --> 00:34:25,380 Eu não estou indo para executá-lo agora. 750 00:34:25,380 --> 00:34:30,600 Mas você pode executar este Olá Imagem Kitty, e pode 751 00:34:30,600 --> 00:34:32,429 assumir o seu computador. 752 00:34:32,429 --> 00:34:35,159 >> Então, isso é tudo para o demo. 753 00:34:35,159 --> 00:34:38,560 Alguém tem alguma dúvida, comentários, preocupações? 754 00:34:38,560 --> 00:34:39,515 Eu acho que este material é fascinante. 755 00:34:39,515 --> 00:34:41,500 Ele me inspirou a aprender mais. 756 00:34:41,500 --> 00:34:44,980 Eu recomendo, se você estiver interessado em tudo no CS, fale comigo. 757 00:34:44,980 --> 00:34:50,250 Mesmo que eu sou um Estudos Sociais Concentrador, eu sou um CS, secundário, de modo 758 00:34:50,250 --> 00:34:52,340 Eu ainda sei um pouco. 759 00:34:52,340 --> 00:34:53,810 Mas eu certamente sabe o que classes que você deve tomar. 760 00:34:53,810 --> 00:34:57,940 Eu acho que é tudo muito interessante, e encorajo-vos, com certeza, a 761 00:34:57,940 --> 00:35:00,330 aprender mais, se você estiver interessado. 762 00:35:00,330 --> 00:35:02,090 >> OK, eu tenho uma coisa final. 763 00:35:02,090 --> 00:35:05,530 764 00:35:05,530 --> 00:35:05,870 Desculpe. 765 00:35:05,870 --> 00:35:06,460 Alguma pergunta? 766 00:35:06,460 --> 00:35:10,010 Eu não parei de esperar se alguém tinha alguma dúvida sobre isso. 767 00:35:10,010 --> 00:35:13,220 768 00:35:13,220 --> 00:35:16,900 >> Tem alguém vai ser um concentrador de CS? 769 00:35:16,900 --> 00:35:18,580 Ou pensar nisso? 770 00:35:18,580 --> 00:35:20,730 Um, dois, três, quatro. 771 00:35:20,730 --> 00:35:21,620 One - apenas um. 772 00:35:21,620 --> 00:35:24,680 Anna é a única mão que é levantou com autoridade. 773 00:35:24,680 --> 00:35:27,640 774 00:35:27,640 --> 00:35:29,390 OK, isso é legal. 775 00:35:29,390 --> 00:35:30,110 Assam, o que você vai fazer? 776 00:35:30,110 --> 00:35:33,220 >> AUDIÊNCIA: [inaudível]. 777 00:35:33,220 --> 00:35:33,910 >> SPEAKER: Constantino? 778 00:35:33,910 --> 00:35:34,990 >> AUDIÊNCIA: Física. 779 00:35:34,990 --> 00:35:36,720 >> COLUNA: Uau, isso foi rápido. 780 00:35:36,720 --> 00:35:40,770 Você teve uma experiência ruim no CS50? 781 00:35:40,770 --> 00:35:42,015 [Inaudível], o que você vai fazer? 782 00:35:42,015 --> 00:35:42,980 >> AUDIÊNCIA: Eu não tenho idéia. 783 00:35:42,980 --> 00:35:43,924 >> SPEAKER: Curt? 784 00:35:43,924 --> 00:35:45,900 >> AUDIÊNCIA: Econ ou CS. 785 00:35:45,900 --> 00:35:46,910 >> SPEAKER: Econ ou CS. 786 00:35:46,910 --> 00:35:47,840 Tom? 787 00:35:47,840 --> 00:35:48,385 >> AUDIÊNCIA: Eu estou fazendo Stat. 788 00:35:48,385 --> 00:35:48,950 >> COLUNA: Stat? 789 00:35:48,950 --> 00:35:50,100 OK. 790 00:35:50,100 --> 00:35:51,000 O que você é? 791 00:35:51,000 --> 00:35:51,310 >> AUDIÊNCIA: Me? 792 00:35:51,310 --> 00:35:51,750 >> COLUNA: Yeah. 793 00:35:51,750 --> 00:35:52,190 >> AUDIÊNCIA: Stat. 794 00:35:52,190 --> 00:35:52,520 >> SPEAKER: Stat. 795 00:35:52,520 --> 00:35:53,500 Oh, lá vai. 796 00:35:53,500 --> 00:35:55,200 Tom, falar com Alden. 797 00:35:55,200 --> 00:35:56,932 Emily, que é você? 798 00:35:56,932 --> 00:35:57,396 >> AUDIÊNCIA: Biomédica - 799 00:35:57,396 --> 00:36:00,178 >> COLUNA: Você está nesta seção? 800 00:36:00,178 --> 00:36:03,040 >> AUDIÊNCIA: Não. 801 00:36:03,040 --> 00:36:04,530 >> SPEAKER: OK, isso é Emily. 802 00:36:04,530 --> 00:36:05,670 Ela é minha amiga. 803 00:36:05,670 --> 00:36:10,080 Claramente não é tão bom de um amigo, porque ela me dá um tempo difícil. 804 00:36:10,080 --> 00:36:13,223 Você poderia ser mais agradável para mim na frente de todos, o meu aluno - 805 00:36:13,223 --> 00:36:14,580 >> AUDIÊNCIA: Eu estou fazendo seu guia Q. 806 00:36:14,580 --> 00:36:14,870 >> COLUNA: Sério? 807 00:36:14,870 --> 00:36:15,510 Uh oh. 808 00:36:15,510 --> 00:36:17,224 OK, você é incrível. 809 00:36:17,224 --> 00:36:19,380 Eu te amo muito. 810 00:36:19,380 --> 00:36:20,600 Oh boy. 811 00:36:20,600 --> 00:36:28,320 >> Enfim, eu, ontem à noite, como tudo - 812 00:36:28,320 --> 00:36:32,220 Eu tenho certeza que todo mundo parece realmente estressado agora. 813 00:36:32,220 --> 00:36:35,970 Eu não sei, são calouros - são Vocês se sentindo estressado? 814 00:36:35,970 --> 00:36:36,855 Estou me sentindo estressado. 815 00:36:36,855 --> 00:36:37,980 Era como se, você vai para casa de Ação de Graças. 816 00:36:37,980 --> 00:36:40,660 Você é como, eu vou fazer todas essas coisas. 817 00:36:40,660 --> 00:36:41,530 >> AUDIÊNCIA: É tão diferente. 818 00:36:41,530 --> 00:36:42,560 >> SPEAKER: Sim, e você voltar. 819 00:36:42,560 --> 00:36:45,290 Jeff, você não se sente assim? 820 00:36:45,290 --> 00:36:46,610 >> AUDIÊNCIA: Eu apenas pensei Eu faria um pouco. 821 00:36:46,610 --> 00:36:48,660 >> SPEAKER: OK, ótimo. 822 00:36:48,660 --> 00:36:51,650 Então eu voltar, e eu não tenho fez nada. 823 00:36:51,650 --> 00:36:53,260 E é tudo super-estressante. 824 00:36:53,260 --> 00:36:55,640 E eu estou preocupado, genuinamente interessado, sobre a existência ou não estou 825 00:36:55,640 --> 00:36:57,380 vai terminar tudo o que eu preciso. 826 00:36:57,380 --> 00:37:01,750 Mas ontem à noite, eu não estava estressado, Eu estava um pouco triste. 827 00:37:01,750 --> 00:37:04,520 Então, eu escrevi no meu diário sobre o que eu estava triste com. 828 00:37:04,520 --> 00:37:08,020 E eu estava triste com esta seção nesta classe a chegar ao fim. 829 00:37:08,020 --> 00:37:11,100 >> Então, eu só ia ler para vocês um pequeno trecho de meu diário, 830 00:37:11,100 --> 00:37:12,950 a partir de ontem à noite. 831 00:37:12,950 --> 00:37:17,400 Posso pegar alguns guardanapos, alguns tecidos de Tom? 832 00:37:17,400 --> 00:37:18,040 Não, eu vou chorar. 833 00:37:18,040 --> 00:37:19,720 Eu não choro. 834 00:37:19,720 --> 00:37:22,030 Não que você não pode chorar, Eu só não chorar. 835 00:37:22,030 --> 00:37:24,040 Eu nem sei se a minha lágrima glândulas funcionou - dutos lacrimais. 836 00:37:24,040 --> 00:37:25,630 Eu não chorei em um longo tempo. 837 00:37:25,630 --> 00:37:26,510 >> AUDIÊNCIA: [inaudível]. 838 00:37:26,510 --> 00:37:28,920 >> SPEAKER: OK, obrigado. 839 00:37:28,920 --> 00:37:30,070 OK, há um pequeno prefácio - 840 00:37:30,070 --> 00:37:32,480 há algumas outras partes do meu diário entrada, porque eu tento cada revista 841 00:37:32,480 --> 00:37:33,600 noite antes de eu chegar para a cama. 842 00:37:33,600 --> 00:37:34,900 Eu recomendo journaling. 843 00:37:34,900 --> 00:37:38,600 Ele ajuda você a processar as coisas, e também ser muito grato do seu dia. 844 00:37:38,600 --> 00:37:43,063 E isso faz com que seja muito mais fácil olhar de volta em seu dia e perceber que 845 00:37:43,063 --> 00:37:44,240 havia muita coisa boa coisas que aconteceram. 846 00:37:44,240 --> 00:37:47,240 Mesmo que se sinta realmente estressado à noite ou muito triste, ou 847 00:37:47,240 --> 00:37:49,022 realmente triste ou cansado. 848 00:37:49,022 --> 00:37:50,272 >> Oh, meu Deus. 849 00:37:50,272 --> 00:37:52,546 850 00:37:52,546 --> 00:37:54,400 Eu nem sei se ele está escrito que bem, porque eu não corrigi-la. 851 00:37:54,400 --> 00:37:55,780 Mas nós vamos lê-lo. 852 00:37:55,780 --> 00:37:59,950 Eu não costumo ler o meu revista, obviamente. 853 00:37:59,950 --> 00:38:03,720 >> "Amanhã, eu vou ensinar o meu último Seção CS50 do ano. 854 00:38:03,720 --> 00:38:05,860 É uma loucura como o tempo voa rápido. 855 00:38:05,860 --> 00:38:09,900 No entanto, estou impressionado com o quão diferente minha experiência no ensino este ano foi 856 00:38:09,900 --> 00:38:11,365 do que quando eu estava no segundo ano. 857 00:38:11,365 --> 00:38:14,120 Para começar, eu definitivamente conhecer o material melhor. 858 00:38:14,120 --> 00:38:16,820 Mas não diga a minha primeira coorte de alunos que. 859 00:38:16,820 --> 00:38:20,030 Mais importante, porém, percebi que a alegria que vem de pé 860 00:38:20,030 --> 00:38:23,160 na frente de uma sala de o que começa como estranhos, mas acaba como, em 861 00:38:23,160 --> 00:38:27,150 menos, amigos do Facebook, é não um acaso do primeiro ano. 862 00:38:27,150 --> 00:38:29,970 Pelo contrário, é de saber que, em alguma maneira, você está ajudando 863 00:38:29,970 --> 00:38:32,980 talentosa, pensativo, agradável, e pessoas apaixonadas aprender um pouco mais 864 00:38:32,980 --> 00:38:34,750 sobre ciência da computação. 865 00:38:34,750 --> 00:38:37,480 >> Você está mudando que lâmpada apenas uma bit em seu soquete, de modo que seja capaz 866 00:38:37,480 --> 00:38:42,120 a brilhar mais forte do que você, ou eles, poderia ter imaginado no início do semestre. 867 00:38:42,120 --> 00:38:45,390 Você está ajudando transformar as carrancas de cabeça para baixo e fazer perguntas que 868 00:38:45,390 --> 00:38:49,240 dar apoio, mas ainda permitir os alunos a se levantar por conta própria. 869 00:38:49,240 --> 00:38:52,190 >> Certamente não é um exagero dizer que esta seção é o meu favorito 870 00:38:52,190 --> 00:38:53,190 parte da semana. 871 00:38:53,190 --> 00:38:57,930 Ou mesmo que eu hesito em dizer, isso é todos, em 5:30 a cada semana, sabendo 872 00:38:57,930 --> 00:39:00,640 que vai ser um caminho muito longo até que nos encontremos novamente. 873 00:39:00,640 --> 00:39:02,740 >> No entanto, eu sou incrivelmente grato a todos os que me deu esta 874 00:39:02,740 --> 00:39:05,010 oportunidade de dar a volta aos outros. 875 00:39:05,010 --> 00:39:07,340 Para David, por sua paciência e confiança. 876 00:39:07,340 --> 00:39:11,040 Para a equipe de filmagem e produção, para fazendo-me olhar um pouco respeitável. 877 00:39:11,040 --> 00:39:15,380 E, mais importante, aos meus alunos, sem os quais eu não teria nenhuma razão para 878 00:39:15,380 --> 00:39:17,890 passar 10 horas tentando descobrir o melhor maneira de chamar a ponteiros, ou estabelecer um 879 00:39:17,890 --> 00:39:20,330 mesa de golfinhos, via JavaScript. 880 00:39:20,330 --> 00:39:22,620 Como sempre, tem sido uma bênção. " 881 00:39:22,620 --> 00:39:25,420 >> Então, com isso, agradecer a vocês. 882 00:39:25,420 --> 00:39:29,000 Vou ver todos vocês na feira CS50, e a maratona hacker, se você for lá. 883 00:39:29,000 --> 00:39:32,020 E se você tiver dúvidas, eu vou ficar ao redor até que não há mais. 884 00:39:32,020 --> 00:39:33,760 Mas eu agradeço a vocês por um ano maravilhoso. 885 00:39:33,760 --> 00:39:37,290 >> [Aplausos] 886 00:39:37,290 --> 00:39:38,540 >> COLUNA: Eu poderia chorar. 887 00:39:38,540 --> 00:39:40,800