1 00:00:00,000 --> 00:00:12,040 >> [Muzikos grojimo] 2 00:00:12,040 --> 00:00:16,460 >> SPEAKER 1: Gerai, tai yra CS50, ir tai yra keturios savaitės pradžia, 3 00:00:16,460 --> 00:00:20,420 ir kaip jūs galbūt girdėjote arba skaityti, pasaulis buvo nutraukti. 4 00:00:20,420 --> 00:00:23,520 Ėjimas visame internete buvo žinias ir supratimą 5 00:00:23,520 --> 00:00:27,100 iš programoje, apie klaidą programavimo kalba vadinama bash. 6 00:00:27,100 --> 00:00:32,729 Tai buvo nuostabiai firminių kaip Shellshock, arba bash duris, 7 00:00:32,729 --> 00:00:35,485 bet tokių straipsnių nebuvo neįprasta. 8 00:00:35,485 --> 00:00:38,807 Ir iš tiesų, daugelis iš jų pareikšti sugrąžina Heartbleed, 9 00:00:38,807 --> 00:00:41,640 kurį gali pastebėjau, Paspauskite Back praėjusį pavasarį, o 10 00:00:41,640 --> 00:00:43,980 buvo panašiai gana dramatiška. 11 00:00:43,980 --> 00:00:47,110 Dabar tie iš jūsų čia šiandien, kaip ir daugelis iš jūsų turi, 12 00:00:47,110 --> 00:00:50,330 net jei jūs nesuprantate, ką svabiausia, girdėjote Shellshock? 13 00:00:50,330 --> 00:00:51,370 14 00:00:51,370 --> 00:00:54,245 Visos teisės, ir kaip daugelis iš jūsų turi kompiuterius, kad yra pažeidžiamos? 15 00:00:54,245 --> 00:00:55,680 16 00:00:55,680 --> 00:01:00,250 Gerai, ten turėtų būti daug, daug daugiau rankų iki dabar dėl priežasčių, matysime. 17 00:01:00,250 --> 00:01:02,580 >> Leiskite pažvelgti į tai, kas atrodo jau vyksta žiniasklaidoje 18 00:01:02,580 --> 00:01:05,304 ir tada paaiškinti, kad tai šiek tiek Čia mums techniškai. 19 00:01:05,304 --> 00:01:07,670 20 00:01:07,670 --> 00:01:11,250 >> SPEAKER 2: Saugumo ekspertai turi perspėjo, kad rimtas trūkumas galėtų 21 00:01:11,250 --> 00:01:15,650 būti apie paveikti šimtus Milijonai pasaulio interneto vartotojų. 22 00:01:15,650 --> 00:01:20,600 Taigi, kas tiksliai yra klaida, kad buvo dubliuotas Shellshock ir ką jis daro? 23 00:01:20,600 --> 00:01:23,720 24 00:01:23,720 --> 00:01:28,910 Na, Shellshock taip pat žinomas kaip Bash klaida, programinės įrangos jis naudoja. 25 00:01:28,910 --> 00:01:33,230 Piratai naudoti viruso nuskaityti pažeidžiami sistemos veikia Linux ir Unix 26 00:01:33,230 --> 00:01:36,300 operacinės sistemos, o tada užkrėsti juos. 27 00:01:36,300 --> 00:01:38,730 Bash yra komandų eilutės apvalkalas. 28 00:01:38,730 --> 00:01:43,460 Tai leidžia vartotojams klausimas komandas pradėti programos ir funkcijos, kaip programinės įrangos 29 00:01:43,460 --> 00:01:45,250 įvesdami tekstą. 30 00:01:45,250 --> 00:01:49,980 Tai paprastai naudojama programuotojų ir neturėtų būti atviras visam pasauliui, 31 00:01:49,980 --> 00:01:51,590 nors Shellshock keičia tai. 32 00:01:51,590 --> 00:01:54,160 33 00:01:54,160 --> 00:01:57,910 >> Na, worringly, kai kurie analitikai įspėja, kad gali būti didesnis pavojus, 34 00:01:57,910 --> 00:02:01,580 nes Shellshock leidžia visiškai kontrolė užsikrėtusiu mašina, 35 00:02:01,580 --> 00:02:06,030 o Heartbleed leidžiama tik hakeriai šnipinėti kompiuterius. 36 00:02:06,030 --> 00:02:09,130 Tai taip rimta, tai buvo įvertinta 10 iš 10 37 00:02:09,130 --> 00:02:11,900 už sunkumą pagal Nacionalinės Luka duomenų bazė. 38 00:02:11,900 --> 00:02:15,530 39 00:02:15,530 --> 00:02:20,015 2/3 visų interneto serverių yra ne rizika, įskaitant kai kuriose "Mac kompiuteriais. 40 00:02:20,015 --> 00:02:22,760 41 00:02:22,760 --> 00:02:25,600 Na, įsitikinkite, kad jūs pleistras jūsų sistemos dabar. 42 00:02:25,600 --> 00:02:29,330 Kiekvienas talpinimas svetainėje veikia paveiktos operacinės sistemos 43 00:02:29,330 --> 00:02:31,800 kaip galima greičiau turėtų imtis veiksmų. 44 00:02:31,800 --> 00:02:35,390 Kiekvienas, kuris gali sau leisti ji turėtų atrodyti jų stebėjimo ir interneto taikymo 45 00:02:35,390 --> 00:02:37,355 ugniasienės atkreipti dėmesį išpuolių. 46 00:02:37,355 --> 00:02:39,979 47 00:02:39,979 --> 00:02:41,770 SPEAKER 3: Blogiausias dalykas kad gali atsitikti yra 48 00:02:41,770 --> 00:02:45,080 kad kažkas būtų rašyti kodą, kad automatiškai eiti ir nuskaityti 49 00:02:45,080 --> 00:02:48,280 interneto ir turėtų įtakos visų šių kompiuterių. 50 00:02:48,280 --> 00:02:50,710 Ir kai jie tai padaryti, taip pat, blogiausias dalykas, jie gali padaryti 51 00:02:50,710 --> 00:02:53,300 tiesiog ištrinti viską, arba uždaryti svetaines žemyn. 52 00:02:53,300 --> 00:02:55,360 Taigi, mes galime pamatyti žalą iš šiuo požiūriu, 53 00:02:55,360 --> 00:02:58,300 kur mes turėtume kenkėjiškų žmonės kurie tiesiog nuspręsti, kad sukelti sumaištį 54 00:02:58,300 --> 00:03:02,534 iškeliant sistemas žemyn arba išbraukiant failus ir panašius dalykus. 55 00:03:02,534 --> 00:03:05,200 SPEAKER 2: Vieni sako, tai yra viena iš iš labiausiai sunku išmatuoti 56 00:03:05,200 --> 00:03:08,080 riktai metų, ir jis gali trukti savaites ar net 57 00:03:08,080 --> 00:03:10,820 mėnesių, siekiant nustatyti jos pagrindinis poveikį. 58 00:03:10,820 --> 00:03:12,180 59 00:03:12,180 --> 00:03:15,560 >> SPEAKER 1: Taigi visa tai yra tiesa, bet juokingas dalykas yra, beveik visi 60 00:03:15,560 --> 00:03:18,330 vaizdais, jums tik pamačiau, išskyrus gal klaviatūroje, 61 00:03:18,330 --> 00:03:20,930 neturi nieko bendro su klaida kokia. 62 00:03:20,930 --> 00:03:23,960 Serveriai ir laidai ir tt, tai tarsi liestine susiję, 63 00:03:23,960 --> 00:03:27,410 bet tuo core tai tikrai gana susipažinę, kas vyksta čia. 64 00:03:27,410 --> 00:03:30,050 Tiesą sakant, leiskite man eiti į mūsų CS50 prietaisas. 65 00:03:30,050 --> 00:03:32,910 Leiskite man eiti į priekį ir maksimaliai terminalo langą čia. 66 00:03:32,910 --> 00:03:36,020 Ir vaikinai buvo naudojant tai, arba įterpti versiją dalį, 67 00:03:36,020 --> 00:03:39,460 į gedit, kad rašyti programas, įrašykite komandas, ir taip toliau, 68 00:03:39,460 --> 00:03:43,690 ir tai yra iš tikrųjų, ir turi buvo už savaitės, Bash, B-A-S-H. 69 00:03:43,690 --> 00:03:46,890 Tai Bornas-vėl lukštais, kuri yra tik išgalvotas būdas pasakyti, 70 00:03:46,890 --> 00:03:50,220 tai programa, kuri turi mirksi greitai, efektyviai, 71 00:03:50,220 --> 00:03:51,970 kad sėdi ten laukia įvesties jums. 72 00:03:51,970 --> 00:03:53,920 Ir tai komanda eilutės sąsaja, per kurią 73 00:03:53,920 --> 00:03:57,650 vaikinai buvo paleisti komandas ir galiausiai sudaromas ir tada veikia 74 00:03:57,650 --> 00:03:58,400 programos. 75 00:03:58,400 --> 00:04:01,320 >> Bet bash pat programavimas kalba tokia prasme. 76 00:04:01,320 --> 00:04:05,460 Jūs žinote, kad yra komandų kaip cd ir ls ir žvangėjimas ir kiti, 77 00:04:05,460 --> 00:04:09,580 bet jūs galite nustatyti savo komandas juos įgyvendinti per Bash. 78 00:04:09,580 --> 00:04:11,420 Dabar mes nesiruošia eiti į labai išsamiai 79 00:04:11,420 --> 00:04:16,089 kaip bash programavimo kalbą, bet žinoti, kad, pavyzdžiui, šiuo metu 80 00:04:16,089 --> 00:04:17,607 ten ne komanda vadinama "labas". 81 00:04:17,607 --> 00:04:19,440 Taigi jis gali būti rasta vienas iš šių paketų. 82 00:04:19,440 --> 00:04:20,856 Tai nėra įdiegta mano kompiuteryje. 83 00:04:20,856 --> 00:04:21,870 Paklauskite savo administratorių. 84 00:04:21,870 --> 00:04:26,030 Bet jei aš ten noriu būti programa vadinamas "labas" ir "Bash arba mano eilutę 85 00:04:26,030 --> 00:04:30,810 Aš iš tikrųjų galite naudoti sintaksę, kad tai labai patiko C. Tai ne visai tas pats, 86 00:04:30,810 --> 00:04:35,020 bet atrodo gana panašios į funkcija, nors ir trūksta kai kurių detalių. 87 00:04:35,020 --> 00:04:38,090 Niekas, atrodo, kad taip atsitiktų, bet dabar, jei aš tipo "labas" 88 00:04:38,090 --> 00:04:40,960 jūs iš tikrųjų galite rašyti programa, o ne C, o ne "Java", 89 00:04:40,960 --> 00:04:44,280 ne kitoje programavimo kalba, bet pati Bash. 90 00:04:44,280 --> 00:04:47,630 >> Dabar svarbiausia čia yra tai, kad aš parašiau pavadinimas aš norėjau duoti šią naują komandą, 91 00:04:47,630 --> 00:04:50,820 ir skliaustai taip pat Simboliška tai yra funkcija. 92 00:04:50,820 --> 00:04:54,010 Kaip panaikinti, taip pat galite padaryti įdomus dalykai, ir iš tiesų, net ir Mac OS, 93 00:04:54,010 --> 00:04:55,620 tai programa, vadinama terminalas. 94 00:04:55,620 --> 00:04:58,800 Jis ateina pastatytas į kas s kompiuteris, kuris turi "Mac" šiame kambaryje, 95 00:04:58,800 --> 00:05:03,640 ir jūs galite padaryti panašius dalykus Mac OS, bet tu gali eiti daugiau nei, kad. 96 00:05:03,640 --> 00:05:07,110 Ir tai yra mažai liestinę, bet tai rūšies įdomus. 97 00:05:07,110 --> 00:05:09,715 Man buvo priminta šį rytą, kai galvoju tai per, 98 00:05:09,715 --> 00:05:13,279 iš mažai žaidimas aš žaisti su vienu iš CS50 buvusių TFS 99 00:05:13,279 --> 00:05:16,570 , pagal kurią bet kuriuo metu jis pėsčiomis nuo jo klaviatūra su jo ekrane atrakintas, 100 00:05:16,570 --> 00:05:23,611 Norėčiau įvykdyti komandą kaip this-- "say hello". 101 00:05:23,611 --> 00:05:26,610 Ir dabar kiekvieną kartą jis grįžo į savo klaviatūra, kai aš pašalinta ekraną 102 00:05:26,610 --> 00:05:27,985 ir jis atsisėsti, pabandyti padaryti tam tikrą darbą, 103 00:05:27,985 --> 00:05:29,250 sudaryti sąrašą savo directory-- turinį 104 00:05:29,250 --> 00:05:29,510 >> [Garso atkūrimas] 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 Sveiki. 108 00:05:32,120 --> 00:05:35,030 >> SPEAKER 1: Taigi, tiesą sakant, jis iš tikrųjų nebuvo "labas". 109 00:05:35,030 --> 00:05:36,894 Tai paprastai būdavo kažkas panašesnė į that-- 110 00:05:36,894 --> 00:05:37,560 [Garso atkūrimas] 111 00:05:37,560 --> 00:05:37,750 -Beep. 112 00:05:37,750 --> 00:05:39,320 SPEAKER 1: --that aš would-- todėl jo kompiuteris būtų 113 00:05:39,320 --> 00:05:42,170 prisiekiu į jį bet kuriuo metu, jis iš tikrųjų atsisėdo prie jo klaviatūra. 114 00:05:42,170 --> 00:05:46,265 Ir labai greitai jis suprato, nepalikti jo ekranas atrakintas. 115 00:05:46,265 --> 00:05:48,730 Tačiau tai rodo, kad rūšiuoti kvailas įdomus, kad jums 116 00:05:48,730 --> 00:05:50,210 gali turėti kažką panašaus Bash. 117 00:05:50,210 --> 00:05:52,770 Bet tai šiek tiek daugiau rimtas, būti tikri, kad ne. 118 00:05:52,770 --> 00:05:57,235 Ir iš tikrųjų, tai yra viena iš pavojingiausių ir ilgalaikę klaidas 119 00:05:57,235 --> 00:05:58,860 kad tikrai nukentėjo pasaulį globaliai. 120 00:05:58,860 --> 00:06:02,060 Ši klaida buvo maždaug už maždaug 20 metų, 121 00:06:02,060 --> 00:06:05,780 ir jums bus kaldinamos tik momentas savo santykinio paprastumo. 122 00:06:05,780 --> 00:06:07,990 >> Taigi tai yra atstovas liepk, kad jei jūs 123 00:06:07,990 --> 00:06:10,448 savo "Mac", pažodžiui dabar kai jūs turite savo dangtelis atidarytas, 124 00:06:10,448 --> 00:06:12,940 galite pabandyti rašyti į tą programa, vadinama terminalas. 125 00:06:12,940 --> 00:06:15,410 Terminalas pagal Programos Utilities-- 126 00:06:15,410 --> 00:06:18,790 vieną kartą, Windows vartotojai neturi nerimauti šiuo konkrečiu threat-- 127 00:06:18,790 --> 00:06:22,310 bet tiems iš jūsų, su "Mac" galite įvesti tai į langą, kaip aš tai padaryti čia 128 00:06:22,310 --> 00:06:24,210 ir jei tipo kad į šią programą 129 00:06:24,210 --> 00:06:28,830 vadinamas terminalo, kaip aš dabar daryti, jei matote žodį "pažeidžiami" 130 00:06:28,830 --> 00:06:32,200 kompiuteris pažeidžiamos naudojimo. 131 00:06:32,200 --> 00:06:33,850 >> Dabar ką tai iš tikrųjų reiškia? 132 00:06:33,850 --> 00:06:35,870 Ir tai yra tiesa keletas gana kvailai sintaksė, 133 00:06:35,870 --> 00:06:39,050 bet tegul bent atkreipti dėmesį kai įdomių aspektų. 134 00:06:39,050 --> 00:06:42,567 Taigi, čia yra keletas sintaksė, kuri atrodo mažai pažįstamas, bent iš C 135 00:06:42,567 --> 00:06:43,950 ir programavimo apskritai. 136 00:06:43,950 --> 00:06:47,550 Matau keletą skliausteliuose, kabliataškiais, garbanotas petnešos, ir tokia, 137 00:06:47,550 --> 00:06:50,820 bet it turns out, kad šis kvailas dalykas čia geltonai 138 00:06:50,820 --> 00:06:53,580 esmės yra funkcija kad nieko nedaro. 139 00:06:53,580 --> 00:06:57,840 Dvitaškis priemonė nieko, ir kabliataškis tai nustoti daryti nieko. 140 00:06:57,840 --> 00:07:00,250 Taigi viduje iš jų garbanotieji petnešų, tai 141 00:07:00,250 --> 00:07:02,440 kad turiu lygūs pasirašyti į kairę, tai 142 00:07:02,440 --> 00:07:05,500 yra iš esmės sukurti komandą, ar kintamasis, 143 00:07:05,500 --> 00:07:09,520 vadinamas x ir ją skiriant kad geltona šiek tiek kodo ten. 144 00:07:09,520 --> 00:07:14,040 Tai galėtų būti kažkas panašaus į "aidas labas "arba" pasakyti pyptelėjimas "ar kažkas 145 00:07:14,040 --> 00:07:15,120 panašus į tai. 146 00:07:15,120 --> 00:07:17,780 Tačiau pastebėti, jei jūsų akyse Brody toliau į dešinę, 147 00:07:17,780 --> 00:07:22,150 yra daugiau į šią eilutę, nei tik tos kabliataškiu pabaigoje. 148 00:07:22,150 --> 00:07:25,160 "Echo pažeidžiamas", ir tada išskyrus tas, kurios ten net daugiau. 149 00:07:25,160 --> 00:07:26,530 Kitas kabliataškis, bash-c :. 150 00:07:26,530 --> 00:07:28,120 151 00:07:28,120 --> 00:07:34,050 >> Taigi ilga istorija trumpa, šis kodas linija 152 00:07:34,050 --> 00:07:36,660 pakanka įtikinamų kompiuteris tai 153 00:07:36,660 --> 00:07:39,830 pažeidžiami darai kažką kad jūs norite daryti, 154 00:07:39,830 --> 00:07:44,290 nes ten yra bash, kuriuo klaidą nors bash turėjo sustoti 155 00:07:44,290 --> 00:07:48,980 skaito linijos komandų dešinėje ten po geltoną tekstą, 156 00:07:48,980 --> 00:07:52,520 už 20-plius metų senumo klaidų, Bash tikrųjų buvo skaityti 157 00:07:52,520 --> 00:07:56,780 po šios kabliataškiu ir gana daug daryti tai, ką jis pasakė. 158 00:07:56,780 --> 00:07:59,070 >> Taigi, kas yra potekstė iš kurios galiausiai? 159 00:07:59,070 --> 00:08:01,340 Aš ką tik pasakė "Echo labas" arba "echo pažeidžiami" 160 00:08:01,340 --> 00:08:05,449 bet ką daryti, jei jums padarė kažką iš tikrųjų kenksminga, kaip rm-rf *, 161 00:08:05,449 --> 00:08:07,240 kuri galbūt ne kada nors įvedėte anksčiau, 162 00:08:07,240 --> 00:08:08,920 ir atvirai tikriausiai neturėtų pernelyg greitai, 163 00:08:08,920 --> 00:08:10,700 nes jūs galite padaryti daug žalos su juo. 164 00:08:10,700 --> 00:08:11,210 Kodėl? 165 00:08:11,210 --> 00:08:12,990 rm ką daro, žinoma? 166 00:08:12,990 --> 00:08:14,270 Pašalina. 167 00:08:14,270 --> 00:08:15,930 * Reiškia ką? 168 00:08:15,930 --> 00:08:16,430 Viskas. 169 00:08:16,430 --> 00:08:18,180 Taigi, tai vadinamasis laukinių kortelė, todėl tai reiškia, 170 00:08:18,180 --> 00:08:20,410 ištrinti viską einamojo katalogo. 171 00:08:20,410 --> 00:08:23,379 r atsitinka reiškia rekursinis Tai reiškia, jei tai, ką jūs ištrinti 172 00:08:23,379 --> 00:08:26,420 yra katalogas, o viduje ten yra kitų failų ir kitų katalogų, 173 00:08:26,420 --> 00:08:28,950 rekursyviai pasinerti į ten ir i ¹ trinti visus, kad. 174 00:08:28,950 --> 00:08:31,040 Ir -f yra blogiausias iš jų visų. 175 00:08:31,040 --> 00:08:32,580 Kiekvienas žino, ką reiškia -f čia? 176 00:08:32,580 --> 00:08:33,690 177 00:08:33,690 --> 00:08:34,360 Pajėgų. 178 00:08:34,360 --> 00:08:37,830 Taigi priversti priemones, net jei tai yra bloga idėja, 179 00:08:37,830 --> 00:08:40,939 padaryti be raginimo man tolesniam patvirtinimo. 180 00:08:40,939 --> 00:08:43,230 Taigi, jūs žinote, mes juoktis tai, tačiau atvirai kalbant, aš tikriausiai 181 00:08:43,230 --> 00:08:44,972 įrašykite šiuos kelis kartus dieną, nes realybės 182 00:08:44,972 --> 00:08:47,210 tai yra greičiausias būdas ištrinti visa krūva daiktų. 183 00:08:47,210 --> 00:08:48,590 Bet net ir aš padariau tam tikrą žalą. 184 00:08:48,590 --> 00:08:53,100 >> Bet jei jūs buvote apgauti kompiuterį į apibrėžiant kai kvailas kintamasis 185 00:08:53,100 --> 00:08:56,810 ar funkcija vadinama x, bet tada tracking kompiuterį į vykdančiosios 186 00:08:56,810 --> 00:09:00,030 už tos ribos funkcija, ir po tos kabliataškiu, 187 00:09:00,030 --> 00:09:04,430 jūs iš tiesų gali apgauti kompiuterį į vykdančiosios kažką panašaus rm-rf 188 00:09:04,430 --> 00:09:07,810 ar Parašyk komanda arba Kopijuoti komanda. 189 00:09:07,810 --> 00:09:11,400 Viskas tiesiog galite padaryti su kompiuteris, ar jis šalinti failus, 190 00:09:11,400 --> 00:09:15,350 kurti failus, šiukšlės nors, puola šiek serverį nuotoliniu būdu, 191 00:09:15,350 --> 00:09:17,190 jei jūs galite išreikšti tai su komanda, jūs 192 00:09:17,190 --> 00:09:19,120 gali apgauti kompiuterį į tai, kad. 193 00:09:19,120 --> 00:09:21,510 >> Dabar, kas yra pavyzdys kaip jūs galite tai padaryti? 194 00:09:21,510 --> 00:09:24,300 Na, yra Kompiuterių daug nuo interneto tekančiu Bash. 195 00:09:24,300 --> 00:09:26,390 Visi mus "Mac" vartotojams yra tarp jų. 196 00:09:26,390 --> 00:09:30,390 Linux serverių aikštelė yra tarp jiems taip pat, ir Unix serverių. 197 00:09:30,390 --> 00:09:32,630 Langai vėl gauna santykinai nuo kabliuko 198 00:09:32,630 --> 00:09:34,590 nebent jūs įdiegėte speciali programinė įranga. 199 00:09:34,590 --> 00:09:37,130 Dabar serverių daug, už pavyzdžiui, paleisti žiniatinklio serverių, 200 00:09:37,130 --> 00:09:39,840 ir tai Linux yra galbūt Populiariausias operacinė sistema 201 00:09:39,840 --> 00:09:43,060 paleisti kompiuteriuose internete kad tarnauja tinklalapius. 202 00:09:43,060 --> 00:09:44,910 Dabar, kaip matysime vėliau semestrą, kai 203 00:09:44,910 --> 00:09:48,470 galite atsiųsti iš prašymą Jūsų browser-- Chrome 204 00:09:48,470 --> 00:09:50,790 "Internet Explorer", whatever-- į nuotolinio serverio, 205 00:09:50,790 --> 00:09:53,730 paaiškėja, kad, nors jūs tiesiog atspausdinti www.example.com, 206 00:09:53,730 --> 00:09:59,590 Jūsų naršyklė siunčia pranešimą tai šiek tiek daugiau paslaptingų, kaip šis. 207 00:09:59,590 --> 00:10:01,239 >> Bet pastebiu truputį kažką keisto. 208 00:10:01,239 --> 00:10:03,030 Pirmos dvi eilutės Aš niekada nemačiau anksčiau, 209 00:10:03,030 --> 00:10:04,904 bet jie nežiūri ypač pavojinga. 210 00:10:04,904 --> 00:10:08,030 Tačiau pastebėti, ką aš pavogtas trečią eilutę čia. 211 00:10:08,030 --> 00:10:13,390 Jei blogas vaikinas buvo išsiųsti žinutę kaip tai iš savo kompiuterio 212 00:10:13,390 --> 00:10:17,270 pažeidžiamai Mac arba pažeidžiami Linux serverio, 213 00:10:17,270 --> 00:10:21,580 Įdomiausia tai, kad bash, paprasta mažai komandų eilutę, 214 00:10:21,580 --> 00:10:27,450 yra visur ir dažnai Naudoti iš esmės vykdyti 215 00:10:27,450 --> 00:10:30,020 Į turinį pranešimą, kad ji gauna. 216 00:10:30,020 --> 00:10:33,490 Ir ta logika, jūs galite apgauti interneto serverį, todėl, 217 00:10:33,490 --> 00:10:36,370 siunčiant kažką panašaus Vartotojo agentas, kuris paprastai 218 00:10:36,370 --> 00:10:38,300 Manoma, kad pasakyti pavadinti savo naršyklėje. 219 00:10:38,300 --> 00:10:42,420 Vartotojo agentas Chrome Vartotojo agentas interneto Explorer "," Vartotojo agentas "Firefox", tai 220 00:10:42,420 --> 00:10:44,590 yra tik jūsų naršyklės būdas identifikuoti save. 221 00:10:44,590 --> 00:10:46,605 Bet jei blogas vaikinas labai protingai sako, mm mm, aš 222 00:10:46,605 --> 00:10:47,930 nesiruošia papasakoti ką mano naršyklė, 223 00:10:47,930 --> 00:10:50,888 Aš vietoj ketina siųsti jums tai paslaptingas atrodantis dalykas su rm-rf 224 00:10:50,888 --> 00:10:55,840 * Į jį, galite tiesiog apgauti pažeidžiama interneto serverį internete 225 00:10:55,840 --> 00:10:59,055 į vykdančiosios tiksliai, kad ten išbraukiant visus failus. 226 00:10:59,055 --> 00:11:00,930 Ir tiesą sakant, tai ne net blogiausia. 227 00:11:00,930 --> 00:11:01,763 Jūs galite padaryti bet ką. 228 00:11:01,763 --> 00:11:04,480 Galite pradėti platinamas denial of service atakos 229 00:11:04,480 --> 00:11:07,030 jei siunčiamas šį pranešimą sveiki kekių interneto serverių 230 00:11:07,030 --> 00:11:10,256 ir tada turėjo juos visus nusileisti, už pavyzdžiui, ant Harvard.edu serverių, 231 00:11:10,256 --> 00:11:12,130 ir jūs galite rūšiuoti ir sprogimo iš jų gi 232 00:11:12,130 --> 00:11:15,490 pagal tinklo srautą, kad buvo kitaip sukėlė šio blogiukas. 233 00:11:15,490 --> 00:11:18,760 >> Taigi, ilga istorija trumpa, beveik visi šiame kambaryje, kuris valdo "Mac" 234 00:11:18,760 --> 00:11:20,240 yra pažeidžiami tai. 235 00:11:20,240 --> 00:11:24,100 Sidabro pamušalas yra tai, kad, jei esate veikia interneto serverį į savo kompiuterį, 236 00:11:24,100 --> 00:11:27,780 ir jei jūs iš tikrųjų sukonfigūruota tai, kad būtų galima kažką panašaus SSH į jį, 237 00:11:27,780 --> 00:11:28,670 jūs iš tikrųjų saugus. 238 00:11:28,670 --> 00:11:31,710 Tai yra pažeidžiamos, tačiau nėra vienas bando patekti į savo kompiuterį, 239 00:11:31,710 --> 00:11:33,290 todėl jūs galite rūšiuoti tikri. 240 00:11:33,290 --> 00:11:36,210 Tačiau "Apple" netrukus būti atnaujinti dėl šios pataisos. 241 00:11:36,210 --> 00:11:39,660 Linux pasaulyje jau išleista pataisymai Fedora ir Ubuntu skaičius 242 00:11:39,660 --> 00:11:43,790 ir kiti "Linux" versijas, ir iš tiesų jei paleisti naujinimą 50 į prietaisą, 243 00:11:43,790 --> 00:11:45,930 net, kad taip pat bus būti atnaujinti ir pataisyti. 244 00:11:45,930 --> 00:11:47,764 Bet tai taip pat turi ne tikrai buvo pažeidžiamos, 245 00:11:47,764 --> 00:11:49,804 nes, jei jūs tinkered su prietaisu 246 00:11:49,804 --> 00:11:52,770 , ir padarė savo nešiojamas viešai prieinami internete, kuri yra ne 247 00:11:52,770 --> 00:11:54,910 pagal nutylėjimą, Jūs tikrųjų buvo gerai, nes 248 00:11:54,910 --> 00:11:56,890 iš užkardos ir kitais metodais. 249 00:11:56,890 --> 00:12:01,000 >> Bet tai kraštutinis pavyzdys klaidą kad mes gyveno už pažodžiui 20 250 00:12:01,000 --> 00:12:04,050 metų, ir kas žino, jei kas nors visą šį laiką buvo žinoma apie tai? 251 00:12:04,050 --> 00:12:06,300 Ir iš tikrųjų, tai yra viena iš pagrindinės problemos 252 00:12:06,300 --> 00:12:08,690 kad matysime vėliau semestras apie saugumą, 253 00:12:08,690 --> 00:12:13,020 yra tai, kad kaip ir realiame pasaulyje, geri vaikinai yra ne trūkumas. 254 00:12:13,020 --> 00:12:16,500 Norėdami, kad blogi vaikinai, mes turime įsitikinkite, kad kiekvienas durų yra užrakintas, 255 00:12:16,500 --> 00:12:20,340 kad kiekvienas langas yra saugi, kad kiekvienas įvažiavimo į namus 256 00:12:20,340 --> 00:12:21,980 yra saugus išlaikyti blogi vaikinai iš. 257 00:12:21,980 --> 00:12:26,870 Bet ką daro blogas vaikinas turi padaryti, kad iš tikrųjų pakenkti jūsų namuose 258 00:12:26,870 --> 00:12:28,200 ir pavogti iš jūsų? 259 00:12:28,200 --> 00:12:32,574 Jis arba ji tiesiog turi rasti vieną atrakinta durys, vienas neveikia langas, ar kažkas 260 00:12:32,574 --> 00:12:35,240 palei tas linijas, ir tai Tas pats dalykas kompiuterinį saugumą. 261 00:12:35,240 --> 00:12:37,660 Mes galime parašyti milijonus linijos programavimo kodą 262 00:12:37,660 --> 00:12:40,570 ir išleisti šimtus ar net tūkstančius valandų bando gauti tai teisinga, 263 00:12:40,570 --> 00:12:43,370 bet jei jums padaryti tik vieną klaida teisingumą, 264 00:12:43,370 --> 00:12:47,030 galite įdėti visą sistemą ir Iš tiesų šiuo atveju visa internete 265 00:12:47,030 --> 00:12:48,660 ir pasaulis pavojus. 266 00:12:48,660 --> 00:12:51,950 >> Taigi, jei norite sužinoti daugiau apie tai, eiti į šį URL čia. 267 00:12:51,950 --> 00:12:54,450 Nėra būtinybė imtis veiksmų vakarą, nebent esate 268 00:12:54,450 --> 00:12:57,116 tarp tų, patogiau, kad jau veikia savo interneto 269 00:12:57,116 --> 00:12:59,810 serverio, tokiu atveju jums reikia, Tiesą sakant, atnaujinti savo įrangą. 270 00:12:59,810 --> 00:13:03,244 >> Ir tai taip pat yra pavadinimas kalbos, o dabar popierius, 271 00:13:03,244 --> 00:13:05,410 kad mes susiję su Kursas tinklapyje šiandien. 272 00:13:05,410 --> 00:13:07,600 Tai buvo pagal kolegos pavadintas Ken Thompson, kuris 273 00:13:07,600 --> 00:13:10,120 buvo priimti labai garsus apdovanojimas kompiuterių mokslo, 274 00:13:10,120 --> 00:13:13,495 ir jis davė šią kalbą keletą metų Prieš esmės tą pačią temą. 275 00:13:13,495 --> 00:13:18,250 276 00:13:18,250 --> 00:13:20,520 Klausia žmonės klausimas, turėtų tikrai 277 00:13:20,520 --> 00:13:23,480 pasitikėjimas, galiausiai, programinė įranga, kurią buvote? 278 00:13:23,480 --> 00:13:26,100 Pavyzdžiui, mes visi turime buvo raštu programas, 279 00:13:26,100 --> 00:13:27,820 ir mes pildė juos su Zaszczękać. 280 00:13:27,820 --> 00:13:31,830 Ir su savo žiniomis, jūs raštu kokių nors CS50 programos, kur yra 281 00:13:31,830 --> 00:13:35,310 atgal durų rūšių, yra būdas kad blogas vaikinas, jei veikia savo programą, 282 00:13:35,310 --> 00:13:37,410 galėtų perimti kompiuterio? 283 00:13:37,410 --> 00:13:38,310 Tikriausiai ne, tiesa? 284 00:13:38,310 --> 00:13:40,180 Mario ir gobšus, ir kredito. 285 00:13:40,180 --> 00:13:41,680 Tai yra visi gana mažos programos. 286 00:13:41,680 --> 00:13:43,910 Jūs turite būti gana blogai, jei jums iš tikrųjų 287 00:13:43,910 --> 00:13:47,310 padarė visa jūsų kompiuteris pažeidžiamas po to rašyti 10 ar 20 eilučių kodo, 288 00:13:47,310 --> 00:13:49,690 arba bent jau nežino, kai poveikio saugumui. 289 00:13:49,690 --> 00:13:52,023 Dabar aš sakau, kad Krotochwilnie, bet mes ketiname pamatyti šiandien 290 00:13:52,023 --> 00:13:54,600 ir šią savaitę tai tikrai tikrai, tikrai lengva 291 00:13:54,600 --> 00:13:57,980 būti blogai ir padaryti dar trumpos programos pažeidžiami. 292 00:13:57,980 --> 00:14:02,880 >> Bet dabar, bent jau suvokti, kad klausimas yra čia paprašė 293 00:14:02,880 --> 00:14:04,850 apie Zaszczękać į kompiliatorių. 294 00:14:04,850 --> 00:14:08,360 Kodėl mes buvo pasitikėti Zaszczękać per pastaruosius dvejus ar tris savaites? 295 00:14:08,360 --> 00:14:12,650 Kas yra pasakyti, kad tas, kas rašė Zaszczękać neturėjo "jei" sąlygą yra 296 00:14:12,650 --> 00:14:17,680 kad iš esmės švirkščiamas keletą nulių ir tie, kurie į kiekvieną programą ji rengia 297 00:14:17,680 --> 00:14:21,180 kad leistų jam ar jai prieiga kompiuteris, kai esate miega 298 00:14:21,180 --> 00:14:23,580 ir jūsų nešiojamas dangtis yra atidarytas ir jūsų kompiuteris veikia? 299 00:14:23,580 --> 00:14:24,080 Teisė? 300 00:14:24,080 --> 00:14:28,350 Mes turime šį garbė sistemos richtige dabar, kur mes tikimės, kad Zaszczękać yra teisėtas. 301 00:14:28,350 --> 00:14:30,000 Jūs pasitikite, kad prietaisas yra teisėtas. 302 00:14:30,000 --> 00:14:34,430 Jūs pasitikite, kad tiesiog kiekviena programa jūsų Mac arba PC yra patikimas. 303 00:14:34,430 --> 00:14:37,510 Ir kaip tai paprasta klaidą rodo, net jei ji nėra kenksminga, 304 00:14:37,510 --> 00:14:40,580 tai visiškai ne gali būti atvejis. 305 00:14:40,580 --> 00:14:42,350 >> Taigi, jūs turėtumėte bijoti, kaip pragaras. 306 00:14:42,350 --> 00:14:45,560 Atvirai kalbant, nėra paprasta sprendimas tai kita 307 00:14:45,560 --> 00:14:48,185 nei visuomenės sąmoningumo ugdymas rūšiuoti didėjančio sudėtingumo 308 00:14:48,185 --> 00:14:50,310 kad mes statyti ant mūsų kompiuterines sistemas, 309 00:14:50,310 --> 00:14:53,740 ir kaip vis labiau pažeidžiama mes galime labai gerai būti. 310 00:14:53,740 --> 00:14:55,570 >> Dabar su tai sakė, Breakout. 311 00:14:55,570 --> 00:14:59,889 Taigi Breakout yra problema nustatyti tris, ir Breakout žaidimas iš pasekėjai 312 00:14:59,889 --> 00:15:02,180 kad jūs galite prisiminti, bet mums problemą nustatyti trys, 313 00:15:02,180 --> 00:15:04,450 jis leidžia mums imtis dalykų atsargines žingsniu 314 00:15:04,450 --> 00:15:08,880 taip, kad kai mes rašome programas, net terminalo langą, kaip šis, 315 00:15:08,880 --> 00:15:14,670 mes iš tikrųjų gali paleisti, galiausiai, grafiniai programos ne 316 00:15:14,670 --> 00:15:17,800 kitaip nei mes turėjome prieiga prie į nulio. 317 00:15:17,800 --> 00:15:20,910 Taigi tai yra štabo įgyvendinimas Breakout, 318 00:15:20,910 --> 00:15:23,930 kuri yra tik tai plytų laužymas žaidimas, kad jūs judėti savo irklas atgal 319 00:15:23,930 --> 00:15:27,590 ir atgal, ir jūs Hit kamuolys prieš tuos spalvotų plytų iki viršaus. 320 00:15:27,590 --> 00:15:30,020 Taigi, tai yra pareikšti mus rūšiuoti atgal, iš kur 321 00:15:30,020 --> 00:15:33,180 mes galėjome būti labai greitai su nulio, o dabar su C, 322 00:15:33,180 --> 00:15:35,800 įgyvendinti mūsų grafinės vartotojo sąsajos. 323 00:15:35,800 --> 00:15:38,960 >> Tačiau daugiau nei, kad tai problema rinkinys yra pirmasis 324 00:15:38,960 --> 00:15:41,000 kurioje mes teikiame Jūs kodo krūva. 325 00:15:41,000 --> 00:15:43,940 Ir iš tiesų, aš suteikti aiškų dėmesį į tai, nes ypač 326 00:15:43,940 --> 00:15:47,090 tiems mažiau patogūs, tai , problema nustatyti bent jau iš pirmo žvilgsnio, 327 00:15:47,090 --> 00:15:49,170 ketina jaustis kaip mes atlikome jį vienu žingsniu. 328 00:15:49,170 --> 00:15:51,540 Kadangi mes davė jums, dėl kai kurių paieškos 329 00:15:51,540 --> 00:15:54,930 ir rūšiavimas problemas pset, kodo, kad mes rašė krūva, 330 00:15:54,930 --> 00:15:56,680 ir pastabų pora kad pasakyti "padaryti" 331 00:15:56,680 --> 00:15:58,221 kur jūs turite užpildyti ruošiniai. 332 00:15:58,221 --> 00:16:00,020 Taigi ne per baisu, bet tai pirmas kartas 333 00:16:00,020 --> 00:16:03,370 mes atiduodami jums kodą, kad jums reikia pirmiausia perskaityti, suprasti, ir tada pridėti prie 334 00:16:03,370 --> 00:16:04,290 ir užbaigti jį. 335 00:16:04,290 --> 00:16:05,940 >> Ir tada su Breakout, mes ketiname daryti tą patį, 336 00:16:05,940 --> 00:16:08,740 suteikdama jums keletą dešimčių daugiau eilučių kodo, kad, tiesą sakant, suteiks jums 337 00:16:08,740 --> 00:16:11,490 Struktūros aikštelė žaidimas, bet sustoti 338 00:16:11,490 --> 00:16:14,304 įgyvendinimo plytas ir kamuolys ir irklas, 339 00:16:14,304 --> 00:16:15,970 bet mes įgyvendinti kai kurių kitų funkcijų. 340 00:16:15,970 --> 00:16:18,280 Ir net, kad iš pirmo žvilgsnio, vėlgi, ypač jei mažiau patogūs, 341 00:16:18,280 --> 00:16:21,480 gali atrodyti ypač nelengvas ir manote, kad tiek daug naujų funkcijų 342 00:16:21,480 --> 00:16:24,070 jums reikia wrap savo mintis aplink, ir tai tiesa. 343 00:16:24,070 --> 00:16:26,281 Tačiau turėkite galvoje, kad tai labai patiko nulio. 344 00:16:26,281 --> 00:16:28,780 Šansų yra tu negali naudoti visus dėlionės gabaliukai nulio. 345 00:16:28,780 --> 00:16:31,120 Šansų yra tu nerūpi, į kuriuos vyniojami jūsų protas aplink juos visus 346 00:16:31,120 --> 00:16:33,617 nes visa tai vyko, buvo pirmo žvilgsnio suprasti, oi, 347 00:16:33,617 --> 00:16:35,450 kad tai, ką aš galiu padaryti, su tuo galvosūkį gabalas. 348 00:16:35,450 --> 00:16:38,260 Ir iš tiesų, problema nustatyti 3 spec, mes jums atkreipti 349 00:16:38,260 --> 00:16:41,370 ne dokumentacijoje, kuri bus supažindinti jus su kai kurių naujų funkcijų, 350 00:16:41,370 --> 00:16:43,570 ir galiausiai programavimas konstruoja jūs naudojate. 351 00:16:43,570 --> 00:16:47,610 Sąlygos, ratai, kintamieji, ir funkcijos 352 00:16:47,610 --> 00:16:50,720 bus identiškas tai, ką mes matėme iki šiol. 353 00:16:50,720 --> 00:16:53,560 >> Taigi iš tiesų, ką mes suteiksime Jums yra tam tikra imties kodas, 354 00:16:53,560 --> 00:16:56,110 leidžia jums sukurti langą kad atrodo ne kitaip tai, 355 00:16:56,110 --> 00:16:59,540 ir galiausiai ją paversti kažkas labai panašaus į tai. 356 00:16:59,540 --> 00:17:02,250 Taigi pasinaudoti CS50, aptarti darbo valandomis, ir daugiau, 357 00:17:02,250 --> 00:17:05,290 ir džiaukis tai, kad kodo suma jums reikia parašyti 358 00:17:05,290 --> 00:17:06,760 iš tikrųjų viskas ne tai, kad daug. 359 00:17:06,760 --> 00:17:10,359 Pirmasis uždavinys yra tiesiog Aklimatizuojama sau tam tikras kodas, mes parašiau. 360 00:17:10,359 --> 00:17:11,450 361 00:17:11,450 --> 00:17:15,810 >> Bet kokie pset3 klausimai, Shellshock, ar kitaip? 362 00:17:15,810 --> 00:17:19,226 >> PUBLIKA: Atrodė išgyvena su Breakout 363 00:17:19,226 --> 00:17:22,154 kad kodas yra beveik Objektinis stiliaus, 364 00:17:22,154 --> 00:17:24,675 bet aš maniau, C buvo Objektinis programa. 365 00:17:24,675 --> 00:17:26,050 SPEAKER 1: puikus klausimas. 366 00:17:26,050 --> 00:17:28,258 Taigi žvelgdami pro paskirstymo kodas, kodas 367 00:17:28,258 --> 00:17:30,180 mes rašė pset3, tiems pažįstamas, jį 368 00:17:30,180 --> 00:17:32,230 atrodo, kad jis mažai Objektinis. 369 00:17:32,230 --> 00:17:33,800 Trumpas atsakymas yra, tai yra. 370 00:17:33,800 --> 00:17:38,130 Tai kaip jums suderinimas gali padaryti Objektinis kodą, naudodamas 371 00:17:38,130 --> 00:17:41,850 kaip C kalba, tačiau tai vis vien galiausiai procesinis. 372 00:17:41,850 --> 00:17:44,900 Viduje nėra jokių metodų kintamieji, kaip pamatysite. 373 00:17:44,900 --> 00:17:46,180 Bet tai primena, kad. 374 00:17:46,180 --> 00:17:48,780 Ir mes matome, kad funkcija vėl kai mes gauti PHP ir JavaScript 375 00:17:48,780 --> 00:17:49,946 link pabaigos semestrą. 376 00:17:49,946 --> 00:17:53,667 Bet dabar, manau, apie tai, kaip kas yra užuomina į priekį. 377 00:17:53,667 --> 00:17:54,250 Geras klausimas. 378 00:17:54,250 --> 00:17:56,051 379 00:17:56,051 --> 00:17:56,550 Viskas gerai. 380 00:17:56,550 --> 00:17:59,730 Taigi Merge sort buvo, kaip mes left dalykai paskutinį kartą. 381 00:17:59,730 --> 00:18:03,250 Ir sujungti tarsi buvo vėsu jausmas, kad tai buvo taip daug greičiau, 382 00:18:03,250 --> 00:18:07,100 bent grindžiamas greitomis bandymų mes padarėme praeitą savaitę, nei, tarkim, burbulas 383 00:18:07,100 --> 00:18:08,710 Rūšiuoti atranka rikiuoti, įterpimo rūšiuoti. 384 00:18:08,710 --> 00:18:11,780 Ir tai, kas buvo tvarkingas yra tik kaip trumpai ir švariai 385 00:18:11,780 --> 00:18:12,810 galite išreikšti. 386 00:18:12,810 --> 00:18:15,840 Ir ką mes pasakyti, kad tai buvo viršutinis laikytis ant bėgimo metu susilieja 387 00:18:15,840 --> 00:18:16,340 rūšiuoti? 388 00:18:16,340 --> 00:18:17,633 389 00:18:17,633 --> 00:18:18,495 Taip? 390 00:18:18,495 --> 00:18:19,360 >> PUBLIKA: n log n? 391 00:18:19,360 --> 00:18:20,819 >> SPEAKER 1: n log n, teisinga. n log n. 392 00:18:20,819 --> 00:18:23,776 Ir mes grįžti į tai, kas, kad iš tikrųjų reiškia arba kai kuri ateina iš, 393 00:18:23,776 --> 00:18:25,570 bet tai buvo geriau nei bėgimo metu 394 00:18:25,570 --> 00:18:28,440 kad mes pamačiau burbulas parinkimas ir įterpimo rūšiuoti? 395 00:18:28,440 --> 00:18:30,610 Taigi n kvadratu. n kvadratu yra didesnis nei šis, 396 00:18:30,610 --> 00:18:34,650 ir net jei tai nėra akivaizdu, žinau, kad žurnalas n yra mažesnis nei n, 397 00:18:34,650 --> 00:18:36,910 Taigi, jei jūs n kartų kažkas mažesnis nei n, 398 00:18:36,910 --> 00:18:38,680 ji bus mažesnė nei n kvadratu. 399 00:18:38,680 --> 00:18:40,130 Tai intuicijos tiek ten. 400 00:18:40,130 --> 00:18:42,190 Bet mes sumokėjo kainą už tai. 401 00:18:42,190 --> 00:18:47,000 Jis buvo greitesnis, bet tema, kuri pradėjo ryškėti praėjusią savaitę buvo toks kompromisas. 402 00:18:47,000 --> 00:18:49,804 Gavau geresnį rezultatą laikas išmintingas, bet ką 403 00:18:49,804 --> 00:18:52,470 aš turiu išleisti kitą ranka, kad būtų pasiekti? 404 00:18:52,470 --> 00:18:53,591 >> PUBLIKA: Atmintis. 405 00:18:53,591 --> 00:18:54,465 SPEAKER 1: Pasakykite naujo? 406 00:18:54,465 --> 00:18:55,173 PUBLIKA: Atmintis. 407 00:18:55,173 --> 00:18:57,040 SPEAKER 1: Atmintis, arba erdvė apskritai. 408 00:18:57,040 --> 00:18:59,040 Ir tai buvo ne super Akivaizdu, su mūsų žmonėmis, 409 00:18:59,040 --> 00:19:02,240 bet prisiminti, kad mūsų savanoriai buvo gerinimo pirmyn ir gerinimo 410 00:19:02,240 --> 00:19:04,780 atgal kaip nors ten masyvas čia, ir kaip nors ten 411 00:19:04,780 --> 00:19:07,130 Antrasis masyvas čia jie gali naudoti, nes mes 412 00:19:07,130 --> 00:19:09,080 reikalingos Kažkur sujungti tuos žmonės. 413 00:19:09,080 --> 00:19:11,480 Mes galime ne tik apsikeitimo juos vietoje. 414 00:19:11,480 --> 00:19:13,800 Taigi sujungti rikiuoti sverto yra daugiau erdvės, kuri 415 00:19:13,800 --> 00:19:15,620 mes nereikėjo su kiti algoritmai, 416 00:19:15,620 --> 00:19:17,410 bet aukštyn kojom yra tai, kad daug greičiau. 417 00:19:17,410 --> 00:19:20,780 Ir tiesą sakant, ir realiame pasaulyje vietos tai days-- RAM, kietojo disko space-- 418 00:19:20,780 --> 00:19:25,030 yra gana pigus, ir taip, kad tai nebūtinai blogas dalykas. 419 00:19:25,030 --> 00:19:28,320 >> Taigi leiskite priimti greitai pažvelgti, mažai daugiau metodiškai, ką mes padarėme, 420 00:19:28,320 --> 00:19:30,220 ir kodėl mes sakė, kad tai buvo n log n. 421 00:19:30,220 --> 00:19:33,260 Taigi, čia yra aštuoni numeriai ir Aštuoni savanoriai mes turėjome paskutinį kartą. 422 00:19:33,260 --> 00:19:35,718 Ir pirmas dalykas, kad suliejimas Rūšiuoti liepė mums padaryti, buvo, ką? 423 00:19:35,718 --> 00:19:37,010 424 00:19:37,010 --> 00:19:38,010 PUBLIKA: Padalinkite į dvi. 425 00:19:38,010 --> 00:19:38,663 SPEAKER 1: Pasakykite naujo? 426 00:19:38,663 --> 00:19:39,650 PUBLIKA: Padalinkite į dvi. 427 00:19:39,650 --> 00:19:40,610 SPEAKER 1: Padalinkite į dvi, tiesa. 428 00:19:40,610 --> 00:19:42,818 Tai labai primena telefonų knyga, iš atskirties 429 00:19:42,818 --> 00:19:44,220 ir užkariauti apskritai. 430 00:19:44,220 --> 00:19:45,640 Taigi, mes pažvelgė į kairėje pusėje. 431 00:19:45,640 --> 00:19:48,700 Ir tada, kai mes pasakėme, tarsi kairė pusė elementų, 432 00:19:48,700 --> 00:19:49,690 ką gi mes šalia pasakyti? 433 00:19:49,690 --> 00:19:51,210 434 00:19:51,210 --> 00:19:54,860 Rūšiuoti kairėje pusėje, kairėje pusė, kuri leido mums, 435 00:19:54,860 --> 00:19:57,570 po dalijant į dvi dalis, sutelkti dėmesį į keturių ir dviejų. 436 00:19:57,570 --> 00:20:01,280 >> Kaip jūs rūšiuoti sąrašą dabar, geltonos spalvos, dydžio du, naudojant Sujungti Rūšiuoti? 437 00:20:01,280 --> 00:20:02,330 438 00:20:02,330 --> 00:20:04,580 Na padalinti per pusę, ir rūšiuoti kairįjį pusę. 439 00:20:04,580 --> 00:20:07,100 Ir tai buvo, kur viskas turiu šiek tiek kvailas trumpai. 440 00:20:07,100 --> 00:20:10,720 Kaip jūs rūšiuoti sąrašą, kad yra iš dydis vienas, kaip šį numerį keturių čia? 441 00:20:10,720 --> 00:20:12,330 442 00:20:12,330 --> 00:20:13,210 Tai rūšiuojami. 443 00:20:13,210 --> 00:20:14,200 Jūs baigsite. 444 00:20:14,200 --> 00:20:17,300 >> Bet tada, kaip jūs perrikiuoti sąrašą dydis vienas, kai jis numeris du? 445 00:20:17,300 --> 00:20:21,640 Na, tas pats, bet dabar, kas buvo Trečias ir svarbiausias žingsnis Merge Rūšiuoti? 446 00:20:21,640 --> 00:20:24,020 Jūs turėjo sujungti į kairę pusę ir į dešinę pusę. 447 00:20:24,020 --> 00:20:26,580 Ir kai mes padarėme, mes pažvelgė ne keturių, mes pažvelgė dviejų. 448 00:20:26,580 --> 00:20:28,750 Mes nusprendėme visą teisę, Akivaizdu, du ateina pirma, 449 00:20:28,750 --> 00:20:31,840 todėl mes įdėti du jos vieta, o po keturių. 450 00:20:31,840 --> 00:20:35,010 Ir dabar jūs turite natūra atgal, ir tai yra tarsi charakteristika 451 00:20:35,010 --> 00:20:37,570 iš kurio, kaip suliejimo algoritmus Rūšiuoti, atsukti atmintyje. 452 00:20:37,570 --> 00:20:40,240 Koks buvo kitas linija istorija? 453 00:20:40,240 --> 00:20:41,780 Ką turėčiau būti dėmesio toliau? 454 00:20:41,780 --> 00:20:43,110 455 00:20:43,110 --> 00:20:47,350 Teisė pusė kairėje pusę, Kuris yra šeši aštuoni. 456 00:20:47,350 --> 00:20:50,320 >> Taigi leiskite man tiesiog žingsnis per šį be belaboring tašką per daug. 457 00:20:50,320 --> 00:20:53,330 Šešių ir aštuonių, tada šešių yra rūšiuojami, aštuonių rūšiuojamos. 458 00:20:53,330 --> 00:20:57,190 Sujungti juos kartu, kaip kad, o dabar kitas didelis žingsnis 459 00:20:57,190 --> 00:21:00,990 yra, žinoma, rūšiuoti tinkamą pusę nuo Pirmasis žingsnis šio algoritmo. 460 00:21:00,990 --> 00:21:02,870 Taigi, mes sutelkti dėmesį į vieną, trys, septyni, penki. 461 00:21:02,870 --> 00:21:04,540 Tada sutelkti dėmesį į kairėje pusėje. 462 00:21:04,540 --> 00:21:09,400 Kairė pusė, kad teisė pusė kad ir tada sujungti į vieną ir trijų. 463 00:21:09,400 --> 00:21:13,100 Tada dešiniuoju pusę, tada į kairę pusę jo, tada į dešinę pusę jo. 464 00:21:13,100 --> 00:21:15,985 Sujungti jį, o dabar kas žingsnis lieka? 465 00:21:15,985 --> 00:21:18,040 466 00:21:18,040 --> 00:21:22,460 Sujungti didelis kairėje pusėje ir didelis Teisė pusė, todėl vienas eina ten, 467 00:21:22,460 --> 00:21:27,330 tada du, tada tris, tada keturių, tada penkis, tada šešis, tada septynių, tada aštuoni. 468 00:21:27,330 --> 00:21:31,990 >> Taigi, dabar kodėl tai galiausiai atskleidžia, ypač jei n ir logaritmai daugiau 469 00:21:31,990 --> 00:21:35,487 apskritai, o pabėgti jums, bent jau pastaraisiais atminties? 470 00:21:35,487 --> 00:21:37,070 Na, pastebėsite, šis dalykas aukštį. 471 00:21:37,070 --> 00:21:41,230 Mes turėjome aštuonis elementus, ir mes padalintas iš dviejų, iš dviejų, iš dviejų. 472 00:21:41,230 --> 00:21:44,590 Taigi prisijunkite bazę du aštuonių suteikia mums tris. 473 00:21:44,590 --> 00:21:45,640 474 00:21:45,640 --> 00:21:48,540 Ir pasitikėk manimi, kad jei tiek miglotas, kad. 475 00:21:48,540 --> 00:21:54,710 Bet prisijungti bazė du aštuonių yra trys, taip mes padarėme tris sluoksnius sujungti. 476 00:21:54,710 --> 00:21:57,170 Ir kai mes susijungė elementai, kaip daug elementų 477 00:21:57,170 --> 00:21:58,950 Ar mes pažvelgti į kiekvieną iš šių eilučių? 478 00:21:58,950 --> 00:22:00,212 479 00:22:00,212 --> 00:22:01,437 N visų, tiesa? 480 00:22:01,437 --> 00:22:04,020 Kadangi sujungti viršutinėje eilutėje, nors mes tai padarėme dalimis, 481 00:22:04,020 --> 00:22:05,990 mes galiausiai palietė kiekvieną numerį kartą. 482 00:22:05,990 --> 00:22:09,054 Ir antroje eilėje, prie sujungti šiuos sąrašus dydžio dviejų, 483 00:22:09,054 --> 00:22:10,470 mes turėjome paliesti kiekvieną elementą vieną kartą. 484 00:22:10,470 --> 00:22:12,690 Ir tada čia tikrai aiškiai paskutinėje eilėje, 485 00:22:12,690 --> 00:22:15,430 mes turėjome paliesti kiekvieną iš tų elementai iš karto, bet tik vieną kartą, 486 00:22:15,430 --> 00:22:18,400 taip čia yra, tuomet mūsų n log n. 487 00:22:18,400 --> 00:22:21,780 >> O dabar tik, kad viskas šiek tiek daugiau formalus tik už akimirką, jei jums 488 00:22:21,780 --> 00:22:24,260 buvo dabar analizuoti tai esant aukštesnio lygio rūšiuoti 489 00:22:24,260 --> 00:22:28,340 ir pabandyti ir nuspręsti, kaip gali tu apie išreikšdami 490 00:22:28,340 --> 00:22:31,780 važiavimo laikas iš šio algoritmo tiesiog žiūri į jį, o ne 491 00:22:31,780 --> 00:22:33,590 naudojant nenatūralu pavyzdį? 492 00:22:33,590 --> 00:22:36,590 Na, kiek laiko jūs pasakytumėte žingsnis, kaip tai geltonai užtruktų, 493 00:22:36,590 --> 00:22:37,173 jei n <2 grąža? 494 00:22:37,173 --> 00:22:38,840 495 00:22:38,840 --> 00:22:39,830 Štai didelis O ką? 496 00:22:39,830 --> 00:22:41,450 497 00:22:41,450 --> 00:22:44,540 Taigi, aš matau vieną, todėl vienas žingsnis, gal du žingsniai, nes jis, jei 498 00:22:44,540 --> 00:22:47,110 ir tada grįžti, bet tai pastovus laikas, tiesa? 499 00:22:47,110 --> 00:22:49,960 Sakome O (1), ir kad kaip aš išreikšti tai. 500 00:22:49,960 --> 00:22:51,480 T, tiesiog bėgančio laiko. 501 00:22:51,480 --> 00:22:54,150 n yra nuo įėjimo dydis, taip T (n), tik išgalvotas būdas 502 00:22:54,150 --> 00:22:56,330 sakydamas judamasis laikas skiriamas indėlis dydžio n 503 00:22:56,330 --> 00:23:00,220 bus ant tam pastovaus metu, O (1). 504 00:23:00,220 --> 00:23:01,970 >> Bet kitaip, ką apie tai? 505 00:23:01,970 --> 00:23:05,660 Kaip jums išreikšti veikia laiko šio geltona linija? 506 00:23:05,660 --> 00:23:06,250 T ką? 507 00:23:06,250 --> 00:23:09,440 508 00:23:09,440 --> 00:23:12,665 Galite rūšies apgauti čia ir atsakyti į mano klausimą cikliškai. 509 00:23:12,665 --> 00:23:14,770 510 00:23:14,770 --> 00:23:17,900 Taigi, jei veikimo laikas Apskritai mes tiesiog pasakyti yra T (n). 511 00:23:17,900 --> 00:23:18,950 512 00:23:18,950 --> 00:23:22,490 Ir dabar jūs rūšies punting čia ir sakydamas, gerai, tiesiog surūšiuoti kairiąją pusę, 513 00:23:22,490 --> 00:23:23,920 ir tada rūšiuoti tinkamą pusę. 514 00:23:23,920 --> 00:23:27,520 Kaip gali mes simboliškai atstovauti važiavimo laikas iš šio geltona linija? 515 00:23:27,520 --> 00:23:28,020 T ką? 516 00:23:28,020 --> 00:23:29,360 Kas iš įėjimo dydis? 517 00:23:29,360 --> 00:23:30,510 518 00:23:30,510 --> 00:23:31,057 n virš dviejų. 519 00:23:31,057 --> 00:23:32,140 Kodėl ne aš tiesiog pasakyti, kad? 520 00:23:32,140 --> 00:23:36,449 Ir tai yra dar vienas T (n / 2) ir tada vėl, jei aš sujungti du atrinktas puses, 521 00:23:36,449 --> 00:23:38,615 kiek elementų I am going turi liesti iš viso? 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 Taigi aš galiu išreikšti tai, tiesiog turi būti natūra išgalvotas, 525 00:23:42,790 --> 00:23:44,430 kaip veikia laiko apskritai. 526 00:23:44,430 --> 00:23:51,140 T (n) yra tik važiavimo laikas T (n / 2), plius T (n / 2), į kairę pusę ir dešinę pusę, 527 00:23:51,140 --> 00:23:55,360 plius O (n), kuris yra turbūt n žingsnių, bet gal, jei aš naudoju du pirštus, 528 00:23:55,360 --> 00:23:57,960 tai du kartus daugiau priemonių, tačiau tai tiesinis. 529 00:23:57,960 --> 00:24:00,440 Tai kai žingsnių skaičius tai n faktorius, 530 00:24:00,440 --> 00:24:02,270 taip mes galime išreikšti tai, kaip šis. 531 00:24:02,270 --> 00:24:05,550 Ir tai, kai dabar mes punt į atgal mūsų aukštosios mokyklos matematikos vadovėlio 532 00:24:05,550 --> 00:24:10,290 mes, kad pasikartos galiausiai baigiasi lygu tai, n kartų log n, 533 00:24:10,290 --> 00:24:12,530 jei jūs iš tikrųjų daryti iš matematikos daugiau formaliai. 534 00:24:12,530 --> 00:24:13,950 >> Štai tik du perspektyvas. 535 00:24:13,950 --> 00:24:17,500 Vienas programinio su sunkiai koduojami tipinį pavyzdį 536 00:24:17,500 --> 00:24:21,140 naudojant aštuonių skaitmenų ir daugiau Apskritai atrodo, kaip mes turime ten. 537 00:24:21,140 --> 00:24:25,670 Bet kas tikrai įdomu čia yra, vėlgi, tai dviračiu sąvoka. 538 00:24:25,670 --> 00:24:26,900 Aš naudoju už kilpos. 539 00:24:26,900 --> 00:24:29,860 Aš rūšies apibrėžimo kažkas požiūriu savaime, 540 00:24:29,860 --> 00:24:31,950 ne tik tai matematinė funkcija, 541 00:24:31,950 --> 00:24:34,860 bet taip pat, kalbant apie šios pseudo kodą. 542 00:24:34,860 --> 00:24:38,260 Tai pseudo kodas yra grįžtamojo tuo, kad dvi jos linijų 543 00:24:38,260 --> 00:24:42,310 iš esmės pasakoja jį eiti naudoti pati spręsti mažesnis 544 00:24:42,310 --> 00:24:45,400 problema yra mažesnės, ir vėl ir vėl 545 00:24:45,400 --> 00:24:48,820 ir vėl, kol mes drožti ją iki šio vadinamojo bazinio atveju. 546 00:24:48,820 --> 00:24:52,810 >> Taigi leiskite tikrųjų atkreipti patrauklesnės išsinešti iš šio taip. 547 00:24:52,810 --> 00:24:58,420 Leiskite man eiti į gedit ir imtis pažvelgti į kai kuriuos šiandienos kodo, 548 00:24:58,420 --> 00:24:59,930 visų pirma šis pavyzdys čia. 549 00:24:59,930 --> 00:25:03,709 Sigma 0, kuris, matyt, prideda numerius viena per n. 550 00:25:03,709 --> 00:25:05,750 Taigi pažiūrėkime, kas žino ir susipažinę čia. 551 00:25:05,750 --> 00:25:08,690 Pirmiausia mes turime pora apima, todėl nieko naujo ten. 552 00:25:08,690 --> 00:25:09,190 Prototipas. 553 00:25:09,190 --> 00:25:11,370 Aš šiek tiek miglotas ant tai po kelių dienų, 554 00:25:11,370 --> 00:25:13,790 bet ką gi mes sakome prototipas funkcija yra? 555 00:25:13,790 --> 00:25:15,099 556 00:25:15,099 --> 00:25:16,015 PUBLIKA: [nesigirdi]. 557 00:25:16,015 --> 00:25:16,905 SPEAKER 1: Kas tai? 558 00:25:16,905 --> 00:25:17,800 PUBLIKA: Mes apie tai pranešti. 559 00:25:17,800 --> 00:25:18,883 SPEAKER 1: Mes apie tai pranešti. 560 00:25:18,883 --> 00:25:22,290 Taigi jūs mokote Zaszczękać, ei, nėra faktiškai įgyvendinti šį dar, 561 00:25:22,290 --> 00:25:25,740 bet kažkur šį failą, matyt, ketina būti funkcija vadinamas ką? 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 Ir tai tik pažadas, kad jis ketina atrodyti taip. 565 00:25:30,540 --> 00:25:33,720 Ji ketina imtis sveikasis skaičius, kaip input-- ir aš galiu būti aiškiau 566 00:25:33,720 --> 00:25:36,570 ir pasakyti int n --and tai ketina grįžti int, 567 00:25:36,570 --> 00:25:39,900 bet kabliataškiais priemonė, mm, aš gausiu aplink įgyvendinti tai šiek tiek vėliau. 568 00:25:39,900 --> 00:25:40,989 Vėlgi, Zaszczękać yra kvailas. 569 00:25:40,989 --> 00:25:43,280 Tai tik ketina žinoti, ką pasakyti, kad iš viršaus į apačią, 570 00:25:43,280 --> 00:25:45,765 todėl mes turime bent duoti tai, kas yra užuomina į priekį. 571 00:25:45,765 --> 00:25:47,330 >> Dabar pažvelkime pagrindinė čia. 572 00:25:47,330 --> 00:25:50,040 Leiskite slinkti žemyn čia ir pamatyti, kas pagrindinis daro. 573 00:25:50,040 --> 00:25:53,780 Tai nereiškia, kad seniai apie funkciją ir iš tikrųjų konstruktas čia yra susipažinę. 574 00:25:53,780 --> 00:25:57,590 Aš pareiškiu, kintama n, o tada Aš kvaršinti vartotojui vėl ir vėl 575 00:25:57,590 --> 00:26:01,880 teigiamo sveikojo skaičiaus, naudojant getInt, ir tik išeiti iš šio ciklo 576 00:26:01,880 --> 00:26:03,280 kai vartotojas įvykdė. 577 00:26:03,280 --> 00:26:05,670 Padaryti, o mes jau naudojamas kvaršinti, kad toje būdu vartotoją. 578 00:26:05,670 --> 00:26:06,670 Dabar tai yra įdomu. 579 00:26:06,670 --> 00:26:08,510 Aš pareiškiu, int, pavadintą "Atsakymas". 580 00:26:08,510 --> 00:26:11,420 Aš priskirti tai gražinama reikšmė iš funkcijos vadinamos "Sigma". 581 00:26:11,420 --> 00:26:15,200 Aš nežinau, kas tai daro dar, bet Prisimenu skelbiantis jį prieš akimirką. 582 00:26:15,200 --> 00:26:18,310 Ir tada aš einančios vertė, kad vartotojas turi įvesti, n, 583 00:26:18,310 --> 00:26:20,420 ir tada aš pranešti atsakymą. 584 00:26:20,420 --> 00:26:22,260 Na tegul pereikite atgal už truputi. 585 00:26:22,260 --> 00:26:28,620 Vykime į priekį į šį katalogą, kad sigma 0, ir iš tikrųjų paleisti šią programą 586 00:26:28,620 --> 00:26:30,490 ir pamatyti, kas atsitiks. 587 00:26:30,490 --> 00:26:35,930 Taigi, jei aš einu į priekį ir paleisti ši programa, ./sigma-0, 588 00:26:35,930 --> 00:26:40,139 ir aš tipo teigiamas sveikas kaip dviejų, Sigma, 589 00:26:40,139 --> 00:26:43,180 kaip graikų simbolis reiškia, yra tik ketiname pridėti visus numerius iš 590 00:26:43,180 --> 00:26:44,320 nulio iki dviejų. 591 00:26:44,320 --> 00:26:46,560 Taigi 0 ir 1 plius 2. 592 00:26:46,560 --> 00:26:48,830 Taigi tai turėtų tikiuosi man 3. 593 00:26:48,830 --> 00:26:49,750 Štai visa tai daro. 594 00:26:49,750 --> 00:26:52,690 Ir panašiai, jei aš paleisti tai vėl ir aš suteikti jai numerį tris, 595 00:26:52,690 --> 00:26:56,721 tai 3 plius 2, todėl tai 5, plius 1 turėtų duoti man 6. 596 00:26:56,721 --> 00:26:59,470 Ir tada, jei aš galiu gauti tikrai pamišę ir pradėkite rašyti didesnių skaičių, 597 00:26:59,470 --> 00:27:01,290 ji turėtų duoti man vis didesnę sumos. 598 00:27:01,290 --> 00:27:02,250 Taigi, kad viskas. 599 00:27:02,250 --> 00:27:04,010 >> Taigi, ką sigma atrodo? 600 00:27:04,010 --> 00:27:05,430 Na, tai gana paprasta. 601 00:27:05,430 --> 00:27:08,940 Tai, kaip mes galime įdiegė tai per pastaruosius porą savaičių. 602 00:27:08,940 --> 00:27:11,120 "Int" bus grąžinti tipas. 603 00:27:11,120 --> 00:27:14,330 Sigma vardas, ir jis trunka kintamasis m vietoj n. 604 00:27:14,330 --> 00:27:15,940 Aš pakeisti, kad iki viršaus. 605 00:27:15,940 --> 00:27:17,340 Tada tai tik normalumas patikrinti. 606 00:27:17,340 --> 00:27:18,430 607 00:27:18,430 --> 00:27:19,950 Pamatysime, kodėl per vieną akimirką. 608 00:27:19,950 --> 00:27:24,220 Dabar aš pareiškiu kitą kintamąjį, suma, inicijuoti jį iki nulio. 609 00:27:24,220 --> 00:27:28,140 Tada aš turiu tai už linijos Iteracja, matyt dėl ​​aiškumo, 610 00:27:28,140 --> 00:27:33,810 nuo i = 1 "iki = M, kuris yra kokia vartotojas įvedėte, ir tada aš 611 00:27:33,810 --> 00:27:35,690 prieaugio panašaus sumą. 612 00:27:35,690 --> 00:27:37,360 Ir tada grąžinti sumą. 613 00:27:37,360 --> 00:27:38,440 >> Taigi klausimų pora. 614 00:27:38,440 --> 00:27:42,370 Vienas iš jų, galiu reikalauti mano pastabą, kad tai išvengiama pavojaus begalinis ciklas. 615 00:27:42,370 --> 00:27:45,620 Kodėl einančios neigiamas skaičius sukelti potencialiai begalinis ciklas? 616 00:27:45,620 --> 00:27:49,396 617 00:27:49,396 --> 00:27:51,290 >> PUBLIKA: Jūs niekada nepasieks m. 618 00:27:51,290 --> 00:27:52,880 >> SPEAKER 1: Niekada nekiškite m. 619 00:27:52,880 --> 00:27:55,880 Bet m, praėjo, tad mano paprastą pavyzdį. 620 00:27:55,880 --> 00:27:58,510 Jei m yra priimtas pagal vartotojas kaip neigiamas. 621 00:27:58,510 --> 00:28:00,059 Nepriklausomai nuo to, pagrindinis. 622 00:28:00,059 --> 00:28:01,850 Pagrindinis apsaugo mus nuo tai per daug, todėl aš tiesiog 623 00:28:01,850 --> 00:28:04,680 yra tikrai analinis su sigma taip pat įsitikinkite, 624 00:28:04,680 --> 00:28:06,540 kad įėjimas negali būti neigiamas. 625 00:28:06,540 --> 00:28:10,130 Taigi, jei m yra neigiamas, kažkas panašaus neigiamas. 626 00:28:10,130 --> 00:28:11,930 Kas nutiks? 627 00:28:11,930 --> 00:28:14,390 Na, aš ketina gauti inicializuoti į vieną, 628 00:28:14,390 --> 00:28:19,060 ir tada aš bus mažesnis arba lygus m? 629 00:28:19,060 --> 00:28:24,130 630 00:28:24,130 --> 00:28:24,765 >> Budėjimo. 631 00:28:24,765 --> 00:28:26,930 632 00:28:26,930 --> 00:28:29,370 Tai was-- tegul ne, tegul nix šią istoriją. 633 00:28:29,370 --> 00:28:32,780 Aš neprašiau, kad klausimą, nes rizika, kad aš užsimindamas 634 00:28:32,780 --> 00:28:38,360 nesiruošia atsitikti, nes i visada bus didesnis than-- Gerai, 635 00:28:38,360 --> 00:28:39,871 Galiu atšaukti šį klausimą. 636 00:28:39,871 --> 00:28:40,370 Gerai. 637 00:28:40,370 --> 00:28:42,030 Leiskite sutelkti dėmesį tik į šios dalies čia. 638 00:28:42,030 --> 00:28:44,210 639 00:28:44,210 --> 00:28:48,830 Kodėl aš pareiškiu, kai ne kilpą? 640 00:28:48,830 --> 00:28:52,010 Pranešimas on line 49 aš paskelbta i viduje kilpos, 641 00:28:52,010 --> 00:28:54,950 bet internete 48 aš deklaravo apie išorę. 642 00:28:54,950 --> 00:28:55,695 Taip. 643 00:28:55,695 --> 00:28:56,611 PUBLIKA: [nesigirdi]. 644 00:28:56,611 --> 00:28:58,734 645 00:28:58,734 --> 00:28:59,400 SPEAKER 1: Žinoma. 646 00:28:59,400 --> 00:29:03,360 Taigi, pirmiausia ir svarbiausia aš tikrai ne noriu paskelbti ir inicijuoti sumą 647 00:29:03,360 --> 00:29:06,130 nulinės vidų kilpa ant kiekvieno pakartojimo, 648 00:29:06,130 --> 00:29:09,370 nes tai aiškiai nugalėti tikslas susumavus numerius. 649 00:29:09,370 --> 00:29:11,770 Norėčiau nuolat keičiasi vertė grįžti į nulinę padėtį. 650 00:29:11,770 --> 00:29:17,992 Ir taip pat, kas dar labiau neaiškus priežastis, dėl tos pačios dizaino sprendimą? 651 00:29:17,992 --> 00:29:18,954 Taip. 652 00:29:18,954 --> 00:29:20,279 >> PUBLIKA: [nesigirdi]. 653 00:29:20,279 --> 00:29:21,070 SPEAKER 1: Būtent. 654 00:29:21,070 --> 00:29:24,060 Noriu prisijungti prie jos ribų kilpos per daug apie tai, kas atitinka? 655 00:29:24,060 --> 00:29:25,390 656 00:29:25,390 --> 00:29:26,400 Dėl 53. 657 00:29:26,400 --> 00:29:29,910 Ir remiantis mūsų nykščio taisykle iš paskaitų prieš porą 658 00:29:29,910 --> 00:29:33,680 kintamieji yra scoped, tikrai, kad garbanotas petnešos, apimantys juos. 659 00:29:33,680 --> 00:29:38,190 Taigi, jei aš neturiu paskelbti viduje sumą Šių išorinių klamrami, 660 00:29:38,190 --> 00:29:40,250 Aš negaliu naudoti pagal 53. 661 00:29:40,250 --> 00:29:43,160 Kitaip tariant, jei aš paskelbė suma čia arba net 662 00:29:43,160 --> 00:29:45,410 Dėl kilpa, aš negalėjau pasiekti jį 53. 663 00:29:45,410 --> 00:29:47,150 Kintamasis būtų veiksmingai dingo. 664 00:29:47,150 --> 00:29:48,579 Taigi priežasčių ten pora. 665 00:29:48,579 --> 00:29:50,370 Bet dabar grįžkime ir pamatyti, kas atsitiks. 666 00:29:50,370 --> 00:29:51,730 Taigi sigma iškviečiamas. 667 00:29:51,730 --> 00:29:55,640 Ji priduria, iki 1 pridėjus 2 ar 1 pridėjus 2 plius 3, o tada grąžina reikšmę, 668 00:29:55,640 --> 00:29:59,660 parduotuvės jį atsakymo, printf čia Štai kodėl aš matau ekrane. 669 00:29:59,660 --> 00:30:03,079 Taigi, tai yra tai, ką mes vadiname kartotinis požiūris, kur iteracija tik 670 00:30:03,079 --> 00:30:03,870 tai naudojant kilpą. 671 00:30:03,870 --> 00:30:06,900 Dėl kilpa, kad ciklas while, Do Nors kilpa, tiesiog daro kažką naujo 672 00:30:06,900 --> 00:30:08,380 ir vėl ir vėl. 673 00:30:08,380 --> 00:30:13,505 >> Bet Sigma rūšies tvarkingas funkcija kad galėčiau ją įgyvendinti kitaip. 674 00:30:13,505 --> 00:30:14,620 675 00:30:14,620 --> 00:30:19,120 Ką apie tai, kuris tiesiog, kad būtų tipo kietas, 676 00:30:19,120 --> 00:30:21,880 leiskite man tikrai atsikratyti iš išsiblaškymas daug 677 00:30:21,880 --> 00:30:24,380 nes šią funkciją yra tikrai gana paprasta. 678 00:30:24,380 --> 00:30:27,780 Leiskite drožinėti jį tiesiog jos keturių pagrindinių linijų 679 00:30:27,780 --> 00:30:30,410 ir atsikratyti visų Savo pastabas ir garbanotieji petnešų. 680 00:30:30,410 --> 00:30:34,334 Tai rūšies proto-pučia alternatyvus įgyvendinimas. 681 00:30:34,334 --> 00:30:37,250 Gerai, gal ir ne proto-pučia, bet tai tipo seksualesnis, visos teisės, 682 00:30:37,250 --> 00:30:39,920 pažvelgti į tai, kad daug trumpai. 683 00:30:39,920 --> 00:30:43,120 Su vos keturių eilučių kodo, Aš pirmą kartą turi šią normalumas patikrinti. 684 00:30:43,120 --> 00:30:45,732 Jei m yra mažesnis arba lygus nulis, sigma neturi prasmės. 685 00:30:45,732 --> 00:30:48,190 Tai tik turėtų būti šiuo atveju teigiamų skaičių, 686 00:30:48,190 --> 00:30:50,340 todėl aš tik ketina grįžti prie nulio savavališkai 687 00:30:50,340 --> 00:30:53,210 taip, kad mes bent jau kai vadinamasis bazinį scenarijų. 688 00:30:53,210 --> 00:30:54,430 >> Bet čia grožis. 689 00:30:54,430 --> 00:30:59,930 Šios idėjos visuma, pridedant numeriai nuo 1 iki n, arba M, šiuo atveju, 690 00:30:59,930 --> 00:31:02,630 galima padaryti rūšies artimųjų spardytis. 691 00:31:02,630 --> 00:31:04,947 Na, kas yra 1 suma m? 692 00:31:04,947 --> 00:31:05,780 Na, žinote, ką? 693 00:31:05,780 --> 00:31:11,949 Tai tas pats kaip m sumai plius 1 suma m minus 1. 694 00:31:11,949 --> 00:31:12,740 Na žinote, ką? 695 00:31:12,740 --> 00:31:13,940 Kas sigma M minus 1? 696 00:31:13,940 --> 00:31:17,860 Na, jei jūs rūšies sekti tai logiškai, tai tas pats, kaip m minus 1 697 00:31:17,860 --> 00:31:21,415 plius sigma M minus 2. 698 00:31:21,415 --> 00:31:22,480 699 00:31:22,480 --> 00:31:26,012 Taigi jūs galite rūšies just-- tai kaip, jei jūs tiesiog 700 00:31:26,012 --> 00:31:28,220 bando erzinti draugui ir jie užduoti jums klausimą, 701 00:31:28,220 --> 00:31:31,344 Jūs rūšies atsakyti klausimą, galite rūšies išlaikyti artimųjų spardytis. 702 00:31:31,344 --> 00:31:34,560 Bet kas svarbiausia yra, kad jei jūs nuolat priėmimo klausimas mažesni ir mažesni 703 00:31:34,560 --> 00:31:36,910 ir mažesnis, esate neprašo kas sigma 704 00:31:36,910 --> 00:31:39,116 n, tai, kas iš Sigma n, tai, kas sigma n? 705 00:31:39,116 --> 00:31:40,990 Jūs esate klausia, kas yra sigma n, kas sigma 706 00:31:40,990 --> 00:31:42,839 n atėmus 1, kas sigma n minus 2? 707 00:31:42,839 --> 00:31:44,880 Galų gale jūsų klausimas taps, ką? 708 00:31:44,880 --> 00:31:50,250 Kas yra sigma vieną ar nuliui, kai labai mažas vertė, 709 00:31:50,250 --> 00:31:52,220 ir kuo greičiau, kaip jūs gauti, kad jūsų draugas, 710 00:31:52,220 --> 00:31:54,350 esate nesiruošia prašyti tą patį klausimą vėl, 711 00:31:54,350 --> 00:31:55,975 jūs tiesiog ketinate pasakyti, oi tai nulis. 712 00:31:55,975 --> 00:31:58,490 Mes baigsite žaisti šį rūšiuoti kvailas ciklinio žaidimą. 713 00:31:58,490 --> 00:32:02,950 >> Taigi rekursija yra programavimo aktas iš funkcijos pasivadinusi. 714 00:32:02,950 --> 00:32:06,630 Ši programa, kai surinkti ir paleisti, yra ketina elgtis lygiai taip pat, 715 00:32:06,630 --> 00:32:09,620 bet kas svarbiausia yra, kad viduje iš funkcijos vadinamas sigma, 716 00:32:09,620 --> 00:32:13,150 yra kodo, kur linija mes skambina patys, 717 00:32:13,150 --> 00:32:14,980 , kuris paprastai turėtų būti blogai. 718 00:32:14,980 --> 00:32:21,160 Pavyzdžiui, ką daryti, jei aš pirmą kartą sudarytas šis, todėl įsitikinkite, sigma-- 719 00:32:21,160 --> 00:32:22,710 padaryti sigma 1 ./sigma-1. 720 00:32:22,710 --> 00:32:25,050 721 00:32:25,050 --> 00:32:27,690 Teigiamas sveikasis skaičius, prašome 50 1275. 722 00:32:27,690 --> 00:32:30,810 Taigi, ką funkcija atrodo būti, remiantis vieno bandymo teisinga. 723 00:32:30,810 --> 00:32:34,917 Bet kas, jei aš galiu gauti šiek tiek pavojinga ir ištrinti vadinamąjį pagrindą, 724 00:32:34,917 --> 00:32:37,750 ir tiesiog pasakyti, gerai, aš tiesiog padaryti tai sudėtingesnis, nei ji yra. 725 00:32:37,750 --> 00:32:42,450 Tegul tik apskaičiuoti sigma atsižvelgiant m ir tada pridedant 726 00:32:42,450 --> 00:32:44,564 į sigma M minus vienas? 727 00:32:44,564 --> 00:32:45,980 Na, kas nutiks čia? 728 00:32:45,980 --> 00:32:47,140 Leiskite nutolinti. 729 00:32:47,140 --> 00:32:52,920 Leiskite perkompiliuoti programą, išsaugokite jį, perkompiliuoti programą, 730 00:32:52,920 --> 00:33:00,450 ir tada pasiruošę ./sigma-1 priartinimo, įvesti teigiamą sveikąjį skaičių prašome, 50. 731 00:33:00,450 --> 00:33:02,180 732 00:33:02,180 --> 00:33:04,430 Kaip daugelis iš jūsų yra pasirengę į prisipažinti iki matydamas, kad? 733 00:33:04,430 --> 00:33:04,950 >> Gerai. 734 00:33:04,950 --> 00:33:06,690 Taigi, tai gali atsitikti dėl iš priežasčių, 735 00:33:06,690 --> 00:33:09,148 ir atvirai šią savaitę mes apie suteikti jums daugiau iš jų. 736 00:33:09,148 --> 00:33:11,780 Tačiau šiuo atveju, pabandykite samprotauti atgal 737 00:33:11,780 --> 00:33:14,430 ką galėjo čia nutiko? 738 00:33:14,430 --> 00:33:17,400 Segmentavimas kaltė, mes sakėme, paskutinis laikas, reiškia atminties segmentą. 739 00:33:17,400 --> 00:33:18,690 Kažkas blogai atsitiko. 740 00:33:18,690 --> 00:33:21,550 Bet kas jį buvo mechaniškai, kad nuėjo kreivai 741 00:33:21,550 --> 00:33:25,000 čia, nes mano pašalinimo tos vadinamosios bazinės atveju, 742 00:33:25,000 --> 00:33:26,870 kur aš grįžo sunkiai koduojami vertę? 743 00:33:26,870 --> 00:33:28,970 744 00:33:28,970 --> 00:33:30,460 Ką manote nutiko? 745 00:33:30,460 --> 00:33:31,219 Taip. 746 00:33:31,219 --> 00:33:32,135 >> PUBLIKA: [nesigirdi]. 747 00:33:32,135 --> 00:33:36,387 748 00:33:36,387 --> 00:33:36,970 SPEAKER 1: Ak. 749 00:33:36,970 --> 00:33:37,550 Geras klausimas. 750 00:33:37,550 --> 00:33:39,508 Taigi į numerį dydžio kad buvau sudėjus 751 00:33:39,508 --> 00:33:41,920 gavo tokia didelė, kad ji viršijo iš atminties dydis. 752 00:33:41,920 --> 00:33:44,640 Gera mintis, bet ne iš esmės ketina sukelti avariją. 753 00:33:44,640 --> 00:33:48,230 Tai gali sukelti sveikasis perpildyti, kur bitai tiesiog apversti 754 00:33:48,230 --> 00:33:51,760 ir tada mes klaida tikrai didelis skaičius kaip neigiamas skaičius, 755 00:33:51,760 --> 00:33:53,260 bet kad pats nesukels gedimo. 756 00:33:53,260 --> 00:33:55,509 Kadangi pasibaigus pabaigos dieną int dar 32 bitai. 757 00:33:55,509 --> 00:33:57,640 Jūs esate nesiruošia netyčia pavogti 33-bitų. 758 00:33:57,640 --> 00:33:58,431 Bet gera mintis. 759 00:33:58,431 --> 00:33:58,984 Taip. 760 00:33:58,984 --> 00:33:59,900 >> PUBLIKA: [nesigirdi]. 761 00:33:59,900 --> 00:34:00,551 762 00:34:00,551 --> 00:34:02,300 SPEAKER 1: būdas niekada sustoja, 763 00:34:02,300 --> 00:34:06,658 ir iš tikrųjų vadina save vėl ir vėl ir vėl ir vėl 764 00:34:06,658 --> 00:34:08,449 ir vėl, ir nė vienas iš šios funkcijos ever 765 00:34:08,449 --> 00:34:13,310 baigti, nes jų vienintelis linija kodas ragina save programą vėl ir vėl 766 00:34:13,310 --> 00:34:14,219 ir vėl. 767 00:34:14,219 --> 00:34:16,080 Ir kas iš tikrųjų vyksta čia ir dabar 768 00:34:16,080 --> 00:34:18,100 gali rūšies atkreipia į tai pavaizduotomis piktogramo-. 769 00:34:18,100 --> 00:34:20,899 Leiskite pereiti prie vaizdas tik už akimirką. 770 00:34:20,899 --> 00:34:22,940 Tai vaizdas, kad ilgainiui sukonkretinti 771 00:34:22,940 --> 00:34:26,336 išsamiau apie tai, kas vyksta viduje kompiuterio atmintyje. 772 00:34:26,336 --> 00:34:28,460 Ir it turns out, kad Šio paveikslėlio apačioje 773 00:34:28,460 --> 00:34:29,709 yra kažkas vadinamas kamino. 774 00:34:29,709 --> 00:34:31,920 Tai luitas atmintis, RAM riekė, 775 00:34:31,920 --> 00:34:33,920 kad tiesiog naudojamas bet kuriuo metu, funkcija yra vadinama. 776 00:34:33,920 --> 00:34:36,239 Bet koks laikas jums, programuotojas, skambinti funkciją, 777 00:34:36,239 --> 00:34:38,860 operacinė sistema, kaip "Mac OS", "Windows" arba "Linux", 778 00:34:38,860 --> 00:34:41,920 griebtuvai baitų krūva, gal Keletas kilobaitų, o gal keletas megabaitų 779 00:34:41,920 --> 00:34:44,590 atminties, rankas juos jums, ir tada leidžia 780 00:34:44,590 --> 00:34:47,650 paleisti savo funkciją naudojant kokia kintamieji jums reikia. 781 00:34:47,650 --> 00:34:50,699 Ir jei tada skambinti kitam funkcija ir kita funkcija, 782 00:34:50,699 --> 00:34:53,590 jūs gaunate kitą atminties gabaliuką ir kitas atminties riekė. 783 00:34:53,590 --> 00:34:57,090 >> Ir iš tiesų, jei šių "žaliųjų padėklai iš Annenberg, tą atmintį, 784 00:34:57,090 --> 00:34:59,870 Štai kas atsitinka pirmą kartą laikas jums paskambinti funkcija sigma. 785 00:34:59,870 --> 00:35:04,510 Tai, kaip uždėti plokštelę, kaip tai apie tai, kas iš pradžių tuščia kamino. 786 00:35:04,510 --> 00:35:07,142 Bet tada, jei tas dėklas vadina save, taip sakant, 787 00:35:07,142 --> 00:35:08,850 paskambinę kitą atvejį Sigma, tai 788 00:35:08,850 --> 00:35:11,640 tarsi klausia operacinę sistemą, ooh, reikia šiek tiek daugiau atminties, 789 00:35:11,640 --> 00:35:12,520 duok man tą. 790 00:35:12,520 --> 00:35:14,840 Ir tada jis bus kraunamos ant ant viršaus. 791 00:35:14,840 --> 00:35:18,030 Bet kas svarbiausias čia yra tai, kad Pirmasis dėklas yra vis dar ten, 792 00:35:18,030 --> 00:35:20,620 nes jis rėmėsi antrąjį dėklą. 793 00:35:20,620 --> 00:35:23,500 Dabar tuo tarpu, sigma skambinti sigma, kad lyg prašydama daugiau atminties. 794 00:35:23,500 --> 00:35:25,830 Paimama kraunamos ant čia. 795 00:35:25,830 --> 00:35:29,350 sigma skambinti sigma, tai jau kita dėklas, kad gauna kraunamos čia. 796 00:35:29,350 --> 00:35:32,942 Ir jei jūs nuolat tai daryti, galiausiai, tipo map tai vaizdo 797 00:35:32,942 --> 00:35:35,525 tos diagramos, tai, kas vyksta atsitikti su dėklų kamino? 798 00:35:35,525 --> 00:35:37,480 799 00:35:37,480 --> 00:35:41,160 Ji ketina viršyti sumos, atminties jūsų kompiuteris turi. 800 00:35:41,160 --> 00:35:45,790 Ir kuo greičiau šios žaliosios dėklą viršija horizontalią liniją 801 00:35:45,790 --> 00:35:49,410 virš kamino ir virš to žodžio krūvą, kurios mes grįžti į ateitį, 802 00:35:49,410 --> 00:35:50,410 tai yra blogas dalykas. 803 00:35:50,410 --> 00:35:52,810 Akmenų krūva yra skirtingi segmentas atminties, 804 00:35:52,810 --> 00:35:55,190 ir, jei leisite juos padėklai krūva ir krūva ant, 805 00:35:55,190 --> 00:35:57,800 jūs ketinate viršyti jūsų pačių segmentas atminties, 806 00:35:57,800 --> 00:36:00,420 ir programa iš tiesų vyksta į avariją. 807 00:36:00,420 --> 00:36:02,930 >> Dabar, kaip panaikinti, šią idėją Rekursija, todėl 808 00:36:02,930 --> 00:36:06,500 gali aiškiai sukelti problemų, tačiau tai nebūtinai yra blogas dalykas. 809 00:36:06,500 --> 00:36:08,840 Nes mano po visi, how-- o gal 810 00:36:08,840 --> 00:36:11,700 tai užtrunka šiek tiek priprasti į --how elegantiškas arba kaip paprasta 811 00:36:11,700 --> 00:36:14,890 kad sigma įgyvendinimas buvo. 812 00:36:14,890 --> 00:36:17,440 Ir mes neketiname naudoti rekursija visi, kad daug CS50, 813 00:36:17,440 --> 00:36:20,780 bet CS51, ir tikrai bet kurios klasės kur manipuliuoti duomenų struktūros 814 00:36:20,780 --> 00:36:23,640 kaip medžių, ar šeimos medžių, kurie turi tam tikrą hierarchiją, 815 00:36:23,640 --> 00:36:26,000 tai super, super naudingas. 816 00:36:26,000 --> 00:36:29,750 Dabar, kaip panaikinti, kad jums kaip trokštantis kompiuterių mokslininkai 817 00:36:29,750 --> 00:36:33,180 yra susipažinę su kai kuriais iš "Google" viduje anekdotai, jei jūs einate į "Google" 818 00:36:33,180 --> 00:36:36,345 ir jums surasti tai, kas yra apibrėžimas, tarkim, rekursija, įveskite. 819 00:36:36,345 --> 00:36:40,208 820 00:36:40,208 --> 00:36:41,110 Aha. 821 00:36:41,110 --> 00:36:42,670 Kaip žemę, aš iškedentas iki nedaugelis. 822 00:36:42,670 --> 00:36:45,470 Tai buvo, pavyzdžiui, 10 minučių atidėliojimas šį rytą. 823 00:36:45,470 --> 00:36:52,890 Jei jūs taip pat "Google" pakreiptai "pranešimas pakreipiant galvą slightly-- 824 00:36:52,890 --> 00:36:55,120 ir tada šis vienas yra galbūt Patys žvėriškiausių visi 825 00:36:55,120 --> 00:36:57,286 nes kažkas praleido kaip jų dieną įgyvendinant šį 826 00:36:57,286 --> 00:36:59,880 keletą metų ago-- ateiti. 827 00:36:59,880 --> 00:37:01,140 828 00:37:01,140 --> 00:37:04,540 Oi, wait-- tai klaida. 829 00:37:04,540 --> 00:37:08,410 830 00:37:08,410 --> 00:37:11,410 >> Taigi veikia ant vieno Didžiausi pasaulio svetainės 831 00:37:11,410 --> 00:37:13,510 šie kvaili mažai Velykų kiaušiniai. 832 00:37:13,510 --> 00:37:16,690 Jie tikriausiai vartoja nontrivial skaičius eilučių kodo 833 00:37:16,690 --> 00:37:19,280 tik todėl, kad mes galime turėti mažai įdomus dalykų, pavyzdžiui, kad. 834 00:37:19,280 --> 00:37:22,140 Bet bent jau dabar jūs gaunate kai kurie iš šių viduje anekdotai. 835 00:37:22,140 --> 00:37:28,330 >> Dabar galime pažvelgti į kai kuriuos iš balta yra, mes jau pasakojo vėlai, 836 00:37:28,330 --> 00:37:30,707 ir pradėti žievelės atgal kai sluoksniai techniškai 837 00:37:30,707 --> 00:37:32,790 taip, kad jūs tikrai suprasti, tai, kas jau vyksta 838 00:37:32,790 --> 00:37:34,860 ir jūs galite suprasti, kai grėsmių, 839 00:37:34,860 --> 00:37:38,060 kaip Shellshock, kad jau pradėjo tapti 840 00:37:38,060 --> 00:37:41,110 nuo kiekvieno priešakyje dėmesio, bent jau žiniasklaidoje. 841 00:37:41,110 --> 00:37:45,810 Taigi čia yra labai paprasta funkcija kad grįžta nieko, tuščia. 842 00:37:45,810 --> 00:37:46,790 Jo vardas yra apsikeitimo. 843 00:37:46,790 --> 00:37:50,880 Tai trunka dviejų kintamųjų ir jis grįžta nieko. 844 00:37:50,880 --> 00:37:52,260 Mano A ir B. 845 00:37:52,260 --> 00:37:53,337 Taigi greitai demonstravimas. 846 00:37:53,337 --> 00:37:54,170 Mes atnešė tai iki. 847 00:37:54,170 --> 00:37:56,100 Mes taip pat galėtų imtis šiek tiek pertrauka čia truputi 848 00:37:56,100 --> 00:37:57,250 ir turi mažai ką gerti. 849 00:37:57,250 --> 00:38:00,120 Jei kas nors ne tai prisijungti man iki čia tik akimirką. 850 00:38:00,120 --> 00:38:01,830 Kaip apie jus į kaštoninės marškinėliai? 851 00:38:01,830 --> 00:38:02,335 Nagi iki. 852 00:38:02,335 --> 00:38:04,060 853 00:38:04,060 --> 00:38:05,260 Tiesiog vienas šiandien. 854 00:38:05,260 --> 00:38:06,251 Ačiū, nors. 855 00:38:06,251 --> 00:38:08,000 Visos teisės, ir mes turime artėja, kas čia? 856 00:38:08,000 --> 00:38:08,660 Koks tavo vardas? 857 00:38:08,660 --> 00:38:09,360 >> SPEAKER 4: Laura. 858 00:38:09,360 --> 00:38:09,740 >> SPEAKER 1: Laura. 859 00:38:09,740 --> 00:38:10,370 Nagi iki. 860 00:38:10,370 --> 00:38:11,460 861 00:38:11,460 --> 00:38:13,850 Taigi Laura labai paprasta iššūkis šiandien. 862 00:38:13,850 --> 00:38:14,704 863 00:38:14,704 --> 00:38:15,370 Nice to meet yo. 864 00:38:15,370 --> 00:38:16,410 865 00:38:16,410 --> 00:38:16,910 Viskas gerai. 866 00:38:16,910 --> 00:38:21,179 Taigi, mes turime šiek tiek pieno čia ir mes turime šiek tiek apelsinų sulčių per čia 867 00:38:21,179 --> 00:38:23,345 ir kai puodeliai, kad mes pasiskolino iš Annenberg šiandien. 868 00:38:23,345 --> 00:38:24,178 >> SPEAKER 4: Pasiskolinti. 869 00:38:24,178 --> 00:38:27,240 SPEAKER 1: Ir ketinate eiti į priekį ir duoti jums pusę tai stiklo. 870 00:38:27,240 --> 00:38:28,250 871 00:38:28,250 --> 00:38:28,800 Viskas gerai. 872 00:38:28,800 --> 00:38:30,750 Ir mes suteiksime jums pusę pieno stiklo. 873 00:38:30,750 --> 00:38:31,905 874 00:38:31,905 --> 00:38:35,890 Oh, ir tik todėl, kad jūs galite prisiminti, kas tai buvo, pavyzdžiui, 875 00:38:35,890 --> 00:38:38,860 Prisiminiau pareikšti tai aukštyn ir šiandien. 876 00:38:38,860 --> 00:38:42,030 877 00:38:42,030 --> 00:38:42,530 Gerai. 878 00:38:42,530 --> 00:38:45,470 Jei ne tai, pažiūrėkime, mes galite įdėti juos savo akinius 879 00:38:45,470 --> 00:38:46,560 jei norite. 880 00:38:46,560 --> 00:38:48,710 Tai bus pasaulis iš Laura akis. 881 00:38:48,710 --> 00:38:49,210 Viskas gerai. 882 00:38:49,210 --> 00:38:53,820 Taigi jūsų tikslas, atsižvelgiant į du puodeliai skystis čia, pieno ir apelsinų sulčių, 883 00:38:53,820 --> 00:38:58,370 yra sukeisti dvi turinį taip, kad apelsinų sultys eina į pieno puodelį 884 00:38:58,370 --> 00:39:00,710 ir pieno eina į apelsinų sultys puodelis. 885 00:39:00,710 --> 00:39:02,359 >> SPEAKER 4: Ar gausiu kitą puodelį? 886 00:39:02,359 --> 00:39:05,650 SPEAKER 1: Aš taip džiaugiuosi, prašėte, nors tai būtų buvę daug geriau filmuota medžiaga 887 00:39:05,650 --> 00:39:06,710 jei nebuvo prašoma. 888 00:39:06,710 --> 00:39:10,620 Bet taip, mes galime Jums pasiūlyti trečiosios puodelis tai tuščia, žinoma. 889 00:39:10,620 --> 00:39:11,120 Viskas gerai. 890 00:39:11,120 --> 00:39:12,300 Taigi apsikeitimo turinį ten. 891 00:39:12,300 --> 00:39:16,100 892 00:39:16,100 --> 00:39:17,050 Labai gražus. 893 00:39:17,050 --> 00:39:20,390 894 00:39:20,390 --> 00:39:21,305 Labai gerai. 895 00:39:21,305 --> 00:39:23,121 896 00:39:23,121 --> 00:39:24,745 Jūs darote tai nepaprastai atsargiai. 897 00:39:24,745 --> 00:39:26,970 898 00:39:26,970 --> 00:39:28,655 Ir trijų etapų. 899 00:39:28,655 --> 00:39:30,390 900 00:39:30,390 --> 00:39:31,350 Viskas gerai. 901 00:39:31,350 --> 00:39:31,930 Puikus. 902 00:39:31,930 --> 00:39:33,930 Didelis audringi plojimai būtų gerai, Laura. 903 00:39:33,930 --> 00:39:36,500 904 00:39:36,500 --> 00:39:37,000 Viskas gerai. 905 00:39:37,000 --> 00:39:40,790 Mes turime mažai atsisveikinimo dovaną už jus, bet leiskite man pasinaudoti jų. 906 00:39:40,790 --> 00:39:42,620 Labai ačiū. 907 00:39:42,620 --> 00:39:46,170 Taigi paprastas pavyzdys, nors, įrodyti, kad, jei jūs 908 00:39:46,170 --> 00:39:48,300 norite sukeisti turinį iš dviejų talpyklių, 909 00:39:48,300 --> 00:39:52,360 arba tegul pavadinkime juos kintamieji, jums reikia šiek tiek laikino saugojimo 910 00:39:52,360 --> 00:39:56,710 į vieną iš turinio etape tiek kad jūs iš tikrųjų galite padaryti swap. 911 00:39:56,710 --> 00:40:01,790 Taigi iš tiesų, tai kodo iki čia C yra atstovas būtent tai. 912 00:40:01,790 --> 00:40:06,340 Jei apelsinų sultys buvo ir pienas buvo b ir norėjome apsikeitimo du, 913 00:40:06,340 --> 00:40:08,990 galite pabandyti kažką kūrybinį pilant viena į kitą, 914 00:40:08,990 --> 00:40:11,031 bet tikriausiai nebūtų pabaigą ypač gerai. 915 00:40:11,031 --> 00:40:15,260 Ir todėl mes naudojame trečią taurę, skambutį tai tmp, T-M-P pagal susitarimą, 916 00:40:15,260 --> 00:40:19,370 ir įdėti turinį OL tuo, kad, tada sukeisti vieną puodelį, 917 00:40:19,370 --> 00:40:22,610 tada įdėti OL į originalus puodelis, taip 918 00:40:22,610 --> 00:40:25,320 pasiekti, tiksliai taip, kaip Laura padarė, apsikeitimo sandorio. 919 00:40:25,320 --> 00:40:26,850 >> Taigi darykime būtent tai. 920 00:40:26,850 --> 00:40:30,110 Leiskite man eiti į priekį ir atidaryti iki Pavyzdžiui ŠTAI 921 00:40:30,110 --> 00:40:32,720 iš tikrųjų vadinama "ne apsikeitimo ", nes tai nėra 922 00:40:32,720 --> 00:40:36,180 kaip tik padaryti, kaip jūs manote. 923 00:40:36,180 --> 00:40:41,190 Taigi šioje programoje, pastebėsite, kad Aš naudoju stdio.h, mūsų senas draugas. 924 00:40:41,190 --> 00:40:43,130 Turiu prototipas už apsikeitimo sandorio ten, kuris 925 00:40:43,130 --> 00:40:45,450 tai jo įgyvendinimas s tikriausiai žemyn toliau, 926 00:40:45,450 --> 00:40:48,050 ir pažiūrėkime, ką šis pagrindinis Programa ketina tai padaryti už mane. 927 00:40:48,050 --> 00:40:52,020 Aš pirmą kartą paskelbti int x gauna vienas, ir int y gauna du. 928 00:40:52,020 --> 00:40:54,930 Taigi manau, tie, kaip leidinyje ir pienas, atitinkamai. 929 00:40:54,930 --> 00:40:57,100 Ir tada aš tiesiog printf sakydamas x tai 930 00:40:57,100 --> 00:41:00,120 ir y tai, tik tiek galiu vizualiai pamatyti, kas vyksta. 931 00:41:00,120 --> 00:41:03,810 Tada aš printf teigdamas kad aš Swapping du, 932 00:41:03,810 --> 00:41:07,100 ir tada aš atsispausdinti teigia, kad jie pavertė, 933 00:41:07,100 --> 00:41:09,300 ir aš atsispausdinti x ir y dar kartą. 934 00:41:09,300 --> 00:41:13,010 Taigi žemyn čia apsikeitimo sandoris ką Laura padarė, 935 00:41:13,010 --> 00:41:16,240 ir ką matėme ekranas prieš akimirką. 936 00:41:16,240 --> 00:41:19,380 >> Taigi eikime į priekį ir skaudžiai nusivilti. 937 00:41:19,380 --> 00:41:24,690 Make no apsikeitimo ir paleisti jokio swap, padidindami produkcijos čia. 938 00:41:24,690 --> 00:41:28,320 Įveskite x 1, y 2, Swapping pavertė. 939 00:41:28,320 --> 00:41:32,700 x yra dar 1, ir y yra dar 2. 940 00:41:32,700 --> 00:41:37,630 Taigi, nors, tiesą sakant, tai atrodo tiksliai norite, nors techniškai, 941 00:41:37,630 --> 00:41:40,730 ką Laura padarė, neatrodė, kad dirbti. 942 00:41:40,730 --> 00:41:42,130 Taigi, kodėl taip yra? 943 00:41:42,130 --> 00:41:46,630 Na, paaiškėja, kad kai mes rašome, kaip ši programa 944 00:41:46,630 --> 00:41:51,590 , kuri turi tiek pagrindinė, pabrėžė čia ir tada kita funkcija, kaip apsikeitimo sandorių, 945 00:41:51,590 --> 00:41:54,230 pabrėžė čia, o ji ragina, pasaulis 946 00:41:54,230 --> 00:41:57,030 atrodo šiek tiek kažką panašaus šie padėklai prieš akimirką. 947 00:41:57,030 --> 00:42:00,440 Kai pagrindinis pirmas iškviečiamas, tai tarsi klausia operacinę sistemą 948 00:42:00,440 --> 00:42:04,030 už atminties tiek dėl bet vietos kintamieji, pavyzdžiui, x ir y, kad pagrindinis turi, 949 00:42:04,030 --> 00:42:05,660 ir jie galų gale teisus ten. 950 00:42:05,660 --> 00:42:10,920 Tačiau, jeigu pagrindinis skambučių apsikeitimo ir pagrindinis eina sukeisti du argumentus, A ir B, 951 00:42:10,920 --> 00:42:16,410 apelsinų sultys ir pienas, tai nepatinka atiduodami apelsinų sultis ir pieną 952 00:42:16,410 --> 00:42:17,500 Laura. 953 00:42:17,500 --> 00:42:21,300 Ką kompiuteris daro, tai eina kopijas apelsinų sulčių 954 00:42:21,300 --> 00:42:27,110 ir kopijos Laura pieno, kad kas galiausiai viduje šio dėklo 955 00:42:27,110 --> 00:42:32,510 yra vertė vieno ir dviejų arba OL ir pieno, tačiau jų kopijos, 956 00:42:32,510 --> 00:42:34,790 kad šiuo metu į istoriją, ten 957 00:42:34,790 --> 00:42:36,930 yra OL ir pieno kiekvienoje iš šių dėklų. 958 00:42:36,930 --> 00:42:39,260 Yra vienas ir du kiekviena iš šių dėklų, 959 00:42:39,260 --> 00:42:41,720 ir apsikeitimo funkcija iš tiesų dirba. 960 00:42:41,720 --> 00:42:46,090 Tai Swapping juos viduje Antros viršutinį dėklą 961 00:42:46,090 --> 00:42:48,147 bet Swapping neturi įtakos. 962 00:42:48,147 --> 00:42:49,980 Ir remiantis tik keletas pagrindinis principas, mes 963 00:42:49,980 --> 00:42:52,970 kalbėjo apie prieš, ir iš tiesų vos kelios minutės prieš ką 964 00:42:52,970 --> 00:42:58,770 gali paaiškinti, kodėl keičiasi a ir b viduje apsikeitimo sandorio 965 00:42:58,770 --> 00:43:05,560 neturi įtakos x ir y poveikį, nors Aš išlaikė x ir y apsikeitimo funkcija. 966 00:43:05,560 --> 00:43:08,750 Kas pagrindinis žodis čia gali supaprastintai paaiškinti? 967 00:43:08,750 --> 00:43:11,250 968 00:43:11,250 --> 00:43:12,627 Manau, aš girdėjau, kad čia? 969 00:43:12,627 --> 00:43:13,335 PUBLIKA: Grįžti. 970 00:43:13,335 --> 00:43:14,085 SPEAKER 1: Grįžti? 971 00:43:14,085 --> 00:43:14,590 Ne sugrįžti. 972 00:43:14,590 --> 00:43:15,895 Vykime su vienu kitu. 973 00:43:15,895 --> 00:43:16,395 Kas tai? 974 00:43:16,395 --> 00:43:17,080 >> PUBLIKA: [nesigirdi]. 975 00:43:17,080 --> 00:43:20,000 >> SPEAKER 1: Gerai, kad return-- galėtume padaryti grąžinimo darbą istoriją, 976 00:43:20,000 --> 00:43:21,914 bet ten net paprastesnis paaiškinimas. 977 00:43:21,914 --> 00:43:22,580 PUBLIKA: Taikymo sritis. 978 00:43:22,580 --> 00:43:23,288 SPEAKER 1 Taikymo sritis. 979 00:43:23,288 --> 00:43:24,300 Imsiu apimtį. 980 00:43:24,300 --> 00:43:27,290 Taigi apimtis, prisiminti, kur Mūsų x ir y deklaruoti. 981 00:43:27,290 --> 00:43:30,840 Jie pareiškė, viduje iš pagrindinės teisė čia. 982 00:43:30,840 --> 00:43:33,200 a ir b, tuo tarpu, yra efektyviai paskelbė 983 00:43:33,200 --> 00:43:35,930 viduje apsikeitimo sandorio, ne visai į garbanotas petnešos, tačiau vis dar 984 00:43:35,930 --> 00:43:37,690 bendrojo ploto apsikeitimo sandorio. 985 00:43:37,690 --> 00:43:40,560 Ir taip iš tikrųjų, ir b egzistuoja tik per šį dėklą 986 00:43:40,560 --> 00:43:44,850 iš Annenberg, tai antra riekė kodą. 987 00:43:44,850 --> 00:43:49,500 Taigi mes iš tiesų keičiasi kopiją, tačiau tai tikrai ne visi, kad naudinga. 988 00:43:49,500 --> 00:43:52,190 >> Taigi leiskite pažvelgti tai šiek tiek žemesnio lygio. 989 00:43:52,190 --> 00:43:55,430 Aš ruošiuosi grįžti į Šaltinis katalogas, 990 00:43:55,430 --> 00:43:58,330 ir aš ruošiuosi pirmas priartinti čia, ir tik 991 00:43:58,330 --> 00:44:02,290 patvirtinti, kad aš tai didesnis terminalo langą, 992 00:44:02,290 --> 00:44:04,430 programa vis dar elgiasi kaip kad. 993 00:44:04,430 --> 00:44:06,840 Tarkime dabar, kad tai nėra tyčinis. 994 00:44:06,840 --> 00:44:10,090 Aišku aš norėjau apsikeitimo su darbas, todėl ji jaučiasi klaidą. 995 00:44:10,090 --> 00:44:12,780 Dabar galėčiau pradėti pridedant daug printf aisiais į mano kodas, 996 00:44:12,780 --> 00:44:16,010 spausdinti x per čia, y per čia per čia, b čia. 997 00:44:16,010 --> 00:44:18,220 Bet tiesą sakant, tai tikriausiai ką jūs veikėte už poros savaičių 998 00:44:18,220 --> 00:44:20,190 dabar, po darbo valandų ir namuose, kai darbo 999 00:44:20,190 --> 00:44:22,150 ant psets bando rasti kai kurių klaidų. 1000 00:44:22,150 --> 00:44:25,560 Bet pamatysite, jeigu jūs dar neturite, kad problema nustatyti trijų supažindina jus 1001 00:44:25,560 --> 00:44:31,630 į komandą, vadinama GDB, kur GDB, GNU Debugger, 1002 00:44:31,630 --> 00:44:34,040 turi sau visa krūva funkcijos, kurios gali iš tikrųjų 1003 00:44:34,040 --> 00:44:38,160 leiskite mums suprasti situacijas kaip tai, bet daugiau įtikinamai, 1004 00:44:38,160 --> 00:44:39,940 spręsti problemas ir rasti klaidas. 1005 00:44:39,940 --> 00:44:40,940 Taigi, aš ruošiuosi tai padaryti. 1006 00:44:40,940 --> 00:44:44,770 Vietoj ./noswap, aš vietoj ketina paleisti GDB ./noswap. 1007 00:44:44,770 --> 00:44:47,410 1008 00:44:47,410 --> 00:44:51,200 Kitaip tariant, aš paleisti mano programa ne Bash, mūsų naujas draugas 1009 00:44:51,200 --> 00:44:51,850 šiandien. 1010 00:44:51,850 --> 00:44:53,970 Aš ruošiuosi paleisti mano programa noswap viduje 1011 00:44:53,970 --> 00:44:56,900 Šio kita programa, vadinama GDB, kuris yra debuggerem, kuris 1012 00:44:56,900 --> 00:45:01,035 yra programa, kuri sukurta siekiant padėti Jūs žmogus nuolatos surasti ir pašalinti klaidas. 1013 00:45:01,035 --> 00:45:03,410 Taigi, jei aš paspauskite Paleisti čia, ten žiaurią suma teksto 1014 00:45:03,410 --> 00:45:04,868 kad jūs tikrai niekada skaityti. 1015 00:45:04,868 --> 00:45:07,290 Tai iš esmės išsiblaškymas iš eilutę, kuri 1016 00:45:07,290 --> 00:45:10,030 Aš ruošiuosi nukentėjo Control-L keltis ten viršuje. 1017 00:45:10,030 --> 00:45:11,800 Tai GDB eilutę. 1018 00:45:11,800 --> 00:45:15,550 Jei aš noriu paleisti šią programą dabar kaip tai mažai apgauti lapo šiandien 1019 00:45:15,550 --> 00:45:21,860 Pristatymas rodo, Vykdyti yra pirmasis komandas, kad mes skirtas pristatyti. 1020 00:45:21,860 --> 00:45:25,150 Ir aš tik ketina įvesti paleisti čia viduje GDB, 1021 00:45:25,150 --> 00:45:26,811 ir iš tikrųjų tai vyko mano programą. 1022 00:45:26,811 --> 00:45:29,310 Dabar yra keletas papildomų išėjimai panašaus ekrane, 1023 00:45:29,310 --> 00:45:31,910 bet tai GDB tiesiog yra analinis ir mums, kas vyksta. 1024 00:45:31,910 --> 00:45:34,451 Jūs neturite iš tikrųjų turi nerimauti apie tokias detales dabar. 1025 00:45:34,451 --> 00:45:36,890 Bet kas tikrai cool apie GDB, jei aš tai padaryti again-- 1026 00:45:36,890 --> 00:45:42,100 Valdymo L išvalo screen-- leiskite man eiti į priekį ir įveskite "pertrauka Pagrindinis" taip, 1027 00:45:42,100 --> 00:45:45,743 kai aš paspauskite "Enter", kuriame kas vadinama pertrauka taškas noswap.c, 1028 00:45:45,743 --> 00:45:51,270 linija 16, kur yra GDB išsiaiškino, mano programa iš tikrųjų 1029 00:45:51,270 --> 00:45:53,070 yra, mano funkcija yra iš tikrųjų. 1030 00:45:53,070 --> 00:45:55,070 Tai mes ignoruoti dabar bet tai adresas 1031 00:45:55,070 --> 00:45:57,310 atmintyje specialiai šiai funkcijai. 1032 00:45:57,310 --> 00:46:00,240 Taigi dabar, kai aš tipo paleisti, pastebėsite, kas yra kietas čia. 1033 00:46:00,240 --> 00:46:05,650 Mano programa sugenda prie linijos I sakė GDB pristabdyti vykdymą ne. 1034 00:46:05,650 --> 00:46:09,850 Taigi, aš neturiu dabar pakeisti savo kodą, pridėti keletą printf aisiais, perkompiliuoti jį Rerun 1035 00:46:09,850 --> 00:46:13,300 jis, keisti, pridėti šiek tiek printf aisiais, išsaugokite jį, perkompiliuoti jį, paleiskite jį. 1036 00:46:13,300 --> 00:46:18,100 Galiu tiesiog vaikščioti per mano programą žingsnis po žingsnio prie žmogaus greičiu po žingsnio, 1037 00:46:18,100 --> 00:46:20,880 ne "Intel" viduje rūšies greičiu. 1038 00:46:20,880 --> 00:46:24,580 >> Taigi dabar pastebėti šią eilutę pasirodo čia, o jei aš einu atgal 1039 00:46:24,580 --> 00:46:27,800 mano programos gedit, pastebėsite, kad tai yra iš tikrųjų 1040 00:46:27,800 --> 00:46:29,280 labai pirmoji eilutė kodą. 1041 00:46:29,280 --> 00:46:31,240 Yra linija 16 ir gedit. 1042 00:46:31,240 --> 00:46:34,610 Yra linija 16 per GDB, ir net nors šiuo juoda ir balta sąsaja 1043 00:46:34,610 --> 00:46:37,760 nėra beveik kaip naudotojas draugiškas, tai reiškia, 1044 00:46:37,760 --> 00:46:41,680 kad linija 16 nebuvo įvykdytas dar, bet ji yra apie būti. 1045 00:46:41,680 --> 00:46:46,220 Taigi iš tiesų, jei aš tipo spausdinti x, o ne printf, tiesiog spausdinti x, 1046 00:46:46,220 --> 00:46:50,730 Aš kažkiek netikrą vertę yra nulinė, nes x nebuvo inicijuotas dar. 1047 00:46:50,730 --> 00:46:54,760 Taigi, aš ruošiuosi rašyti toliau, ar, jei jūs nori būti išgalvotas, tik N šalia. 1048 00:46:54,760 --> 00:46:59,090 Bet kai aš tipo šalia atvykti, dabar pastebėsite, kad jis pereina į linijos 17. 1049 00:46:59,090 --> 00:47:02,840 Taigi logiška, kad jei aš įvykdytas 16 linija, ir aš dabar tipo spausdinimo x, 1050 00:47:02,840 --> 00:47:03,640 ką turėčiau pamatyti? 1051 00:47:03,640 --> 00:47:04,970 1052 00:47:04,970 --> 00:47:05,520 Vienas. 1053 00:47:05,520 --> 00:47:07,820 >> Ir dabar tai yra tiesa paini. 1054 00:47:07,820 --> 00:47:11,260 2 $ yra tik išgalvotas būdas, jei Jums noriu kreiptis į tos vertės vėliau, 1055 00:47:11,260 --> 00:47:12,510 galite pasakyti "doleris pasirašyti du." 1056 00:47:12,510 --> 00:47:13,480 Tai lyg nugaros nuoroda. 1057 00:47:13,480 --> 00:47:14,570 Bet dabar, tiesiog jį ignoruoti. 1058 00:47:14,570 --> 00:47:17,070 Kas įdomu yra tai, kas remiantis lygybės ženklą dešinėje. 1059 00:47:17,070 --> 00:47:21,000 Ir dabar, jei aš tipo sekantis vėl ir spausdinti y, turėčiau pamatyti 2. 1060 00:47:21,000 --> 00:47:23,870 Aš taip pat dabar gali spausdinti x ir vėl atvirai, 1061 00:47:23,870 --> 00:47:27,130 jei aš gaunu šiek tiek supainioti, kur aš esu, aš galiu įvesti sąrašą sąraše 1062 00:47:27,130 --> 00:47:30,590 ir tik pamatyti tikrą kontekstą aplink Aš tikiu, vieta tikrai ne. 1063 00:47:30,590 --> 00:47:35,180 Ir dabar galiu tipo šalia, ir x yra 1. 1064 00:47:35,180 --> 00:47:36,300 Dabar aš tipo šalia. 1065 00:47:36,300 --> 00:47:37,710 O, y 2. 1066 00:47:37,710 --> 00:47:40,750 Ir vėl, tai yra painu, nes GDB produkcijos 1067 00:47:40,750 --> 00:47:43,044 yra maišomos su savo produkcija. 1068 00:47:43,044 --> 00:47:45,710 Bet jei reikia nepamiršti, kurias žvelgdamas pirmyn ir atgal savo kodą 1069 00:47:45,710 --> 00:47:47,740 arba d jį pusę iki pusės galbūt, jūs 1070 00:47:47,740 --> 00:47:51,020 matyti, kad iš tikrųjų aš tiesiog gerinimo per mano programą. 1071 00:47:51,020 --> 00:47:54,620 >> Tačiau pastebėti, kas vyksta šalia, pažodžiui. 1072 00:47:54,620 --> 00:47:56,380 Štai linija 22. 1073 00:47:56,380 --> 00:48:01,315 Leiskite man eiti per jį, taip pereinant iki 23, ir jei aš spausdinti x dabar dar vienas. 1074 00:48:01,315 --> 00:48:03,890 Ir jei aš spausdinti y dabar, dar vienas. 1075 00:48:03,890 --> 00:48:05,820 Taigi, tai nėra naudinga naudotis. 1076 00:48:05,820 --> 00:48:07,450 Taigi leiskite pakartoti tai. 1077 00:48:07,450 --> 00:48:10,069 Leiskite grįžti iki viršuje ir tipas paleisti vėl. 1078 00:48:10,069 --> 00:48:12,110 Ir tai suprantama programa kad manimi yra debugged 1079 00:48:12,110 --> 00:48:14,109 jau prasidėjo, prasidėjo iš pradžių. 1080 00:48:14,109 --> 00:48:15,420 Taip, tegul tai padaryti dar kartą. 1081 00:48:15,420 --> 00:48:22,000 Ir šį kartą tegul daryti toliau, Kitas, šalia, šalia, šalia, 1082 00:48:22,000 --> 00:48:24,180 bet dabar viskas pasidaro įdomu. 1083 00:48:24,180 --> 00:48:27,760 Dabar aš noriu dėti į apsikeitimo, todėl aš ne tipo šalia. 1084 00:48:27,760 --> 00:48:34,380 Aš tipo žingsnį, ir dabar pastebėti šoktelėjo mane noswap.c linija 33. 1085 00:48:34,380 --> 00:48:37,240 Jei aš einu atgal į gedit, kas 33 linija? 1086 00:48:37,240 --> 00:48:40,500 Štai pirmasis faktinis linija kodo viduje apsikeitimo sandorio. 1087 00:48:40,500 --> 00:48:44,150 Kuris yra gražus, nes dabar galiu rūšies baksnoti aplink ir gauti įdomu 1088 00:48:44,150 --> 00:48:46,052 kaip į tai, kas vyksta iš tikrųjų ten. 1089 00:48:46,052 --> 00:48:46,760 Leiskite spausdinti tmp. 1090 00:48:46,760 --> 00:48:47,770 1091 00:48:47,770 --> 00:48:48,800 Oho. 1092 00:48:48,800 --> 00:48:51,438 Kodėl tmp turi keletą kvailai, fiktyvus šiukšlių vertė? 1093 00:48:51,438 --> 00:48:54,579 1094 00:48:54,579 --> 00:48:56,120 PUBLIKA: Tai nebuvo inicializuoti. 1095 00:48:56,120 --> 00:48:57,150 SPEAKER 1: Tai nebuvo inicializuoti. 1096 00:48:57,150 --> 00:49:00,270 Ir iš tiesų, kai paleidžiate programą, jums suteikta visa krūva atminties 1097 00:49:00,270 --> 00:49:03,392 operacinės sistemos, bet jūs nebuvo inicializuoti jokių vertybių, 1098 00:49:03,392 --> 00:49:05,600 taip kokia bitai jūs matau čia, nors tai 1099 00:49:05,600 --> 00:49:07,770 šio crazy didelis neigiamas skaičius, tiesiog reiškia, 1100 00:49:07,770 --> 00:49:10,750 kad jie yra iš liekanos kai praėjusią naudojimas tos RAM, 1101 00:49:10,750 --> 00:49:13,050 nors aš ne aš reikėjo dar. 1102 00:49:13,050 --> 00:49:17,086 Taigi, dabar aš ruošiuosi eiti į priekį ir tipas šalia, ir jei aš dabar tipo spausdinimo tmp, 1103 00:49:17,086 --> 00:49:17,835 ką turėčiau pamatyti? 1104 00:49:17,835 --> 00:49:19,570 1105 00:49:19,570 --> 00:49:23,360 Nepriklausomai buvo vertė, yra pirmasis argumentas, tiesiog 1106 00:49:23,360 --> 00:49:25,550 kaip x buvo pirmasis dalykas yra priimtas, 1107 00:49:25,550 --> 00:49:30,450 taip ir x turėtų būti tas pats, taip spausdinti tmp turi atspausdinti man vieną. 1108 00:49:30,450 --> 00:49:36,360 >> Taigi, ką jūs pamatysite, problemą, trijų yra nekaip apie GDB pamoka, 1109 00:49:36,360 --> 00:49:40,020 bet suprantu, kad tai yra pradžia iš ne įrankis atrodo, kad iš tikrųjų 1110 00:49:40,020 --> 00:49:42,774 padėti jums išspręsti problemas, tiek daug efektyviau. 1111 00:49:42,774 --> 00:49:44,690 Ką mes galiausiai ketinate daryti trečiadienį 1112 00:49:44,690 --> 00:49:48,180 yra pradėti žievelės atgal keletą sluoksnių ir pašalinti kai kuriuos mokymo ratus. 1113 00:49:48,180 --> 00:49:50,496 Tai dalykas, vadinamas eilutė, mes naudojamas tam tikrą laiką, 1114 00:49:50,496 --> 00:49:53,370 mes ketiname lėtai imtis, kad toli iš jūsų ir pradėti kalbėti apie 1115 00:49:53,370 --> 00:49:55,725 kažkas daugiau esoterically žinomas kaip char *, 1116 00:49:55,725 --> 00:49:59,550 bet mes ketiname padaryti šį gražus ir iš pradžių atsargiai, nors rodyklės, 1117 00:49:59,550 --> 00:50:02,730 kaip jie vadinami, galite padaryti kai kuriuos labai blogi dalykai, jei piktnaudžiaujama, 1118 00:50:02,730 --> 00:50:06,040 žiūrėdamas į mažą Claymation nuo mūsų draugas Nikas Parlante iš Stanfordo 1119 00:50:06,040 --> 00:50:09,670 Universitetas, kompiuteryje profesorius mokslas, kuris kartu sudėjus šį peržiūros 1120 00:50:09,670 --> 00:50:11,075 kas turi ateiti šį trečiadienį. 1121 00:50:11,075 --> 00:50:12,196 1122 00:50:12,196 --> 00:50:13,400 >> [VIDEO PLAYBACK] 1123 00:50:13,400 --> 00:50:13,900 Ei, Binky. 1124 00:50:13,900 --> 00:50:14,930 1125 00:50:14,930 --> 00:50:15,780 Pabuskite. 1126 00:50:15,780 --> 00:50:17,240 Atėjo laikas rodykle įdomus. 1127 00:50:17,240 --> 00:50:18,260 1128 00:50:18,260 --> 00:50:19,350 >> -Kas Kad? 1129 00:50:19,350 --> 00:50:21,150 Sužinokite daugiau apie rodykles? 1130 00:50:21,150 --> 00:50:22,050 Oi, geruolis! 1131 00:50:22,050 --> 00:50:22,897 1132 00:50:22,897 --> 00:50:23,730 [END VIDEO PLAYBACK] 1133 00:50:23,730 --> 00:50:25,396 SPEAKER 1: Tai jūsų laukia trečiadienį. 1134 00:50:25,396 --> 00:50:26,440 Pamatysime jums tada. 1135 00:50:26,440 --> 00:50:27,106 [VIDEO PLAYBACK] 1136 00:50:27,106 --> 00:50:30,420 -Ir Dabar Deep Thoughts, iki Daven Farnham. 1137 00:50:30,420 --> 00:50:33,980 1138 00:50:33,980 --> 00:50:35,900 >> -Kodėl mes mokytis C? 1139 00:50:35,900 --> 00:50:36,785 Kodėl gi ne +? 1140 00:50:36,785 --> 00:50:38,550 1141 00:50:38,550 --> 00:50:40,910 >> [Juokas] 1142 00:50:40,910 --> 00:50:42,160 >> [END VIDEO PLAYBACK]