1 00:00:00,000 --> 00:00:12,040 >> [MUSIC KUCHEZA] 2 00:00:12,040 --> 00:00:16,460 >> SPIKA 1: zote haki, hii ni CS50, na hii ni mwanzo wa wiki nne, 3 00:00:16,460 --> 00:00:20,420 na kama unaweza kuwa na habari au kusoma, dunia imekuwa na mwisho. 4 00:00:20,420 --> 00:00:23,520 Kwenda pande zote biashara imekuwa maarifa na ufahamu 5 00:00:23,520 --> 00:00:27,100 ya mdudu katika mpango, a lugha ya programu inayoitwa Bash. 6 00:00:27,100 --> 00:00:32,729 Hii imekuwa ya ajabu asili kama Shellshock, au Bash mlango, 7 00:00:32,729 --> 00:00:35,485 lakini makala kama hizi si kawaida. 8 00:00:35,485 --> 00:00:38,807 Na kwa kweli, wengi wao kuleta kumbukumbu ya nyuma ya Heartbleed, 9 00:00:38,807 --> 00:00:41,640 ambayo unaweza kuwa niliona katika vyombo vya habari nyuma spring hii iliyopita, ambayo 10 00:00:41,640 --> 00:00:43,980 ilikuwa vile vile haki makubwa. 11 00:00:43,980 --> 00:00:47,110 Sasa ya wale wa wewe hapa leo, jinsi wengi wenu kuwa, 12 00:00:47,110 --> 00:00:50,330 hata kama wewe hawajui nini ni wote kuhusu, habari za Shellshock? 13 00:00:50,330 --> 00:00:51,370 14 00:00:51,370 --> 00:00:54,245 Zote haki, na jinsi wengi wenu kuwa na kompyuta kwamba ni mazingira magumu? 15 00:00:54,245 --> 00:00:55,680 16 00:00:55,680 --> 00:01:00,250 OK, kuna haja ya kuwa mikono mbali, mbali zaidi up sasa hivi, kwa sababu tutaona. 17 00:01:00,250 --> 00:01:02,580 >> Hebu tuangalie nini kinachoendelea katika vyombo vya habari 18 00:01:02,580 --> 00:01:05,304 na kisha kueleza ni kidogo hapa kwa ajili yetu kitaalam. 19 00:01:05,304 --> 00:01:07,670 20 00:01:07,670 --> 00:01:11,250 >> SPIKA 2: wataalam Usalama na alionya kuwa flaw kubwa inaweza 21 00:01:11,250 --> 00:01:15,650 kuwa juu ya kuathiri mamia ya mamilioni ya watumiaji wa mtandao wa dunia. 22 00:01:15,650 --> 00:01:20,600 Basi nini hasa ni mdudu kwamba imekuwa dubbed Shellshock, na je ni nini? 23 00:01:20,600 --> 00:01:23,720 24 00:01:23,720 --> 00:01:28,910 Naam, Shellshock pia anajulikana kama Bash mdudu, programu ni ushujaa. 25 00:01:28,910 --> 00:01:33,230 Hackers kutumia virusi Scan wanaoishi katika mazingira magumu mifumo ya kuendesha Linux na Unix 26 00:01:33,230 --> 00:01:36,300 mifumo ya uendeshaji na kisha kuambukiza yao. 27 00:01:36,300 --> 00:01:38,730 Bash ni mstari amri shell. 28 00:01:38,730 --> 00:01:43,460 Hii inakuwezesha watumiaji suala amri kuzindua mipango na makala ndani ya programu 29 00:01:43,460 --> 00:01:45,250 na kuandika katika maandishi. 30 00:01:45,250 --> 00:01:49,980 Ni kawaida hutumiwa na programmers, na haipaswi kuwa wazi kwa dunia nzima, 31 00:01:49,980 --> 00:01:51,590 ingawa Shellshock mabadiliko hayo. 32 00:01:51,590 --> 00:01:54,160 33 00:01:54,160 --> 00:01:57,910 >> Naam, worringly, baadhi ya wachambuzi kuonya inaweza kuwa tishio kubwa, 34 00:01:57,910 --> 00:02:01,580 kwa sababu Shellshock inaruhusu kamili udhibiti wa mashine ya kuambukizwa, 35 00:02:01,580 --> 00:02:06,030 ambapo Heartbleed kuruhusiwa tu Hackare na kupeleleza juu ya kompyuta. 36 00:02:06,030 --> 00:02:09,130 Ni hivyo mbaya, ni imekuwa lilipimwa 10 kati ya 10 37 00:02:09,130 --> 00:02:11,900 kwa ukali na ya Taifa ya Mazingira magumu Database. 38 00:02:11,900 --> 00:02:15,530 39 00:02:15,530 --> 00:02:20,015 2/3 ya servrar wote mtandao ni katika hatari, ikiwa ni pamoja na baadhi ya kompyuta Mac. 40 00:02:20,015 --> 00:02:22,760 41 00:02:22,760 --> 00:02:25,600 Naam, kuhakikisha kiraka mifumo yako sasa. 42 00:02:25,600 --> 00:02:29,330 Mtu yeyote mwenyeji tovuti mbio walioathirika mifumo ya uendeshaji 43 00:02:29,330 --> 00:02:31,800 inapaswa kuchukua hatua kama haraka iwezekanavyo. 44 00:02:31,800 --> 00:02:35,390 Mtu yeyote ambaye anaweza kumudu ni lazima kuangalia na ufuatiliaji na mtandao maombi yao 45 00:02:35,390 --> 00:02:37,355 firewalls kuangalia nje kwa ajili ya mashambulizi yoyote. 46 00:02:37,355 --> 00:02:39,979 47 00:02:39,979 --> 00:02:41,770 SPIKA 3: Mbaya kitu ambayo inaweza kutokea ni 48 00:02:41,770 --> 00:02:45,080 kwamba mtu bila kuandika kificho kwamba ingekuwa moja kwa moja kwenda na Scan 49 00:02:45,080 --> 00:02:48,280 mtandao na bila kuathiri wote wa kompyuta hizi. 50 00:02:48,280 --> 00:02:50,710 Na mara moja wao kufanya hivyo, pamoja, jambo baya zaidi waweze kufanya 51 00:02:50,710 --> 00:02:53,300 ni kufuta tu kila kitu, au kufunga maeneo ya chini. 52 00:02:53,300 --> 00:02:55,360 Hivyo tunaweza kuona uharibifu na kwamba hatua ya maoni, 53 00:02:55,360 --> 00:02:58,300 ambapo tunataka kuwa watu malicious ambao tu kuamua kusababisha havoc 54 00:02:58,300 --> 00:03:02,534 kwa kuleta mifumo chini au kufuta files, na mambo kama hayo. 55 00:03:02,534 --> 00:03:05,200 SPIKA 2: Baadhi ya kusema hii ni moja ya vigumu kupima 56 00:03:05,200 --> 00:03:08,080 mende katika miaka, na inaweza kuchukua wiki au hata 57 00:03:08,080 --> 00:03:10,820 miezi kuamua athari yake ya mwisho. 58 00:03:10,820 --> 00:03:12,180 59 00:03:12,180 --> 00:03:15,560 >> SPIKA 1: Basi wote wa hiyo ni kweli, lakini jambo funny ni, karibu wote 60 00:03:15,560 --> 00:03:18,330 ya picha wewe tu kuona, isipokuwa labda keyboard, 61 00:03:18,330 --> 00:03:20,930 ina kitu cha kufanya na mdudu wowote. 62 00:03:20,930 --> 00:03:23,960 Servers na waya na kadhalika, ni aina ya tangentially kuhusiana, 63 00:03:23,960 --> 00:03:27,410 lakini katika msingi ni kweli pretty familiar nini kinaendelea hapa. 64 00:03:27,410 --> 00:03:30,050 Kwa kweli, basi mimi kwenda katika CS50 yetu appliance. 65 00:03:30,050 --> 00:03:32,910 Hebu kwenda mbele na kuongeza dirisha terminal hapa. 66 00:03:32,910 --> 00:03:36,020 Na wewe guys wamekuwa wakitumia huu, au iliyoingia version yake, 67 00:03:36,020 --> 00:03:39,460 katika gedit ili kuandika mipango, aina amri, na kadhalika, 68 00:03:39,460 --> 00:03:43,690 na hii ni kweli, na ina imekuwa kwa wiki, Bash, B-A-S-H. 69 00:03:43,690 --> 00:03:46,890 Hii ni Bourne-tena shell, ambayo ni njia tu dhana ya kusema, 70 00:03:46,890 --> 00:03:50,220 hii ni programu ambayo ina blinking haraka, kwa ufanisi, 71 00:03:50,220 --> 00:03:51,970 kwamba yapo hapo kusubiri kwa ajili ya pembejeo kwa ajili yenu. 72 00:03:51,970 --> 00:03:53,920 Na ni amri line interface kupitia ambayo 73 00:03:53,920 --> 00:03:57,650 nyie wamekuwa kuendesha amri na hatimaye kuandaa na kisha mbio 74 00:03:57,650 --> 00:03:58,400 mipango. 75 00:03:58,400 --> 00:04:01,320 >> Lakini Bash ni pia programu lugha kwa maana zifuatazo. 76 00:04:01,320 --> 00:04:05,460 Unajua kwamba kuna amri kama cd na ls na pia Clang na wengine, 77 00:04:05,460 --> 00:04:09,580 lakini unaweza kufafanua amri yako mwenyewe kwa kutekeleza yao katika Bash. 78 00:04:09,580 --> 00:04:11,420 Sasa sisi siyo kwenda kwenda katika kina kubwa 79 00:04:11,420 --> 00:04:16,089 kama kwa Bash lugha ya programu, lakini kujua, kwa mfano, kwamba kwa wakati huu, 80 00:04:16,089 --> 00:04:17,607 hakuna amri inayoitwa "hello." 81 00:04:17,607 --> 00:04:19,440 Hivyo ni inaweza kupatikana katika moja ya hizi paket. 82 00:04:19,440 --> 00:04:20,856 Ni si imewekwa kwenye kompyuta yangu. 83 00:04:20,856 --> 00:04:21,870 Kuuliza msimamizi wako. 84 00:04:21,870 --> 00:04:26,030 Lakini kama nataka kuwa kuna mpango inayoitwa "hello" katika Bash au haraka yangu, 85 00:04:26,030 --> 00:04:30,810 Mimi unaweza kweli kutumia syntax kwamba kabisa kama C. Ni si sawa kabisa, 86 00:04:30,810 --> 00:04:35,020 lakini inaonekana pretty sawa na kazi, pamoja na kukosa baadhi ya maelezo. 87 00:04:35,020 --> 00:04:38,090 Kitu inaonekana kutokea, lakini sasa kama mimi aina ya "hello," 88 00:04:38,090 --> 00:04:40,960 unaweza kweli kuandika mpango, si katika C, si katika Java, 89 00:04:40,960 --> 00:04:44,280 si katika programu nyingine lugha, lakini katika Bash yenyewe. 90 00:04:44,280 --> 00:04:47,630 >> Sasa muhimu hapa ni kwamba mimi aliandika jina nilitaka kutoa amri hii mpya, 91 00:04:47,630 --> 00:04:50,820 na mabano ni pia ishara ya hii kuwa kazi. 92 00:04:50,820 --> 00:04:54,010 Kama kando, unaweza pia kufanya fun mambo, na kwa kweli, hata juu ya Mac OS, 93 00:04:54,010 --> 00:04:55,620 hii ni programu ya kuitwa Terminal. 94 00:04:55,620 --> 00:04:58,800 Ni huja kujengwa ndani ya mtu yeyote kompyuta ambayo ina Mac katika nafasi hii, 95 00:04:58,800 --> 00:05:03,640 na unaweza kufanya mambo sawa katika Mac OS, lakini unaweza kwenda zaidi ya hapo. 96 00:05:03,640 --> 00:05:07,110 Na hii ni kidogo tangential, lakini ni aina ya furaha. 97 00:05:07,110 --> 00:05:09,715 Mimi nilikuwa aliwakumbusha asubuhi hii, wakati wa kufikiria hili kwa njia ya, 98 00:05:09,715 --> 00:05:13,279 ya mchezo kidogo mimi kutumika kwa kucheza na moja ya CS50 ya TFS wa zamani 99 00:05:13,279 --> 00:05:16,570 ambapo wakati wowote angeweza kutembea mbali na keyboard yake na screen yake unlocked, 100 00:05:16,570 --> 00:05:23,611 Napenda kutekeleza amri kama Haya "kusema hello." 101 00:05:23,611 --> 00:05:26,610 Na sasa wakati wowote yeye akarudi yake keyboard baada ya mimi akalipa screen 102 00:05:26,610 --> 00:05:27,985 na angeweza kukaa chini, kujaribu kufanya baadhi ya kazi, 103 00:05:27,985 --> 00:05:29,250 orodha ya yaliyomo ya directory-- yake 104 00:05:29,250 --> 00:05:29,510 >> [Audio avspelning] 105 00:05:29,510 --> 00:05:30,010 >> -Hello. 106 00:05:30,010 --> 00:05:31,621 107 00:05:31,621 --> 00:05:32,120 Hello. 108 00:05:32,120 --> 00:05:35,030 >> SPIKA 1: Kwa hiyo, katika haki, ilikuwa si kweli "hello." 109 00:05:35,030 --> 00:05:36,894 Ilikuwa ni kawaida kitu sawa na zaidi that-- 110 00:05:36,894 --> 00:05:37,560 [Audio avspelning] 111 00:05:37,560 --> 00:05:37,750 -Beep. 112 00:05:37,750 --> 00:05:39,320 SPIKA 1: --that mimi would-- hivyo kompyuta yake ingekuwa 113 00:05:39,320 --> 00:05:42,170 kuapa saa yake wakati wowote yeye kweli waliketi keyboard yake. 114 00:05:42,170 --> 00:05:46,265 Na haraka sana yeye figured nje ya si kuondoka screen yake unlocked. 115 00:05:46,265 --> 00:05:48,730 Lakini hii inaonyesha aina ya kijinga furaha kwamba wewe 116 00:05:48,730 --> 00:05:50,210 unaweza kuwa na kitu kama Bash. 117 00:05:50,210 --> 00:05:52,770 Lakini ni kidogo zaidi kubwa, kuwa na uhakika, zaidi ya hiyo. 118 00:05:52,770 --> 00:05:57,235 Na kwa kweli, hii ni moja ya mende wengi hatari na ya muda mrefu 119 00:05:57,235 --> 00:05:58,860 ambayo ina kweli hit dunia kimataifa. 120 00:05:58,860 --> 00:06:02,060 Mdudu hii imekuwa karibu kwa baadhi ya miaka 20, 121 00:06:02,060 --> 00:06:05,780 na wewe utakuwa na akampiga katika tu wakati kwa unyenyekevu jamaa yake. 122 00:06:05,780 --> 00:06:07,990 >> Hivyo hii ni mwakilishi amri kwamba kama wewe 123 00:06:07,990 --> 00:06:10,448 wenyewe Mac, literally hivi sasa wakati una mfuniko yako wazi, 124 00:06:10,448 --> 00:06:12,940 unaweza kujaribu kuandika katika kwamba programu inayoitwa Terminal. 125 00:06:12,940 --> 00:06:15,410 Terminal ni chini ya Maombi Utilities-- 126 00:06:15,410 --> 00:06:18,790 kwa mara moja, watumiaji Windows hawana wasiwasi kuhusu threat-- hii hasa 127 00:06:18,790 --> 00:06:22,310 lakini wale wa wewe kwa Macs unaweza aina huu katika dirisha kama mimi itabidi kufanya hapa, 128 00:06:22,310 --> 00:06:24,210 na kama huna aina kwamba katika mpango huu 129 00:06:24,210 --> 00:06:28,830 kuitwa Terminal, kama mimi itabidi kufanya sasa, kama unaweza kuona neno "mazingira magumu," 130 00:06:28,830 --> 00:06:32,200 kompyuta yako ni mazingira magumu na unyonyaji. 131 00:06:32,200 --> 00:06:33,850 >> Sasa je, hiyo kweli maana yake nini? 132 00:06:33,850 --> 00:06:35,870 Na hii ni admittedly baadhi syntax pretty mambo, 133 00:06:35,870 --> 00:06:39,050 lakini hebu angalau kuteka nje baadhi ya mambo ya kuvutia. 134 00:06:39,050 --> 00:06:42,567 Hivyo kuna baadhi syntax kwamba inaonekana kidogo familiar, angalau kutoka C 135 00:06:42,567 --> 00:06:43,950 na programu zaidi kwa ujumla. 136 00:06:43,950 --> 00:06:47,550 Mimi naona baadhi mabano, semicolons, braces curly, na vile, 137 00:06:47,550 --> 00:06:50,820 lakini zinageuka kuwa hii kitu kijinga hapa katika njano 138 00:06:50,820 --> 00:06:53,580 kimsingi ni kazi kwamba hana chochote. 139 00:06:53,580 --> 00:06:57,840 njia COLON kufanya lolote, na semicolon maana kuacha mara moja kufanya chochote. 140 00:06:57,840 --> 00:07:00,250 Hivyo ndani ya hizi braces curly, ukweli 141 00:07:00,250 --> 00:07:02,440 kwamba nina sawa saini kwa upande wa kushoto, hii 142 00:07:02,440 --> 00:07:05,500 kimsingi ni kujenga amri, au variable, 143 00:07:05,500 --> 00:07:09,520 kuitwa x, na kumshirikisha ni kwamba njano kidogo ya code huko. 144 00:07:09,520 --> 00:07:14,040 Hiyo inaweza kuwa kitu kama "echo hello "au" kusema beep "au kitu 145 00:07:14,040 --> 00:07:15,120 sawa na yale. 146 00:07:15,120 --> 00:07:17,780 Lakini taarifa kama macho yako tanga zaidi kwa haki, 147 00:07:17,780 --> 00:07:22,150 kuna zaidi ya mstari huu kuliko tu mwisho wa semicolon. 148 00:07:22,150 --> 00:07:25,160 "Echo katika mazingira magumu," na kisha zaidi ya kwamba kuna hata zaidi. 149 00:07:25,160 --> 00:07:26,530 Mwingine semicolon, bash -c :. 150 00:07:26,530 --> 00:07:28,120 151 00:07:28,120 --> 00:07:34,050 >> Hivyo hadithi muda mfupi, mstari wa kanuni ni 152 00:07:34,050 --> 00:07:36,660 kutosha kwa ajili ya kulazimisha kompyuta hiyo ni 153 00:07:36,660 --> 00:07:39,830 mazingira magumu na kufanya kitu kwamba unataka kufanya, 154 00:07:39,830 --> 00:07:44,290 kwa sababu kuna mdudu katika Bash ambapo ingawa Bash ilitakiwa kuacha 155 00:07:44,290 --> 00:07:48,980 mistari kusoma amri ya haki kuna baada ya maandishi ya njano, 156 00:07:48,980 --> 00:07:52,520 kwa ajili ya 20-plus mwaka mdudu wa zamani, Bash ana kweli imekuwa kusoma 157 00:07:52,520 --> 00:07:56,780 zaidi ya kwamba semicolon na pretty sana kufanya nini ni habari. 158 00:07:56,780 --> 00:07:59,070 >> Basi nini maana ya kwamba hatimaye? 159 00:07:59,070 --> 00:08:01,340 I just alisema "echo hello" au "echo katika mazingira magumu," 160 00:08:01,340 --> 00:08:05,449 lakini nini kama wewe alifanya kitu kweli malicious, kama rm -rf *, 161 00:08:05,449 --> 00:08:07,240 ambayo unaweza si milele typed kabla, 162 00:08:07,240 --> 00:08:08,920 na kusema ukweli pengine lazima si mapema mno, 163 00:08:08,920 --> 00:08:10,700 kwa sababu unaweza kufanya mengi ya uharibifu na hayo. 164 00:08:10,700 --> 00:08:11,210 Kwa nini? 165 00:08:11,210 --> 00:08:12,990 rm anafanya nini, bila shaka? 166 00:08:12,990 --> 00:08:14,270 Kuondosha. 167 00:08:14,270 --> 00:08:15,930 * Nini maana ya? 168 00:08:15,930 --> 00:08:16,430 Yote. 169 00:08:16,430 --> 00:08:18,180 Hivyo ni kinachojulikana kadi ya pori, hivyo ina maana 170 00:08:18,180 --> 00:08:20,410 kufuta kila kitu katika saraka ya sasa. 171 00:08:20,410 --> 00:08:23,379 r kinachotokea kwa maana ya kujirudia, ambayo ina maana kama nini wewe kufuta 172 00:08:23,379 --> 00:08:26,420 ni directory, na ndani ya huko ni files nyingine na directories nyingine, 173 00:08:26,420 --> 00:08:28,950 recursively kupiga mbizi katika huko na kufuta yote. 174 00:08:28,950 --> 00:08:31,040 Na -f ni mbaya zaidi ya wote. 175 00:08:31,040 --> 00:08:32,580 Mtu yeyote kujua nini -f ina maana hapa? 176 00:08:32,580 --> 00:08:33,690 177 00:08:33,690 --> 00:08:34,360 Nguvu. 178 00:08:34,360 --> 00:08:37,830 Hivyo nguvu maana yake, hata kama hii ni wazo mbaya, 179 00:08:37,830 --> 00:08:40,939 kufanya hivyo bila kusababisha mimi kwa ajili ya uthibitisho zaidi. 180 00:08:40,939 --> 00:08:43,230 Hivyo, unajua, sisi kucheka hii, lakini kusema ukweli, mimi pengine 181 00:08:43,230 --> 00:08:44,972 aina hii mara nyingi siku, kwa sababu ukweli 182 00:08:44,972 --> 00:08:47,210 ni ni njia ya haraka sana kufuta rundo zima la mambo ya ajabu. 183 00:08:47,210 --> 00:08:48,590 Lakini hata mimi wamefanya baadhi ya uharibifu. 184 00:08:48,590 --> 00:08:53,100 >> Lakini kama ungekuwa na hila kompyuta ndani ya kufafanua baadhi variable kijinga 185 00:08:53,100 --> 00:08:56,810 au kazi kuitwa x, lakini kisha tricking kompyuta katika utekelezaji 186 00:08:56,810 --> 00:09:00,030 nje ya mipaka ya kwamba kazi, zaidi ya kuwa semicolon, 187 00:09:00,030 --> 00:09:04,430 unaweza kweli hila kompyuta ndani ya utekelezaji wa kitu kama rm -rf 188 00:09:04,430 --> 00:09:07,810 Barua pepe au amri au Copy amri. 189 00:09:07,810 --> 00:09:11,400 Kitu chochote literally unaweza kufanya na kompyuta, kama ni kufuta files, 190 00:09:11,400 --> 00:09:15,350 kujenga files, spamming mtu, kushambulia baadhi server remotely, 191 00:09:15,350 --> 00:09:17,190 kama unaweza kueleza ni na amri, 192 00:09:17,190 --> 00:09:19,120 unaweza hila kompyuta katika kufanya hivyo. 193 00:09:19,120 --> 00:09:21,510 >> Sasa nini mfano wa jinsi gani unaweza kufanya hili? 194 00:09:21,510 --> 00:09:24,300 Naam, kuna mengi ya kompyuta juu ya biashara ya mbio Bash. 195 00:09:24,300 --> 00:09:26,390 Sisi sote Mac watumiaji ni kati yao. 196 00:09:26,390 --> 00:09:30,390 mengi ya Linux servrar ni miongoni mwa yao kama vizuri, na servrar Unix. 197 00:09:30,390 --> 00:09:32,630 Windows tena anapata kiasi kutokuhusika 198 00:09:32,630 --> 00:09:34,590 isipokuwa wameweza imewekwa programu maalum. 199 00:09:34,590 --> 00:09:37,130 Sasa mengi ya watumishi, kwa mfano, servrar kuendesha mtandao, 200 00:09:37,130 --> 00:09:39,840 na kwa kweli Linux ni labda zaidi mfumo wa uendeshaji maarufu 201 00:09:39,840 --> 00:09:43,060 kwa kukimbia kwenye kompyuta kwenye mtandao kwamba ni kuwahudumia up kurasa za mtandao. 202 00:09:43,060 --> 00:09:44,910 Sasa kama tutaweza kuona baadaye katika muhula, wakati 203 00:09:44,910 --> 00:09:48,470 kutuma ombi kutoka yako Chrome browser--, 204 00:09:48,470 --> 00:09:50,790 Internet Explorer, whatever-- kijijini server, 205 00:09:50,790 --> 00:09:53,730 zinageuka kuwa hata kama wewe tu typed www.example.com, 206 00:09:53,730 --> 00:09:59,590 browser yako ni kutuma ujumbe hiyo kidogo zaidi arcane, kama hii. 207 00:09:59,590 --> 00:10:01,239 >> Lakini taarifa kitu kidogo ya ajabu. 208 00:10:01,239 --> 00:10:03,030 kwanza mistari miwili Sijawahi kuona mbele, 209 00:10:03,030 --> 00:10:04,904 lakini hawana kuangalia hasa kutisha. 210 00:10:04,904 --> 00:10:08,030 Lakini taarifa ya nini nimekuwa kuibiwa kwa mstari wa tatu hapa. 211 00:10:08,030 --> 00:10:13,390 Kama guy mbaya walikuwa kutuma ujumbe kama hii kutoka kwa kompyuta yake 212 00:10:13,390 --> 00:10:17,270 kwa Mac katika mazingira magumu au a wanaoishi katika mazingira magumu Linux server, 213 00:10:17,270 --> 00:10:21,580 kitu funny ni kwamba Bash, kuwa rahisi amri kidogo haraka, 214 00:10:21,580 --> 00:10:27,450 ni omnipresent na ni mara nyingi kutumika kwa kimsingi nitafanya 215 00:10:27,450 --> 00:10:30,020 yaliyomo ya ujumbe kwamba inayopata. 216 00:10:30,020 --> 00:10:33,490 Na kwa mantiki hiyo, unaweza hila mtandao wa kompyuta, kwa hiyo, 217 00:10:33,490 --> 00:10:36,370 kwa kutuma kitu kama User-Agent, ambayo kwa kawaida 218 00:10:36,370 --> 00:10:38,300 anapaswa kusema jina ya browser yako. 219 00:10:38,300 --> 00:10:42,420 User-Agent Chrome, User-Agent Internet Explorer, User-Agent Firefox, hii 220 00:10:42,420 --> 00:10:44,590 ni tu browser yako njia ya kutambua yenyewe. 221 00:10:44,590 --> 00:10:46,605 Lakini kama guy mbaya sana cleverly anasema, mm-mm, mimi nina 222 00:10:46,605 --> 00:10:47,930 si kwenda kukuambia nini browser yangu ni, 223 00:10:47,930 --> 00:10:50,888 Mimi nina badala kwenda kutuma wewe hii cryptic-kuangalia kitu na rm -rf 224 00:10:50,888 --> 00:10:55,840 * Katika hiyo, unaweza literally hila wanaoishi katika mazingira magumu mtandao wa kompyuta kwenye mtandao 225 00:10:55,840 --> 00:10:59,055 ndani ya utekelezaji hasa kwamba katika huko kwa kufuta yote ya files. 226 00:10:59,055 --> 00:11:00,930 Na kusema ukweli, si kwamba hata mbaya zaidi ya hiyo. 227 00:11:00,930 --> 00:11:01,763 Unaweza kufanya kitu chochote. 228 00:11:01,763 --> 00:11:04,480 Unaweza kuanza kusambazwa kunyimwa ya mashambulizi huduma 229 00:11:04,480 --> 00:11:07,030 kama wewe alituma ujumbe huu kwa mashada yote ya servrar mtandao 230 00:11:07,030 --> 00:11:10,256 na kisha alikuwa wote kushuka, kwa mfano, kwenye seva Harvard.edu, 231 00:11:10,256 --> 00:11:12,130 na unaweza aina ya bang heck nje ya yao 232 00:11:12,130 --> 00:11:15,490 na mtandao wa trafiki kwamba alikuwa vinginevyo yalisababisha na hii guy mbaya. 233 00:11:15,490 --> 00:11:18,760 >> Hivyo, hadithi muda mfupi, karibu kila mtu katika chumba hii ambaye anamiliki Mac 234 00:11:18,760 --> 00:11:20,240 ni katika mazingira magumu na hii. 235 00:11:20,240 --> 00:11:24,100 bitana fedha ni kwamba kama wewe ni mbio mtandao wa kompyuta juu ya mbali yako, 236 00:11:24,100 --> 00:11:27,780 na kama wewe wameweza kweli kimeundwa ni kuruhusu kitu kama SSH ndani yake, 237 00:11:27,780 --> 00:11:28,670 wewe ni kweli salama. 238 00:11:28,670 --> 00:11:31,710 Ni katika mazingira magumu, lakini hakuna moja kujaribu kupata katika Laptop yako, 239 00:11:31,710 --> 00:11:33,290 hivyo unaweza aina ya mapumziko uhakika. 240 00:11:33,290 --> 00:11:36,210 Hata hivyo, Apple hivi karibuni kuwa uppdatering fix kwa hili. 241 00:11:36,210 --> 00:11:39,660 ulimwengu wa Linux tayari iliyotolewa simu ya fixes kwa Fedora na Ubuntu 242 00:11:39,660 --> 00:11:43,790 na matoleo mengine ya Linux, na kwa kweli kama wewe kukimbia update 50 katika appliance, 243 00:11:43,790 --> 00:11:45,930 hata kwamba pia itakuwa updated na kusahihishwa. 244 00:11:45,930 --> 00:11:47,764 Lakini hiyo pia ina si kweli imekuwa katika mazingira magumu, 245 00:11:47,764 --> 00:11:49,804 kwa sababu kama wewe wameweza tinkered na appliance 246 00:11:49,804 --> 00:11:52,770 na alifanya mbali yako hadharani kupatikana kwenye mtandao, ambayo si 247 00:11:52,770 --> 00:11:54,910 by default, wewe wameweza kweli imekuwa faini kwa sababu 248 00:11:54,910 --> 00:11:56,890 ya firewalling na mbinu nyingine. 249 00:11:56,890 --> 00:12:01,000 >> Lakini ni mfano uliokithiri wa mdudu kwamba tumekuwa aliishi kwa ajili ya literally 20 250 00:12:01,000 --> 00:12:04,050 miaka, na ambaye anajua kama mtu muda wote huu kuifahamu kuhusu hilo? 251 00:12:04,050 --> 00:12:06,300 Na kwa kweli, hii ni moja ya changamoto za msingi 252 00:12:06,300 --> 00:12:08,690 kwamba tutaweza kuona baadaye katika muhula kuhusu usalama, 253 00:12:08,690 --> 00:12:13,020 ni kwamba tu kama katika ulimwengu wa kweli, guys nzuri ni katika hasara. 254 00:12:13,020 --> 00:12:16,500 Kuweka watu wabaya nje, tuna kuhakikisha kwamba kila mlango umefungwa, 255 00:12:16,500 --> 00:12:20,340 kwamba kila dirisha ni salama, kwamba kila hatua ya kuingia ndani ya nyumba 256 00:12:20,340 --> 00:12:21,980 ni salama kuweka watu wabaya nje. 257 00:12:21,980 --> 00:12:26,870 Lakini ni nini guy mbaya na kufanya kwa kweli maelewano nyumba yako 258 00:12:26,870 --> 00:12:28,200 na kuiba kutoka kwenu? 259 00:12:28,200 --> 00:12:32,574 Yeye au yeye tu ana kupata moja unlocked mlango, moja kuvunjwa dirisha, au kitu 260 00:12:32,574 --> 00:12:35,240 pamoja na mistari wale, na ni kitu kimoja katika usalama wa kompyuta. 261 00:12:35,240 --> 00:12:37,660 Tunaweza kuandika mamilioni ya mistari ya programu code 262 00:12:37,660 --> 00:12:40,570 na kutumia mamia au maelfu ya masaa kujaribu kupata sahihi, 263 00:12:40,570 --> 00:12:43,370 lakini kama wewe kufanya moja tu makosa katika usahihi, 264 00:12:43,370 --> 00:12:47,030 unaweza kuweka mfumo mzima na kweli katika kesi hii, internet nzima 265 00:12:47,030 --> 00:12:48,660 na dunia katika hatari. 266 00:12:48,660 --> 00:12:51,950 >> Hivyo kama wewe Ningependa kujifunza zaidi kuhusu hili, kwenda URL hii hapa. 267 00:12:51,950 --> 00:12:54,450 Hakuna haja kwa ajili ya hatua usiku wa leo kama wewe ni 268 00:12:54,450 --> 00:12:57,116 miongoni mwa wale vizuri zaidi kwamba wamekuwa kuendesha mtandao yako mwenyewe 269 00:12:57,116 --> 00:12:59,810 server, katika kesi unapaswa ambayo, kwa kweli, update programu yako. 270 00:12:59,810 --> 00:13:03,244 >> Na hii pia ni jina la kusema, na sasa karatasi, 271 00:13:03,244 --> 00:13:05,410 kwamba tumekuwa wanaohusishwa juu ya tovuti shaka kwa ajili ya leo. 272 00:13:05,410 --> 00:13:07,600 Ilikuwa na wenzake jina lake Ken Thompson, ambaye 273 00:13:07,600 --> 00:13:10,120 ilikuwa kukubali maarufu sana tuzo katika sayansi ya kompyuta, 274 00:13:10,120 --> 00:13:13,495 na yeye alitoa hotuba hii baadhi ya miaka iliyopita, kimsingi juu ya mada hii. 275 00:13:13,495 --> 00:13:18,250 276 00:13:18,250 --> 00:13:20,520 Kuuliza swali folks, lazima wewe kweli 277 00:13:20,520 --> 00:13:23,480 uaminifu, hatimaye, programu tumekuwa aliyopewa? 278 00:13:23,480 --> 00:13:26,100 Kwa mfano, sisi sote tuna wamekuwa kuandika mipango, 279 00:13:26,100 --> 00:13:27,820 na tumekuwa kuandaa yao na Clang. 280 00:13:27,820 --> 00:13:31,830 Na kwa maarifa yako, umeandika mipango yoyote kwa CS50 ambapo kuna 281 00:13:31,830 --> 00:13:35,310 mlango wa nyuma wa kila aina, kuna njia kwamba guy mbaya, kama kuendesha programu yako, 282 00:13:35,310 --> 00:13:37,410 inaweza kuchukua zaidi ya kompyuta yako? 283 00:13:37,410 --> 00:13:38,310 Pengine si, haki? 284 00:13:38,310 --> 00:13:40,180 Mario, na tamaa, na Mikopo. 285 00:13:40,180 --> 00:13:41,680 Hizi ni mipango yote pretty ndogo. 286 00:13:41,680 --> 00:13:43,910 Wewe d kuwa pretty mbaya kama kweli 287 00:13:43,910 --> 00:13:47,310 alifanya kompyuta yako yote wanaoishi katika mazingira magumu baada ya kuandika 10 au 20 mstari wa kanuni, 288 00:13:47,310 --> 00:13:49,690 au angalau hawajui baadhi ya matokeo ya usalama. 289 00:13:49,690 --> 00:13:52,023 Sasa mimi kusema kwamba facetiously, lakini sisi ni kwenda kuona leo 290 00:13:52,023 --> 00:13:54,600 na wiki hii ni kweli kweli, kweli rahisi 291 00:13:54,600 --> 00:13:57,980 kuwa mbaya na kufanya hata mipango short mazingira magumu. 292 00:13:57,980 --> 00:14:02,880 >> Lakini kwa sasa, angalau, kutambua kwamba swali kuulizwa hapa 293 00:14:02,880 --> 00:14:04,850 ni kuhusu Clang katika compiler. 294 00:14:04,850 --> 00:14:08,360 Kwa nini sisi wamekuwa kuamini Clang kwa kipindi cha wiki mbili au tatu? 295 00:14:08,360 --> 00:14:12,650 Nani wa kusema kwamba mtu aliandika Clang hakuwa na "kama" hali katika huko 296 00:14:12,650 --> 00:14:17,680 kwamba kimsingi sindano baadhi zeros na wale katika kila mpango inaandaa 297 00:14:17,680 --> 00:14:21,180 kwamba ingekuwa basi yeye au upatikanaji wake kompyuta yako wakati uko wamelala 298 00:14:21,180 --> 00:14:23,580 na Laptop yako mfuniko ni wazi na kompyuta yako ni mbio? 299 00:14:23,580 --> 00:14:24,080 Haki? 300 00:14:24,080 --> 00:14:28,350 Tuna aina hii ya mfumo wa heshima haki sasa ambapo tunaamini kwamba Clang ni legit. 301 00:14:28,350 --> 00:14:30,000 You kuamini kwamba appliance ni legit. 302 00:14:30,000 --> 00:14:34,430 You kuamini kwamba literally kila mpango juu ya Mac au PC yako ni ya kuaminika. 303 00:14:34,430 --> 00:14:37,510 Na kama mdudu huu rahisi unaonyesha, hata kama ni si malicious, 304 00:14:37,510 --> 00:14:40,580 hiyo ni kabisa si uwezekano wa kuwa na kesi. 305 00:14:40,580 --> 00:14:42,350 >> Hivyo unapaswa kuwa na hofu kama kuzimu. 306 00:14:42,350 --> 00:14:45,560 Kwa kweli, hakuna rahisi ufumbuzi wa hili nyingine 307 00:14:45,560 --> 00:14:48,185 kuliko aina ya ufahamu wa jamii ya utata kuongeza 308 00:14:48,185 --> 00:14:50,310 kwamba sisi ni kujenga juu ya mifumo ya kompyuta yetu, 309 00:14:50,310 --> 00:14:53,740 na jinsi zinazidi tupate vizuri sana kuwa. 310 00:14:53,740 --> 00:14:55,570 >> Sasa kwa kuwa alisema, Breakout. 311 00:14:55,570 --> 00:14:59,889 Hivyo kuzuka ni tatizo kuweka tatu, na Kuzuka ni mchezo kutoka yesteryear 312 00:14:59,889 --> 00:15:02,180 kwamba unaweza kukumbuka, lakini kwa ajili yetu katika tatizo kuweka tatu, 313 00:15:02,180 --> 00:15:04,450 inaruhusu sisi kuchukua mambo nyuma up notch 314 00:15:04,450 --> 00:15:08,880 hivyo kwamba wakati sisi ni kuandika mipango, hata katika dirisha Terminal kama hii, 315 00:15:08,880 --> 00:15:14,670 sisi kweli wanaweza kukimbia, hatimaye, mipango graphical si 316 00:15:14,670 --> 00:15:17,800 tofauti na wale tulikuwa na upatikanaji wa katika Scratch. 317 00:15:17,800 --> 00:15:20,910 Hivyo hii ni ya wafanyakazi utekelezaji wa kuzuka, 318 00:15:20,910 --> 00:15:23,930 ambayo ni tu hii matofali-kuvunja mchezo, kwamba hoja paddle yako nyuma 319 00:15:23,930 --> 00:15:27,590 na huko, na wewe hit mpira dhidi ya wale matofali ya rangi ya juu juu. 320 00:15:27,590 --> 00:15:30,020 Hivyo hii ni kuleta kwetu aina ya nyuma ambapo 321 00:15:30,020 --> 00:15:33,180 tulikuwa na uwezo wa kuwa haraka sana na Scratch, na sasa na C, 322 00:15:33,180 --> 00:15:35,800 kutekeleza yetu wenyewe graphical user interfaces. 323 00:15:35,800 --> 00:15:38,960 >> Lakini zaidi ya hapo, hii tatizo kuweka inawakilisha kwanza 324 00:15:38,960 --> 00:15:41,000 katika ambayo sisi ni kutoa wewe rundo la code. 325 00:15:41,000 --> 00:15:43,940 Na kwa kweli, mimi kuleta wazi makini na hili, kwa sababu hasa 326 00:15:43,940 --> 00:15:47,090 kwa wale chini ya starehe, hii kuweka tatizo, angalau katika mtazamo wa kwanza, 327 00:15:47,090 --> 00:15:49,170 ni kwenda kujisikia kama tumekuwa kuchukuliwa it up notch. 328 00:15:49,170 --> 00:15:51,540 Kwa sababu tumekuwa aliyopewa wewe, kwa baadhi ya utafutaji 329 00:15:51,540 --> 00:15:54,930 na kuchagua matatizo katika pset, rundo la kificho kwamba sisi aliandika, 330 00:15:54,930 --> 00:15:56,680 na michache ya maoni kwamba kusema "kufanya," 331 00:15:56,680 --> 00:15:58,221 ambapo una kujaza nafasi zilizoachwa wazi. 332 00:15:58,221 --> 00:16:00,020 Hivyo si pia inatisha, lakini ni mara ya kwanza 333 00:16:00,020 --> 00:16:03,370 sisi ni kuwapatia wewe kificho kwamba unahitaji kwanza kusoma, kuelewa, na kisha kuongeza kwa 334 00:16:03,370 --> 00:16:04,290 na kukamilisha. 335 00:16:04,290 --> 00:16:05,940 >> Na kisha kwa kuzuka, tunakwenda kufanya hivyo, 336 00:16:05,940 --> 00:16:08,740 kutoa kadhaa chache mistari zaidi ya kificho kwamba, kusema ukweli, kukupa 337 00:16:08,740 --> 00:16:11,490 mengi ya mfumo kwa mchezo lakini kuacha short 338 00:16:11,490 --> 00:16:14,304 ya utekelezaji wa matofali na mpira na paddle, 339 00:16:14,304 --> 00:16:15,970 lakini sisi kufanya kutekeleza baadhi ya vipengele vingine. 340 00:16:15,970 --> 00:16:18,280 Na hata kuwa katika mtazamo wa kwanza, tena, hasa kama chini ya starehe, 341 00:16:18,280 --> 00:16:21,480 inaweza kuonekana hasa ngumu na unafikiri kuna kazi nyingi mpya 342 00:16:21,480 --> 00:16:24,070 unahitaji wrap akili yako karibu, na kwamba ni kweli. 343 00:16:24,070 --> 00:16:26,281 Lakini kumbuka, ni kabisa kama Scratch. 344 00:16:26,281 --> 00:16:28,780 Tabia mbaya ni wewe hakuwa na matumizi yote ya vipande puzzle katika Scratch. 345 00:16:28,780 --> 00:16:31,120 Tabia mbaya ni wewe hakuwa na huduma kwa wrap akili yako karibu wote 346 00:16:31,120 --> 00:16:33,617 kwa sababu wote ilichukua mara mtazamo wa haraka kuelewa, oh, 347 00:16:33,617 --> 00:16:35,450 hiyo ni nini siwezi kufanya na kwamba puzzle kipande. 348 00:16:35,450 --> 00:16:38,260 Na hakika, katika tatizo kuweka 3 spec, tutaweza kumweka wewe 349 00:16:38,260 --> 00:16:41,370 katika nyaraka kwamba mapenzi kuanzisha wewe baadhi ya kazi mpya, 350 00:16:41,370 --> 00:16:43,570 na hatimaye programu constructs wewe kutumia. 351 00:16:43,570 --> 00:16:47,610 Masharti, loops, vigezo, na kazi 352 00:16:47,610 --> 00:16:50,720 itakuwa kufanana na nini tumeona hivi sasa. 353 00:16:50,720 --> 00:16:53,560 >> Hivyo kweli, nini tutaweza kutoa wewe ni baadhi ya kanuni sampuli kwamba 354 00:16:53,560 --> 00:16:56,110 inakuwezesha kujenga dirisha kwamba inaonekana si tofauti na hii, 355 00:16:56,110 --> 00:16:59,540 na hatimaye kugeuka ndani kitu kabisa kama hii. 356 00:16:59,540 --> 00:17:02,250 Hivyo kuchukua faida ya CS50, kujadili masaa ya ofisi na zaidi, 357 00:17:02,250 --> 00:17:05,290 na kuchukua faraja katika ukweli kwamba kiasi cha code una kuandika 358 00:17:05,290 --> 00:17:06,760 ni kweli si yote kwamba mengi. 359 00:17:06,760 --> 00:17:10,359 Changamoto ya kwanza ni tu kwa acclimate mwenyewe kwa baadhi ya kanuni tumekuwa imeandikwa. 360 00:17:10,359 --> 00:17:11,450 361 00:17:11,450 --> 00:17:15,810 >> Maswali yoyote juu ya pset3, Shellshock, au vinginevyo? 362 00:17:15,810 --> 00:17:19,226 >> Watazamaji: Ni ilionekana kama kwenda kwa njia na kuzuka 363 00:17:19,226 --> 00:17:22,154 kwamba kanuni ni karibu kitu-oriented style, 364 00:17:22,154 --> 00:17:24,675 lakini nilifikiri C mara kitu-oriented mpango. 365 00:17:24,675 --> 00:17:26,050 SPIKA 1: swali bora. 366 00:17:26,050 --> 00:17:28,258 Hivyo katika kutafuta njia ya usambazaji code, kanuni na 367 00:17:28,258 --> 00:17:30,180 sisi aliandika kwa pset3, kwa wale jamaa, ni 368 00:17:30,180 --> 00:17:32,230 inaonekana kama ni kidogo kitu-oriented. 369 00:17:32,230 --> 00:17:33,800 Short jibu ni, ni. 370 00:17:33,800 --> 00:17:38,130 Ni makadirio ya jinsi anaweza kufanya kitu-oriented code kwa kutumia 371 00:17:38,130 --> 00:17:41,850 lugha kama C, lakini ni bado hatimaye kiutaratibu. 372 00:17:41,850 --> 00:17:44,900 Kuna hakuna njia ndani ya vigezo, kama utaona. 373 00:17:44,900 --> 00:17:46,180 Lakini ni kukumbusha ya kwamba. 374 00:17:46,180 --> 00:17:48,780 Na tutaweza kuona kipengele kwamba tena wakati sisi kupata PHP na JavaScript 375 00:17:48,780 --> 00:17:49,946 kuelekea mwisho wa muhula. 376 00:17:49,946 --> 00:17:53,667 Lakini kwa sasa, kufikiria ni kama ladha ya nini kuja. 377 00:17:53,667 --> 00:17:54,250 Swali nzuri. 378 00:17:54,250 --> 00:17:56,051 379 00:17:56,051 --> 00:17:56,550 Wote haki. 380 00:17:56,550 --> 00:17:59,730 Hivyo kuunganisha aina ni jinsi sisi mambo kushoto wakati wa mwisho. 381 00:17:59,730 --> 00:18:03,250 Na kuunganisha aina ilikuwa baridi katika maana ya kwamba ilikuwa hivyo kwa kasi zaidi, 382 00:18:03,250 --> 00:18:07,100 angalau misingi ya vipimo haraka haraka sisi alifanya wiki iliyopita, kuliko kusema, Bubble 383 00:18:07,100 --> 00:18:08,710 aina, uteuzi aina, insertion aina. 384 00:18:08,710 --> 00:18:11,780 Na kile ambacho hakikuwa nadhifu pia ni tu jinsi ufupi na cleanly 385 00:18:11,780 --> 00:18:12,810 unaweza kueleza yake. 386 00:18:12,810 --> 00:18:15,840 Na nini sisi kusema ilikuwa ni juu amefungwa juu ya wakati mbio ya kuunganisha 387 00:18:15,840 --> 00:18:16,340 aina? 388 00:18:16,340 --> 00:18:17,633 389 00:18:17,633 --> 00:18:18,495 Yeah? 390 00:18:18,495 --> 00:18:19,360 >> Watazamaji: n logi n? 391 00:18:19,360 --> 00:18:20,819 >> SPIKA 1: n logi n, haki. n logi n. 392 00:18:20,819 --> 00:18:23,776 Na tutaweza kuja nyuma kwa nini kwamba kweli ina maana au ambapo kwamba anakuja kutoka, 393 00:18:23,776 --> 00:18:25,570 lakini hii ilikuwa bora kuliko yale wakati mbio 394 00:18:25,570 --> 00:18:28,440 kuwa tuliona kwa Bubble uteuzi na insertion aina? 395 00:18:28,440 --> 00:18:30,610 Hivyo n squared. n squared ni kubwa kuliko hii, 396 00:18:30,610 --> 00:18:34,650 na hata kama si dhahiri kabisa, kujua kwamba n logi ni ndogo kuliko n, 397 00:18:34,650 --> 00:18:36,910 hivyo kama wewe kufanya mara n kitu kidogo kuliko n, 398 00:18:36,910 --> 00:18:38,680 ni kwenda kuwa chini ya n squared. 399 00:18:38,680 --> 00:18:40,130 Ni kidogo ya Intuition huko. 400 00:18:40,130 --> 00:18:42,190 Lakini sisi kulipwa kwa bei hii. 401 00:18:42,190 --> 00:18:47,000 Ilikuwa ni kwa kasi, lakini mandhari ambayo ilianza kuibuka wiki iliyopita ilikuwa tradeoff hii. 402 00:18:47,000 --> 00:18:49,804 I got utendaji bora wakati na hekima, lakini nini 403 00:18:49,804 --> 00:18:52,470 Je, mimi na kutumia kwa upande mwingine mkono, ili kufanikisha hilo? 404 00:18:52,470 --> 00:18:53,591 >> Watazamaji: Kumbukumbu. 405 00:18:53,591 --> 00:18:54,465 SPIKA 1: Sema tena? 406 00:18:54,465 --> 00:18:55,173 Watazamaji: Kumbukumbu. 407 00:18:55,173 --> 00:18:57,040 SPIKA 1: Kumbukumbu, au nafasi zaidi kwa ujumla. 408 00:18:57,040 --> 00:18:59,040 Na haikuwa super dhahiri na binadamu yetu, 409 00:18:59,040 --> 00:19:02,240 lakini kukumbuka kwamba waandishi wetu wa kujitolea walikuwa wanazidi mbele na wanazidi 410 00:19:02,240 --> 00:19:04,780 nyuma kama ingawa kuna safu hapa, na kama ingawa kuna 411 00:19:04,780 --> 00:19:07,130 safu ya pili hapa kwamba wanayoweza kutumia, kwa sababu sisi 412 00:19:07,130 --> 00:19:09,080 zinahitajika mahala fulani kwa kuunganisha folks wale. 413 00:19:09,080 --> 00:19:11,480 Tunaweza si tu wabadilishane yao katika nafasi. 414 00:19:11,480 --> 00:19:13,800 Hivyo kuunganisha aina kujiinua ni nafasi zaidi, ambayo 415 00:19:13,800 --> 00:19:15,620 sisi hakuwa na haja ya kwa algorithms mengine, 416 00:19:15,620 --> 00:19:17,410 lakini kichwa ni kwamba ni kwa kasi zaidi. 417 00:19:17,410 --> 00:19:20,780 Na kusema ukweli, katika nafasi halisi ya dunia haya RAM days--, hard disk space-- 418 00:19:20,780 --> 00:19:25,030 ni kiasi nafuu, na hivyo hiyo ni si lazima kitu mbaya. 419 00:19:25,030 --> 00:19:28,320 >> Basi hebu tuangalie kwa haraka, kidogo zaidi methodically, katika kile sisi alivyofanya 420 00:19:28,320 --> 00:19:30,220 na kwa nini sisi alisema ilikuwa n logi n. 421 00:19:30,220 --> 00:19:33,260 Hivyo hapa ni namba nane na kujitolea nane tulikuwa na wakati mwisho. 422 00:19:33,260 --> 00:19:35,718 Na jambo la kwanza kwamba Merge Aina alituambia kufanya ni nini? 423 00:19:35,718 --> 00:19:37,010 424 00:19:37,010 --> 00:19:38,010 Watazamaji: Divide katika mbili. 425 00:19:38,010 --> 00:19:38,663 SPIKA 1: Sema tena? 426 00:19:38,663 --> 00:19:39,650 Watazamaji: Divide katika mbili. 427 00:19:39,650 --> 00:19:40,610 SPIKA 1: Divide katika mbili, kulia. 428 00:19:40,610 --> 00:19:42,818 Hii ni sawa na sana ya kitabu cha simu, ya mgawanyiko wa 429 00:19:42,818 --> 00:19:44,220 na kushinda zaidi kwa ujumla. 430 00:19:44,220 --> 00:19:45,640 Hivyo sisi inaonekana katika nusu kushoto. 431 00:19:45,640 --> 00:19:48,700 Na kisha mara moja sisi alisema, aina nusu ya kushoto ya mambo, 432 00:19:48,700 --> 00:19:49,690 nini sisi kusema ijayo? 433 00:19:49,690 --> 00:19:51,210 434 00:19:51,210 --> 00:19:54,860 Aina nusu ya kushoto ya kushoto nusu, ambayo alituruhusu, 435 00:19:54,860 --> 00:19:57,570 baada ya kugawa katika mbili, kuzingatia nne na mbili. 436 00:19:57,570 --> 00:20:01,280 >> Jinsi gani unaweza aina orodha sasa, katika njano, ukubwa mbili, kwa kutumia Merge Aina? 437 00:20:01,280 --> 00:20:02,330 438 00:20:02,330 --> 00:20:04,580 Naam kuigawanya katika nusu, na aina nusu kushoto. 439 00:20:04,580 --> 00:20:07,100 Na hii ilikuwa ambapo mambo got kidogo kijinga kwa ufupi. 440 00:20:07,100 --> 00:20:10,720 Jinsi gani unaweza aina orodha hiyo ni ya ukubwa moja, kama idadi hii nne hapa? 441 00:20:10,720 --> 00:20:12,330 442 00:20:12,330 --> 00:20:13,210 Ni vyema. 443 00:20:13,210 --> 00:20:14,200 Wewe ni kosa. 444 00:20:14,200 --> 00:20:17,300 >> Lakini basi ni jinsi gani unaweza aina orodha ya ukubwa moja wakati ni namba mbili? 445 00:20:17,300 --> 00:20:21,640 Naam, kitu kimoja, lakini sasa nini ilikuwa tatu na hatua muhimu katika Unganisha Aina? 446 00:20:21,640 --> 00:20:24,020 You alikuwa na kuunganisha kushoto nusu na nusu ya haki. 447 00:20:24,020 --> 00:20:26,580 Na mara moja sisi alifanya hivyo, sisi inaonekana saa nne, sisi inaonekana saa mbili. 448 00:20:26,580 --> 00:20:28,750 Tuliamua haki ya wote, wazi mbili anakuja kwanza, 449 00:20:28,750 --> 00:20:31,840 hivyo sisi kuweka mbili katika wake mahali, ikifuatiwa na watu wanne. 450 00:20:31,840 --> 00:20:35,010 Na sasa una aina ya rewind, na hii ni aina ya tabia 451 00:20:35,010 --> 00:20:37,570 ya algorithm kama Unganisha Aina, rewind katika kumbukumbu. 452 00:20:37,570 --> 00:20:40,240 Alikuwa mstari wa pili ya hadithi ni nini? 453 00:20:40,240 --> 00:20:41,780 Nifanye kulenga ijayo? 454 00:20:41,780 --> 00:20:43,110 455 00:20:43,110 --> 00:20:47,350 nusu haki ya kushoto nusu, ambayo ni sita na nane. 456 00:20:47,350 --> 00:20:50,320 >> Hivyo basi mimi tu hatua kwa njia hii bila belaboring uhakika sana. 457 00:20:50,320 --> 00:20:53,330 Sita na nane, kisha sita ni Iliyopangwa, nane ni Iliyopangwa. 458 00:20:53,330 --> 00:20:57,190 Kuunganisha yao pamoja kama kwamba, na sasa kubwa ijayo hatua 459 00:20:57,190 --> 00:21:00,990 ni, bila shaka, aina nusu haki kutoka hatua ya kwanza ya algorithm hii. 460 00:21:00,990 --> 00:21:02,870 Hivyo sisi kuzingatia moja, tatu, saba, tano. 461 00:21:02,870 --> 00:21:04,540 Sisi basi kuzingatia nusu kushoto. 462 00:21:04,540 --> 00:21:09,400 nusu ya kushoto ya kwamba, nusu haki ya kwamba, na kisha kuunganisha katika moja na tatu. 463 00:21:09,400 --> 00:21:13,100 Kisha nusu haki, kisha kushoto nusu yake, basi nusu haki yake. 464 00:21:13,100 --> 00:21:15,985 Kuunganisha katika, na sasa nini hatua bado? 465 00:21:15,985 --> 00:21:18,040 466 00:21:18,040 --> 00:21:22,460 Kuunganisha kubwa nusu kushoto na kubwa nusu haki, hivyo moja huenda kuna chini, 467 00:21:22,460 --> 00:21:27,330 kisha mbili, kisha tatu, nne, kisha tano, basi sita, kisha saba, nane. 468 00:21:27,330 --> 00:21:31,990 >> Hivyo sasa kwa nini hii hatimaye akifafanua, hasa kama n na logarithms zaidi 469 00:21:31,990 --> 00:21:35,487 kwa ujumla badala kutoroka wewe, angalau katika kumbukumbu ya hivi karibuni? 470 00:21:35,487 --> 00:21:37,070 Naam, taarifa urefu wa jambo hili. 471 00:21:37,070 --> 00:21:41,230 Tulikuwa na mambo nane, na sisi kuigawa na mbili, na mbili, na mbili. 472 00:21:41,230 --> 00:21:44,590 Hivyo kuingia msingi mbili ya nane inatupa tatu. 473 00:21:44,590 --> 00:21:45,640 474 00:21:45,640 --> 00:21:48,540 Na matumaini yangu juu ya kwamba kama hazy kidogo juu ya hilo. 475 00:21:48,540 --> 00:21:54,710 Lakini kuingia msingi mbili ya nane ni tatu, hivyo tumefanya tabaka tatu za kuunganisha. 476 00:21:54,710 --> 00:21:57,170 Na wakati sisi ilijiunga mambo, jinsi wengi vipengele 477 00:21:57,170 --> 00:21:58,950 gani sisi kuangalia juu ya kila ya mistari hizo? 478 00:21:58,950 --> 00:22:00,212 479 00:22:00,212 --> 00:22:01,437 jumla ya n, haki? 480 00:22:01,437 --> 00:22:04,020 Kwa sababu kwa kuunganisha safu ya juu, ingawa sisi alifanya hivyo piecemeal, 481 00:22:04,020 --> 00:22:05,990 sisi hatimaye kuguswa kila idadi mara moja. 482 00:22:05,990 --> 00:22:09,054 Na katika mstari wa pili, kwa kuunganisha orodha wale wa kawaida mbili, 483 00:22:09,054 --> 00:22:10,470 tulikuwa na kugusa kila kipengele mara moja. 484 00:22:10,470 --> 00:22:12,690 Na kisha hapa kweli wazi katika mstari wa mwisho, 485 00:22:12,690 --> 00:22:15,430 tulikuwa na kugusa kila mmoja wa wale mambo mara moja, lakini mara moja tu, 486 00:22:15,430 --> 00:22:18,400 hivyo humu uongo, basi, n logi yetu n. 487 00:22:18,400 --> 00:22:21,780 >> Na sasa tu kufanya mambo kidogo rasmi zaidi kwa muda tu, kama wewe 488 00:22:21,780 --> 00:22:24,260 walikuwa na sasa kuchambua hii katika aina ya kiwango cha juu 489 00:22:24,260 --> 00:22:28,340 na kujaribu kuamua, vizuri jinsi wanaweza kwenda juu ya kuonyesha 490 00:22:28,340 --> 00:22:31,780 wakati mbio ya algorithm hii tu kwa kuangalia saa yake na si 491 00:22:31,780 --> 00:22:33,590 kwa kutumia mfano contrived? 492 00:22:33,590 --> 00:22:36,590 Naam, ni kiasi gani wakati unaweza kusema hatua kama hii katika njano bila kuchukua, 493 00:22:36,590 --> 00:22:37,173 kama n <2 kurudi? 494 00:22:37,173 --> 00:22:38,840 495 00:22:38,840 --> 00:22:39,830 Hiyo ni O kubwa ya nini? 496 00:22:39,830 --> 00:22:41,450 497 00:22:41,450 --> 00:22:44,540 Hivyo mimi nina kuona moja, hivyo hatua moja, labda hatua mbili kwa sababu ni kama 498 00:22:44,540 --> 00:22:47,110 na kisha kurudi, lakini ni wakati mara kwa mara, haki? 499 00:22:47,110 --> 00:22:49,960 Hivyo tulisema O (1), na kwamba jinsi mimi itabidi kueleza hii. 500 00:22:49,960 --> 00:22:51,480 T, tu kuwa mbio wakati. 501 00:22:51,480 --> 00:22:54,150 n ni ukubwa wa pembejeo, hivyo T (n), njia tu dhana 502 00:22:54,150 --> 00:22:56,330 ya kusema mbio wakati huo mchango wa ukubwa n 503 00:22:56,330 --> 00:23:00,220 ni kwenda kuwa juu ya utaratibu ya muda mara kwa mara, katika O (1). 504 00:23:00,220 --> 00:23:01,970 >> Lakini vinginevyo, nini kuhusu hili? 505 00:23:01,970 --> 00:23:05,660 Jinsi gani unaweza kueleza mbio wakati wa mstari huu njano? 506 00:23:05,660 --> 00:23:06,250 T ya nini? 507 00:23:06,250 --> 00:23:09,440 508 00:23:09,440 --> 00:23:12,665 Unaweza aina ya kudanganya hapa na jibu swali langu cyclically. 509 00:23:12,665 --> 00:23:14,770 510 00:23:14,770 --> 00:23:17,900 Hivyo kama mbio wakati katika ujumla sisi tu kusema ni T (n). 511 00:23:17,900 --> 00:23:18,950 512 00:23:18,950 --> 00:23:22,490 Na sasa wewe ni aina ya punting hapa na akisema, vizuri, tu aina nusu kushoto, 513 00:23:22,490 --> 00:23:23,920 na kisha kutatua nusu ya haki. 514 00:23:23,920 --> 00:23:27,520 Jinsi gani sisi mfano kuwakilisha wakati wa mstari huu njano mbio? 515 00:23:27,520 --> 00:23:28,020 T ya nini? 516 00:23:28,020 --> 00:23:29,360 Nini ukubwa wa pembejeo? 517 00:23:29,360 --> 00:23:30,510 518 00:23:30,510 --> 00:23:31,057 n juu ya mbili. 519 00:23:31,057 --> 00:23:32,140 Kwa nini si mimi tu kusema kwamba? 520 00:23:32,140 --> 00:23:36,449 Na kisha hii ni mwingine T (n / 2) na kisha tena, kama mimi kuunganisha halves mbili sorted, 521 00:23:36,449 --> 00:23:38,615 jinsi mambo mengi mimi kwenda kwa kuwa na kugusa jumla? 522 00:23:38,615 --> 00:23:39,780 523 00:23:39,780 --> 00:23:40,320 n. 524 00:23:40,320 --> 00:23:42,790 Hivyo siwezi kueleza hii, tu kuwa aina ya dhana tu, 525 00:23:42,790 --> 00:23:44,430 kama mbio wakati kwa ujumla. 526 00:23:44,430 --> 00:23:51,140 T (n) ni tu wakati mbio ya T (n / 2), pamoja na T (n / 2), kushoto nusu na nusu wa kulia, 527 00:23:51,140 --> 00:23:55,360 pamoja na O (n), ambayo pengine ni n hatua, lakini labda, kama mimi nina kutumia vidole viwili, 528 00:23:55,360 --> 00:23:57,960 ni mara mbili kama wengi hatua, lakini ni linear. 529 00:23:57,960 --> 00:24:00,440 Ni baadhi ya idadi ya hatua hiyo ni sababu ya n, 530 00:24:00,440 --> 00:24:02,270 hivyo tupate kueleza hii kama hii. 531 00:24:02,270 --> 00:24:05,550 Na hii ni mahali ambapo sasa tutaweza Punt kwa nyuma ya shule ya sekondari yetu math vitabu vya kiada 532 00:24:05,550 --> 00:24:10,290 sisi ni kwamba upprepning hatimaye mwisho juu ni sawa na hii, n mara logi n, 533 00:24:10,290 --> 00:24:12,530 kama kweli kufanya nje math zaidi rasmi. 534 00:24:12,530 --> 00:24:13,950 >> Hivyo hiyo ni mitazamo miwili tu. 535 00:24:13,950 --> 00:24:17,500 Numerically moja kwa ngumu-coded mfano mwakilishi 536 00:24:17,500 --> 00:24:21,140 kutumia namba nane, na zaidi ujumla kuangalia jinsi gani sisi got huko. 537 00:24:21,140 --> 00:24:25,670 Lakini nini kweli kuvutia hapa ni, tena, wazo hili la baiskeli. 538 00:24:25,670 --> 00:24:26,900 Mimi si kutumia kwa ajili ya loops. 539 00:24:26,900 --> 00:24:29,860 Mimi nina aina ya kufafanua kitu katika suala la yenyewe, 540 00:24:29,860 --> 00:24:31,950 si tu na hii kazi hisabati, 541 00:24:31,950 --> 00:24:34,860 lakini pia katika suala la kanuni hii Pseudo. 542 00:24:34,860 --> 00:24:38,260 Hii ni Pseudo code kujirudia katika wawili wa mistari yake 543 00:24:38,260 --> 00:24:42,310 kimsingi ni kuwaambia ni kwenda kutumia yenyewe ya kutatua ndogo 544 00:24:42,310 --> 00:24:45,400 tatizo la kawaida kidogo, na kisha tena na tena 545 00:24:45,400 --> 00:24:48,820 na tena mpaka sisi whittle ni chini ya kinachojulikana kesi hii ya msingi. 546 00:24:48,820 --> 00:24:52,810 >> Basi hebu kweli kuteka zaidi ya kulazimisha kuchukua-mbali na hii kama ifuatavyo. 547 00:24:52,810 --> 00:24:58,420 Hebu kwenda katika gedit na kuchukua kuangalia baadhi ya chanzo kanuni ya leo, 548 00:24:58,420 --> 00:24:59,930 hasa mfano huu hapa. 549 00:24:59,930 --> 00:25:03,709 Sigma 0, ambayo inaonekana anaongeza namba moja kwa njia ya n. 550 00:25:03,709 --> 00:25:05,750 Basi hebu angalia nini familiar na usio wa kawaida hapa. 551 00:25:05,750 --> 00:25:08,690 Kwanza sisi kuwa wanandoa wa pamoja na, hivyo hakuna jipya huko. 552 00:25:08,690 --> 00:25:09,190 Mfano. 553 00:25:09,190 --> 00:25:11,370 Mimi nina hazy kidogo juu ya hii ni baada ya siku chache, 554 00:25:11,370 --> 00:25:13,790 lakini nini sisi kusema mfano wa kazi ni? 555 00:25:13,790 --> 00:25:15,099 556 00:25:15,099 --> 00:25:16,015 Watazamaji: [inaudible]. 557 00:25:16,015 --> 00:25:16,905 SPIKA 1: Nini hiyo? 558 00:25:16,905 --> 00:25:17,800 Watazamaji: Sisi kutangaza yake. 559 00:25:17,800 --> 00:25:18,883 SPIKA 1: Sisi kutangaza yake. 560 00:25:18,883 --> 00:25:22,290 Basi, wewe ni kufundisha Clang, hey, si kweli kutekeleza hili bado, 561 00:25:22,290 --> 00:25:25,740 lakini mahali fulani katika faili hili, labda, ni kwenda kuwa kazi kuitwa nini? 562 00:25:25,740 --> 00:25:26,930 563 00:25:26,930 --> 00:25:27,540 Sigma. 564 00:25:27,540 --> 00:25:30,540 Na hii ni ahadi kwamba ni kwenda kuangalia kama hii. 565 00:25:30,540 --> 00:25:33,720 Ni kwenda kuchukua integer kama input-- na naweza kuwa wazi zaidi 566 00:25:33,720 --> 00:25:36,570 na kusema int n --and ni kwenda na kurudi int, 567 00:25:36,570 --> 00:25:39,900 lakini njia semicolon, mm, mimi itabidi kupata kote kwa kutekeleza hili baadaye kidogo. 568 00:25:39,900 --> 00:25:40,989 Tena, Clang ni bubu. 569 00:25:40,989 --> 00:25:43,280 Ni tu kwenda kujua nini kumweleza ni juu hadi chini, 570 00:25:43,280 --> 00:25:45,765 hivyo tunahitaji angalau kuwapa ni ladha ya nini kuja. 571 00:25:45,765 --> 00:25:47,330 >> Sasa hebu tuangalie kuu hapa. 572 00:25:47,330 --> 00:25:50,040 Hebu kitabu chini hapa na kuona nini kuu ni kufanya. 573 00:25:50,040 --> 00:25:53,780 Siyo kwamba muda mrefu ya kazi, na kwa kweli kujenga hapa ni ukoo. 574 00:25:53,780 --> 00:25:57,590 Mimi kutangaza variable n, na kisha Mimi bemba user tena na tena 575 00:25:57,590 --> 00:26:01,880 kwa integer chanya kwa kutumia GetInt, na tu exit nje ya kitanzi hii 576 00:26:01,880 --> 00:26:03,280 mara moja user ina iakttagit. 577 00:26:03,280 --> 00:26:05,670 Je, Wakati, tumekuwa kutumika kwa bemba user katika njia hiyo. 578 00:26:05,670 --> 00:26:06,670 Sasa hii ni ya kuvutia. 579 00:26:06,670 --> 00:26:08,510 Mimi kutangaza int kuitwa "jibu." 580 00:26:08,510 --> 00:26:11,420 Mimi hawawajui thamani ya kurudi ya kazi kuitwa "sigma." 581 00:26:11,420 --> 00:26:15,200 Mimi sijui nini kwamba hana bado, lakini Nakumbuka kutangaza ni wakati iliyopita. 582 00:26:15,200 --> 00:26:18,310 Na kisha mimi nina kupita katika thamani kwamba mtumiaji typed katika, n, 583 00:26:18,310 --> 00:26:20,420 na kisha mimi ripoti jibu. 584 00:26:20,420 --> 00:26:22,260 Naam hebu kitabu nyuma kwa muda tu. 585 00:26:22,260 --> 00:26:28,620 Hebu kwenda mbele katika saraka hii, kufanya sigma 0, na kwa kweli kuendesha mpango huu 586 00:26:28,620 --> 00:26:30,490 na kuona nini kinatokea. 587 00:26:30,490 --> 00:26:35,930 Hivyo kama mimi kwenda mbele na kukimbia mpango huu, ./sigma-0, 588 00:26:35,930 --> 00:26:40,139 na mimi aina katika chanya integer kama mbili, Sigma, 589 00:26:40,139 --> 00:26:43,180 kama alama ya Kigiriki ina maana, ni tu kwenda kuongeza up namba zote kutoka 590 00:26:43,180 --> 00:26:44,320 sifuri juu ya hadi mbili. 591 00:26:44,320 --> 00:26:46,560 Hivyo 0 plus 1 plus 2. 592 00:26:46,560 --> 00:26:48,830 Hivyo hii lazima hopefully nipe 3. 593 00:26:48,830 --> 00:26:49,750 Hayo ni yote ni kufanya. 594 00:26:49,750 --> 00:26:52,690 Na vile vile, kama mimi kukimbia hii tena na mimi kuwapa namba tatu, 595 00:26:52,690 --> 00:26:56,721 hiyo ni 3 plus 2, hivyo hiyo ni 5, plus 1 anipe 6. 596 00:26:56,721 --> 00:26:59,470 Na kisha kama mimi kupata kweli mambo na kuanza kuandika katika namba kubwa, 597 00:26:59,470 --> 00:27:01,290 ni lazima nipe kiasi kubwa na kubwa zaidi. 598 00:27:01,290 --> 00:27:02,250 Hivyo kwamba ni yote. 599 00:27:02,250 --> 00:27:04,010 >> Kwa hiyo ni nini sigma kuangalia kama? 600 00:27:04,010 --> 00:27:05,430 Naam, ni pretty moja kwa moja. 601 00:27:05,430 --> 00:27:08,940 Ni jinsi gani sisi tupate kuwa kutekelezwa hii kwa wanandoa wa zamani wa wiki. 602 00:27:08,940 --> 00:27:11,120 "Int" ni kwenda kuwa aina ya kurudi. 603 00:27:11,120 --> 00:27:14,330 Sigma ni jina, na inachukua m variable badala ya n. 604 00:27:14,330 --> 00:27:15,940 Mimi itabidi mabadiliko ya kwamba juu juu. 605 00:27:15,940 --> 00:27:17,340 Basi hii ni tu sanity hundi. 606 00:27:17,340 --> 00:27:18,430 607 00:27:18,430 --> 00:27:19,950 Tutaweza kuona nini katika wakati huu. 608 00:27:19,950 --> 00:27:24,220 Sasa mimi kutangaza mwingine kutofautiana, Jumla, initialize kwa sifuri. 609 00:27:24,220 --> 00:27:28,140 Basi nina hii Kwa kitanzi iterating, inaonekana kwa uwazi, 610 00:27:28,140 --> 00:27:33,810 kutoka i = 1 hadi kwenye = m, ambayo ni chochote user typed katika, na kisha mimi 611 00:27:33,810 --> 00:27:35,690 increment Jumla kama hii. 612 00:27:35,690 --> 00:27:37,360 Na kisha kurudi Jumla. 613 00:27:37,360 --> 00:27:38,440 >> Hivyo wanandoa wa maswali. 614 00:27:38,440 --> 00:27:42,370 Moja, mimi kudai katika maoni yangu kwamba huu avoids hatari ya kitanzi usio. 615 00:27:42,370 --> 00:27:45,620 Kwa nini kupita katika namba hasi kushawishi, uwezekano, kitanzi usio? 616 00:27:45,620 --> 00:27:49,396 617 00:27:49,396 --> 00:27:51,290 >> Watazamaji: Wewe utakuwa kamwe kufikia m. 618 00:27:51,290 --> 00:27:52,880 >> SPIKA 1: Kamwe kufikia m. 619 00:27:52,880 --> 00:27:55,880 Lakini m ni kupita katika, hivyo hebu kufikiria mfano rahisi. 620 00:27:55,880 --> 00:27:58,510 Kama m ni kupita katika na user kama hasi moja. 621 00:27:58,510 --> 00:28:00,059 Bila kujali kuu. 622 00:28:00,059 --> 00:28:01,850 Kuu ya kulinda sisi kutoka huu pia, hivyo mimi nina tu 623 00:28:01,850 --> 00:28:04,680 kuwa kweli anal na sigma pia kuhakikisha 624 00:28:04,680 --> 00:28:06,540 kwamba pembejeo hawezi kuwa hasi. 625 00:28:06,540 --> 00:28:10,130 Hivyo kama m ni hasi, kitu kama hasi moja. 626 00:28:10,130 --> 00:28:11,930 Nini kitatokea? 627 00:28:11,930 --> 00:28:14,390 Naam, i ni kwenda kupata initialized kwa moja, 628 00:28:14,390 --> 00:28:19,060 na kisha i ni kwenda kuwa chini ya au sawa na m? 629 00:28:19,060 --> 00:28:24,130 630 00:28:24,130 --> 00:28:24,765 >> Kusimama kwa. 631 00:28:24,765 --> 00:28:26,930 632 00:28:26,930 --> 00:28:29,370 Hiyo was-- hebu si, hebu Nix hadithi hii. 633 00:28:29,370 --> 00:28:32,780 Mimi si kuuliza swali hilo, kwa sababu hatari kwamba mimi inataja 634 00:28:32,780 --> 00:28:38,360 si kwenda kutokea kwa sababu i ni daima kwenda kuwa kubwa than-- OK, 635 00:28:38,360 --> 00:28:39,871 Mimi retract swali hilo. 636 00:28:39,871 --> 00:28:40,370 OK. 637 00:28:40,370 --> 00:28:42,030 Hebu lengo tu juu ya sehemu hii hapa. 638 00:28:42,030 --> 00:28:44,210 639 00:28:44,210 --> 00:28:48,830 Kwa nini mimi kutangaza baadhi nje ya kitanzi? 640 00:28:48,830 --> 00:28:52,010 Taarifa juu ya line 49 nimekuwa alitangaza i ndani ya kitanzi, 641 00:28:52,010 --> 00:28:54,950 lakini online 48 nimekuwa alitangaza baadhi ya nje. 642 00:28:54,950 --> 00:28:55,695 Yeah. 643 00:28:55,695 --> 00:28:56,611 Watazamaji: [inaudible]. 644 00:28:56,611 --> 00:28:58,734 645 00:28:58,734 --> 00:28:59,400 SPIKA 1: Uhakika. 646 00:28:59,400 --> 00:29:03,360 Hivyo kwanza kabisa mimi hakika hawana nataka kutangaza na initialize Jumla 647 00:29:03,360 --> 00:29:06,130 na sifuri ndani ya kitanzi juu ya kila iteration, 648 00:29:06,130 --> 00:29:09,370 kwa sababu hii ingekuwa wazi kushindwa madhumuni ya summing up idadi. 649 00:29:09,370 --> 00:29:11,770 Napenda kuendelea kubadilisha thamani ya nyuma na sifuri. 650 00:29:11,770 --> 00:29:17,992 Na pia, nini mwingine zaidi arcane Sababu ya kuwa sawa uamuzi wa kubuni? 651 00:29:17,992 --> 00:29:18,954 Yeah. 652 00:29:18,954 --> 00:29:20,279 >> Watazamaji: [inaudible]. 653 00:29:20,279 --> 00:29:21,070 SPIKA 1: Hasa. 654 00:29:21,070 --> 00:29:24,060 Nataka kupata hiyo nje ya kitanzi pia juu ya nini mstari? 655 00:29:24,060 --> 00:29:25,390 656 00:29:25,390 --> 00:29:26,400 On 53. 657 00:29:26,400 --> 00:29:29,910 Na misingi ya utawala wetu wa kidole gumba kutoka michache ya mihadhara iliyopita, 658 00:29:29,910 --> 00:29:33,680 vigezo ni scoped, kwa kweli, kwa braces curly kwamba imewazunguka yao. 659 00:29:33,680 --> 00:29:38,190 Hivyo kama mimi si kutangaza Jumla ndani ya wa haya nje braces curly, 660 00:29:38,190 --> 00:29:40,250 Siwezi kutumia katika line 53. 661 00:29:40,250 --> 00:29:43,160 Kuweka njia nyingine, kama mimi alitangaza Jumla katika hapa, au hata ndani ya 662 00:29:43,160 --> 00:29:45,410 Kwa kitanzi, sikuweza kupata ni katika 53. 663 00:29:45,410 --> 00:29:47,150 variable ingekuwa na gone. 664 00:29:47,150 --> 00:29:48,579 Hivyo michache ya sababu huko. 665 00:29:48,579 --> 00:29:50,370 Lakini sasa hebu kwenda nyuma na kuona nini kinatokea. 666 00:29:50,370 --> 00:29:51,730 Hivyo sigma anapata kuitwa. 667 00:29:51,730 --> 00:29:55,640 Inaongeza up 1 plus 2, au 1 plus 2 plus 3, na kisha anarudi thamani, 668 00:29:55,640 --> 00:29:59,660 maduka katika jibu, na printf hapa ni kwa nini mimi nina kuona juu ya screen. 669 00:29:59,660 --> 00:30:03,079 Hivyo hii ni nini tutaweza wito iterative mbinu, ambapo iteration tu 670 00:30:03,079 --> 00:30:03,870 ina maana ya kutumia kitanzi. 671 00:30:03,870 --> 00:30:06,900 A Kwa kitanzi, Wakati kitanzi, Do Wakati kitanzi, tu kufanya kitu tena 672 00:30:06,900 --> 00:30:08,380 na tena na tena. 673 00:30:08,380 --> 00:30:13,505 >> Lakini sigma ni aina ya kazi nadhifu katika kwamba mimi naweza kutekeleza ni tofauti. 674 00:30:13,505 --> 00:30:14,620 675 00:30:14,620 --> 00:30:19,120 Nini kuhusu hili, ambayo tu kuwa aina ya baridi, 676 00:30:19,120 --> 00:30:21,880 basi mimi kweli kujikwamua mengi ya ovyo 677 00:30:21,880 --> 00:30:24,380 kwa sababu kazi hii ni kweli ni rahisi sana. 678 00:30:24,380 --> 00:30:27,780 Hebu whittle ni chini tu kwa mistari yake manne ya 679 00:30:27,780 --> 00:30:30,410 na kujikwamua yote maoni na braces curly. 680 00:30:30,410 --> 00:30:34,334 Hii ni aina ya akili-mbiu mbadala utekelezaji. 681 00:30:34,334 --> 00:30:37,250 Haki wote, labda si akili-mbiu, lakini ni aina ya sexier, kila haki, 682 00:30:37,250 --> 00:30:39,920 kuangalia hii hivyo zaidi kwa ufupi. 683 00:30:39,920 --> 00:30:43,120 Pamoja na mistari minne tu wa kanuni, Mimi kwanza na hii kuangalia sanity. 684 00:30:43,120 --> 00:30:45,732 Kama m ni chini ya au sawa na sifuri, sigma haina mantiki. 685 00:30:45,732 --> 00:30:48,190 Ni tu walidhani kuwa katika kesi hii kwa idadi chanya, 686 00:30:48,190 --> 00:30:50,340 hivyo mimi nina kwenda tu kwa kurudi zero kiholela 687 00:30:50,340 --> 00:30:53,210 ili sisi angalau kuwa na baadhi kinachojulikana kesi ya msingi. 688 00:30:53,210 --> 00:30:54,430 >> Lakini hapa ni uzuri. 689 00:30:54,430 --> 00:30:59,930 ukamilifu wa wazo hili, na kuongeza namba kuanzia 1 mpaka n, au m katika kesi hii, 690 00:30:59,930 --> 00:31:02,630 inaweza kufanyika kwa aina ya kupita mume. 691 00:31:02,630 --> 00:31:04,947 Naam, ni nini ni jumla ya 1 na m? 692 00:31:04,947 --> 00:31:05,780 Naam, unajua nini? 693 00:31:05,780 --> 00:31:11,949 Ni sawa kama jumla ya m pamoja na Jumla ya 1 kwa m minus 1. 694 00:31:11,949 --> 00:31:12,740 Naam unajua nini? 695 00:31:12,740 --> 00:31:13,940 Nini sigma ya m minus 1? 696 00:31:13,940 --> 00:31:17,860 Naam, kama wewe aina ya kufuata hii mantiki, ni sawa na kama m minus 1 697 00:31:17,860 --> 00:31:21,415 pamoja na sigma ya m minus 2. 698 00:31:21,415 --> 00:31:22,480 699 00:31:22,480 --> 00:31:26,012 Hivyo unaweza aina ya just-- hii ni kama, kama wewe ni tu 700 00:31:26,012 --> 00:31:28,220 kujaribu waudhi rafiki na wao kuuliza swali, 701 00:31:28,220 --> 00:31:31,344 wewe aina ya kujibu kwa swali, unaweza aina ya kuweka kupita mume. 702 00:31:31,344 --> 00:31:34,560 Lakini nini muhimu ni kwamba kama wewe kuweka kufanya swali na ndogo ndogo 703 00:31:34,560 --> 00:31:36,910 na ndogo, wewe ni si kuuliza nini sigma 704 00:31:36,910 --> 00:31:39,116 ya n, nini sigma ya n, nini sigma ya n? 705 00:31:39,116 --> 00:31:40,990 Wewe ni kuuliza nini sigma ya n, nini sigma 706 00:31:40,990 --> 00:31:42,839 ya n minus 1, nini sigma ya n minus 2? 707 00:31:42,839 --> 00:31:44,880 Hatimaye swali lako inaenda kuwa nini? 708 00:31:44,880 --> 00:31:50,250 Sigma ya mtu mmoja au ni nini sifuri, baadhi ya thamani ndogo sana, 709 00:31:50,250 --> 00:31:52,220 na kwa haraka kama wewe kupata kwamba, rafiki yako, 710 00:31:52,220 --> 00:31:54,350 wewe si kwenda kuuliza swali moja tena, 711 00:31:54,350 --> 00:31:55,975 wewe ni kwenda tu kusema, oh ni sifuri. 712 00:31:55,975 --> 00:31:58,490 Sisi ni kosa kucheza aina hii ya kijinga mchezo mzunguko. 713 00:31:58,490 --> 00:32:02,950 >> Hivyo kujirudia ni tendo katika programu ya kazi wito yenyewe. 714 00:32:02,950 --> 00:32:06,630 Mpango huu, wakati ulioandaliwa na kukimbia, ni kwenda kuishi hasa kwa njia hiyo, 715 00:32:06,630 --> 00:32:09,620 lakini nini muhimu ni kwamba ndani ya ya kazi kuitwa sigma, 716 00:32:09,620 --> 00:32:13,150 kuna mstari wa kanuni ambayo sisi ni wito wenyewe, 717 00:32:13,150 --> 00:32:14,980 ambayo kwa kawaida kuwa mbaya. 718 00:32:14,980 --> 00:32:21,160 Kwa mfano, nini kama mimi kwanza ulioandaliwa hii, hivyo kufanya sigma-- 719 00:32:21,160 --> 00:32:22,710 kufanya sigma 1 ./sigma-1. 720 00:32:22,710 --> 00:32:25,050 721 00:32:25,050 --> 00:32:27,690 Chanya integer, tafadhali, 50 1275. 722 00:32:27,690 --> 00:32:30,810 Basi nini kazi inaonekana kuwa, kulingana na mtihani mmoja, sahihi. 723 00:32:30,810 --> 00:32:34,917 Lakini nini kama mimi kupata kidogo hatari na kufuta kinachojulikana kesi ya msingi, 724 00:32:34,917 --> 00:32:37,750 na tu kusema, pamoja na mimi nina maamuzi tu hii ngumu zaidi kuliko ilivyo. 725 00:32:37,750 --> 00:32:42,450 Hebu tu compute sigma kwa kuchukua m na kisha kuongeza 726 00:32:42,450 --> 00:32:44,564 katika sigma ya m minus moja? 727 00:32:44,564 --> 00:32:45,980 Naam, nini kinaendelea kutokea hapa? 728 00:32:45,980 --> 00:32:47,140 Hebu zoom nje. 729 00:32:47,140 --> 00:32:52,920 Hebu recompile mpango, kuokoa yake, recompile mpango, 730 00:32:52,920 --> 00:33:00,450 na kisha tayari ./sigma-1 zooming katika, kuingia integer chanya tafadhali, 50. 731 00:33:00,450 --> 00:33:02,180 732 00:33:02,180 --> 00:33:04,430 Jinsi gani wengi wa wewe ni tayari kwa fess up kwa kuona kwamba? 733 00:33:04,430 --> 00:33:04,950 >> OK. 734 00:33:04,950 --> 00:33:06,690 Hivyo hii inaweza kutokea kwa idadi ya sababu, 735 00:33:06,690 --> 00:33:09,148 na kusema ukweli wiki hii tuko kuhusu kukupa zaidi yao. 736 00:33:09,148 --> 00:33:11,780 Lakini katika kesi hii, jaribu kwa sababu nyuma 737 00:33:11,780 --> 00:33:14,430 nini kinaweza kuwa kilichotokea hapa? 738 00:33:14,430 --> 00:33:17,400 Mkato wa soko kosa, sisi alisema jana wakati, inahusu sehemu ya kumbukumbu. 739 00:33:17,400 --> 00:33:18,690 Kitu mbaya kilichotokea. 740 00:33:18,690 --> 00:33:21,550 Lakini kile ambacho kilikuwa ni mechanically kwamba alikwenda awry 741 00:33:21,550 --> 00:33:25,000 hapa kwa sababu ya kuondolewa yangu ya kwamba kinachojulikana kesi ya msingi, 742 00:33:25,000 --> 00:33:26,870 ambapo mimi akarudi ngumu-coded thamani? 743 00:33:26,870 --> 00:33:28,970 744 00:33:28,970 --> 00:33:30,460 Unafikiri potoka? 745 00:33:30,460 --> 00:33:31,219 Yeah. 746 00:33:31,219 --> 00:33:32,135 >> Watazamaji: [inaudible]. 747 00:33:32,135 --> 00:33:36,387 748 00:33:36,387 --> 00:33:36,970 SPIKA 1: Ah. 749 00:33:36,970 --> 00:33:37,550 Swali nzuri. 750 00:33:37,550 --> 00:33:39,508 Hivyo ukubwa wa idadi kwamba nilikuwa summing up 751 00:33:39,508 --> 00:33:41,920 got hivyo kubwa kwamba ilizidi ukubwa wa nafasi ya kumbukumbu. 752 00:33:41,920 --> 00:33:44,640 Wazo nzuri, lakini si kimsingi kwenda kusababisha ajali. 753 00:33:44,640 --> 00:33:48,230 Ambayo inaweza kusababisha integer kufurika, ambapo bits tu flip juu ya 754 00:33:48,230 --> 00:33:51,760 na kisha sisi makosa kweli kubwa simu kwa kama idadi hasi, 755 00:33:51,760 --> 00:33:53,260 lakini kwamba yenyewe si kusababisha ajali. 756 00:33:53,260 --> 00:33:55,509 Kwa sababu mwishoni mwa siku int bado ni 32 bits. 757 00:33:55,509 --> 00:33:57,640 Wewe si kwenda kwa ajali kuiba 33 bit. 758 00:33:57,640 --> 00:33:58,431 Lakini wazo nzuri. 759 00:33:58,431 --> 00:33:58,984 Yeah. 760 00:33:58,984 --> 00:33:59,900 >> Watazamaji: [inaudible]. 761 00:33:59,900 --> 00:34:00,551 762 00:34:00,551 --> 00:34:02,300 SPIKA 1: Njia kamwe ataacha mbio, 763 00:34:02,300 --> 00:34:06,658 na kwa kweli ni wito yenyewe tena na tena na tena na tena 764 00:34:06,658 --> 00:34:08,449 na tena, na hakuna hata mmoja wa kazi hizo milele 765 00:34:08,449 --> 00:34:13,310 kumaliza kwa sababu line yao ya pekee ya code wito themself tena na tena 766 00:34:13,310 --> 00:34:14,219 na tena. 767 00:34:14,219 --> 00:34:16,080 Na nini kweli kinachotokea hapa, na sasa sisi 768 00:34:16,080 --> 00:34:18,100 unaweza aina ya kuteka hii pictorially. 769 00:34:18,100 --> 00:34:20,899 Hebu kwenda juu ya picha kwa muda tu. 770 00:34:20,899 --> 00:34:22,940 Hii ni picha, kwamba hatimaye nyama nje 771 00:34:22,940 --> 00:34:26,336 kwa undani zaidi, ya nini kinaendelea ndani ya kumbukumbu ya kompyuta yako. 772 00:34:26,336 --> 00:34:28,460 Na zinageuka kuwa juu ya chini ya picha hii 773 00:34:28,460 --> 00:34:29,709 ni kitu kinachoitwa stack. 774 00:34:29,709 --> 00:34:31,920 Hii ni chunk ya kumbukumbu, chunk ya RAM, 775 00:34:31,920 --> 00:34:33,920 hiyo ni tu kutumika wakati wowote kazi ni kuitwa. 776 00:34:33,920 --> 00:34:36,239 Yoyote wakati wewe, programu, wito kazi, 777 00:34:36,239 --> 00:34:38,860 mfumo wa uendeshaji, kama Mac OS, Windows, au Linux, 778 00:34:38,860 --> 00:34:41,920 grabs rundo la ka, labda kilobytes chache, megabytes labda chache 779 00:34:41,920 --> 00:34:44,590 ya kumbukumbu, mikono yao na wewe, na kisha lets 780 00:34:44,590 --> 00:34:47,650 wewe kukimbia kazi yako kwa kutumia chochote vigezo unahitaji. 781 00:34:47,650 --> 00:34:50,699 Na kama wewe kisha kuwaita mwingine kazi na kazi nyingine, 782 00:34:50,699 --> 00:34:53,590 kupata kipande nyingine ya kumbukumbu na kipande nyingine ya kumbukumbu. 783 00:34:53,590 --> 00:34:57,090 >> Na hakika, kama hawa trays kijani kutoka Annenberg kuwakilisha kwamba kumbukumbu, 784 00:34:57,090 --> 00:34:59,870 hapa ni nini kinatokea kwanza wakati wewe piga kazi sigma. 785 00:34:59,870 --> 00:35:04,510 Ni kama kuweka tray kama hii juu ya nini awali stack tupu. 786 00:35:04,510 --> 00:35:07,142 Lakini basi kama kwamba tray wito yenyewe, hivyo kusema, 787 00:35:07,142 --> 00:35:08,850 wito mfano mwingine ya sigma, hiyo ni 788 00:35:08,850 --> 00:35:11,640 kama kuuliza mfumo wa uendeshaji, ooh, haja kidogo zaidi ya kumbukumbu, 789 00:35:11,640 --> 00:35:12,520 nipe hiyo. 790 00:35:12,520 --> 00:35:14,840 Na kisha anapata piled juu ya juu. 791 00:35:14,840 --> 00:35:18,030 Lakini nini muhimu hapa ni kwamba tray kwanza ni bado kuna, 792 00:35:18,030 --> 00:35:20,620 kwa sababu yeye kutenguliwa tray hii ya pili. 793 00:35:20,620 --> 00:35:23,500 Sasa wakati huo huo, sigma wito sigma, hiyo ni kama kuuliza kwa zaidi ya kumbukumbu. 794 00:35:23,500 --> 00:35:25,830 Anapata piled juu ya zaidi ya hapa. 795 00:35:25,830 --> 00:35:29,350 sigma wito sigma, hii ni sababu nyingine tray kwamba anapata piled juu ya hapa. 796 00:35:29,350 --> 00:35:32,942 Na kama wewe kuendelea kufanya hivyo, hatimaye, aina ya ramani hii Visual 797 00:35:32,942 --> 00:35:35,525 kwa kuwa chati, nini kinaendelea kutokea kwa stack ya trays? 798 00:35:35,525 --> 00:35:37,480 799 00:35:37,480 --> 00:35:41,160 Ni kwenda kisichozidi kiasi ya kumbukumbu ya kompyuta yako ina. 800 00:35:41,160 --> 00:35:45,790 Na kwa haraka kama hii tray kijani unazidi line usawa 801 00:35:45,790 --> 00:35:49,410 juu stack na hapo juu kwamba neno chungu, ambayo tutaweza kurudi katika siku za usoni, 802 00:35:49,410 --> 00:35:50,410 kwamba ni jambo baya. 803 00:35:50,410 --> 00:35:52,810 lundo ni tofauti sehemu ya kumbukumbu, 804 00:35:52,810 --> 00:35:55,190 na kama wewe, waache hawa trays rundo na rundo juu, 805 00:35:55,190 --> 00:35:57,800 wewe ni kwenda kisichozidi sehemu yako mwenyewe ya kumbukumbu, 806 00:35:57,800 --> 00:36:00,420 na mpango ni kweli kwenda kwa ajali. 807 00:36:00,420 --> 00:36:02,930 >> Sasa kama kando, wazo hili ya kujirudia, kwa hiyo, 808 00:36:02,930 --> 00:36:06,500 unaweza wazi kusababisha matatizo, lakini si lazima kitu mbaya. 809 00:36:06,500 --> 00:36:08,840 Kwa sababu kufikiria, baada ya wote, how-- na labda 810 00:36:08,840 --> 00:36:11,700 hii inachukua baadhi ya kupata kutumika kwa --how kifahari au jinsi rahisi 811 00:36:11,700 --> 00:36:14,890 kwamba utekelezaji wa sigma mara. 812 00:36:14,890 --> 00:36:17,440 Na sisi ni si kwenda kutumia kujirudia yote kwamba mengi katika CS50, 813 00:36:17,440 --> 00:36:20,780 lakini katika CS51, na kwa kweli darasa yoyote ambapo kuendesha miundo data 814 00:36:20,780 --> 00:36:23,640 kama miti, au miti familia, kwamba kuwa na baadhi ya uongozi, 815 00:36:23,640 --> 00:36:26,000 ni super, super muhimu. 816 00:36:26,000 --> 00:36:29,750 Sasa, kama kando, ili kama anayetaka wanasayansi wa kompyuta 817 00:36:29,750 --> 00:36:33,180 ni ukoo na baadhi ya Google ya utani ndani, kama wewe kwenda Google 818 00:36:33,180 --> 00:36:36,345 na wewe kuangalia juu ni nini ufafanuzi wa, kusema, kujirudia, kuingia. 819 00:36:36,345 --> 00:36:40,208 820 00:36:40,208 --> 00:36:41,110 Uh-huh. 821 00:36:41,110 --> 00:36:42,670 Kama kando, mimi vunjwa up chache. 822 00:36:42,670 --> 00:36:45,470 Hii ilikuwa kama dakika 10 ya uajizi asubuhi hii. 823 00:36:45,470 --> 00:36:52,890 Kama wewe pia Google "potovu," ilani na tilting kichwa yako slightly-- 824 00:36:52,890 --> 00:36:55,120 na kisha hii moja ni labda mauaji zaidi ya yote 825 00:36:55,120 --> 00:36:57,286 tangu mtu alitumia kama siku yao kutekeleza azma hii 826 00:36:57,286 --> 00:36:59,880 baadhi ya miaka ago-- kuja juu. 827 00:36:59,880 --> 00:37:01,140 828 00:37:01,140 --> 00:37:04,540 Oh, wait-- hiyo ni mdudu. 829 00:37:04,540 --> 00:37:08,410 830 00:37:08,410 --> 00:37:11,410 >> Hivyo mbio juu ya moja ya Nje kubwa duniani 831 00:37:11,410 --> 00:37:13,510 ni kijinga kidogo haya mayai ya Pasaka. 832 00:37:13,510 --> 00:37:16,690 Pengine hutumia nontrivial idadi ya mstari wa kanuni 833 00:37:16,690 --> 00:37:19,280 hivyo tu kwamba tunaweza kuwa na kidogo fun mambo kama hayo. 834 00:37:19,280 --> 00:37:22,140 Lakini angalau sasa, kupata baadhi ya utani wale ndani. 835 00:37:22,140 --> 00:37:28,330 >> Sasa hebu tuangalie baadhi ya nyeupe uongo tumekuwa kuwaambia wa marehemu, 836 00:37:28,330 --> 00:37:30,707 na kuanza peel nyuma tabaka baadhi kitaalam 837 00:37:30,707 --> 00:37:32,790 ili kweli kuelewa nini imekuwa kinachoendelea 838 00:37:32,790 --> 00:37:34,860 na unaweza kuelewa baadhi ya vitisho, 839 00:37:34,860 --> 00:37:38,060 kama Shellshock, kwamba sasa kuanza kuwa 840 00:37:38,060 --> 00:37:41,110 juu ya mstari wa mbele katika kila mtu makini, angalau katika vyombo vya habari. 841 00:37:41,110 --> 00:37:45,810 Hivyo hapa ni kazi rahisi sana kwamba anarudi kitu, batili. 842 00:37:45,810 --> 00:37:46,790 Jina lake ni kubadilishana. 843 00:37:46,790 --> 00:37:50,880 Inachukua katika vigezo mbili na kuirudisha chochote. 844 00:37:50,880 --> 00:37:52,260 Inachukua katika a na b. 845 00:37:52,260 --> 00:37:53,337 Hivyo maandamano ya haraka. 846 00:37:53,337 --> 00:37:54,170 Sisi kuletwa haya juu. 847 00:37:54,170 --> 00:37:56,100 Tunaweza pia kuchukua kidogo kuvunja hapa kwa muda tu 848 00:37:56,100 --> 00:37:57,250 na kuwa na kitu kidogo ya kunywa. 849 00:37:57,250 --> 00:38:00,120 Kama mtu bila akili kujiunga na me up hapa kwa muda tu. 850 00:38:00,120 --> 00:38:01,830 Vipi kuhusu wewe katika shati maroon? 851 00:38:01,830 --> 00:38:02,335 Kuja juu juu. 852 00:38:02,335 --> 00:38:04,060 853 00:38:04,060 --> 00:38:05,260 Moja tu leo. 854 00:38:05,260 --> 00:38:06,251 Asante, ingawa. 855 00:38:06,251 --> 00:38:08,000 Zote haki, na sisi kuja juu ambao hapa? 856 00:38:08,000 --> 00:38:08,660 Nini jina lako? 857 00:38:08,660 --> 00:38:09,360 >> SPIKA 4: Laura. 858 00:38:09,360 --> 00:38:09,740 >> SPIKA 1: Laura. 859 00:38:09,740 --> 00:38:10,370 Kuja juu juu. 860 00:38:10,370 --> 00:38:11,460 861 00:38:11,460 --> 00:38:13,850 Hivyo Laura, changamoto rahisi sana leo. 862 00:38:13,850 --> 00:38:14,704 863 00:38:14,704 --> 00:38:15,370 Nice kukutana na yo. 864 00:38:15,370 --> 00:38:16,410 865 00:38:16,410 --> 00:38:16,910 Wote haki. 866 00:38:16,910 --> 00:38:21,179 Hivyo tuna baadhi ya maziwa juu ya hapa na tuna baadhi ya juisi ya machungwa juu ya hapa 867 00:38:21,179 --> 00:38:23,345 na baadhi ya vikombe kwamba sisi zilizokopwa kutoka Annenberg leo. 868 00:38:23,345 --> 00:38:24,178 >> SPIKA 4: zilizokopwa. 869 00:38:24,178 --> 00:38:27,240 SPIKA 1: Na kwenda mbele na kukupa nusu glasi ya hii. 870 00:38:27,240 --> 00:38:28,250 871 00:38:28,250 --> 00:38:28,800 Wote haki. 872 00:38:28,800 --> 00:38:30,750 Na tutaweza kukupa nusu glasi ya maziwa. 873 00:38:30,750 --> 00:38:31,905 874 00:38:31,905 --> 00:38:35,890 Oh, na hivyo tu kwamba unaweza kumbuka nini hii ilikuwa kama, 875 00:38:35,890 --> 00:38:38,860 Mimi ikumbukwe kuleta hii juu na juu ya leo. 876 00:38:38,860 --> 00:38:42,030 877 00:38:42,030 --> 00:38:42,530 Sawa. 878 00:38:42,530 --> 00:38:45,470 Kama isingekuwa akili, hebu angalia, sisi unaweza kuweka yao juu ya miwani yako mwenyewe 879 00:38:45,470 --> 00:38:46,560 kama unataka. 880 00:38:46,560 --> 00:38:48,710 Hii itakuwa dunia kutoka macho Laura ya. 881 00:38:48,710 --> 00:38:49,210 Wote haki. 882 00:38:49,210 --> 00:38:53,820 Hivyo lengo yako, kutokana na vikombe viwili vya kioevu hapa, maziwa na juisi ya machungwa, 883 00:38:53,820 --> 00:38:58,370 ni wabadilishane yaliyomo mbili ili juisi ya machungwa huenda katika kikombe maziwa 884 00:38:58,370 --> 00:39:00,710 na maziwa huenda katika juisi ya machungwa kikombe. 885 00:39:00,710 --> 00:39:02,359 >> SPIKA 4: Je, mimi kupata kikombe mwingine? 886 00:39:02,359 --> 00:39:05,650 SPIKA 1: Mimi nimefurahi wewe aliuliza, ingawa ingekuwa bora zaidi Footage 887 00:39:05,650 --> 00:39:06,710 kama alikuwa na si aliuliza. 888 00:39:06,710 --> 00:39:10,620 Lakini ndiyo, tunaweza kutoa tatu kikombe hiyo ni tupu, bila shaka. 889 00:39:10,620 --> 00:39:11,120 Wote haki. 890 00:39:11,120 --> 00:39:12,300 Hivyo wabadilishane yaliyomo huko. 891 00:39:12,300 --> 00:39:16,100 892 00:39:16,100 --> 00:39:17,050 Nzuri sana. 893 00:39:17,050 --> 00:39:20,390 894 00:39:20,390 --> 00:39:21,305 Nzuri sana. 895 00:39:21,305 --> 00:39:23,121 896 00:39:23,121 --> 00:39:24,745 Wewe ni kufanya hivyo inashangaza kwa makini. 897 00:39:24,745 --> 00:39:26,970 898 00:39:26,970 --> 00:39:28,655 Na hatua tatu. 899 00:39:28,655 --> 00:39:30,390 900 00:39:30,390 --> 00:39:31,350 Wote haki. 901 00:39:31,350 --> 00:39:31,930 Excellent. 902 00:39:31,930 --> 00:39:33,930 duru kubwa ya applause itakuwa vizuri kwa Laura. 903 00:39:33,930 --> 00:39:36,500 904 00:39:36,500 --> 00:39:37,000 Wote haki. 905 00:39:37,000 --> 00:39:40,790 Tuna kidogo zimefunguliwa zawadi kwa ajili yenu, lakini napenda kuchukua hizi. 906 00:39:40,790 --> 00:39:42,620 Asante sana. 907 00:39:42,620 --> 00:39:46,170 Basi mfano rahisi, ingawa, kuonyesha kwamba kama wewe kufanya 908 00:39:46,170 --> 00:39:48,300 wanataka wabadilishane yaliyomo ya vyombo mbili, 909 00:39:48,300 --> 00:39:52,360 au hebu kuwaita vigezo, unahitaji baadhi ya kuhifadhi muda 910 00:39:52,360 --> 00:39:56,710 hatua ya moja ya yaliyomo katika hivyo kuwa unaweza kweli kufanya byta. 911 00:39:56,710 --> 00:40:01,790 Hivyo kweli, chanzo hiki code hapa up katika C ni mwakilishi wa hasa kwamba. 912 00:40:01,790 --> 00:40:06,340 Kama maji ya machungwa mara a na maziwa mara b, na sisi alitaka wabadilishane mbili, 913 00:40:06,340 --> 00:40:08,990 unaweza kujaribu kitu ubunifu kwa kumwaga moja katika nyingine, 914 00:40:08,990 --> 00:40:11,031 lakini kwamba pengine ingekuwa si mwisho hasa vizuri. 915 00:40:11,031 --> 00:40:15,260 Na hivyo sisi kutumia tatu kikombe, wito ni TMP, T-M-P na mkataba huo, 916 00:40:15,260 --> 00:40:19,370 na kuweka yaliyomo ya OJ katika kwamba, basi wabadilishane kikombe moja, 917 00:40:19,370 --> 00:40:22,610 kisha kuweka OJ ndani ya kikombe awali, na hivyo 918 00:40:22,610 --> 00:40:25,320 kufikia, hasa kama Laura hivyo, wabadilishane. 919 00:40:25,320 --> 00:40:26,850 >> Basi hebu kufanya hasa kwamba. 920 00:40:26,850 --> 00:40:30,110 Hebu kwenda mbele na kufungua up mfano kwamba 921 00:40:30,110 --> 00:40:32,720 kweli kuitwa "hakuna wabadilishane, "kwa sababu hii ni si 922 00:40:32,720 --> 00:40:36,180 kufanyika kama tu kama wewe kufikiri. 923 00:40:36,180 --> 00:40:41,190 Hivyo katika mpango huu, taarifa kwamba Mimi nina kutumia stdio.h, rafiki yetu ya zamani. 924 00:40:41,190 --> 00:40:43,130 Nina mfano kwa wabadilishane up huko, ambayo 925 00:40:43,130 --> 00:40:45,450 ina maana utekelezaji wake ya pengine chini chini, 926 00:40:45,450 --> 00:40:48,050 na hebu angalia nini hii kuu mpango kwenda kufanya kwa ajili yangu. 927 00:40:48,050 --> 00:40:52,020 Mimi kwanza kutangaza int x anapata moja, na int y anapata mbili. 928 00:40:52,020 --> 00:40:54,930 Hivyo kufikiri ya wale kama OJ na maziwa, kwa mtiririko huo. 929 00:40:54,930 --> 00:40:57,100 Na kisha mimi tu printf akisema x ni hii 930 00:40:57,100 --> 00:41:00,120 na y ni hii, tu ili niweze kuibua kuona nini kinaendelea. 931 00:41:00,120 --> 00:41:03,810 Kisha mimi kuwa printf wakidai kwamba mimi nina swapping mbili, 932 00:41:03,810 --> 00:41:07,100 na kisha mimi magazeti nje kudai kwamba wao ni walibadilishana, 933 00:41:07,100 --> 00:41:09,300 na mimi magazeti nje x na y tena. 934 00:41:09,300 --> 00:41:13,010 Hivyo hapa chini katika wabadilishane ni nini hasa Laura hivyo, 935 00:41:13,010 --> 00:41:16,240 na hasa yale tuliona juu ya screen wakati iliyopita. 936 00:41:16,240 --> 00:41:19,380 >> Basi hebu kwenda mbele na kuwa sorely tamaa. 937 00:41:19,380 --> 00:41:24,690 Kufanya hakuna wabadilishane, na kukimbia hakuna wabadilishane, zooming katika juu ya pato hapa. 938 00:41:24,690 --> 00:41:28,320 Kuingia x ni 1, y ni 2, swapping swapped. 939 00:41:28,320 --> 00:41:32,700 x ni bado 1, na y ni bado 2. 940 00:41:32,700 --> 00:41:37,630 Hivyo hata ingawa, kusema ukweli, hii inaonekana hasa kama, pamoja na zaidi kitaalam, 941 00:41:37,630 --> 00:41:40,730 nini Laura hivyo, hawakuwa wanaonekana kazi. 942 00:41:40,730 --> 00:41:42,130 Hivyo kwa nini ni kwamba? 943 00:41:42,130 --> 00:41:46,630 Naam, ni zinageuka kuwa wakati sisi kuandika mpango kama hii 944 00:41:46,630 --> 00:41:51,590 ambayo ina wote wawili kuu, yalionyesha hapa, na kisha kazi nyingine, kama wabadilishane, 945 00:41:51,590 --> 00:41:54,230 yalionyesha hapa, ambayo wito, dunia 946 00:41:54,230 --> 00:41:57,030 inaonekana kitu kidogo kama trays haya wakati iliyopita. 947 00:41:57,030 --> 00:42:00,440 Wakati kuu kwanza anapata kuitwa, hiyo ni kama kuuliza mfumo wa uendeshaji 948 00:42:00,440 --> 00:42:04,030 kwa kidogo ya kumbukumbu kwa ajili ya serikali za mitaa vigezo kama x na y ambayo ina kuu, 949 00:42:04,030 --> 00:42:05,660 na wao kuishia haki pale. 950 00:42:05,660 --> 00:42:10,920 Lakini kama wito kuu wabadilishane, na kuu hupita wabadilishane hoja mbili, a na b, 951 00:42:10,920 --> 00:42:16,410 juisi ya machungwa na maziwa, siyo kama kuwapatia maji ya machungwa na maziwa 952 00:42:16,410 --> 00:42:17,500 kwa Laura. 953 00:42:17,500 --> 00:42:21,300 Nini kompyuta gani, ni hupita nakala ya juisi ya machungwa 954 00:42:21,300 --> 00:42:27,110 na nakala za maziwa kwa Laura, ili nini hatimaye ndani ya tray hii 955 00:42:27,110 --> 00:42:32,510 ni thamani moja na mbili, au OJ na maziwa, lakini nakala yake, 956 00:42:32,510 --> 00:42:34,790 hivyo kwamba katika hatua hii katika hadithi, kuna 957 00:42:34,790 --> 00:42:36,930 ni OJ na maziwa katika kila moja ya trays haya. 958 00:42:36,930 --> 00:42:39,260 Kuna moja na mbili katika kila moja ya trays haya, 959 00:42:39,260 --> 00:42:41,720 na kubadilishana kazi ni kweli kazi. 960 00:42:41,720 --> 00:42:46,090 Ni swapping yao ndani ya ya pili topmost tray, 961 00:42:46,090 --> 00:42:48,147 lakini kwamba swapping ina athari hakuna. 962 00:42:48,147 --> 00:42:49,980 Na misingi ya baadhi tu kanuni ya msingi tumekuwa 963 00:42:49,980 --> 00:42:52,970 kuongelea kabla, na kwa kweli tu dakika chache zilizopita, kile 964 00:42:52,970 --> 00:42:58,770 inaweza kueleza kwa nini kubadilisha a na b ndani ya wabadilishane 965 00:42:58,770 --> 00:43:05,560 haina madhara juu ya x na y, ingawa Mimi kupita x na y kwa wabadilishane kazi. 966 00:43:05,560 --> 00:43:08,750 Nini neno muhimu hapa kwamba wanaweza simplistically kueleza? 967 00:43:08,750 --> 00:43:11,250 968 00:43:11,250 --> 00:43:12,627 Nadhani habari hiyo hapa? 969 00:43:12,627 --> 00:43:13,335 Watazamaji: Return. 970 00:43:13,335 --> 00:43:14,085 SPIKA 1: Kurudi? 971 00:43:14,085 --> 00:43:14,590 Si kurudi. 972 00:43:14,590 --> 00:43:15,895 Hebu kwenda na nyingine moja. 973 00:43:15,895 --> 00:43:16,395 Nini hiyo? 974 00:43:16,395 --> 00:43:17,080 >> Watazamaji: [inaudible]. 975 00:43:17,080 --> 00:43:20,000 >> SPIKA 1: OK, hivyo return-- tunaweza kufanya kazi ya kurudi katika hadithi, 976 00:43:20,000 --> 00:43:21,914 lakini kuna maelezo hata rahisi. 977 00:43:21,914 --> 00:43:22,580 Watazamaji: Scope. 978 00:43:22,580 --> 00:43:23,288 SPIKA 1: Scope. 979 00:43:23,288 --> 00:43:24,300 Mimi itabidi kuchukua upeo. 980 00:43:24,300 --> 00:43:27,290 Hivyo upeo, kukumbuka ambapo x yetu na y alisema. 981 00:43:27,290 --> 00:43:30,840 Wao ni alitangaza ndani ya ya kuu haki hapa. 982 00:43:30,840 --> 00:43:33,200 a na b, wakati huo huo, ni ufanisi alitangaza 983 00:43:33,200 --> 00:43:35,930 ndani ya wabadilishane, si kabisa katika braces curly lakini bado 984 00:43:35,930 --> 00:43:37,690 katika eneo la jumla ya wabadilishane. 985 00:43:37,690 --> 00:43:40,560 Na hivyo kweli, a na b tu kuwepo ndani ya tray hii 986 00:43:40,560 --> 00:43:44,850 kutoka Annenberg, hii chunk ya pili ya code. 987 00:43:44,850 --> 00:43:49,500 Hivyo sisi ni kweli kubadilisha nakala, lakini kwamba si kweli yote kusaidia. 988 00:43:49,500 --> 00:43:52,190 >> Basi hebu tuangalie ngazi hii kidogo chini. 989 00:43:52,190 --> 00:43:55,430 Mimi nina kwenda nyuma katika Chanzo Directory, 990 00:43:55,430 --> 00:43:58,330 na mimi nina kwenda kwa kwanza zoom katika hapa, na tu 991 00:43:58,330 --> 00:44:02,290 kuthibitisha kwamba mimi niko katika hii terminal dirisha kubwa, 992 00:44:02,290 --> 00:44:04,430 mpango bado tabia kama hiyo. 993 00:44:04,430 --> 00:44:06,840 Tuseme sasa kwamba hili ni si kukusudia. 994 00:44:06,840 --> 00:44:10,090 Ni wazi nilitaka wabadilishane kwa kazi, hivyo anahisi kama mdudu. 995 00:44:10,090 --> 00:44:12,780 Sasa mimi naweza kuanza kuongeza mengi ya printf kwa code yangu, 996 00:44:12,780 --> 00:44:16,010 uchapishaji nje x zaidi ya hapa, y juu ya hapa, zaidi ya hapa, b zaidi ya hapa. 997 00:44:16,010 --> 00:44:18,220 Lakini kusema ukweli, kwamba pengine nini tumekuwa kufanya kwa wiki kadhaa 998 00:44:18,220 --> 00:44:20,190 sasa, katika masaa ya ofisi na nyumbani wakati wa kufanya kazi 999 00:44:20,190 --> 00:44:22,150 juu ya psets kujaribu kupata baadhi ya mende. 1000 00:44:22,150 --> 00:44:25,560 Lakini utaona, kama wewe si tayari, tatizo kwamba kuweka tatu utangulizi wewe 1001 00:44:25,560 --> 00:44:31,630 kwa amri aitwaye GDB, ambapo GDB, GNU HatiJava, 1002 00:44:31,630 --> 00:44:34,040 ina yenyewe rundo zima la sifa ya kuwa unaweza kweli 1003 00:44:34,040 --> 00:44:38,160 hebu kuelewa hali kama hii, lakini zaidi compellingly, 1004 00:44:38,160 --> 00:44:39,940 kutatua matatizo na kupata mende. 1005 00:44:39,940 --> 00:44:40,940 Hivyo nina kwenda kufanya hivyo. 1006 00:44:40,940 --> 00:44:44,770 Badala ya ./noswap, mimi nina badala kwenda kukimbia GDB ./noswap. 1007 00:44:44,770 --> 00:44:47,410 1008 00:44:47,410 --> 00:44:51,200 Kwa maneno mengine, mimi nina kwenda kukimbia yangu mpango si katika Bash, rafiki yetu mpya 1009 00:44:51,200 --> 00:44:51,850 leo. 1010 00:44:51,850 --> 00:44:53,970 Mimi nina kwenda kukimbia yangu mpango noswap ndani ya 1011 00:44:53,970 --> 00:44:56,900 ya programu nyingine hii inaitwa GDB, ambayo ni HatiJava, ambayo 1012 00:44:56,900 --> 00:45:01,035 ni mpango hiyo iliyoundwa na kusaidia wewe binadamu kupata na kuondoa mende. 1013 00:45:01,035 --> 00:45:03,410 Hivyo kama mimi hit kukimbia hapa, kuna kiasi mauaji ya maandishi 1014 00:45:03,410 --> 00:45:04,868 kwamba kwa kweli kamwe kuwa na kusoma. 1015 00:45:04,868 --> 00:45:07,290 Ni kimsingi ovyo kutoka haraka, ambayo 1016 00:45:07,290 --> 00:45:10,030 Mimi nina kwenda hit Kudhibiti-L kupata hadi saa juu huko. 1017 00:45:10,030 --> 00:45:11,800 Hii ni GDB haraka. 1018 00:45:11,800 --> 00:45:15,550 Kama nataka kukimbia mpango huu sasa, kama hii kidogo kudanganya karatasi juu ya leo 1019 00:45:15,550 --> 00:45:21,860 slide unaonyesha, kukimbia ni mara ya kwanza amri kwamba sisi maana ya kuanzisha. 1020 00:45:21,860 --> 00:45:25,150 Na mimi nina kwenda tu aina kukimbia hadi hapa ndani ya GDB, 1021 00:45:25,150 --> 00:45:26,811 na kwa kweli ni mbio mpango wangu. 1022 00:45:26,811 --> 00:45:29,310 Sasa kuna baadhi ya ziada matokeo ya screen kama hii, 1023 00:45:29,310 --> 00:45:31,910 lakini hiyo ni GDB kuwa tu anal na kutuambia nini kinaendelea. 1024 00:45:31,910 --> 00:45:34,451 Wewe si kweli kuwa na wasiwasi juu ya maelezo haya hivi sasa. 1025 00:45:34,451 --> 00:45:36,890 Lakini nini kweli cool kuhusu GDB, kama mimi kufanya hii again-- 1026 00:45:36,890 --> 00:45:42,100 Kudhibiti-L clears screen-- basi mimi kwenda mbele na aina ya "kuvunja kuu," hivyo, 1027 00:45:42,100 --> 00:45:45,743 wakati mimi hit Enter, kuweka nini kuitwa kuvunja uhakika katika noswap.c, 1028 00:45:45,743 --> 00:45:51,270 line 16, ambayo ni ambapo GDB figured nje ya mpango wangu kweli 1029 00:45:51,270 --> 00:45:53,070 ni, kazi yangu kweli ni. 1030 00:45:53,070 --> 00:45:55,070 Hii tutaweza kupuuza kwa sasa lakini hiyo ni anwani 1031 00:45:55,070 --> 00:45:57,310 katika kumbukumbu hasa ya kazi hii. 1032 00:45:57,310 --> 00:46:00,240 Hivyo sasa wakati mimi aina kukimbia, taarifa ya nini ni baridi hapa. 1033 00:46:00,240 --> 00:46:05,650 Mpango wangu mapumziko katika mstari wa mimi aliiambia GDB pause utekelezaji katika. 1034 00:46:05,650 --> 00:46:09,850 Kwa hiyo mimi hawana sasa kubadilisha kanuni wangu, kuongeza baadhi ya ya printf, recompile yake, rerun 1035 00:46:09,850 --> 00:46:13,300 yake, mabadiliko, kuongeza baadhi ya ya printf, kuokoa yake, recompile yake, kukimbia yake. 1036 00:46:13,300 --> 00:46:18,100 Naweza kutembea tu kwa njia ya mpango wangu hatua kwa hatua kwa hatua kwa kasi ya binadamu, 1037 00:46:18,100 --> 00:46:20,880 si katika aina Intel-ndani ya kasi. 1038 00:46:20,880 --> 00:46:24,580 >> Hivyo sasa taarifa mstari huu inaonekana hapa, na kama mimi kwenda nyuma 1039 00:46:24,580 --> 00:46:27,800 kwa mpango wangu katika gedit, taarifa kwamba kwamba ni kweli 1040 00:46:27,800 --> 00:46:29,280 mstari wa kwanza sana wa kanuni. 1041 00:46:29,280 --> 00:46:31,240 Kuna mstari 16 katika gedit. 1042 00:46:31,240 --> 00:46:34,610 Kuna mstari 16 ndani ya GDB, na hata ingawa interface hii nyeusi na nyeupe 1043 00:46:34,610 --> 00:46:37,760 ni karibu kama si user kirafiki, hii ina maana 1044 00:46:37,760 --> 00:46:41,680 kwamba line 16 haikutekelezwa bado, lakini ni kuhusu kuwa. 1045 00:46:41,680 --> 00:46:46,220 Hivyo kweli kama mimi aina magazeti x, si printf, magazeti tu x, 1046 00:46:46,220 --> 00:46:50,730 Mimi kupata baadhi ya thamani bogus huko ya sifuri, kwa sababu x haijawahi initialized bado. 1047 00:46:50,730 --> 00:46:54,760 Hivyo mimi nina kwenda aina ya pili, au, kama wewe unataka kuwa dhana tu, n tu kwa ajili ya pili. 1048 00:46:54,760 --> 00:46:59,090 Lakini wakati mimi aina ya kuingia, sasa taarifa ni hatua juu ya mstari 17. 1049 00:46:59,090 --> 00:47:02,840 Hivyo mantiki, kama nimekuwa kunyongwa line 16 na mimi sasa aina magazeti x, 1050 00:47:02,840 --> 00:47:03,640 nini anatakiwa kuona nini? 1051 00:47:03,640 --> 00:47:04,970 1052 00:47:04,970 --> 00:47:05,520 One. 1053 00:47:05,520 --> 00:47:07,820 >> Na sasa hii ni admittedly utata. 1054 00:47:07,820 --> 00:47:11,260 $ 2 ni njia tu ya dhana ya, kama wewe wanataka rejea thamani kwamba baadaye, 1055 00:47:11,260 --> 00:47:12,510 unaweza kusema "dola ishara mbili." 1056 00:47:12,510 --> 00:47:13,480 Ni kama nyuma ya kumbukumbu. 1057 00:47:13,480 --> 00:47:14,570 Lakini kwa sasa, tu kupuuza. 1058 00:47:14,570 --> 00:47:17,070 Nini kuvutia ni nini juu ya haki ya ishara sawa. 1059 00:47:17,070 --> 00:47:21,000 Na sasa kama mimi aina ya pili yake na magazeti y, mimi lazima kuona 2. 1060 00:47:21,000 --> 00:47:23,870 Mimi pia sasa magazeti x tena, na kusema ukweli, 1061 00:47:23,870 --> 00:47:27,130 kama mimi nina kupata kuchanganyikiwa kidogo kama kwa ambapo mimi, siwezi aina orodha kwa orodha 1062 00:47:27,130 --> 00:47:30,590 na tu kuona baadhi mazingira kuzunguka mimi nina uhakika kweli katika. 1063 00:47:30,590 --> 00:47:35,180 Na sasa siwezi aina pili, na huko x ni 1. 1064 00:47:35,180 --> 00:47:36,300 Sasa mimi aina ya pili. 1065 00:47:36,300 --> 00:47:37,710 Oh, y ni 2. 1066 00:47:37,710 --> 00:47:40,750 Na tena, ni utata, kwa sababu pato GDB ya 1067 00:47:40,750 --> 00:47:43,044 ni kuwa lilichanganyika na pato wangu mwenyewe. 1068 00:47:43,044 --> 00:47:45,710 Lakini kama wewe kuweka katika akili, na glancing na kurudi katika code yako 1069 00:47:45,710 --> 00:47:47,740 au kuwekewa nje upande kwa upande labda, itabidi 1070 00:47:47,740 --> 00:47:51,020 kuona kwamba kweli mimi nina tu wanazidi kupitia mpango wangu. 1071 00:47:51,020 --> 00:47:54,620 >> Lakini taarifa nini kinatokea ijayo, literally. 1072 00:47:54,620 --> 00:47:56,380 Hapa ni line 22. 1073 00:47:56,380 --> 00:48:01,315 Hebu kwenda juu yake, na hivyo kuhamia kwenye kwa 23, na kama mimi magazeti x sasa, bado moja. 1074 00:48:01,315 --> 00:48:03,890 Na kama mimi magazeti y sasa, bado moja. 1075 00:48:03,890 --> 00:48:05,820 Hivyo hii ni si zoezi muhimu. 1076 00:48:05,820 --> 00:48:07,450 Basi hebu Rudia huu. 1077 00:48:07,450 --> 00:48:10,069 Hebu kwenda nyuma juu ya juu na aina kukimbia tena. 1078 00:48:10,069 --> 00:48:12,110 Na ni kusema kwamba, programu hiyo kuwa debugged 1079 00:48:12,110 --> 00:48:14,109 imeanza tayari, ilianza kutoka mwanzo. 1080 00:48:14,109 --> 00:48:15,420 Ndiyo, hebu kufanya hii tena. 1081 00:48:15,420 --> 00:48:22,000 Na wakati huu hebu kufanya ijayo, pili, pili, pili, pili, 1082 00:48:22,000 --> 00:48:24,180 lakini sasa mambo kupata kuvutia. 1083 00:48:24,180 --> 00:48:27,760 Sasa nataka hatua katika wabadilishane, hivyo mimi si aina ya pili. 1084 00:48:27,760 --> 00:48:34,380 Mimi aina hatua, na sasa taarifa hiyo imeongezeka mimi noswap.c line 33. 1085 00:48:34,380 --> 00:48:37,240 Kama mimi kwenda nyuma ya gedit, nini line 33? 1086 00:48:37,240 --> 00:48:40,500 Hiyo ni kwanza halisi mstari wa kanuni ndani ya wabadilishane. 1087 00:48:40,500 --> 00:48:44,150 Ambayo ni nzuri, kwa sababu sasa naweza aina ya poke kuzunguka na kupata curious 1088 00:48:44,150 --> 00:48:46,052 kama kwa nini kinaendelea kweli huko. 1089 00:48:46,052 --> 00:48:46,760 Hebu magazeti TMP. 1090 00:48:46,760 --> 00:48:47,770 1091 00:48:47,770 --> 00:48:48,800 Whoa. 1092 00:48:48,800 --> 00:48:51,438 Kwa nini TMP kuwa na baadhi ya mambo, bogus takataka thamani? 1093 00:48:51,438 --> 00:48:54,579 1094 00:48:54,579 --> 00:48:56,120 Watazamaji: Ni haijawahi initialized. 1095 00:48:56,120 --> 00:48:57,150 SPIKA 1: Ni haijawahi initialized. 1096 00:48:57,150 --> 00:49:00,270 Na hakika, wakati wewe kukimbia mpango, wewe ni kupewa rundo zima la kumbukumbu 1097 00:49:00,270 --> 00:49:03,392 na mfumo wa uendeshaji, lakini wewe si initialized maadili yoyote, 1098 00:49:03,392 --> 00:49:05,600 hivyo chochote bits wewe ni kuona hapa, hata kama ni 1099 00:49:05,600 --> 00:49:07,770 hii mambo kubwa hasi simu, tu ina maana 1100 00:49:07,770 --> 00:49:10,750 kwamba wale ni mabaki kutoka baadhi ya matumizi ya awali ya kwamba RAM, 1101 00:49:10,750 --> 00:49:13,050 hata mimi na si mwenyewe zinahitajika kuwa bado. 1102 00:49:13,050 --> 00:49:17,086 Hivyo sasa mimi nina kwenda mbele na aina ijayo, na kama mimi sasa aina magazeti TMP, 1103 00:49:17,086 --> 00:49:17,835 nini anatakiwa kuona nini? 1104 00:49:17,835 --> 00:49:19,570 1105 00:49:19,570 --> 00:49:23,360 Chochote thamani ya mara, a ni hoja ya kwanza, tu 1106 00:49:23,360 --> 00:49:25,550 kama x kwa mara ya kwanza Jambo kuwa alipita katika, 1107 00:49:25,550 --> 00:49:30,450 hivyo na x lazima ziwe sawa, hivyo magazeti TMP lazima magazeti yangu mmoja. 1108 00:49:30,450 --> 00:49:36,360 >> Hivyo kile utaona katika tatizo kuweka tatu ni mafunzo ya aina juu ya GDB, 1109 00:49:36,360 --> 00:49:40,020 lakini kutambua kwamba huu ni mwanzo ya kuangalia chombo kwamba kwa kweli 1110 00:49:40,020 --> 00:49:42,774 kukusaidia kutatua matatizo sana kwa ufanisi zaidi. 1111 00:49:42,774 --> 00:49:44,690 Nini sisi ni hatimaye kwenda kufanya juu ya Jumatano 1112 00:49:44,690 --> 00:49:48,180 ni kuanza peel nyuma tabaka chache na kuondoa baadhi magurudumu mafunzo. 1113 00:49:48,180 --> 00:49:50,496 Hiyo kitu kinachoitwa kamba kwamba tumekuwa kutumika kwa muda fulani, 1114 00:49:50,496 --> 00:49:53,370 tunakwenda polepole kuchukua kwamba mbali kutoka kwenu na kuanza kuzungumza juu ya 1115 00:49:53,370 --> 00:49:55,725 kitu esoterically zaidi inayojulikana kama * Char, 1116 00:49:55,725 --> 00:49:59,550 lakini sisi ni kwenda kufanya nzuri hii na upole kwa mara ya kwanza, ingawa kuyatumia, 1117 00:49:59,550 --> 00:50:02,730 kama wao ni kuitwa, unaweza kufanya baadhi ya mambo mabaya sana kama vibaya, 1118 00:50:02,730 --> 00:50:06,040 kwa kuangalia claymation kidogo kutoka rafiki yetu Nick Parlante kutoka Stanford 1119 00:50:06,040 --> 00:50:09,670 Chuo Kikuu, profesa katika kompyuta sayansi ambao kuweka pamoja hakikisho hili 1120 00:50:09,670 --> 00:50:11,075 ya nini kuja hii ya Jumatano. 1121 00:50:11,075 --> 00:50:12,196 1122 00:50:12,196 --> 00:50:13,400 >> [VIDEO avspelning] 1123 00:50:13,400 --> 00:50:13,900 -Hey, Binky. 1124 00:50:13,900 --> 00:50:14,930 1125 00:50:14,930 --> 00:50:15,780 Kuamka. 1126 00:50:15,780 --> 00:50:17,240 Ni wakati kwa pointer na furaha. 1127 00:50:17,240 --> 00:50:18,260 1128 00:50:18,260 --> 00:50:19,350 >> -Nini Hiyo? 1129 00:50:19,350 --> 00:50:21,150 Kujifunza kuhusu kuyatumia? 1130 00:50:21,150 --> 00:50:22,050 Oh, goody! 1131 00:50:22,050 --> 00:50:22,897 1132 00:50:22,897 --> 00:50:23,730 [END video avspelning] 1133 00:50:23,730 --> 00:50:25,396 SPIKA 1: Hiyo watapata wewe juu ya Jumatano. 1134 00:50:25,396 --> 00:50:26,440 Tutaweza kuona wewe hapo. 1135 00:50:26,440 --> 00:50:27,106 [VIDEO avspelning] 1136 00:50:27,106 --> 00:50:30,420 -Na Sasa, Deep Thoughts, na Daven Farnham. 1137 00:50:30,420 --> 00:50:33,980 1138 00:50:33,980 --> 00:50:35,900 >> -Kwa Ni sisi kujifunza C? 1139 00:50:35,900 --> 00:50:36,785 Kwa nini si +? 1140 00:50:36,785 --> 00:50:38,550 1141 00:50:38,550 --> 00:50:40,910 >> [Kicheko] 1142 00:50:40,910 --> 00:50:42,160 >> [END video avspelning]