1 00:00:00,000 --> 00:00:12,040 >> [Mūzikas atskaņošanai] 2 00:00:12,040 --> 00:00:16,460 >> SPEAKER 1: Nu labi, tas ir CS50, un tas ir sākums ceturto nedēļu, 3 00:00:16,460 --> 00:00:20,420 un, kā jūs varētu būt dzirdējuši vai lasīt, pasaule ir beidzas. 4 00:00:20,420 --> 00:00:23,520 Going visapkārt internetā ir bijis zināšanas un izpratni 5 00:00:23,520 --> 00:00:27,100 no bug kādā programmā, programmēšanas valoda sauc Bash. 6 00:00:27,100 --> 00:00:32,729 Tas ir lieliski firmas kā Shellshock, vai Bash durvīm, 7 00:00:32,729 --> 00:00:35,485 bet raksti, piemēram, tie nav bijis nekas neparasts. 8 00:00:35,485 --> 00:00:38,807 Un patiesībā, daudzi no viņiem dot muguras atmiņas par Heartbleed, 9 00:00:38,807 --> 00:00:41,640 kas jums var būt ievērojuši nospiest atpakaļ pagājušā gada pavasarī, kas 10 00:00:41,640 --> 00:00:43,980 bija līdzīgi diezgan dramatiska. 11 00:00:43,980 --> 00:00:47,110 Tagad no tiem no jums šeit Šodien, cik daudzi no jums ir, 12 00:00:47,110 --> 00:00:50,330 pat tad, ja jūs nesaprotat, ko tas viss ir par to dzirdēja Shellshock? 13 00:00:50,330 --> 00:00:51,370 14 00:00:51,370 --> 00:00:54,245 Visas tiesības, un cik daudzi no jums ir datori, kas ir neaizsargāti? 15 00:00:54,245 --> 00:00:55,680 16 00:00:55,680 --> 00:01:00,250 OK, ir jābūt daudz, daudz vairāk rokas tieši tagad, dēļ mēs redzēsim. 17 00:01:00,250 --> 00:01:02,580 >> Pieņemsim to apskatīt to, kas ir nu jau par medijos 18 00:01:02,580 --> 00:01:05,304 un tad izskaidrot to mazliet šeit mums tehniski. 19 00:01:05,304 --> 00:01:07,670 20 00:01:07,670 --> 00:01:11,250 >> SPEAKER 2: Drošības eksperti ir brīdināja, ka nopietns trūkums varētu 21 00:01:11,250 --> 00:01:15,650 būt par ietekmētu simtiem miljoniem pasaules interneta lietotājiem. 22 00:01:15,650 --> 00:01:20,600 Tātad, kas īsti ir kļūda, kas ir bijis dublēta Shellshock, un ko tas dara? 23 00:01:20,600 --> 00:01:23,720 24 00:01:23,720 --> 00:01:28,910 Nu, Shellshock ir arī pazīstams kā Bash bug, programmatūra, ko tā izmanto. 25 00:01:28,910 --> 00:01:33,230 Hakeri izmanto vīrusu, lai skenētu neaizsargāti sistēmas darbojas Linux un Unix 26 00:01:33,230 --> 00:01:36,300 operētājsistēmas un tad inficē tos. 27 00:01:36,300 --> 00:01:38,730 Bash ir komandrindas čaula. 28 00:01:38,730 --> 00:01:43,460 Tas ļauj lietotājiem jautājums komandas uzsākt programmas un pazīmes, kas programmatūru 29 00:01:43,460 --> 00:01:45,250 ierakstot tekstu. 30 00:01:45,250 --> 00:01:49,980 Tas, ko programmētāji ir parasti izmanto, un nedrīkst būt atvērta plašākai pasaulei, 31 00:01:49,980 --> 00:01:51,590 gan Shellshock izmaiņas, kas. 32 00:01:51,590 --> 00:01:54,160 33 00:01:54,160 --> 00:01:57,910 >> Nu, worringly, daži analītiķi brīdināt tas varētu būt lielāks drauds, 34 00:01:57,910 --> 00:02:01,580 jo Shellshock pieļauj pabeigta kontrole inficētas mašīnas, 35 00:02:01,580 --> 00:02:06,030 savukārt Heartbleed tikai atļauts hakeri izspiegot datoriem. 36 00:02:06,030 --> 00:02:09,130 Tas ir tik nopietni, ir pienācis tika novērtēts ar 10 no 10 37 00:02:09,130 --> 00:02:11,900 par smagumu, ko valsts Neaizsargātības Database. 38 00:02:11,900 --> 00:02:15,530 39 00:02:15,530 --> 00:02:20,015 2/3 visus tīmekļa serveri ir pie risku, tostarp dažas Mac datoriem. 40 00:02:20,015 --> 00:02:22,760 41 00:02:22,760 --> 00:02:25,600 Nu, pārliecinieties, ka jūs plāksteris jūsu sistēmas tagad. 42 00:02:25,600 --> 00:02:29,330 Ikviens hosting vietnes darbību cietušās operētājsistēmas 43 00:02:29,330 --> 00:02:31,800 būtu jārīkojas, cik drīz vien iespējams. 44 00:02:31,800 --> 00:02:35,390 Ikviens, kurš var atļauties tas izskatās to uzraudzības un tīmekļa lietojumprogrammu 45 00:02:35,390 --> 00:02:37,355 ugunsmūri, lai piesargies par jebkādiem uzbrukumiem. 46 00:02:37,355 --> 00:02:39,979 47 00:02:39,979 --> 00:02:41,770 SPEAKER 3: Sliktākais kas varētu notikt, ir 48 00:02:41,770 --> 00:02:45,080 ka kāds varētu rakstīt kodu, kas automātiski iet un skenēt 49 00:02:45,080 --> 00:02:48,280 internets un ietekmētu visas šīs datoriem. 50 00:02:48,280 --> 00:02:50,710 Un, kad viņi dara, ka, labi, Sliktākais viņi varētu darīt 51 00:02:50,710 --> 00:02:53,300 ir tikai izdzēst visu, vai slēgtas vietnes leju. 52 00:02:53,300 --> 00:02:55,360 Lai mēs varētu redzēt bojājumus No šī viedokļa raugoties, 53 00:02:55,360 --> 00:02:58,300 kur mēs būtu ļaunprātīgu cilvēki kas vienkārši nolemj radīt postījumus 54 00:02:58,300 --> 00:03:02,534 , apvienojot sistēmas leju vai dzēšot failus, un lietām, piemēram, ka. 55 00:03:02,534 --> 00:03:05,200 SPEAKER 2: Daži saka, tas ir viens no visgrūtāk novērtēt 56 00:03:05,200 --> 00:03:08,080 bugs gados, un tas var veikt nedēļas vai pat 57 00:03:08,080 --> 00:03:10,820 mēneši, lai noteiktu tās maksimālu ietekmi. 58 00:03:10,820 --> 00:03:12,180 59 00:03:12,180 --> 00:03:15,560 >> SPEAKER 1: Tātad tas viss ir taisnība, bet smieklīgi ir tas, gandrīz visi 60 00:03:15,560 --> 00:03:18,330 no tēlainības tikko redzēju, izņemot varbūt tastatūras, 61 00:03:18,330 --> 00:03:20,930 nav nekāda sakara ar bug whatsoever. 62 00:03:20,930 --> 00:03:23,960 Serveri un vadi, un tā tālāk, tas ir sava veida tangenciāls saistīti, 63 00:03:23,960 --> 00:03:27,410 bet pamatā tas ir faktiski diezgan pazīstami, kas notiek šeit. 64 00:03:27,410 --> 00:03:30,050 Patiesībā, ļaujiet man iedziļināties mūsu CS50 ierīces. 65 00:03:30,050 --> 00:03:32,910 Ļaujiet man iet uz priekšu un maksimāli termināla logu šeit. 66 00:03:32,910 --> 00:03:36,020 Un jums puiši ir bijis, izmantojot to, vai iegulto versija pantu, 67 00:03:36,020 --> 00:03:39,460 in gedit lai rakstīt programmas, tipa komandas, un tā tālāk, 68 00:03:39,460 --> 00:03:43,690 un tas ir reāli, un ir bijis nedēļas, Bash, B-A-S-H. 69 00:03:43,690 --> 00:03:46,890 Tas ir Bourne-atkal apvalks, kas ir tikai iedomātā veids, kā pateikt, 70 00:03:46,890 --> 00:03:50,220 Tas ir programma, kas ir mirgo ātri, efektīvi, 71 00:03:50,220 --> 00:03:51,970 ka sēž tur gaida par ieguldījumu jums. 72 00:03:51,970 --> 00:03:53,920 Un tas ir komandu līnija saskarne, caur kuru 73 00:03:53,920 --> 00:03:57,650 jums puiši ir darboties komandas un galu galā, apkopojot un tad darbojas 74 00:03:57,650 --> 00:03:58,400 programmas. 75 00:03:58,400 --> 00:04:01,320 >> Bet Bash ir arī programmēšanas valoda šādā nozīmē. 76 00:04:01,320 --> 00:04:05,460 Jūs zināt, ka ir komandas, piemēram, cd un ls un arī šķindēt un citi, 77 00:04:05,460 --> 00:04:09,580 bet jūs varat noteikt savu komandas īstenojot tos Bash. 78 00:04:09,580 --> 00:04:11,420 Tagad mēs nebrauksim iedziļināties sīkumos 79 00:04:11,420 --> 00:04:16,089 kā lai Bash programmēšanas valodu, bet zinu, ka, piemēram, brīdī, 80 00:04:16,089 --> 00:04:17,607 tur nav komandu sauc "sveiki." 81 00:04:17,607 --> 00:04:19,440 Tāpēc to var atrast viens no šiem iepakojumiem. 82 00:04:19,440 --> 00:04:20,856 Tas nav uzstādīta uz mana datora. 83 00:04:20,856 --> 00:04:21,870 Uzdod savu administratoru. 84 00:04:21,870 --> 00:04:26,030 Bet, ja es gribu, lai būtu programma sauc par "hello" in Bash vai manu ātru, 85 00:04:26,030 --> 00:04:30,810 Es patiesībā var izmantot sintaksi, kas ir gluži tāpat kā C. Tas nav gluži tas pats, 86 00:04:30,810 --> 00:04:35,020 bet tas izskatās diezgan līdzīgs funkcija, lai gan trūkst dažas detaļas. 87 00:04:35,020 --> 00:04:38,090 Nekas, šķiet, varētu notikt, bet tagad, ja es tipa "hello," 88 00:04:38,090 --> 00:04:40,960 Jūs faktiski var uzrakstīt programma, ne C, ne Java, 89 00:04:40,960 --> 00:04:44,280 ne citā programmēšanas valoda, bet Bash pati. 90 00:04:44,280 --> 00:04:47,630 >> Tagad galvenais šeit ir tas, ka es uzrakstīju nosaukt es gribēju dot šo jauno komandu, 91 00:04:47,630 --> 00:04:50,820 un iekavas ir arī simbolisks tas ir funkcija. 92 00:04:50,820 --> 00:04:54,010 Kā malā, jūs varat arī darīt jautri lietas, un patiesībā, pat par Mac OS, 93 00:04:54,010 --> 00:04:55,620 šī ir programma, ko sauc Terminal. 94 00:04:55,620 --> 00:04:58,800 Tas nāk iebūvēts kāds ir dators, kas ir Mac šajā telpā, 95 00:04:58,800 --> 00:05:03,640 un jūs varat darīt līdzīgas lietas Mac OS, bet jūs varat iet vēl tālāk, ka. 96 00:05:03,640 --> 00:05:07,110 Un tas ir maz tangenciāla, bet tas ir sava veida jautrību. 97 00:05:07,110 --> 00:05:09,715 Šorīt es atcerējos, domājot to cauri, 98 00:05:09,715 --> 00:05:13,279 par maz spēle es izmantoti, lai atskaņotu ar vienu no CS50 bijušo TFS 99 00:05:13,279 --> 00:05:16,570 turklāt jebkuru reizi viņš ietu prom no viņa tastatūra ar savu ekrānu atslēgts, 100 00:05:16,570 --> 00:05:23,611 Es varētu izpildīt komandu tāpat this-- "saka sveiki." 101 00:05:23,611 --> 00:05:26,610 Un tagad jebkurā laikā viņš atgriezās pie viņa tastatūra kad es noskaidroti ekrānu 102 00:05:26,610 --> 00:05:27,985 un viņš varētu apsēsties, mēģināt darīt kādu darbu, 103 00:05:27,985 --> 00:05:29,250 uzskaitīt saturu viņa directory-- 104 00:05:29,250 --> 00:05:29,510 >> [AUDIO PLAYBACK] 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: Tātad, taisnīgumu, tas faktiski nav "sveiki." 109 00:05:35,030 --> 00:05:36,894 Parasti tas bija kaut kas vairāk līdzinās that-- 110 00:05:36,894 --> 00:05:37,560 [AUDIO PLAYBACK] 111 00:05:37,560 --> 00:05:37,750 -Beep. 112 00:05:37,750 --> 00:05:39,320 SPEAKER 1: --that I would-- tāpēc viņa dators būtu 113 00:05:39,320 --> 00:05:42,170 zvērēt pie viņa jebkurā laikā viņš faktiski apsēdās pie viņa klaviatūras. 114 00:05:42,170 --> 00:05:46,265 Un ļoti ātri viņš sapratu, neatstāt savu ekrāns atbloķēt. 115 00:05:46,265 --> 00:05:48,730 Bet tas liek domāt, tāda veida par stulbu jautrības, kas jūs 116 00:05:48,730 --> 00:05:50,210 var būt ar kaut ko līdzīgu Bash. 117 00:05:50,210 --> 00:05:52,770 Bet tas ir nedaudz vairāk nopietns, lai būtu droši, nekā. 118 00:05:52,770 --> 00:05:57,235 Un, patiesībā, tas ir viens no Visbīstamākais un ilgtermiņa ilgstošas ​​bugs 119 00:05:57,235 --> 00:05:58,860 , kas ir patiešām hit pasaulē globāli. 120 00:05:58,860 --> 00:06:02,060 Šī kļūda ir ap aptuveni 20 gadus, 121 00:06:02,060 --> 00:06:05,780 un jums tiks kaltas tikai moments ar savu relatīvo vienkāršību. 122 00:06:05,780 --> 00:06:07,990 >> Tātad tas ir reprezentatīvs saki, ja jums 123 00:06:07,990 --> 00:06:10,448 pieder Mac, burtiski tagad ja jums ir jūsu vāks atvērts, 124 00:06:10,448 --> 00:06:12,940 Jūs varat izmēģināt ierakstot, ka programmu, ko sauc Terminal. 125 00:06:12,940 --> 00:06:15,410 Terminālis ir zem Pieteikumi Utilities-- 126 00:06:15,410 --> 00:06:18,790 vienreiz, Windows lietotājiem nav jāuztraucas par šo konkrēto threat-- 127 00:06:18,790 --> 00:06:22,310 bet tie no jums ar Mac var ierakstīt to vērā logu, piemēram, es darīšu šeit, 128 00:06:22,310 --> 00:06:24,210 , un, ja jūs tipa ka šajā programmā 129 00:06:24,210 --> 00:06:28,830 sauc Terminal, tāpat kā es darīšu tagad, ja redzat vārdu "neaizsargāti," 130 00:06:28,830 --> 00:06:32,200 jūsu dators ir neaizsargāti pret ekspluatāciju. 131 00:06:32,200 --> 00:06:33,850 >> Tagad, ko tas patiesībā nozīmē? 132 00:06:33,850 --> 00:06:35,870 Un tas ir, protams, daži diezgan traks sintakse, 133 00:06:35,870 --> 00:06:39,050 bet pieņemsim vismaz izvilkt daži no interesantākajiem aspektiem. 134 00:06:39,050 --> 00:06:42,567 Tātad tur ir daži sintakse, kas izskatās maz pazīstami, vismaz no C 135 00:06:42,567 --> 00:06:43,950 un programmēšana kopumā. 136 00:06:43,950 --> 00:06:47,550 Es redzu dažas iekavas, semikoliem, cirtaini bikšturi, un tādi, 137 00:06:47,550 --> 00:06:50,820 bet izrādās, ka šis stulba lieta šeit dzeltenā krāsā 138 00:06:50,820 --> 00:06:53,580 būtībā funkcija kas neko nedara. 139 00:06:53,580 --> 00:06:57,840 Kols līdzekļi nedarīt neko, un semikols nozīmē pārtraukt darīt neko. 140 00:06:57,840 --> 00:07:00,250 Tātad iekšpusē no tiem cirtaini bikšturi, fakts 141 00:07:00,250 --> 00:07:02,440 ka man ir vienāda pierakstīties pa kreisi, šis 142 00:07:02,440 --> 00:07:05,500 būtībā radot komanda, vai mainīgais, 143 00:07:05,500 --> 00:07:09,520 sauc x, un piešķirot to ka dzeltenā mazliet koda tur. 144 00:07:09,520 --> 00:07:14,040 Tas varētu būt kaut kas līdzīgs "echo sveiki "vai" saka pīkstiens "vai kaut ko 145 00:07:14,040 --> 00:07:15,120 līdzīgs, ka. 146 00:07:15,120 --> 00:07:17,780 Bet paziņojums, ja jūsu acīm klīst tālāk pa labi, 147 00:07:17,780 --> 00:07:22,150 tur ir vairāk, lai šo līniju nekā tikai beigās šī semikolu. 148 00:07:22,150 --> 00:07:25,160 "Atbalss neaizsargāti," un tad tālāk, ka tur ir vēl vairāk. 149 00:07:25,160 --> 00:07:26,530 Vēl viens semikols, bash -c :. 150 00:07:26,530 --> 00:07:28,120 151 00:07:28,120 --> 00:07:34,050 >> Tik garš stāsts īss, šī līnija kods ir 152 00:07:34,050 --> 00:07:36,660 pietiekams pārliecinoši dators, kas ir 153 00:07:36,660 --> 00:07:39,830 neaizsargāti darīt kaut ko ka jūs vēlaties to darīt, 154 00:07:39,830 --> 00:07:44,290 jo tur ir kļūda Bash kuru kaut Bash bija paredzēts, lai apturētu 155 00:07:44,290 --> 00:07:48,980 lasīšana līnijas komandu tiesībām tur pēc dzeltenā teksta, 156 00:07:48,980 --> 00:07:52,520 uz 20 plus gadus veco bug, Bash ir faktiski lasījums 157 00:07:52,520 --> 00:07:56,780 pēc šī semikolu un diezgan daudz darīt to, ko tā ir teicis. 158 00:07:56,780 --> 00:07:59,070 >> Tātad, kāda ir saistība no tā galu galā? 159 00:07:59,070 --> 00:08:01,340 Es tikai teicu "echo hello" vai "echo neaizsargāti," 160 00:08:01,340 --> 00:08:05,449 bet, kas notiks, ja jūs kaut ko faktiski ļaunprātīgu, tāpat rm -RF *, 161 00:08:05,449 --> 00:08:07,240 kas jūs nevarēsiet kādreiz ievadījis pirms, 162 00:08:07,240 --> 00:08:08,920 un atklāti jūs, iespējams, vajadzētu ne pārāk ātri, 163 00:08:08,920 --> 00:08:10,700 tāpēc, ka jūs varat darīt kaitējumu ar to daudz. 164 00:08:10,700 --> 00:08:11,210 Kāpēc? 165 00:08:11,210 --> 00:08:12,990 rm nav ko, protams? 166 00:08:12,990 --> 00:08:14,270 Noņem. 167 00:08:14,270 --> 00:08:15,930 * Nozīmē ko? 168 00:08:15,930 --> 00:08:16,430 Viss. 169 00:08:16,430 --> 00:08:18,180 Tātad, tas ir tā sauktais wild card, tāpēc tas nozīmē, 170 00:08:18,180 --> 00:08:20,410 dzēst visu, kas pašreizējā direktorijā. 171 00:08:20,410 --> 00:08:23,379 r notiek nozīmē rekursīvs kas nozīmē, ja tas, ko jūs esat svītrojot 172 00:08:23,379 --> 00:08:26,420 ir direktoriju, un iekšā tur ir citi faili un citas direktorijas, 173 00:08:26,420 --> 00:08:28,950 rekursīvi nirt tur un izdzēst visu, kas. 174 00:08:28,950 --> 00:08:31,040 Un -F ir sliktākais no viņiem visiem. 175 00:08:31,040 --> 00:08:32,580 Ikviens zina, ko -f nozīmē šeit? 176 00:08:32,580 --> 00:08:33,690 177 00:08:33,690 --> 00:08:34,360 Force. 178 00:08:34,360 --> 00:08:37,830 Tātad piespiest līdzekļus, pat ja tā ir slikta ideja, 179 00:08:37,830 --> 00:08:40,939 izdarīt bez pamudinot mani tālākai apstiprināšanai. 180 00:08:40,939 --> 00:08:43,230 Tātad, jūs zināt, mēs pasmieties , bet godīgi sakot, es, iespējams, 181 00:08:43,230 --> 00:08:44,972 ierakstiet šo vairākas reizes dienā, jo realitātes 182 00:08:44,972 --> 00:08:47,210 tas ir ātrākais veids, kā dzēst visu ķekars sīkumi. 183 00:08:47,210 --> 00:08:48,590 Bet pat es esmu darījis kādu kaitējumu. 184 00:08:48,590 --> 00:08:53,100 >> Bet, ja tu būtu, lai triks datoru definēšanas kādu stulbu mainīgais 185 00:08:53,100 --> 00:08:56,810 vai funkciju sauc x, bet tad tricking datoru izpildes 186 00:08:56,810 --> 00:09:00,030 ārpus robežām, kas funkcija, pēc minētā semikolu, 187 00:09:00,030 --> 00:09:04,430 jūs tiešām varētu triks datoru stājas izpildot kaut ko līdzīgu rm -RF 188 00:09:04,430 --> 00:09:07,810 vai e-pasta komandu vai Copy komandu. 189 00:09:07,810 --> 00:09:11,400 Jebkas burtiski jūs varat darīt ar datoru, vai tas ir izdzēšot failus, 190 00:09:11,400 --> 00:09:15,350 radot failus, surogātklikšķus kāds, uzbrukt kādu serveri attālināti, 191 00:09:15,350 --> 00:09:17,190 ja jūs varat izteikt to ar komandu, tu 192 00:09:17,190 --> 00:09:19,120 var triks datoru darām. 193 00:09:19,120 --> 00:09:21,510 >> Tagad to, kas ir piemērs kā jūs varētu darīt? 194 00:09:21,510 --> 00:09:24,300 Nu, tur ir daudz datoru par interneta braukšanas Bash. 195 00:09:24,300 --> 00:09:26,390 Visi mūs Mac lietotājiem ir starp tiem. 196 00:09:26,390 --> 00:09:30,390 Linux serveru daudz ir vieni tos kā labi, un Unix serveriem. 197 00:09:30,390 --> 00:09:32,630 Logi atkal izpaužas salīdzinoši off āķa 198 00:09:32,630 --> 00:09:34,590 ja jūs uzinstalēju speciāla programmatūra. 199 00:09:34,590 --> 00:09:37,130 Tagad daudz serveriem, par Piemēram, palaist web serveri, 200 00:09:37,130 --> 00:09:39,840 un patiesībā Linux ir iespējams populārākā operētājsistēma 201 00:09:39,840 --> 00:09:43,060 palaist uz datoriem internetā , kas kalpo līdz pat interneta lapas. 202 00:09:43,060 --> 00:09:44,910 Tagad, kā mēs redzēsim vēlāk semestrī, kad 203 00:09:44,910 --> 00:09:48,470 jūs nosūtītu pieprasījumu no Jūsu browser-- Chrome, 204 00:09:48,470 --> 00:09:50,790 Internet Explorer, whatever-- ar attālo serveri, 205 00:09:50,790 --> 00:09:53,730 izrādās, ka pat tad, ja Jūs tikko ierakstījāt www.example.com, 206 00:09:53,730 --> 00:09:59,590 pārlūkprogramma nosūtot īsziņu kas ir nedaudz vairāk mistisks, kā šis. 207 00:09:59,590 --> 00:10:01,239 >> Bet paziņojums mazliet kaut ko dīvainu. 208 00:10:01,239 --> 00:10:03,030 Pirmās divas rindas Es nekad neesmu redzējis, 209 00:10:03,030 --> 00:10:04,904 bet tie neizskatās Īpaši bīstamas. 210 00:10:04,904 --> 00:10:08,030 Bet paziņojums, ko es esmu nozagts par trešajā rindā šeit. 211 00:10:08,030 --> 00:10:13,390 Ja slikts puisis bija, lai nosūtītu ziņu piemēram, tas no viņa vai viņas datoru 212 00:10:13,390 --> 00:10:17,270 pie neaizsargātas Mac vai a neaizsargāti Linux serveru, 213 00:10:17,270 --> 00:10:21,580 smieklīgi ir tas, ka Bash, ka vienkārši nedaudz komandrindas, 214 00:10:21,580 --> 00:10:27,450 ir visuresošs, un bieži pieraduši būtībā izpildīt 215 00:10:27,450 --> 00:10:30,020 saturs ziņa, ka tā saņem. 216 00:10:30,020 --> 00:10:33,490 Un ar šo loģiku, jūs varat triks web serveri, tāpēc, 217 00:10:33,490 --> 00:10:36,370 nosūtot kaut ko līdzīgu User-Agent, kas parasti 218 00:10:36,370 --> 00:10:38,300 vajadzētu teikt nosaukt jūsu pārlūkprogrammā. 219 00:10:38,300 --> 00:10:42,420 User-Agent Chrome, User-Agent Internet Explorer, User-Agent Firefox, šis 220 00:10:42,420 --> 00:10:44,590 ir tikai jūsu pārlūkprogramma s veids, kā identificēt sevi. 221 00:10:44,590 --> 00:10:46,605 Bet, ja slikts puisis ļoti gudri saka, mm-mm, es esmu 222 00:10:46,605 --> 00:10:47,930 nav dodas uz jums kāds ir mans pārlūks ir, 223 00:10:47,930 --> 00:10:50,888 Es esmu tā vietā gatavojas nosūtīt jums šo mistisks izskata lieta ar rm -RF 224 00:10:50,888 --> 00:10:55,840 * Tajā, jūs varat burtiski triks neaizsargāti web serveri internetā 225 00:10:55,840 --> 00:10:59,055 uz izpildes tieši ka tur izdzēšot visus failus. 226 00:10:59,055 --> 00:11:00,930 Un, atklāti sakot, tas nav pat sliktākais no tā. 227 00:11:00,930 --> 00:11:01,763 Jūs varat darīt jebko. 228 00:11:01,763 --> 00:11:04,480 Jūs varētu sākt izplatīts pakalpojumu atteikšanas uzbrukums 229 00:11:04,480 --> 00:11:07,030 ja jūs nosūtīja šo ziņu veselus ķekarus tīmekļa serveriem 230 00:11:07,030 --> 00:11:10,256 un tad bija viņiem visiem nolaisties, lai Piemēram, uz Harvard.edu serveriem, 231 00:11:10,256 --> 00:11:12,130 un jūs varat kārtot no sprādziena heck no tiem 232 00:11:12,130 --> 00:11:15,490 ar tīkla satiksmi, kas bija citādi izraisīja šo slikts puisis. 233 00:11:15,490 --> 00:11:18,760 >> Tātad, garš stāsts īss, gandrīz ikviens šajā telpā, kam pieder Mac 234 00:11:18,760 --> 00:11:20,240 ir neaizsargāti pret šo. 235 00:11:20,240 --> 00:11:24,100 Sudraba maliņa ir, ka, ja tu esi darbojas web serveri uz jūsu klēpjdators, 236 00:11:24,100 --> 00:11:27,780 un, ja jūs esat faktiski konfigurēts tā, lai ļautu kaut ko līdzīgu SSH tajā, 237 00:11:27,780 --> 00:11:28,670 jūs faktiski droši. 238 00:11:28,670 --> 00:11:31,710 Tas ir neaizsargāti, bet tur nav viens mēģina nokļūt jūsu klēpjdators, 239 00:11:31,710 --> 00:11:33,290 lai jūs varētu veida drošs. 240 00:11:33,290 --> 00:11:36,210 Tomēr Apple drīz būt atjaunināt noteikt par to. 241 00:11:36,210 --> 00:11:39,660 Linux pasaule jau ir atbrīvota vairāki labojumi, lai Fedora un Ubuntu 242 00:11:39,660 --> 00:11:43,790 un citas versijas Linux, un patiešām Ja jūs vadāt atjauninājumu 50 ierīcē, 243 00:11:43,790 --> 00:11:45,930 pat, ka arī būs papildināta un koriģēta. 244 00:11:45,930 --> 00:11:47,764 Bet tas arī ir ne tiešām bijuši neaizsargāti, 245 00:11:47,764 --> 00:11:49,804 jo, ja vien jūs esat tinkered ar ierīci 246 00:11:49,804 --> 00:11:52,770 un dara savu klēpjdatoru publiski pieejama internetā, kas nav 247 00:11:52,770 --> 00:11:54,910 pēc noklusējuma, jūs esat tiešām ir labi, jo 248 00:11:54,910 --> 00:11:56,890 no firewalling un citām metodēm. 249 00:11:56,890 --> 00:12:01,000 >> Bet tas ir ekstrēms piemērs bug ka mēs esam dzīvojuši uz burtiski 20 250 00:12:01,000 --> 00:12:04,050 gadiem, un kas zina, ja kāds visu šo laiku ir zināms par to? 251 00:12:04,050 --> 00:12:06,300 Un faktiski, tas ir viens no fundamentālās problēmas 252 00:12:06,300 --> 00:12:08,690 ka mēs redzēsim vēlāk semestris par drošību, 253 00:12:08,690 --> 00:12:13,020 ir tas, ka tāpat kā reālajā pasaulē, labie puiši ir pie nelabvēlīgā situācijā. 254 00:12:13,020 --> 00:12:16,500 Lai saglabātu slikti puiši, mums ir pārliecinieties, ka katrs durvis ir aizslēgtas, 255 00:12:16,500 --> 00:12:20,340 ka katrs logs ir droša, ka katrs punkts stāšanās mājās 256 00:12:20,340 --> 00:12:21,980 ir droša, lai saglabātu slikti puiši out. 257 00:12:21,980 --> 00:12:26,870 Bet ko dara slikts puisis ir darīt, lai reāli apdraudēt jūsu mājās 258 00:12:26,870 --> 00:12:28,200 un nozagt no jums? 259 00:12:28,200 --> 00:12:32,574 Viņš vai viņa vienkārši ir atrast vienu atbloķēt durvis, viena salauzta logu, vai kaut 260 00:12:32,574 --> 00:12:35,240 pa šo līniju, un tas ir Tas pats ar datoru drošību. 261 00:12:35,240 --> 00:12:37,660 Mēs varam rakstīt miljoniem rindiņas programmēšanas kodu 262 00:12:37,660 --> 00:12:40,570 un tērēt simtiem vai tūkstošiem stundu cenšas iegūt to pareizi, 263 00:12:40,570 --> 00:12:43,370 bet, ja jūs veicat tikai vienu kļūda pareizību, 264 00:12:43,370 --> 00:12:47,030 varat ievietot visu sistēmu un patiešām šajā gadījumā visa internets 265 00:12:47,030 --> 00:12:48,660 un pasaules riskam. 266 00:12:48,660 --> 00:12:51,950 >> Tātad, ja jūs vēlaties uzzināt vairāk par to, dodieties uz šo URL šeit. 267 00:12:51,950 --> 00:12:54,450 Nav nepieciešama rīcība šovakar, ja jūs esat 268 00:12:54,450 --> 00:12:57,116 starp tiem ērtāk, ka ir rādīt savu web 269 00:12:57,116 --> 00:12:59,810 serveri, tādā gadījumā jums vajadzētu, Patiesībā, atjaunināt savu programmatūru. 270 00:12:59,810 --> 00:13:03,244 >> Un tas arī ir nosaukums runas, un tagad papīrs, 271 00:13:03,244 --> 00:13:05,410 ka mēs esam saistīti uz Protams Mājas šodien. 272 00:13:05,410 --> 00:13:07,600 Tas bija ko puisis nosaukts Ken Thompson, kurš 273 00:13:07,600 --> 00:13:10,120 bija pieņemt ļoti slavens balva datorzinātnēs, 274 00:13:10,120 --> 00:13:13,495 un viņš sniedza šo runu dažus gadus Pirms, pēc būtības par šo pašu tēmu. 275 00:13:13,495 --> 00:13:18,250 276 00:13:18,250 --> 00:13:20,520 Jautā folks jautājums, jums būtu patiešām 277 00:13:20,520 --> 00:13:23,480 uzticība, galu galā, programmatūru, jūs esat bijusi? 278 00:13:23,480 --> 00:13:26,100 Piemēram, mums visiem ir bijis rakstot programmas, 279 00:13:26,100 --> 00:13:27,820 un mēs esam bijuši apkopojot tos ar šķindēt. 280 00:13:27,820 --> 00:13:31,830 Un, lai jūsu zināšanas, jūs esat uzrakstījis jebkādas programmas CS50 kur tur ir 281 00:13:31,830 --> 00:13:35,310 sētas durvīm par veidu, tur ir veids, kā kas slikts puisis, ja darbojas savu programmu, 282 00:13:35,310 --> 00:13:37,410 varētu pārņemt jūsu datorā? 283 00:13:37,410 --> 00:13:38,310 Droši vien nav, vai ne? 284 00:13:38,310 --> 00:13:40,180 Mario, un mantkārīgs, un kredīts. 285 00:13:40,180 --> 00:13:41,680 Tie visi ir diezgan mazas programmas. 286 00:13:41,680 --> 00:13:43,910 Jūs ir diezgan slikti, ja jūs faktiski 287 00:13:43,910 --> 00:13:47,310 izgatavots jūsu visu datoru neaizsargāti pēc rakstīšanas 10 vai 20 koda rindiņas, 288 00:13:47,310 --> 00:13:49,690 vai vismaz neapzinās daži Drošības ietekmi. 289 00:13:49,690 --> 00:13:52,023 Tagad es saku, ka facetiously, bet mēs ejam, lai redzētu šodien 290 00:13:52,023 --> 00:13:54,600 un šonedēļ tas faktiski ļoti, ļoti viegli 291 00:13:54,600 --> 00:13:57,980 būt slikti un padarīt vēl īsās programmas neaizsargātiem. 292 00:13:57,980 --> 00:14:02,880 >> Bet tagad, vismaz, saprotam ka jautājums tiek lūgts šeit 293 00:14:02,880 --> 00:14:04,850 ir par šķindēt ar kompilatoru. 294 00:14:04,850 --> 00:14:08,360 Kāpēc mēs esam bijuši uzticoties šķindēt pēdējo divu vai trīs nedēļu laikā? 295 00:14:08,360 --> 00:14:12,650 Kurš ir teikt, ka tas, kurš rakstīja šķindēt nebija "ja" nosacījums, kas tur 296 00:14:12,650 --> 00:14:17,680 ka būtībā injicēts dažas nullītes un tiem, uz katrai programmai tas apkopo 297 00:14:17,680 --> 00:14:21,180 kas varētu ļaut viņam vai viņai piekļuve datoru, kad tu esi aizmidzis 298 00:14:21,180 --> 00:14:23,580 un jūsu klēpjdators vāks ir atvērts un jūsu dators darbojas? 299 00:14:23,580 --> 00:14:24,080 Tiesības? 300 00:14:24,080 --> 00:14:28,350 Mums ir šāda veida gods sistēmas tiesības Tagad, ja mēs ticam, ka šķindēt ir legit. 301 00:14:28,350 --> 00:14:30,000 Jūs uzticaties, ka ierīce ir legit. 302 00:14:30,000 --> 00:14:34,430 Jūs uzticaties, ka burtiski katrs programma uz jūsu Mac vai PC ir uzticams. 303 00:14:34,430 --> 00:14:37,510 Un kā šo vienkāršo bug liecina, pat ja tā nav ļaunprātīga, 304 00:14:37,510 --> 00:14:40,580 tas absolūti nav varētu būt gadījums. 305 00:14:40,580 --> 00:14:42,350 >> Lai jūs būtu bail kā elle. 306 00:14:42,350 --> 00:14:45,560 Atklāti sakot, tur nav vienkāršs risinājums šai otrai 307 00:14:45,560 --> 00:14:48,185 kā sava veida sabiedrības informētības pieaugošo sarežģītību 308 00:14:48,185 --> 00:14:50,310 ka mēs esam pamatojoties uz augšu mūsu datorsistēmu, 309 00:14:50,310 --> 00:14:53,740 un cik novājināšanos mēs varētu ļoti labi būt. 310 00:14:53,740 --> 00:14:55,570 >> Tagad ar to teica, Breakout. 311 00:14:55,570 --> 00:14:59,889 Tātad Breakout ir problēma noteikt trīs, un Breakout ir spēle no vakardienas 312 00:14:59,889 --> 00:15:02,180 ka jūs varētu atgādināt, bet par mums problēmu noteikts trīs, 313 00:15:02,180 --> 00:15:04,450 tas ļauj mums veikt lietas dublēt robs 314 00:15:04,450 --> 00:15:08,880 tā, ka tad, kad mēs rakstām programmas, pat termināļa logā, piemēram, tas, 315 00:15:08,880 --> 00:15:14,670 mēs faktiski var palaist, galu galā, grafiskās programmas ne 316 00:15:14,670 --> 00:15:17,800 atšķirībā no tiem, mums bija piekļuve ar nulles. 317 00:15:17,800 --> 00:15:20,910 Tātad šis ir personāla s īstenošana Breakout, 318 00:15:20,910 --> 00:15:23,930 kas ir tikai šī ķieģeļu sadalīšana spēle, ka jūs pārvietot savu bradāt atpakaļ 319 00:15:23,930 --> 00:15:27,590 un tālāk, un jūs hit bumbu pret tiem, krāsainu ķieģeļu augšu augšas. 320 00:15:27,590 --> 00:15:30,020 Tātad šis ir celt mums kārtot atpakaļ, kur 321 00:15:30,020 --> 00:15:33,180 mēs varējām būt ļoti ātri ar nulles, un tagad ar C, 322 00:15:33,180 --> 00:15:35,800 Īstenojot mūsu pašu grafiskās lietotāju saskarnes. 323 00:15:35,800 --> 00:15:38,960 >> Taču vairāk nekā to, ka šis problēma kopa reprezentē pirmo 324 00:15:38,960 --> 00:15:41,000 kurā mēs dodam jums ķekars kodu. 325 00:15:41,000 --> 00:15:43,940 Un patiesībā, nesu skaidra uzmanību uz to, jo īpaši 326 00:15:43,940 --> 00:15:47,090 tiem mazāk apmierināti, tas problēma noteikti, vismaz no pirmā acu uzmetiena, 327 00:15:47,090 --> 00:15:49,170 gatavojas justies kā mēs esam veikuši to uz augšu iecirtums. 328 00:15:49,170 --> 00:15:51,540 Tāpēc, ka mēs esam dota jums, dažiem no meklēšanas 329 00:15:51,540 --> 00:15:54,930 un šķirošanas problēmas PSET, ķekars kodu, mēs rakstīja, 330 00:15:54,930 --> 00:15:56,680 un pāris komentāri ka saka "to darīt," 331 00:15:56,680 --> 00:15:58,221 kur jums ir aizpildīt tukšās vietas. 332 00:15:58,221 --> 00:16:00,020 Tāpēc ne pārāk atbaidošs, bet tā ir pirmā reize 333 00:16:00,020 --> 00:16:03,370 mēs nodotu jums kodu, kas jums ir nepieciešams, lai vispirms izlasīt, saprast, un tad pievienot 334 00:16:03,370 --> 00:16:04,290 un pabeigt to. 335 00:16:04,290 --> 00:16:05,940 >> Un tad ar Breakout, mēs esam gatavojas darīt to pašu, 336 00:16:05,940 --> 00:16:08,740 sniedzot jums daži desmiti vairāk līniju kods, kas, atklāti sakot, sniegt jums 337 00:16:08,740 --> 00:16:11,490 daudz no regulējuma spēle, bet apstāties īsi 338 00:16:11,490 --> 00:16:14,304 īstenot ķieģeļu un bumbu un bradāt, 339 00:16:14,304 --> 00:16:15,970 bet mēs ieviest dažas citas funkcijas. 340 00:16:15,970 --> 00:16:18,280 Un pat, ka pēc pirmā acu uzmetiena, atkal, it īpaši, ja mazāk apmierināti, 341 00:16:18,280 --> 00:16:21,480 varētu šķist īpaši biedējošu un Jūs domājat, ka tur ir tik daudz jaunas funkcijas 342 00:16:21,480 --> 00:16:24,070 Jums ir nepieciešams, lai wrap savas domas apkārt, un tā ir taisnība. 343 00:16:24,070 --> 00:16:26,281 Bet paturiet prātā, tas ir gluži tāpat kā nulles. 344 00:16:26,281 --> 00:16:28,780 Izredzes ir jums nav izmantot visas puzzle gabaliņus nulles. 345 00:16:28,780 --> 00:16:31,120 Izredzes ir jums nav vienalga, lai wrap jūsu prāts ap viņiem visiem 346 00:16:31,120 --> 00:16:33,617 jo viss, kas bija bija ātrs skatiens lai saprastu, ak, 347 00:16:33,617 --> 00:16:35,450 ka tas, ko es varu darīt ar šo mīklu gabalu. 348 00:16:35,450 --> 00:16:38,260 Un tiešām, jo ​​problēma noteikti 3 spec, mēs norādīt Jums 349 00:16:38,260 --> 00:16:41,370 pie dokumentiem, kas būs jūs iepazīstināt ar dažām jaunām funkcijām, 350 00:16:41,370 --> 00:16:43,570 un galu galā programmēšana konstrukcijas lietojat. 351 00:16:43,570 --> 00:16:47,610 Nosacījumi, cilpas, mainīgie, un funkcijas 352 00:16:47,610 --> 00:16:50,720 būs identisks tas, ko mēs esam redzējuši līdz šim. 353 00:16:50,720 --> 00:16:53,560 >> Tik tiešām, ko mēs sniegsim Jums ir kāda parauga kods, kas 354 00:16:53,560 --> 00:16:56,110 ļauj jums izveidot logu kas izskatās nav atšķirībā šo, 355 00:16:56,110 --> 00:16:59,540 un galu galā pārvērst to kaut kas gluži kā šis. 356 00:16:59,540 --> 00:17:02,250 Tātad izmantot CS50, apspriest biroja stundas un vairāk, 357 00:17:02,250 --> 00:17:05,290 un būt apmierināts ar to, šajā daudzums kodu, jums ir rakstīt 358 00:17:05,290 --> 00:17:06,760 ir faktiski nav tik daudz. 359 00:17:06,760 --> 00:17:10,359 Pirmais uzdevums ir tikai aklimatizēties sev kādu kodu, mēs esam rakstīts. 360 00:17:10,359 --> 00:17:11,450 361 00:17:11,450 --> 00:17:15,810 >> Visus jautājumus par pset3, Shellshock, vai kā citādi? 362 00:17:15,810 --> 00:17:19,226 >> AUDITORIJA: Likās iet cauri ar Breakout 363 00:17:19,226 --> 00:17:22,154 ka kods ir gandrīz objektorientētā style, 364 00:17:22,154 --> 00:17:24,675 bet es domāju, C biju objektorientētā programmu. 365 00:17:24,675 --> 00:17:26,050 SPEAKER 1: lielisks jautājums. 366 00:17:26,050 --> 00:17:28,258 Tātad skatoties caur izplatīšana kods, kods 367 00:17:28,258 --> 00:17:30,180 mēs rakstījām par pset3, tiem iepazinušies, to 368 00:17:30,180 --> 00:17:32,230 Izskatās, ka tas ir maz objektorientētā. 369 00:17:32,230 --> 00:17:33,800 Īsā atbilde ir, tā ir. 370 00:17:33,800 --> 00:17:38,130 Tas ir tuvināšanu, kā jūs varētu darīt objektorientētā kodu, izmantojot 371 00:17:38,130 --> 00:17:41,850 valodas, piemēram, C, bet tas ir tomēr galu galā procesuālo. 372 00:17:41,850 --> 00:17:44,900 Nav metodes iekšpusē mainīgos lielumus, kā jūs redzēsiet. 373 00:17:44,900 --> 00:17:46,180 Bet tas atgādina, ka. 374 00:17:46,180 --> 00:17:48,780 Un mēs redzam, ka funkciju atkal kad mēs nokļūt PHP un JavaScript 375 00:17:48,780 --> 00:17:49,946 uz beigām semestra. 376 00:17:49,946 --> 00:17:53,667 Bet tagad, domā par to, kā mājienu par to, kas ir nākt. 377 00:17:53,667 --> 00:17:54,250 Labs jautājums. 378 00:17:54,250 --> 00:17:56,051 379 00:17:56,051 --> 00:17:56,550 Viss labi. 380 00:17:56,550 --> 00:17:59,730 Tātad apvienot kārtošanas bija, kā mēs kreisās lietas pēdējo reizi. 381 00:17:59,730 --> 00:18:03,250 Un apvienot kārtot bija vēss sajūta, ka tas bija tik daudz ātrāk, 382 00:18:03,250 --> 00:18:07,100 vismaz pamatojoties uz virspusējas testu mēs darījām pagājušajā nedēļā, nekā, teiksim, burbuli 383 00:18:07,100 --> 00:18:08,710 kārtot, atlase šķirot, ievietošanas kārtošanas. 384 00:18:08,710 --> 00:18:11,780 Un kāda bija veikls arī ir tikai cik īsi un tīri 385 00:18:11,780 --> 00:18:12,810 Jūs varat izteikt to. 386 00:18:12,810 --> 00:18:15,840 Un ko mēs sakām, tas bija augšējo saistošs par braukšanas laiku sapludināšanu 387 00:18:15,840 --> 00:18:16,340 šķirot? 388 00:18:16,340 --> 00:18:17,633 389 00:18:17,633 --> 00:18:18,495 Yeah? 390 00:18:18,495 --> 00:18:19,360 >> AUDITORIJA: n log n? 391 00:18:19,360 --> 00:18:20,819 >> SPEAKER 1: n log n, labi. n log n. 392 00:18:20,819 --> 00:18:23,776 Un mēs būsim atpakaļ uz to, ka patiesībā nozīmē vai ja kas nāk no, 393 00:18:23,776 --> 00:18:25,570 bet tas bija labāk kā kādā darba laika 394 00:18:25,570 --> 00:18:28,440 ka mēs redzējām par burbuli atlase un ievietošanas kārtošanas? 395 00:18:28,440 --> 00:18:30,610 Tātad n brusas. n kvadrātā ir lielāks nekā tas, 396 00:18:30,610 --> 00:18:34,650 un pat tad, ja tas nav gluži skaidrs, zināms, ka log n ir mazāks nekā n, 397 00:18:34,650 --> 00:18:36,910 tāpēc, ja jūs n reizes kaut kas mazāks nekā n, 398 00:18:36,910 --> 00:18:38,680 tas būs mazāks nekā n brusas. 399 00:18:38,680 --> 00:18:40,130 Tas ir mazliet intuīciju tur. 400 00:18:40,130 --> 00:18:42,190 Bet mēs maksā cenu par to. 401 00:18:42,190 --> 00:18:47,000 Tas bija ātrāks, bet tēma, kas sākās parādīties pagājušajā nedēļā bija šī Tradeoff. 402 00:18:47,000 --> 00:18:49,804 Man labāku sniegumu laika ziņā, bet ko 403 00:18:49,804 --> 00:18:52,470 nebija man tērēt otras roku, lai panāktu, ka? 404 00:18:52,470 --> 00:18:53,591 >> AUDITORIJA: Memory. 405 00:18:53,591 --> 00:18:54,465 SPEAKER 1: Say atkal? 406 00:18:54,465 --> 00:18:55,173 AUDITORIJA: Memory. 407 00:18:55,173 --> 00:18:57,040 SPEAKER 1: atmiņas, vai telpu kopumā. 408 00:18:57,040 --> 00:18:59,040 Un tas nebija super skaidrs, ar saviem cilvēkiem, 409 00:18:59,040 --> 00:19:02,240 bet atgādināt, ka mūsu brīvprātīgajiem Tika Izsakot un pastiprināšanu 410 00:19:02,240 --> 00:19:04,780 atpakaļ, it kā tur ir masīvs šeit, un it kā tur ir 411 00:19:04,780 --> 00:19:07,130 otrs masīvs šeit, ka viņi varētu izmantot, jo mēs 412 00:19:07,130 --> 00:19:09,080 ļoti nepieciešamo kaut kur apvienot šos ļaudīm. 413 00:19:09,080 --> 00:19:11,480 Mēs varētu ne tikai mijmaiņas tos vietā. 414 00:19:11,480 --> 00:19:13,800 Tātad apvienot kārtošanas sviras ir vairāk vietas, kas 415 00:19:13,800 --> 00:19:15,620 mums nav nepieciešams ar citi algoritmi, 416 00:19:15,620 --> 00:19:17,410 bet otrādi ir, ka tas ir daudz ātrāks. 417 00:19:17,410 --> 00:19:20,780 Un godīgi sakot, reālajā pasaulē telpā šie days-- RAM, cietais disks space-- 418 00:19:20,780 --> 00:19:25,030 ir salīdzinoši lēts, un tā tas ir nebūt nav slikti. 419 00:19:25,030 --> 00:19:28,320 >> Tātad, pieņemsim veikt ātri apskatīt, nedaudz vairāk metodiski, ko mēs darījām 420 00:19:28,320 --> 00:19:30,220 un kāpēc mums teica, ka tas bija n log n. 421 00:19:30,220 --> 00:19:33,260 Tātad, šeit ir astoņi numuri un Astoņi brīvprātīgie mums bija pēdējo reizi. 422 00:19:33,260 --> 00:19:35,718 Un pirmā lieta, ka sapludināšana Kārtot teica mums darīt bija ko? 423 00:19:35,718 --> 00:19:37,010 424 00:19:37,010 --> 00:19:38,010 AUDITORIJA: Divide divās. 425 00:19:38,010 --> 00:19:38,663 SPEAKER 1: Say atkal? 426 00:19:38,663 --> 00:19:39,650 AUDITORIJA: Divide divās. 427 00:19:39,650 --> 00:19:40,610 SPEAKER 1: Divide divās daļās, pa labi. 428 00:19:40,610 --> 00:19:42,818 Tas ir ļoti atgādina tālruņu grāmata, par plaisu 429 00:19:42,818 --> 00:19:44,220 un iekarot kopumā. 430 00:19:44,220 --> 00:19:45,640 Tātad mēs paskatījās kreisajā pusē. 431 00:19:45,640 --> 00:19:48,700 Un tad, kad mēs teicām, kārtot kreiso pusi no elementiem, 432 00:19:48,700 --> 00:19:49,690 Ko mēs esam blakus teikt? 433 00:19:49,690 --> 00:19:51,210 434 00:19:51,210 --> 00:19:54,860 Kārtot kreiso pusi pa kreisi puse, kas ļāva mums, 435 00:19:54,860 --> 00:19:57,570 pēc tam sadalot divās, koncentrēties uz četriem un diviem. 436 00:19:57,570 --> 00:20:01,280 >> Kā jūs kārtot sarakstu tagad, dzeltens, izmēru divām, izmantojot sapludināšana Šķirot? 437 00:20:01,280 --> 00:20:02,330 438 00:20:02,330 --> 00:20:04,580 Nu sadalīt to pusi, un kārtot kreiso pusi. 439 00:20:04,580 --> 00:20:07,100 Un tas bija, kad lietas ieguvuši mazliet stulba īsumā. 440 00:20:07,100 --> 00:20:10,720 Kā jūs kārtotu sarakstu, kas ir par lielums viens, piemēram, šo numuru četri šeit? 441 00:20:10,720 --> 00:20:12,330 442 00:20:12,330 --> 00:20:13,210 Tas ir sakārtoti. 443 00:20:13,210 --> 00:20:14,200 Jūs esat darīts. 444 00:20:14,200 --> 00:20:17,300 >> Bet tad kā jūs kārtot sarakstu izmērs viens, kad tas ir numur divi? 445 00:20:17,300 --> 00:20:21,640 Nu, tas pats, bet tagad to, kas bija Trešais un galvenais solis Merge Atlasīt? 446 00:20:21,640 --> 00:20:24,020 Jums bija apvienot kreisi pusi un labo pusi. 447 00:20:24,020 --> 00:20:26,580 Un, kad mēs darījām, ka mēs skatījāmies četros, mēs paskatījās diviem. 448 00:20:26,580 --> 00:20:28,750 Mēs nolēmām, visas tiesības, acīmredzot divi ir pirmajā vietā, 449 00:20:28,750 --> 00:20:31,840 tāpēc mēs liekam divas savā vietu, kam seko četri. 450 00:20:31,840 --> 00:20:35,010 Un tagad jums ir sava veida attīt atpakaļ, un tas ir sava veida īpašība 451 00:20:35,010 --> 00:20:37,570 no algoritma, piemēram sapludināšana Kārtot, attīt atmiņā. 452 00:20:37,570 --> 00:20:40,240 Kāds bija nākamais rindā ir stāsts? 453 00:20:40,240 --> 00:20:41,780 Kas man būtu koncentrēties uz nākamo? 454 00:20:41,780 --> 00:20:43,110 455 00:20:43,110 --> 00:20:47,350 Labo pusi kreisi puse, Kurš ir seši un astoņi. 456 00:20:47,350 --> 00:20:50,320 >> Tātad, ļaujiet man tikai soli caur šo bez belaboring punktu pārāk daudz. 457 00:20:50,320 --> 00:20:53,330 Seši un astoņi, tad seši ir sakārtoti, astoņi ir sakārtots. 458 00:20:53,330 --> 00:20:57,190 Apvienot tos kopā, piemēram, ka, un tagad nākamais lielais solis 459 00:20:57,190 --> 00:21:00,990 ir, protams, sakārtot pareizo pusi no pats pirmais solis šīs algoritms. 460 00:21:00,990 --> 00:21:02,870 Tātad, mēs koncentrējamies uz vienu, trīs, septiņi, pieci. 461 00:21:02,870 --> 00:21:04,540 Mēs pēc tam koncentrēties uz kreisajā pusē. 462 00:21:04,540 --> 00:21:09,400 Kreisā puse, ka tiesības puse ka, un pēc tam apvienot vienā un trīs. 463 00:21:09,400 --> 00:21:13,100 Tad labajā pusē, tad kreisajā pusē no tā, tad tiesības puse no tā. 464 00:21:13,100 --> 00:21:15,985 Apvienot to, un tagad ko solis paliek? 465 00:21:15,985 --> 00:21:18,040 466 00:21:18,040 --> 00:21:22,460 Apvienot lielo kreiso pusi un liels labajā pusē, tāpēc viens iet uz leju tur, 467 00:21:22,460 --> 00:21:27,330 tad divas, tad trīs, pēc tam četri, tad piecu, sešu tam, tad septiņu, astoņu tam. 468 00:21:27,330 --> 00:21:31,990 >> Tāpēc tagad kāpēc tas galu galā atklāj, it īpaši, ja n un logaritmi vairāk 469 00:21:31,990 --> 00:21:35,487 parasti drīzāk aizbēgt jums, vismaz pēdējos atmiņā? 470 00:21:35,487 --> 00:21:37,070 Nu, paziņojums augstumu šī lieta. 471 00:21:37,070 --> 00:21:41,230 Mums bija astoņi elementus, un mēs dala to ar divi ar divi, ar divi. 472 00:21:41,230 --> 00:21:44,590 Tātad log bāzes divi no astoņiem dod mums trīs. 473 00:21:44,590 --> 00:21:45,640 474 00:21:45,640 --> 00:21:48,540 Un ticiet man, ka, ja mazliet miglaini par to. 475 00:21:48,540 --> 00:21:54,710 Bet log bāze divi no astoņiem ir trīs, tāpēc mēs esam darījuši trīs slāņu apvienošana. 476 00:21:54,710 --> 00:21:57,170 Un, kad mēs apvienojām elementi, cik daudzi elementi 477 00:21:57,170 --> 00:21:58,950 tomēr mēs skatāmies uz katru no šīm rindām? 478 00:21:58,950 --> 00:22:00,212 479 00:22:00,212 --> 00:22:01,437 Kopumā n, vai ne? 480 00:22:01,437 --> 00:22:04,020 Jo apvienot augšējā rindā, pat ja mēs to darīja pa daļām, 481 00:22:04,020 --> 00:22:05,990 mēs galu galā pieskārās katru numuru vienu reizi. 482 00:22:05,990 --> 00:22:09,054 Un otrajā rindā, lai apvienot šos sarakstus izmēra divu, 483 00:22:09,054 --> 00:22:10,470 mums bija pieskarties katru elementu reizi. 484 00:22:10,470 --> 00:22:12,690 Un tad šeit tiešām skaidri pēdējā rindā, 485 00:22:12,690 --> 00:22:15,430 mums nācās pieskarties viens no tiem elementi vienu reizi, bet tikai vienu reizi, 486 00:22:15,430 --> 00:22:18,400 tāpēc šeit slēpjas, tad, mūsu n log n. 487 00:22:18,400 --> 00:22:21,780 >> Un tagad tikai, lai padarītu lietas nedaudz vairāk formāls tikai brīdi, ja jums 488 00:22:21,780 --> 00:22:24,260 bija tagad analizēt šo pie sava veida augstākā līmenī 489 00:22:24,260 --> 00:22:28,340 un mēģināt izlemt, labi, kā jūs varētu iet par paužot 490 00:22:28,340 --> 00:22:31,780 darbības laiks šo algoritmu tikai, skatoties uz to, un nav 491 00:22:31,780 --> 00:22:33,590 izmantojot samākslotu piemēru? 492 00:22:33,590 --> 00:22:36,590 Nu, cik daudz laika jūs teiktu soli, piemēram, tas ir dzeltenā krāsā varētu veikt, 493 00:22:36,590 --> 00:22:37,173 ja n <2 atgriešanās? 494 00:22:37,173 --> 00:22:38,840 495 00:22:38,840 --> 00:22:39,830 Tas ir liels O, ko? 496 00:22:39,830 --> 00:22:41,450 497 00:22:41,450 --> 00:22:44,540 Tāpēc es esmu redzēt vienu, tāpēc vienu soli, varbūt divus soļus, jo tas ir, ja 498 00:22:44,540 --> 00:22:47,110 un pēc tam atgriezties, bet tas ir nemainīgs laiks, vai ne? 499 00:22:47,110 --> 00:22:49,960 Tātad, mēs minētā O (1), un ka ir kā es ņemšu izteikt to. 500 00:22:49,960 --> 00:22:51,480 T, vienkārši darba laika. 501 00:22:51,480 --> 00:22:54,150 n ir lielums ievadi, tāpēc T (n), tikai iedomātā veids 502 00:22:54,150 --> 00:22:56,330 , sakot vadīšanu laiks dots ievadi lieluma n 503 00:22:56,330 --> 00:23:00,220 būs par kārtību pastāvīga laikā, O (1). 504 00:23:00,220 --> 00:23:01,970 >> Bet citādi, ko par šo? 505 00:23:01,970 --> 00:23:05,660 Kā jūs izteikt darbības laiks šo dzelteno līniju? 506 00:23:05,660 --> 00:23:06,250 T, ko? 507 00:23:06,250 --> 00:23:09,440 508 00:23:09,440 --> 00:23:12,665 Jūs varat veida apkrāptu šeit un atbildēt uz manu jautājumu cikliski. 509 00:23:12,665 --> 00:23:14,770 510 00:23:14,770 --> 00:23:17,900 Tātad, ja darba laiks Kopumā mēs vienkārši teikt, ir T (n). 511 00:23:17,900 --> 00:23:18,950 512 00:23:18,950 --> 00:23:22,490 Un tagad jūs esat veida punting šeit un sakot, labi, vienkārši kārtot kreiso pusi, 513 00:23:22,490 --> 00:23:23,920 un pēc tam kārtot labo pusi. 514 00:23:23,920 --> 00:23:27,520 Kā varētu mēs simboliski pārstāvēt darbības laiks šīs dzelteno līniju? 515 00:23:27,520 --> 00:23:28,020 T, ko? 516 00:23:28,020 --> 00:23:29,360 Kas izmērs ieejas? 517 00:23:29,360 --> 00:23:30,510 518 00:23:30,510 --> 00:23:31,057 n vairāk nekā divi. 519 00:23:31,057 --> 00:23:32,140 Kāpēc es tikai saku, ka? 520 00:23:32,140 --> 00:23:36,449 Un tad tas ir vēl viens T (n / 2) un pēc tam atkal, ja es apvienot divas sakārtotās pusītes, 521 00:23:36,449 --> 00:23:38,615 cik elementi man iet ir pieskarties pavisam? 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 Tāpēc es varu izteikt to, tikai, lai būtu sava veida iedomātā, 525 00:23:42,790 --> 00:23:44,430 kā darbojas laiku kopumā. 526 00:23:44,430 --> 00:23:51,140 T (n) ir tikai darbības laiks T (n / 2), plus T (n / 2), pa kreisi pusi un labo pusi, 527 00:23:51,140 --> 00:23:55,360 plus O (n), kas, iespējams, ir n soļi, bet varbūt, ja es esmu, izmantojot divus pirkstus, 528 00:23:55,360 --> 00:23:57,960 tas ir divreiz vairāk soļi, bet tas ir lineāra. 529 00:23:57,960 --> 00:24:00,440 Tas ir daži no soļiem skaits tas faktors n, 530 00:24:00,440 --> 00:24:02,270 lai mēs varētu izteikt to kā šī. 531 00:24:02,270 --> 00:24:05,550 Un tas ir, ja tagad mēs punt uz atpakaļ mūsu vidusskolas matemātikas mācību grāmata 532 00:24:05,550 --> 00:24:10,290 mēs esam, ka atkārtošanās galu galā nonāks līdzinoties to, n reizes log n, 533 00:24:10,290 --> 00:24:12,530 ja jūs faktiski darīt out math vairāk formāli. 534 00:24:12,530 --> 00:24:13,950 >> Tā ka ir tikai divas perspektīvas. 535 00:24:13,950 --> 00:24:17,500 Viens skaitliski ar iekodēts raksturīgu piemēru 536 00:24:17,500 --> 00:24:21,140 izmantojot astoņus numurus, un vairāk Kopumā izskatās, kā mēs saņēmām tur. 537 00:24:21,140 --> 00:24:25,670 Bet to, kas ir patiešām interesanti šeit ir, atkal, šis jēdziens riteņbraukšana. 538 00:24:25,670 --> 00:24:26,900 Es neesmu, izmantojot cilpas. 539 00:24:26,900 --> 00:24:29,860 Es esmu veida definēšanas kaut ziņā pats par sevi, 540 00:24:29,860 --> 00:24:31,950 ne tikai ar šo matemātiska funkcija, 541 00:24:31,950 --> 00:24:34,860 bet arī attiecībā pret šo pseido kodu. 542 00:24:34,860 --> 00:24:38,260 Tas pseido kods ir rekursīvs ka divi tās līnijas 543 00:24:38,260 --> 00:24:42,310 būtībā stāstīt to, lai iet izmantot sevi, lai atrisinātu mazāku 544 00:24:42,310 --> 00:24:45,400 problēma mazāka izmēra, un tad atkal un atkal 545 00:24:45,400 --> 00:24:48,820 un atkal, līdz mēs drāzt to uz leju, lai tā sauktās gadījumu. 546 00:24:48,820 --> 00:24:52,810 >> Tātad pieņemsim faktiski izdarīt vairāk pārliecinoši take-prom no tā, kā šādi. 547 00:24:52,810 --> 00:24:58,420 Ļaujiet man iet uz gedit un veikt apskatīt dažus no šodienas pirmkodu, 548 00:24:58,420 --> 00:24:59,930 īpaši šis piemērs šeit. 549 00:24:59,930 --> 00:25:03,709 Sigma 0, kas acīmredzot piebilst skaitļi viens caur n. 550 00:25:03,709 --> 00:25:05,750 Tātad, pieņemsim redzēt, kas ir pazīstams un svešs šeit. 551 00:25:05,750 --> 00:25:08,690 Vispirms mums ir pāris ietver, tāpēc nekas jauns tur. 552 00:25:08,690 --> 00:25:09,190 Prototips. 553 00:25:09,190 --> 00:25:11,370 Es esmu mazliet miglaina par tas pēc dažām dienām, 554 00:25:11,370 --> 00:25:13,790 bet ko gan mēs sakām prototips funkcija ir? 555 00:25:13,790 --> 00:25:15,099 556 00:25:15,099 --> 00:25:16,015 AUDITORIJA: [nedzirdama]. 557 00:25:16,015 --> 00:25:16,905 SPEAKER 1: Kas tas tāds? 558 00:25:16,905 --> 00:25:17,800 AUDITORIJA: Mēs paziņojam to. 559 00:25:17,800 --> 00:25:18,883 SPEAKER 1: Mēs paziņojam to. 560 00:25:18,883 --> 00:25:22,290 Tātad jums ir mācību šķindēt, hey, faktiski neīsteno to vēl, 561 00:25:22,290 --> 00:25:25,740 bet kaut kur šo failu, iespējams, tiks funkciju sauc ko? 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 Un tas ir tikai solījums, ka tas notiek, lai izskatās šādi. 565 00:25:30,540 --> 00:25:33,720 Tā gatavojas veikt veselu skaitli kā input-- un es varu būt skaidrāk 566 00:25:33,720 --> 00:25:36,570 un teikt int n --and tas ir gatavojas atgriezties int, 567 00:25:36,570 --> 00:25:39,900 bet semikolu līdzekļiem, mm, es nopirkšu apkārt īstenot šo nedaudz vēlāk. 568 00:25:39,900 --> 00:25:40,989 Atkal, šķindēt ir mēms. 569 00:25:40,989 --> 00:25:43,280 Tas ir tikai gatavojas zināt, ko Jums pateikt to no augšas uz leju, 570 00:25:43,280 --> 00:25:45,765 tāpēc mums ir nepieciešams, lai vismaz dotu tas mājienu par to, kas ir nākt. 571 00:25:45,765 --> 00:25:47,330 >> Tagad aplūkosim galvenais šeit. 572 00:25:47,330 --> 00:25:50,040 Pieņemsim ritiniet uz leju šeit un redzētu, kas galvenais dara. 573 00:25:50,040 --> 00:25:53,780 Tas nav, ka ilgi par funkciju, un faktiski būvēt šeit ir pazīstams. 574 00:25:53,780 --> 00:25:57,590 Es apliecinu mainīgu n, un pēc tam Es apgrūtināt lietotāju atkal un atkal 575 00:25:57,590 --> 00:26:01,880 pozitīvai skaitlim izmantojot getInt, un vienīgā izeja no šīs cilpas 576 00:26:01,880 --> 00:26:03,280 pēc tam, kad lietotājs ir izpildījis. 577 00:26:03,280 --> 00:26:05,670 Vai gan mēs esam izmantojuši, lai apgrūtināt lietotājam šādā veidā. 578 00:26:05,670 --> 00:26:06,670 Tagad tas ir interesanti. 579 00:26:06,670 --> 00:26:08,510 Es apliecinu int sauc par "atbilde." 580 00:26:08,510 --> 00:26:11,420 Es piešķirt tā atgriešanās vērtību par funkciju sauc "sigma". 581 00:26:11,420 --> 00:26:15,200 Es nezinu, ko tas dara, tomēr Es atceros, atzīstot to pirms brīža. 582 00:26:15,200 --> 00:26:18,310 Un tad es esmu, kas iet vērtība, lietotājs ierakstījāt, n, 583 00:26:18,310 --> 00:26:20,420 un tad es ziņot atbildi. 584 00:26:20,420 --> 00:26:22,260 Nu pieņemsim ritināt atpakaļ tikai brīdi. 585 00:26:22,260 --> 00:26:28,620 Iesim uz priekšu šajā direktorijā, veikt sigma 0, un faktiski palaist šo programmu 586 00:26:28,620 --> 00:26:30,490 un redzēt, kas notiek. 587 00:26:30,490 --> 00:26:35,930 Tātad, ja man iet uz priekšu un palaist šī programma, ./sigma-0, 588 00:26:35,930 --> 00:26:40,139 un es ierakstiet pozitīvs skaitlis, piemēram, diviem, Sigma, 589 00:26:40,139 --> 00:26:43,180 kā Grieķijas simbols nozīmē, ir tikai gatavojas saskaitīt visus numurus no 590 00:26:43,180 --> 00:26:44,320 nulle par līdz pat diviem. 591 00:26:44,320 --> 00:26:46,560 Tātad 0 plus 1 plus 2. 592 00:26:46,560 --> 00:26:48,830 Tātad tas būtu cerams man 3. 593 00:26:48,830 --> 00:26:49,750 Tas ir viss, tas dara. 594 00:26:49,750 --> 00:26:52,690 Un tāpat, ja es palaist vēlreiz un es arī tā numuru trīs, 595 00:26:52,690 --> 00:26:56,721 tas ir 3 plus 2, tā ka ir 5, plus 1 vajadzētu dot man 6. 596 00:26:56,721 --> 00:26:59,470 Un tad, ja man patiešām traks un sākt rakstīt lielākiem skaitļiem, 597 00:26:59,470 --> 00:27:01,290 tam vajadzētu dot man lielākas un lielākas summas. 598 00:27:01,290 --> 00:27:02,250 Tātad tas arī viss. 599 00:27:02,250 --> 00:27:04,010 >> Tātad, ko tas sigma izskatās? 600 00:27:04,010 --> 00:27:05,430 Nu, tas ir diezgan vienkārši. 601 00:27:05,430 --> 00:27:08,940 Tas, kā mēs varētu būt jāīsteno tas par pēdējo pāris nedēļu laikā. 602 00:27:08,940 --> 00:27:11,120 "Int" būs atgriešanās tips. 603 00:27:11,120 --> 00:27:14,330 Sigma ir vārds, un tas aizņem mainīgais m, nevis n. 604 00:27:14,330 --> 00:27:15,940 Es mainīt ka ​​līdz top. 605 00:27:15,940 --> 00:27:17,340 Tad tas ir tikai veselība pārbaudītu. 606 00:27:17,340 --> 00:27:18,430 607 00:27:18,430 --> 00:27:19,950 Mēs redzēsim, kāpēc brīdi. 608 00:27:19,950 --> 00:27:24,220 Tagad es apliecinu citu mainīgo, summa, inicializēt to līdz nullei. 609 00:27:24,220 --> 00:27:28,140 Tad man ir tas For cilpa atkārtojot, acīmredzot skaidrības labad, 610 00:27:28,140 --> 00:27:33,810 no i = 1 gada līdz = M, kas ir kāds lietotājs drukāti, un tad es 611 00:27:33,810 --> 00:27:35,690 pieauguma, piemēram, šo summu. 612 00:27:35,690 --> 00:27:37,360 Un pēc tam atgriezties summu. 613 00:27:37,360 --> 00:27:38,440 >> Tātad pāris jautājumi. 614 00:27:38,440 --> 00:27:42,370 Viens, es varu pieprasīt savā komentārā, ka šis novērš risku bezgalīgu cilpu. 615 00:27:42,370 --> 00:27:45,620 Kāpēc būtu iet ar negatīvu skaitli izraisīt, iespējams, bezgalīgu cilpu? 616 00:27:45,620 --> 00:27:49,396 617 00:27:49,396 --> 00:27:51,290 >> AUDITORIJA: Jūs nekad sasniegt m. 618 00:27:51,290 --> 00:27:52,880 >> SPEAKER 1: Nekad sasniegt m. 619 00:27:52,880 --> 00:27:55,880 Bet m ir pieņemts, tāpēc pieņemsim apsvērt vienkāršu piemēru. 620 00:27:55,880 --> 00:27:58,510 Ja m ir pieņemts ar lietotāju par negatīvu vienu. 621 00:27:58,510 --> 00:28:00,059 Neatkarīgi no galvenā. 622 00:28:00,059 --> 00:28:01,850 Galvenais pasargā mūs no šo pārāk, tāpēc es esmu tikai 623 00:28:01,850 --> 00:28:04,680 ir tiešām anālais ar sigma arī pārliecināties 624 00:28:04,680 --> 00:28:06,540 ka ieejas nevar būt negatīvs. 625 00:28:06,540 --> 00:28:10,130 Tātad, ja m ir negatīvs, kaut kā negatīvai. 626 00:28:10,130 --> 00:28:11,930 Kas notiks? 627 00:28:11,930 --> 00:28:14,390 Nu, es gatavojas get inicializēts ar vienu, 628 00:28:14,390 --> 00:28:19,060 un tad es būs ir mazāks par vai vienāds ar m? 629 00:28:19,060 --> 00:28:24,130 630 00:28:24,130 --> 00:28:24,765 >> Stāvēt. 631 00:28:24,765 --> 00:28:26,930 632 00:28:26,930 --> 00:28:29,370 Ka was-- pieņemsim nav, pieņemsim uzmanies šo stāstu. 633 00:28:29,370 --> 00:28:32,780 Es neprasīju šo jautājumu, jo risks, ka es esmu atsaucoties uz 634 00:28:32,780 --> 00:28:38,360 nav gatavojas notikt, jo man ir vienmēr būs jābūt lielākam than-- OK, 635 00:28:38,360 --> 00:28:39,871 Es ievilkt šo jautājumu. 636 00:28:39,871 --> 00:28:40,370 OK. 637 00:28:40,370 --> 00:28:42,030 Pieņemsim koncentrēties tikai uz šo daļu šeit. 638 00:28:42,030 --> 00:28:44,210 639 00:28:44,210 --> 00:28:48,830 Kāpēc es apliecinu, daži ārpus cilpa? 640 00:28:48,830 --> 00:28:52,010 Paziņojums on line 49 Esmu deklarēta i iekšpusē cilpas, 641 00:28:52,010 --> 00:28:54,950 bet online 48 es esmu deklarēja aptuveni ārpuses. 642 00:28:54,950 --> 00:28:55,695 Jā. 643 00:28:55,695 --> 00:28:56,611 AUDITORIJA: [nedzirdama]. 644 00:28:56,611 --> 00:28:58,734 645 00:28:58,734 --> 00:28:59,400 SPEAKER 1: Protams. 646 00:28:59,400 --> 00:29:03,360 Tātad vispirms un galvenokārt es, protams, nav vēlas deklarēt un sāktu summa 647 00:29:03,360 --> 00:29:06,130 līdz nulles iekšpusē cilpa katrā atkārtojuma, 648 00:29:06,130 --> 00:29:09,370 jo tas nepārprotami sakaut mērķis summējot numurus. 649 00:29:09,370 --> 00:29:11,770 Es varētu saglabāt mainās vērtību atpakaļ uz nulli. 650 00:29:11,770 --> 00:29:17,992 Un arī, kas ir vēl vairāk mistisks iemesls šī paša dizaina lēmumu? 651 00:29:17,992 --> 00:29:18,954 Jā. 652 00:29:18,954 --> 00:29:20,279 >> AUDITORIJA: [nedzirdama]. 653 00:29:20,279 --> 00:29:21,070 SPEAKER 1: Tieši tā. 654 00:29:21,070 --> 00:29:24,060 Es gribu, lai piekļūtu to ārā cilpa pārāk uz kāda līnijas? 655 00:29:24,060 --> 00:29:25,390 656 00:29:25,390 --> 00:29:26,400 Gada 53. 657 00:29:26,400 --> 00:29:29,910 Un, pamatojoties uz mūsu īkšķa no pāris lekcijas atpakaļ, 658 00:29:29,910 --> 00:29:33,680 mainīgie ir scoped, tiešām, lai cirtaini bikšturi, kas aptver tos. 659 00:29:33,680 --> 00:29:38,190 Tātad, ja man nav apliecinu summu iekšā Šo ārējo cirtaini bikšturi, 660 00:29:38,190 --> 00:29:40,250 Es nevaru to izmantot 53 rindā. 661 00:29:40,250 --> 00:29:43,160 Citiem vārdiem sakot, ja es deklarēta summa šeit, vai pat 662 00:29:43,160 --> 00:29:45,410 Cilpa, es nevarēju piekļūt to 53. 663 00:29:45,410 --> 00:29:47,150 Mainīgais efektīvi pagājis. 664 00:29:47,150 --> 00:29:48,579 Tātad pāris iemesli tur. 665 00:29:48,579 --> 00:29:50,370 Bet tagad iesim atpakaļ un redzēt, kas notiek. 666 00:29:50,370 --> 00:29:51,730 Tā sigma izpaužas sauc. 667 00:29:51,730 --> 00:29:55,640 Tā piebilst, līdz 1 plus 2, vai 1 plus 2 plus 3, un pēc tam atgriež vērtību, 668 00:29:55,640 --> 00:29:59,660 noglabā atbildi, un printf šeit ir iemesls, kāpēc es esmu redzēt uz ekrāna. 669 00:29:59,660 --> 00:30:03,079 Tātad, tas ir tas, ko mēs saucam iteratīvs pieeja, kur atkārtojuma vienkārši 670 00:30:03,079 --> 00:30:03,870 nozīmē, izmantojot cilpu. 671 00:30:03,870 --> 00:30:06,900 Par cilpa, kamēr cilpa, Do Kaut cilpa, tikai darot kaut ko atkal 672 00:30:06,900 --> 00:30:08,380 un atkal un atkal. 673 00:30:08,380 --> 00:30:13,505 >> Bet sigma ir sava veida veikls funkciju , ka es varētu īstenot atšķirīgi. 674 00:30:13,505 --> 00:30:14,620 675 00:30:14,620 --> 00:30:19,120 Kas par to, kas tikai, lai būtu sava veida atdzist, 676 00:30:19,120 --> 00:30:21,880 ļaujiet man tiešām atbrīvoties par daudz uzmanību 677 00:30:21,880 --> 00:30:24,380 jo šīs funkcijas patiešām ir diezgan vienkārši. 678 00:30:24,380 --> 00:30:27,780 Pieņemsim drāzt to uz leju vienkārši tās četrām galvenajām līnijām 679 00:30:27,780 --> 00:30:30,410 un atbrīvoties no visiem komentārus un cirtaini bikšturi. 680 00:30:30,410 --> 00:30:34,334 Tas ir sava veida prāta-putu alternatīva īstenošanu. 681 00:30:34,334 --> 00:30:37,250 Nu labi, varbūt ne prātā-putu, bet tas ir sava veida sexier, visas tiesības, 682 00:30:37,250 --> 00:30:39,920 apskatīt šo tik daudz kodolīgi. 683 00:30:39,920 --> 00:30:43,120 Ar tikai četras rindiņas kodu, Man vispirms ir šis veselība pārbaudītu. 684 00:30:43,120 --> 00:30:45,732 Ja m ir mazāks par vai vienāds ar nulle, sigma nav jēgas. 685 00:30:45,732 --> 00:30:48,190 Tas ir tikai vajadzēja būt šis gadījums pozitīviem skaitļiem, 686 00:30:48,190 --> 00:30:50,340 tāpēc es esmu tikai gatavojas atgriezties nulli patvaļīgi 687 00:30:50,340 --> 00:30:53,210 tāpēc, ka mums vismaz ir daži tā saukto bāzes gadījums. 688 00:30:53,210 --> 00:30:54,430 >> Bet šeit ir skaistums. 689 00:30:54,430 --> 00:30:59,930 Šīs idejas veselums, piebilstot skaitļi no 1 līdz n, m un šajā gadījumā 690 00:30:59,930 --> 00:31:02,630 var izdarīt veida iet buks. 691 00:31:02,630 --> 00:31:04,947 Nu, kas ir summa, no 1 līdz m? 692 00:31:04,947 --> 00:31:05,780 Nu, jūs zināt, ko? 693 00:31:05,780 --> 00:31:11,949 Tas ir tāds pats, kā no m summu plus summa no 1 līdz m mīnus 1. 694 00:31:11,949 --> 00:31:12,740 Nu jūs zināt, ko? 695 00:31:12,740 --> 00:31:13,940 Kas ir sigma no m mīnus 1? 696 00:31:13,940 --> 00:31:17,860 Nu, ja jūs veida sekot šim loģiski, tas ir tāds pats kā m mīnus 1 697 00:31:17,860 --> 00:31:21,415 plus sigma no m mīnus 2. 698 00:31:21,415 --> 00:31:22,480 699 00:31:22,480 --> 00:31:26,012 Tātad jūs varat veida just-- tas ir tāpat kā, ja jūs vienkārši 700 00:31:26,012 --> 00:31:28,220 mēģina traucēt draugu un viņi uzdot jums jautājumu, 701 00:31:28,220 --> 00:31:31,344 jūs veida atbildēt ar jautājumu, Jūs varat veida glabāt iet buks. 702 00:31:31,344 --> 00:31:34,560 Bet to, kas ir galvenais ir tas, ka, ja jūs paturiet padarot jautājums mazākas un mazākas 703 00:31:34,560 --> 00:31:36,910 un mazākas, tu esi Neprasot, kas ir sigma 704 00:31:36,910 --> 00:31:39,116 n, kas ir sigma of n, kas ir sigma n? 705 00:31:39,116 --> 00:31:40,990 Tu jautā, kas ir sigma n, kas ir sigma 706 00:31:40,990 --> 00:31:42,839 no n mīnus 1, kas ir sigma n mīnus 2? 707 00:31:42,839 --> 00:31:44,880 Galu galā jūsu jautājums gatavojas kļūt par ko? 708 00:31:44,880 --> 00:31:50,250 Kas ir sigma vienu vai nulle, daži ir ļoti maza vērtība, 709 00:31:50,250 --> 00:31:52,220 un tiklīdz jūs iegūt, ka, jūsu draugs, 710 00:31:52,220 --> 00:31:54,350 jums nav gatavojas lūgt pats jautājums atkal, 711 00:31:54,350 --> 00:31:55,975 jūs tikai gatavojas teikt, ak tas ir nulle. 712 00:31:55,975 --> 00:31:58,490 Mēs pabeidzis spēlējot šāda veida par stulbu ciklisko spēli. 713 00:31:58,490 --> 00:32:02,950 >> Tātad rekursijas ir akts programmēšanā par funkciju zvana pati. 714 00:32:02,950 --> 00:32:06,630 Šī programma, kad tie ir apkopoti un palaist, ir gatavojas izturēties tieši tāpat, 715 00:32:06,630 --> 00:32:09,620 bet to, kas ir galvenais ir tas, ka iekšā no funkciju, ko sauc sigma, 716 00:32:09,620 --> 00:32:13,150 ir līnija kods, kas atšķiras ar to mēs esam aicinot sevi, 717 00:32:13,150 --> 00:32:14,980 kas parasti ir slikti. 718 00:32:14,980 --> 00:32:21,160 Piemēram, kas notiks, ja es pirmo reizi apkopoti šo, lai padarītu sigma-- 719 00:32:21,160 --> 00:32:22,710 padarīt sigma 1 ./sigma-1. 720 00:32:22,710 --> 00:32:25,050 721 00:32:25,050 --> 00:32:27,690 Pozitīvs skaitlis, lūdzu, 50 1275. 722 00:32:27,690 --> 00:32:30,810 Tātad, kāda funkcija, šķiet, būt, pamatojoties uz vienu testu, pareizu. 723 00:32:30,810 --> 00:32:34,917 Bet ko tad man nedaudz bīstama un izdzēst tā saukto bāzes lietu, 724 00:32:34,917 --> 00:32:37,750 un tikai teikt, arī es esmu tikai padarot šis sarežģītāka, nekā tas ir. 725 00:32:37,750 --> 00:32:42,450 Pieņemsim tikai aprēķināt sigma veicot m, un pēc tam pievienojot 726 00:32:42,450 --> 00:32:44,564 in sigma no m mīnus viena? 727 00:32:44,564 --> 00:32:45,980 Nu, to, kas notiks šeit? 728 00:32:45,980 --> 00:32:47,140 Pieņemsim attālinātu. 729 00:32:47,140 --> 00:32:52,920 Pieņemsim recompile programmu, saglabājiet to, recompile programmu, 730 00:32:52,920 --> 00:33:00,450 un gatavs ./sigma-1 attālināt, ievadiet pozitīvs vesels skaitlis, lūdzu, 50. 731 00:33:00,450 --> 00:33:02,180 732 00:33:02,180 --> 00:33:04,430 Cik daudzi no jums ir gatavi lai fess līdz redzēt, ka? 733 00:33:04,430 --> 00:33:04,950 >> OK. 734 00:33:04,950 --> 00:33:06,690 Tātad tas var notikt vairāki iemesli, 735 00:33:06,690 --> 00:33:09,148 un atklāti šonedēļ mēs esam par to, lai dotu jums vairāk no viņiem. 736 00:33:09,148 --> 00:33:11,780 Bet šajā gadījumā, mēģiniet spriest atpakaļ 737 00:33:11,780 --> 00:33:14,430 kas varētu būt noticis šeit? 738 00:33:14,430 --> 00:33:17,400 Segmentāciju vaina, mēs pēdējo reizi teica laiks, attiecas uz segmentu atmiņas. 739 00:33:17,400 --> 00:33:18,690 Kaut kas slikts noticis. 740 00:33:18,690 --> 00:33:21,550 Bet kas tas bija mehāniski, kas gāja greizi 741 00:33:21,550 --> 00:33:25,000 šeit, jo mana izņemšanas šīs tā sauktās bāzes gadījumā, 742 00:33:25,000 --> 00:33:26,870 kur es atpakaļ grūti kodēta vērtība? 743 00:33:26,870 --> 00:33:28,970 744 00:33:28,970 --> 00:33:30,460 Ko jūs domājat, kas nogāja greizi? 745 00:33:30,460 --> 00:33:31,219 Jā. 746 00:33:31,219 --> 00:33:32,135 >> AUDITORIJA: [nedzirdama]. 747 00:33:32,135 --> 00:33:36,387 748 00:33:36,387 --> 00:33:36,970 SPEAKER 1: Ah. 749 00:33:36,970 --> 00:33:37,550 Labs jautājums. 750 00:33:37,550 --> 00:33:39,508 Tātad lielumu skaitu ka man bija summējot 751 00:33:39,508 --> 00:33:41,920 got tik liels, ka tas pārsniedzis lielums atmiņas vietas. 752 00:33:41,920 --> 00:33:44,640 Laba ideja, bet nav būtiski gatavojas izraisīt avāriju. 753 00:33:44,640 --> 00:33:48,230 Tas varētu radīt veselu pārplūst, kur biti tikai uzsist pa 754 00:33:48,230 --> 00:33:51,760 un tad mēs kļūda tiešām liels numurs kā negatīvu skaitli, 755 00:33:51,760 --> 00:33:53,260 bet, kas pats par sevi nevar izraisīt avāriju. 756 00:33:53,260 --> 00:33:55,509 Jo beigās diena int joprojām ir 32 biti. 757 00:33:55,509 --> 00:33:57,640 Jūs neesat gatavojas nejauši nozagt 33. mazliet. 758 00:33:57,640 --> 00:33:58,431 Bet laba doma. 759 00:33:58,431 --> 00:33:58,984 Jā. 760 00:33:58,984 --> 00:33:59,900 >> AUDITORIJA: [nedzirdama]. 761 00:33:59,900 --> 00:34:00,551 762 00:34:00,551 --> 00:34:02,300 SPEAKER 1: metode nekad pārstāj darboties, 763 00:34:02,300 --> 00:34:06,658 un tas patiešām prasa sevi atkal un atkal un atkal un atkal 764 00:34:06,658 --> 00:34:08,449 un atkal, un neviens no šīs funkcijas ever 765 00:34:08,449 --> 00:34:13,310 pabeigt, jo to vienīgais līniju kods aicina themself atkal un atkal 766 00:34:13,310 --> 00:34:14,219 un atkal. 767 00:34:14,219 --> 00:34:16,080 Un to, kas īsti notiek šeit, un tagad mēs 768 00:34:16,080 --> 00:34:18,100 var veida izdarīt to gleznieciski. 769 00:34:18,100 --> 00:34:20,899 Ļaujiet man iet vairāk nekā uz attēlu tikai brīdi. 770 00:34:20,899 --> 00:34:22,940 Tas ir attēls, kas galu galā konkretizētu 771 00:34:22,940 --> 00:34:26,336 sīkāk, par to, kas notiek iekšpusē datora atmiņā. 772 00:34:26,336 --> 00:34:28,460 Un izrādās, ka dibens šo attēlu 773 00:34:28,460 --> 00:34:29,709 ir kaut kas ko sauc kaudze. 774 00:34:29,709 --> 00:34:31,920 Tas ir rieciens atmiņas, rieciens RAM, 775 00:34:31,920 --> 00:34:33,920 kas ir tikai izmanto jebkurā laikā funkciju sauc. 776 00:34:33,920 --> 00:34:36,239 Jebkurā laikā jūs, programmētājs, zvanu funkciju, 777 00:34:36,239 --> 00:34:38,860 operētājsistēmu, piemēram, Mac OS, Windows, vai Linux, 778 00:34:38,860 --> 00:34:41,920 grabs ķekars baitu, varbūt daži kilobaiti, varbūt daži megabaiti 779 00:34:41,920 --> 00:34:44,590 atmiņas, rokas viņiem jums, un pēc tam ļauj 780 00:34:44,590 --> 00:34:47,650 jūs vadāt savu funkciju, izmantojot neatkarīgi mainīgie jums nepieciešams. 781 00:34:47,650 --> 00:34:50,699 Un, ja jūs pēc tam zvanīt vēl funkcija un citas funkcijas, 782 00:34:50,699 --> 00:34:53,590 jums vēl šķēle atmiņas un vēl šķēle atmiņas. 783 00:34:53,590 --> 00:34:57,090 >> Un tiešām, ja šie zaļo paplātes no Annenberg pārstāvēt šo atmiņu, 784 00:34:57,090 --> 00:34:59,870 Lūk, kas notiek pirmo reizi reizi, kad zvanu funkciju sigma. 785 00:34:59,870 --> 00:35:04,510 Tas ir tāpat kā liekot paplāti kā šis par to, kas sākotnēji tukša kaudze. 786 00:35:04,510 --> 00:35:07,142 Bet tad, ja kas paplāte sevi dēvē, tā sakot, 787 00:35:07,142 --> 00:35:08,850 zvanot citu instanci no sigma, kas ir 788 00:35:08,850 --> 00:35:11,640 piemēram, lūdzot operētājsistēmu, ooh, vajag mazliet vairāk atmiņas, 789 00:35:11,640 --> 00:35:12,520 dod man to. 790 00:35:12,520 --> 00:35:14,840 Un tad tā izpaužas piled uz augšu. 791 00:35:14,840 --> 00:35:18,030 Bet kas ir galvenais šeit ir tas, ka Pirmais paplāte joprojām pastāv, 792 00:35:18,030 --> 00:35:20,620 tāpēc, ka viņš atsaucās šo otro tekni. 793 00:35:20,620 --> 00:35:23,500 Tagad tikmēr, sigma zvaniet sigma, tas ir tāpat lūdzot vairāk atmiņas. 794 00:35:23,500 --> 00:35:25,830 Izpaužas sakrauj uz vairāk nekā šeit. 795 00:35:25,830 --> 00:35:29,350 sigma zvanīt sigma, tas ir cits paplāte, kas izpaužas sakrauj šeit. 796 00:35:29,350 --> 00:35:32,942 Un, ja jūs paturiet darot, beidzot, sava veida karti šo vizuālo 797 00:35:32,942 --> 00:35:35,525 šai diagrammas, kas dodas uz notikt ar kaudze paplātes? 798 00:35:35,525 --> 00:35:37,480 799 00:35:37,480 --> 00:35:41,160 Tā gatavojas pārsniegt summu atmiņas jūsu dators ir. 800 00:35:41,160 --> 00:35:45,790 Un tiklīdz šo zaļo paplāte pārsniedz horizontālo līniju 801 00:35:45,790 --> 00:35:49,410 virs skursteņa un virs šī vārdu kaudze, ko mēs atgriezties nākotnē, 802 00:35:49,410 --> 00:35:50,410 , ka ir slikti. 803 00:35:50,410 --> 00:35:52,810 Kaudze ir atšķirīgs segments atmiņas, 804 00:35:52,810 --> 00:35:55,190 un, ja jūs dariet šos paplātes pāļu un pāļu tālāk, 805 00:35:55,190 --> 00:35:57,800 jūs gatavojas pārsniegt savu segments atmiņas, 806 00:35:57,800 --> 00:36:00,420 un programma ir patiešām gatavojas crash. 807 00:36:00,420 --> 00:36:02,930 >> Tagad, kā malā, šo ideju no recursion, tādēļ, 808 00:36:02,930 --> 00:36:06,500 var skaidri radīt problēmas, bet tas nebūt nav slikti. 809 00:36:06,500 --> 00:36:08,840 Jo uzskatu, pēc viss, how-- un varbūt 810 00:36:08,840 --> 00:36:11,700 tas ņem daži kļūst izmantoti līdz --how elegants vai kā vienkāršs 811 00:36:11,700 --> 00:36:14,890 ka īstenošana sigma bija. 812 00:36:14,890 --> 00:36:17,440 Un mēs nebrauksim, lai izmantotu rekursijas viss, kas daudz CS50, 813 00:36:17,440 --> 00:36:20,780 bet CS51, un tiešām nekādu klase kur jums manipulēt datu struktūras 814 00:36:20,780 --> 00:36:23,640 piemēram, koki, vai ģimenes koku, ka ir kāda hierarhija, 815 00:36:23,640 --> 00:36:26,000 tas ir super, super noderīga. 816 00:36:26,000 --> 00:36:29,750 Tagad, kā malā, tā, ka jums kā topošajiem datorzinātnieku 817 00:36:29,750 --> 00:36:33,180 ir pazīstami ar kādu no Google iekšpusē joki, ja jūs doties uz Google 818 00:36:33,180 --> 00:36:36,345 un paskatās uz augšu, kas ir definīcija, teiksim, rekursijas, ievadiet. 819 00:36:36,345 --> 00:36:40,208 820 00:36:40,208 --> 00:36:41,110 Uh-huh. 821 00:36:41,110 --> 00:36:42,670 Kā malā, es velk uz augšu maz. 822 00:36:42,670 --> 00:36:45,470 Tas bija, piemēram, 10 minūšu laikā vilcināšanās šorīt. 823 00:36:45,470 --> 00:36:52,890 Ja jums ir arī Google "šķībi," paziņojums , paceļot galvu slightly-- 824 00:36:52,890 --> 00:36:55,120 un tad tas viens ir iespējams visnežēlīgākajiem no visiem 825 00:36:55,120 --> 00:36:57,286 jo kāds pavadīja patīk viņu diena īstenojot šo 826 00:36:57,286 --> 00:36:59,880 dažus gadus ago-- come on. 827 00:36:59,880 --> 00:37:01,140 828 00:37:01,140 --> 00:37:04,540 Ak, wait-- tas ir bug. 829 00:37:04,540 --> 00:37:08,410 830 00:37:08,410 --> 00:37:11,410 >> Tātad darbojas uz vienu no pasaules lielākais mājas lapas 831 00:37:11,410 --> 00:37:13,510 šie stulba maz Lieldienu olas. 832 00:37:13,510 --> 00:37:16,690 Viņi, iespējams, patērē netriviāls skaits koda rindiņas 833 00:37:16,690 --> 00:37:19,280 tikai tāpēc, ka mēs varētu būt maz jautras lietas, piemēram, ka. 834 00:37:19,280 --> 00:37:22,140 Bet vismaz tagad jums daži no šiem iekšā jokiem. 835 00:37:22,140 --> 00:37:28,330 >> Tagad pieņemsim apskatīt dažas balta slēpjas mēs esam stāsta par vēlu, 836 00:37:28,330 --> 00:37:30,707 un sāk lobīties atpakaļ daži slāņi tehniski 837 00:37:30,707 --> 00:37:32,790 tā, ka jūs patiešām saprotat kas ir bijis notiek 838 00:37:32,790 --> 00:37:34,860 un jūs varat saprast daži no draudiem, 839 00:37:34,860 --> 00:37:38,060 tāpat Shellshock, ka tagad sāka kļūt 840 00:37:38,060 --> 00:37:41,110 priekšplānā ikvienam s uzmanību, vismaz medijos. 841 00:37:41,110 --> 00:37:45,810 Tātad, šeit ir ļoti vienkārša funkcija kas atgriež neko, par spēkā neesošu. 842 00:37:45,810 --> 00:37:46,790 Tās nosaukums ir swap. 843 00:37:46,790 --> 00:37:50,880 Tas aizņem divas mainīgajiem un tas atgriež neko. 844 00:37:50,880 --> 00:37:52,260 Stājas in a un b. 845 00:37:52,260 --> 00:37:53,337 Tik ātri demonstrācija. 846 00:37:53,337 --> 00:37:54,170 Mēs celta šiem augšu. 847 00:37:54,170 --> 00:37:56,100 Mēs varētu arī nedaudz pārtraukums šeit tikai brīdi 848 00:37:56,100 --> 00:37:57,250 un ir nedaudz kaut ko dzert. 849 00:37:57,250 --> 00:38:00,120 Ja kāds nebūtu prāta savieno me up šeit tikai brīdi. 850 00:38:00,120 --> 00:38:01,830 Kā par jums ir sarkanbrūns krekls? 851 00:38:01,830 --> 00:38:02,335 Nāciet uz augšu. 852 00:38:02,335 --> 00:38:04,060 853 00:38:04,060 --> 00:38:05,260 Tikai vienu šodien. 854 00:38:05,260 --> 00:38:06,251 Paldies, though. 855 00:38:06,251 --> 00:38:08,000 Visas tiesības, un mums ir nāk uz augšu, kas šeit? 856 00:38:08,000 --> 00:38:08,660 Kāds ir tavs vārds? 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 Nāciet uz augšu. 860 00:38:10,370 --> 00:38:11,460 861 00:38:11,460 --> 00:38:13,850 Tātad Laura, ļoti vienkāršs uzdevums šodien. 862 00:38:13,850 --> 00:38:14,704 863 00:38:14,704 --> 00:38:15,370 Prieks iepazīties yo. 864 00:38:15,370 --> 00:38:16,410 865 00:38:16,410 --> 00:38:16,910 Viss labi. 866 00:38:16,910 --> 00:38:21,179 Tātad mums ir dažas piena nekā šeit un mums ir dažas apelsīnu sulas pār šeit 867 00:38:21,179 --> 00:38:23,345 un dažas tases, ka mēs aizgūts no Annenberg šodien. 868 00:38:23,345 --> 00:38:24,178 >> SPEAKER 4: Borrowed. 869 00:38:24,178 --> 00:38:27,240 SPEAKER 1: Un gatavojas iet uz priekšu un jums pusglāzi šo. 870 00:38:27,240 --> 00:38:28,250 871 00:38:28,250 --> 00:38:28,800 Viss labi. 872 00:38:28,800 --> 00:38:30,750 Un mēs jums pusi glāze piena. 873 00:38:30,750 --> 00:38:31,905 874 00:38:31,905 --> 00:38:35,890 Ak, un tikai tāpēc, ka jūs varat atcerēties, kas tas bija, piemēram, 875 00:38:35,890 --> 00:38:38,860 Atcerējos, lai šo augšu un šodien. 876 00:38:38,860 --> 00:38:42,030 877 00:38:42,030 --> 00:38:42,530 Labi. 878 00:38:42,530 --> 00:38:45,470 Ja jūs neiebilstat, redzēsim, mēs varat viņus pār savām brillēm 879 00:38:45,470 --> 00:38:46,560 ja vēlaties. 880 00:38:46,560 --> 00:38:48,710 Tas būs pasaulē no Lauras acīm. 881 00:38:48,710 --> 00:38:49,210 Viss labi. 882 00:38:49,210 --> 00:38:53,820 Tātad jūsu mērķis, ņemot vērā divas tases šķidrums šeit, piens un apelsīnu sulu, 883 00:38:53,820 --> 00:38:58,370 ir apmainīt divus saturu tā, ka apelsīnu sula tērēta piena kauss 884 00:38:58,370 --> 00:39:00,710 un piena tērēta apelsīnu sulas glāze. 885 00:39:00,710 --> 00:39:02,359 >> SPEAKER 4: Vai es varu saņemt vēl vienu tasi? 886 00:39:02,359 --> 00:39:05,650 SPEAKER 1: Es esmu tik priecīgs jums jautāja, lai gan tas būtu bijis daudz labāk kadrus 887 00:39:05,650 --> 00:39:06,710 ja jūs nebūtu lūgusi. 888 00:39:06,710 --> 00:39:10,620 Bet jā, mēs varam piedāvāt jums trešā kauss, kas ir tukša, protams. 889 00:39:10,620 --> 00:39:11,120 Viss labi. 890 00:39:11,120 --> 00:39:12,300 Tātad swap saturu tur. 891 00:39:12,300 --> 00:39:16,100 892 00:39:16,100 --> 00:39:17,050 Ļoti jauki. 893 00:39:17,050 --> 00:39:20,390 894 00:39:20,390 --> 00:39:21,305 Ļoti labs. 895 00:39:21,305 --> 00:39:23,121 896 00:39:23,121 --> 00:39:24,745 Jūs darāt to ļoti uzmanīgi. 897 00:39:24,745 --> 00:39:26,970 898 00:39:26,970 --> 00:39:28,655 Un soli trīs. 899 00:39:28,655 --> 00:39:30,390 900 00:39:30,390 --> 00:39:31,350 Viss labi. 901 00:39:31,350 --> 00:39:31,930 Excellent. 902 00:39:31,930 --> 00:39:33,930 Liels kārta aplausi būtu labi Lauru. 903 00:39:33,930 --> 00:39:36,500 904 00:39:36,500 --> 00:39:37,000 Viss labi. 905 00:39:37,000 --> 00:39:40,790 Mums ir maz atvadīšanās dāvanu jums, bet ļaujiet man izmantot šos. 906 00:39:40,790 --> 00:39:42,620 Thank you so much. 907 00:39:42,620 --> 00:39:46,170 Tik vienkāršs piemērs, lai gan, , lai pierādītu, ka, ja jūs 908 00:39:46,170 --> 00:39:48,300 vēlas apmainīt saturu divu konteineru 909 00:39:48,300 --> 00:39:52,360 vai sauksim tos mainīgos, jums ir nepieciešams zināms pagaidu uzglabāšanu 910 00:39:52,360 --> 00:39:56,710 uz kādu no satura iestudē tik ka jūs faktiski var darīt swap. 911 00:39:56,710 --> 00:40:01,790 Tik tiešām, tas pirmkodu up šeit C tiek uzrādīts tieši tā. 912 00:40:01,790 --> 00:40:06,340 Ja apelsīnu sula bija un piens bija b, un mēs vēlējāmies, lai mijmaiņas divas, 913 00:40:06,340 --> 00:40:08,990 jūs varētu mēģināt kaut ko radošu , uzlejot viens uz otra, 914 00:40:08,990 --> 00:40:11,031 bet tas, iespējams, nebūtu galu īpaši labi. 915 00:40:11,031 --> 00:40:15,260 Un tāpēc mēs izmantojam trešo kauss, zvanu tā tmp, T-M-P pēc vienošanās, 916 00:40:15,260 --> 00:40:19,370 un nodot saturu OJ jo, tad swap vienu tasi, 917 00:40:19,370 --> 00:40:22,610 tad ielieciet OV stājas oriģināls kauss, tādējādi 918 00:40:22,610 --> 00:40:25,320 sasniegšanā, tieši tā, kā Laura darīja, mijmaiņas. 919 00:40:25,320 --> 00:40:26,850 >> Tāpēc pieņemsim darīt tieši to. 920 00:40:26,850 --> 00:40:30,110 Ļaujiet man iet uz priekšu un atvērt up piemēru, kas ir 921 00:40:30,110 --> 00:40:32,720 faktiski sauc par "nē swap ", jo tas nav 922 00:40:32,720 --> 00:40:36,180 kā vienkārši izdarīt, kā jūs varētu domāt. 923 00:40:36,180 --> 00:40:41,190 Tātad šajā programmā, ievērosiet, ka Es esmu, izmantojot stdio.h, mūsu vecais draugs. 924 00:40:41,190 --> 00:40:43,130 Man ir prototipu par mijmaiņas tur augšā, kas 925 00:40:43,130 --> 00:40:45,450 nozīmē, ka tā īstenošana ir iespējams zemāk, 926 00:40:45,450 --> 00:40:48,050 un redzēsim, ko tas galvenais Programma gatavojas darīt man. 927 00:40:48,050 --> 00:40:52,020 Es pirmo reizi apliecinu int x izpaužas viens, un int y izpaužas divi. 928 00:40:52,020 --> 00:40:54,930 Tāpēc domāju, ka no tiem, kā OV un pienu, attiecīgi. 929 00:40:54,930 --> 00:40:57,100 Un tad es vienkārši ir printf sakot x tas ir 930 00:40:57,100 --> 00:41:00,120 un y ir tas, tikai tāpēc es varu vizuāli redzēt, kas notiek. 931 00:41:00,120 --> 00:41:03,810 Tad man ir printf apgalvojot , ka es esmu pārnešana divas, 932 00:41:03,810 --> 00:41:07,100 un tad es izdrukāt apgalvo, ka viņi samainīti, 933 00:41:07,100 --> 00:41:09,300 un es izdrukāt x un y vēlreiz. 934 00:41:09,300 --> 00:41:13,010 Tātad, noteikti šeit mijmaiņa tieši to, ko Laura darīja, 935 00:41:13,010 --> 00:41:16,240 un tieši to, ko mēs redzējām ekrāns pirms brīža. 936 00:41:16,240 --> 00:41:19,380 >> Tāpēc iesim uz priekšu un būt ļoti vīlušies. 937 00:41:19,380 --> 00:41:24,690 Marka nav swap, un palaist bez swap, uzklikšķinot uz produkciju šeit. 938 00:41:24,690 --> 00:41:28,320 Ievadiet x ir 1, y 2, pārnešana nomainīju. 939 00:41:28,320 --> 00:41:32,700 x joprojām ir 1, un Y ir vēl 2. 940 00:41:32,700 --> 00:41:37,630 Tātad, pat ja, godīgi sakot, tas izskatās tieši tāpat, lai gan vairāk tehniski, 941 00:41:37,630 --> 00:41:40,730 ko Laura darīja, nešķita strādāt. 942 00:41:40,730 --> 00:41:42,130 Tātad, kāpēc ir tā, ka? 943 00:41:42,130 --> 00:41:46,630 Nu, izrādās, ka tad, kad mēs uzrakstīt programmu, kā šis 944 00:41:46,630 --> 00:41:51,590 , kas ir gan galvenais, uzsvēra šeit, un tad vēl funkcijas, piemēram, swap, 945 00:41:51,590 --> 00:41:54,230 uzsvēra šeit, kas tā aicina, pasaule 946 00:41:54,230 --> 00:41:57,030 izskatās nedaudz kaut kas līdzīgs šie paplātes brīdi atpakaļ. 947 00:41:57,030 --> 00:42:00,440 Kad galvenais pirmkārt izpaužas sauc, tas ir, piemēram, lūdzot operētājsistēmu 948 00:42:00,440 --> 00:42:04,030 mazliet atmiņas par jebkuru vietējo mainīgie, piemēram, x un y, ka galvenais ir, 949 00:42:04,030 --> 00:42:05,660 un viņi galu galā turpat. 950 00:42:05,660 --> 00:42:10,920 Bet, ja galvenie zvani swap, un galvenais iet apmainīt divus argumentus, A un B, 951 00:42:10,920 --> 00:42:16,410 apelsīnu sulu un pienu, tas nepatīk nododot apelsīnu sulu un pienu 952 00:42:16,410 --> 00:42:17,500 līdz Laura. 953 00:42:17,500 --> 00:42:21,300 Kas dators dara, ir tā, iet kopijas apelsīnu sulas 954 00:42:21,300 --> 00:42:27,110 un kopijas pienu Laura, tāpēc, ka kas ir galu galā iekšā šīs paplātes 955 00:42:27,110 --> 00:42:32,510 ir vērtība viens un divi vai OV un piena, bet kopijas, 956 00:42:32,510 --> 00:42:34,790 tā, ka šajā brīdī stāsts, tur 957 00:42:34,790 --> 00:42:36,930 ir OV un pienu katrā no šīm paplātes. 958 00:42:36,930 --> 00:42:39,260 Tur ir viens un divi katrā no šiem paplātes, 959 00:42:39,260 --> 00:42:41,720 un mijmaiņas funkcija patiešām strādā. 960 00:42:41,720 --> 00:42:46,090 Tas pārnešana tās iekšpusē Otrās augšējais paplātes, 961 00:42:46,090 --> 00:42:48,147 bet pārnešana neietekmē. 962 00:42:48,147 --> 00:42:49,980 Un, pamatojoties uz tikai daži pamatprincips mēs esam 963 00:42:49,980 --> 00:42:52,970 runāja par pirms, un patiešām tikai pirms dažām minūtēm, kas 964 00:42:52,970 --> 00:42:58,770 varētu izskaidrot, kāpēc mainās a un b iekšpusē noņemamo 965 00:42:58,770 --> 00:43:05,560 nav nekādas ietekmes uz x un y, kaut gan Es pagājis X un Y, lai mijmaiņas funkciju. 966 00:43:05,560 --> 00:43:08,750 Kas ir atslēgas vārds šeit, ka varētu vienkāršoti izskaidrot? 967 00:43:08,750 --> 00:43:11,250 968 00:43:11,250 --> 00:43:12,627 Es domāju, ka es dzirdēju to šeit? 969 00:43:12,627 --> 00:43:13,335 AUDITORIJA: Return. 970 00:43:13,335 --> 00:43:14,085 SPEAKER 1: Return? 971 00:43:14,085 --> 00:43:14,590 Neatgriežas. 972 00:43:14,590 --> 00:43:15,895 Iesim ar vienu citu. 973 00:43:15,895 --> 00:43:16,395 Kas tas ir? 974 00:43:16,395 --> 00:43:17,080 >> AUDITORIJA: [nedzirdama]. 975 00:43:17,080 --> 00:43:20,000 >> SPEAKER 1: Labi, tāpēc return-- mēs varētu padarīt atgriešanās darbu stāsts, 976 00:43:20,000 --> 00:43:21,914 bet tur pat vienkāršāka izskaidrojums. 977 00:43:21,914 --> 00:43:22,580 AUDITORIJA: joma. 978 00:43:22,580 --> 00:43:23,288 SPEAKER 1: joma. 979 00:43:23,288 --> 00:43:24,300 Es ņemšu jomu. 980 00:43:24,300 --> 00:43:27,290 Tā joma, atcerēties, kur Mūsu x un y deklarētas. 981 00:43:27,290 --> 00:43:30,840 Viņi paziņoja, iekšpusē Galveno labi šeit. 982 00:43:30,840 --> 00:43:33,200 a un b, tikmēr, ir efektīvi deklarēta 983 00:43:33,200 --> 00:43:35,930 iekšpusē mijmaiņas, nav gluži cirtaini bikšturi, bet joprojām 984 00:43:35,930 --> 00:43:37,690 vispārējā jomā mijmaiņas. 985 00:43:37,690 --> 00:43:40,560 Un tik tiešām, un b pastāvēt tikai šajā paplātes 986 00:43:40,560 --> 00:43:44,850 no Annenberg šis otrais rieciens kodu. 987 00:43:44,850 --> 00:43:49,500 Tātad, mēs esam patiešām mainās kopiju, bet tas nav īsti viss, kas noderīga. 988 00:43:49,500 --> 00:43:52,190 >> Tātad, pieņemsim to apskatīt Tas nedaudz zemākā līmenī. 989 00:43:52,190 --> 00:43:55,430 Es iešu atpakaļ Source Directory, 990 00:43:55,430 --> 00:43:58,330 un es esmu gatavojas vispirms tuvinātu šeit, un tikai 991 00:43:58,330 --> 00:44:02,290 , lai apstiprinātu, ka es esmu šajā lielāks termināla logu, 992 00:44:02,290 --> 00:44:04,430 Programma joprojām uzvedas tāpat. 993 00:44:04,430 --> 00:44:06,840 Pieņemsim tagad, ka šis nav apzināta. 994 00:44:06,840 --> 00:44:10,090 Skaidri es gribēju swap uz darbs, tāpēc tas jūtas kā bug. 995 00:44:10,090 --> 00:44:12,780 Tagad es varētu sākt pievienot no printf gados uz manu kodu daudz, 996 00:44:12,780 --> 00:44:16,010 izdrukāšana x vairāk nekā šeit, y vairāk šeit, nekā šeit, b nekā šeit. 997 00:44:16,010 --> 00:44:18,220 Bet atklāti sakot, tas ir iespējams, ko jums ir darīt uz pāris nedēļām 998 00:44:18,220 --> 00:44:20,190 tagad, darba laikā un mājās, strādājot 999 00:44:20,190 --> 00:44:22,150 par psets cenšas atrast dažas kļūdas. 1000 00:44:22,150 --> 00:44:25,560 Bet jūs redzēsiet, ja jums vēl nav, ka problēma noteikti trīs iepazīstina jūs 1001 00:44:25,560 --> 00:44:31,630 ar komandu sauc GDB, kur GDB, GNU atkļūdotājs 1002 00:44:31,630 --> 00:44:34,040 ir pati visu ķekars iezīmes, kas faktiski var 1003 00:44:34,040 --> 00:44:38,160 ļaujiet mums saprast situācijas , piemēram, tas, bet vairāk pārliecinoši, 1004 00:44:38,160 --> 00:44:39,940 risināt problēmas un atrast kļūdas. 1005 00:44:39,940 --> 00:44:40,940 Tāpēc es esmu gatavojas darīt. 1006 00:44:40,940 --> 00:44:44,770 Tā vietā, lai ./noswap, es esmu tā vietā gatavojas palaist GDB ./noswap. 1007 00:44:44,770 --> 00:44:47,410 1008 00:44:47,410 --> 00:44:51,200 Citiem vārdiem sakot, es esmu gatavojas palaist manu programma nav Bash, mūsu jaunais draugs 1009 00:44:51,200 --> 00:44:51,850 šodien. 1010 00:44:51,850 --> 00:44:53,970 Es esmu gatavojas palaist manu Programma noswap iekšā 1011 00:44:53,970 --> 00:44:56,900 Šīs citu programmu, ko sauc GDB, kas ir atkļūdotājs, kas 1012 00:44:56,900 --> 00:45:01,035 ir programma, kas ir izstrādāta, lai palīdzētu jūs cilvēkus atrast un noņemt kļūdas. 1013 00:45:01,035 --> 00:45:03,410 Tātad, ja es hit Run šeit, tur ir zvērīgās teksta apjoms 1014 00:45:03,410 --> 00:45:04,868 kas jums patiešām nekad nav lasīt. 1015 00:45:04,868 --> 00:45:07,290 Tas ir būtībā izklaidēšanās no uzvednes, kas 1016 00:45:07,290 --> 00:45:10,030 Es esmu gatavojas hit Control-L piecelties augšpusē tur. 1017 00:45:10,030 --> 00:45:11,800 Tas ir GDB ātri. 1018 00:45:11,800 --> 00:45:15,550 Ja es gribu, lai palaistu šo programmu tagad, kā šo maz apkrāptu lapas par šodienas 1019 00:45:15,550 --> 00:45:21,860 slide liecina, Run ir pirmais komandas, kas mums domāts, lai ieviestu. 1020 00:45:21,860 --> 00:45:25,150 Un es esmu tikai gatavojas rakstīt palaist šeit iekšpusē GDB, 1021 00:45:25,150 --> 00:45:26,811 un tas patiešām bija mana programma. 1022 00:45:26,811 --> 00:45:29,310 Tagad tur ir dažas papildu produkciju kā šis ekrāns, 1023 00:45:29,310 --> 00:45:31,910 bet tas ir GDB vienkārši ir anālais un stāsta mums to, kas notiek. 1024 00:45:31,910 --> 00:45:34,451 Jums nav īsti jāuztraucas par šīm detaļām tieši tagad. 1025 00:45:34,451 --> 00:45:36,890 Bet to, kas ir patiešām atdzist par GDB, ja es to izdarītu again-- 1026 00:45:36,890 --> 00:45:42,100 Control-L notīra screen-- ļaujiet man iet priekšu un tips "break galvenais," tādējādi, 1027 00:45:42,100 --> 00:45:45,743 kad es hit Enter, nosakot, kas ir sauc lūzuma punkts pie noswap.c, 1028 00:45:45,743 --> 00:45:51,270 line 16, kas ir, ja GDB sapratu, mana programma faktiski 1029 00:45:51,270 --> 00:45:53,070 ir, mana funkcija patiesībā ir. 1030 00:45:53,070 --> 00:45:55,070 Tas mēs ignorēt tagad bet tas ir adrese 1031 00:45:55,070 --> 00:45:57,310 atmiņā īpaši šīs funkcijas. 1032 00:45:57,310 --> 00:46:00,240 Tāpēc tagad, kad es tipa palaist, paziņojums, kas ir cool šeit. 1033 00:46:00,240 --> 00:46:05,650 Mana programma pārtraukumiem pie līnijas I teicis GDB lai apturētu izpildi at. 1034 00:46:05,650 --> 00:46:09,850 Tāpēc man nav tagad mainīt savu kodu, pievienot dažas printf s, recompile to, atkārto 1035 00:46:09,850 --> 00:46:13,300 tas, mainīt, pievienot dažas printf s, saglabājiet to, recompile to, palaist to. 1036 00:46:13,300 --> 00:46:18,100 Es varu vienkārši pastaigāties pa manu programmu soli pa solim pa solim pie cilvēka ātrumu, 1037 00:46:18,100 --> 00:46:20,880 nevis Intel iekšpusē veida ātrumu. 1038 00:46:20,880 --> 00:46:24,580 >> Tātad tagad paziņojums šo līniju parādās šeit, un, ja es dodos atpakaļ 1039 00:46:24,580 --> 00:46:27,800 uz manu programmu gedit, ievēroju, ka tas ir faktiski 1040 00:46:27,800 --> 00:46:29,280 ļoti pirmajā rindā kodu. 1041 00:46:29,280 --> 00:46:31,240 Tur ir 16 līnija gedit. 1042 00:46:31,240 --> 00:46:34,610 Tur ir 16 līnijas ietvaros GDB, un pat lai gan šī melnā un baltā interfeiss 1043 00:46:34,610 --> 00:46:37,760 nav gandrīz kā lietotājam draudzīgi, tas nozīmē 1044 00:46:37,760 --> 00:46:41,680 ka līnija 16 nav ticis izpildīts vēl, bet tas ir par to, lai būtu. 1045 00:46:41,680 --> 00:46:46,220 Tik tiešām, ja es tipa print x, ne printf, tikai drukāt x, 1046 00:46:46,220 --> 00:46:50,730 Man dabūt viltus vērtību tur nulle, jo x vēl nav inicializēts. 1047 00:46:50,730 --> 00:46:54,760 Tāpēc es esmu gatavojas rakstīt nākamo, vai arī, ja jums vēlas būt iedomātā, tikai n uz nākamo. 1048 00:46:54,760 --> 00:46:59,090 Bet, kad es tipa nākamais ieiet, tagad pamanāt, ka tas pārceļas uz līnijas 17. 1049 00:46:59,090 --> 00:47:02,840 Tātad loģiski, ja es esmu izpildīts 16 līnijas, un es tagad tipa drukas x, 1050 00:47:02,840 --> 00:47:03,640 ko man vajadzētu redzēt? 1051 00:47:03,640 --> 00:47:04,970 1052 00:47:04,970 --> 00:47:05,520 One. 1053 00:47:05,520 --> 00:47:07,820 >> Un tagad tas ir, protams, mulsinoši. 1054 00:47:07,820 --> 00:47:11,260 2 $ ir tikai iedomātā veids, ja jums vēlas atsaukties uz šo vērtību vēlāk, 1055 00:47:11,260 --> 00:47:12,510 Jūs varat teikt, "dolāra paraksta divi." 1056 00:47:12,510 --> 00:47:13,480 Tas ir tāpat kā atpakaļ atsauces. 1057 00:47:13,480 --> 00:47:14,570 Bet tagad, vienkārši ignorēt to. 1058 00:47:14,570 --> 00:47:17,070 Kas ir interesanti ir tas, kas ir labajā pusē vienādības zīmi. 1059 00:47:17,070 --> 00:47:21,000 Un tagad, ja es tipa nākamais atkal un drukas y, man vajadzētu redzēt 2. 1060 00:47:21,000 --> 00:47:23,870 Es varu tagad arī izdrukāt x atkal, un godīgi sakot, 1061 00:47:23,870 --> 00:47:27,130 ja es saņemu nedaudz apmulsis par to, kur es esmu, es varu ierakstīt sarakstu sarakstu 1062 00:47:27,130 --> 00:47:30,590 un tikai redzēt kādu kontekstu ap Es punkts esmu faktiski ir. 1063 00:47:30,590 --> 00:47:35,180 Un tagad es varu ierakstīt nākamais, un tur x ir 1. 1064 00:47:35,180 --> 00:47:36,300 Tagad es tipa nākamo. 1065 00:47:36,300 --> 00:47:37,710 Ak, y ir 2. 1066 00:47:37,710 --> 00:47:40,750 Un atkal, tas ir mulsinoši, jo GDB produkcijas 1067 00:47:40,750 --> 00:47:43,044 tiek sajaukti ar savu produkciju. 1068 00:47:43,044 --> 00:47:45,710 Bet, ja jūs paturiet prātā, ko glancing un atpakaļ uz savu kodu 1069 00:47:45,710 --> 00:47:47,740 vai ar ko to ārā pusē blakus varbūt, jūs 1070 00:47:47,740 --> 00:47:51,020 redzēt, ka tiešām es esmu tikai pastiprināšanu caur manu programmu. 1071 00:47:51,020 --> 00:47:54,620 >> Bet paziņojums, kas notiek tālāk, burtiski. 1072 00:47:54,620 --> 00:47:56,380 Lūk line 22. 1073 00:47:56,380 --> 00:48:01,315 Ļaujiet man iet pār to, tādējādi pārejot 23, un, ja es izdrukāt x tagad, joprojām ir viena. 1074 00:48:01,315 --> 00:48:03,890 Un, ja es izdrukāt y tagad, joprojām ir viena. 1075 00:48:03,890 --> 00:48:05,820 Tātad tas nav interesants. 1076 00:48:05,820 --> 00:48:07,450 Tātad pieņemsim pārtaisīt to. 1077 00:48:07,450 --> 00:48:10,069 Ļaujiet man iet atpakaļ uz augšu top un tips palaist vēlreiz. 1078 00:48:10,069 --> 00:48:12,110 Un tas ir saprotams programmu , kas ir tiek debugged 1079 00:48:12,110 --> 00:48:14,109 jau ir sākusies, sākās no sākuma. 1080 00:48:14,109 --> 00:48:15,420 Jā, pieņemsim darīt atkal. 1081 00:48:15,420 --> 00:48:22,000 Un šoreiz pieņemsim darīt tālāk, nākamais, nākamais, nākamais, nākamais, 1082 00:48:22,000 --> 00:48:24,180 bet tagad lietas iegūt interesantu. 1083 00:48:24,180 --> 00:48:27,760 Tagad es gribu, lai soli swap, tāpēc man nav rakstīt nākamo. 1084 00:48:27,760 --> 00:48:34,380 Es tipa soli, un tagad pamanīt ir pieaudzis man noswap.c līnija 33. 1085 00:48:34,380 --> 00:48:37,240 Ja es dodos atpakaļ uz gedit, kas ir 33 līnijas? 1086 00:48:37,240 --> 00:48:40,500 Tas ir pirmais faktiskais līnija koda iekšpusē swap. 1087 00:48:40,500 --> 00:48:44,150 Kas ir jauki, jo tagad es varu veida kule apkārt un saņemt ziņkārīgs 1088 00:48:44,150 --> 00:48:46,052 par to, kas notiek patiesi tur. 1089 00:48:46,052 --> 00:48:46,760 Ļaujiet man drukāt tmp. 1090 00:48:46,760 --> 00:48:47,770 1091 00:48:47,770 --> 00:48:48,800 Paga. 1092 00:48:48,800 --> 00:48:51,438 Kāpēc TMP ir daži traks, viltus atkritumu vērtība? 1093 00:48:51,438 --> 00:48:54,579 1094 00:48:54,579 --> 00:48:56,120 AUDITORIJA: Tas nav inicializēts. 1095 00:48:56,120 --> 00:48:57,150 SPEAKER 1: Tas nav inicializēts. 1096 00:48:57,150 --> 00:49:00,270 Un tiešām, palaižot programmu, jūs esat dota visu ķekars atmiņas 1097 00:49:00,270 --> 00:49:03,392 operētājsistēma, bet jūs nav inicializēts nekādas vērtības, 1098 00:49:03,392 --> 00:49:05,600 lai kāds bits tu esi redzēt šeit, pat ja tas ir 1099 00:49:05,600 --> 00:49:07,770 šo crazy liels negatīvs numurs, tikai nozīmē, 1100 00:49:07,770 --> 00:49:10,750 ka tie ir paliekas no daži iepriekšējā izmantošana šajā RAM, 1101 00:49:10,750 --> 00:49:13,050 lai gan man nav pats nepieciešams to vēl. 1102 00:49:13,050 --> 00:49:17,086 Tāpēc tagad es esmu gatavojas iet uz priekšu un tips nākamais, un, ja es tagad tipa drukas tmp, 1103 00:49:17,086 --> 00:49:17,835 ko man vajadzētu redzēt? 1104 00:49:17,835 --> 00:49:19,570 1105 00:49:19,570 --> 00:49:23,360 Neatkarīgi vērtība bija ir pirmais arguments, vienkārši 1106 00:49:23,360 --> 00:49:25,550 tāpat x bija pirmais lieta tiek pieņemts, 1107 00:49:25,550 --> 00:49:30,450 tik un x ir jābūt vienādam, lai drukātu tmp jāizdrukā man vienu. 1108 00:49:30,450 --> 00:49:36,360 >> Tātad, ko jūs redzēsiet problēmu komplektā trīs ir apmācība par veidu par GDB, 1109 00:49:36,360 --> 00:49:40,020 bet saprast, ka tas ir sākums no apskatīt rīks, kas būs faktiski 1110 00:49:40,020 --> 00:49:42,774 palīdzēs jums atrisināt problēmas tik daudz efektīvāk. 1111 00:49:42,774 --> 00:49:44,690 Ko mēs esam galu galā darīsim trešdien 1112 00:49:44,690 --> 00:49:48,180 ir sāk lobīties atpakaļ dažus slāņus un noņemt dažus mācību riteņiem. 1113 00:49:48,180 --> 00:49:50,496 Ka lieta, ko sauc virkne, kas mēs esam izmanto kādu laiku, 1114 00:49:50,496 --> 00:49:53,370 mēs ejam lēni pieņemt, ka prom no jums un sākt runāt par 1115 00:49:53,370 --> 00:49:55,725 kaut ko vairāk esoterically pazīstams kā char *, 1116 00:49:55,725 --> 00:49:59,550 bet mēs esam gatavojas darīt jauka un Vispirms uzmanīgi, lai gan norādes, 1117 00:49:59,550 --> 00:50:02,730 kā viņi sauc, var izdarīt dažus ļoti sliktas lietas, ja ļaunprātīgi, 1118 00:50:02,730 --> 00:50:06,040 , apskatot nedaudz Claymation no mūsu draugs Nick Parlante no Stenfordas 1119 00:50:06,040 --> 00:50:09,670 Universitātes profesors datorā zinātne, kas salikti kopā šo priekšskatījumu 1120 00:50:09,670 --> 00:50:11,075 par to, kas ir nākt šo trešdien. 1121 00:50:11,075 --> 00:50:12,196 1122 00:50:12,196 --> 00:50:13,400 >> [Video atskaņošana] 1123 00:50:13,400 --> 00:50:13,900 Hei, Binky. 1124 00:50:13,900 --> 00:50:14,930 1125 00:50:14,930 --> 00:50:15,780 Mosties. 1126 00:50:15,780 --> 00:50:17,240 Ir pienācis laiks, lai šautriņu jautri. 1127 00:50:17,240 --> 00:50:18,260 1128 00:50:18,260 --> 00:50:19,350 >> -Ko Tas tāds? 1129 00:50:19,350 --> 00:50:21,150 Uzziniet par norādes? 1130 00:50:21,150 --> 00:50:22,050 Ak, našķis! 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: Tas gaida tevi trešdien. 1134 00:50:25,396 --> 00:50:26,440 Redzēsim jums tad. 1135 00:50:26,440 --> 00:50:27,106 [Video atskaņošana] 1136 00:50:27,106 --> 00:50:30,420 -Un Tagad, Deep Domas, ko Daven Farnham. 1137 00:50:30,420 --> 00:50:33,980 1138 00:50:33,980 --> 00:50:35,900 >> -Kāpēc mēs mācīties C? 1139 00:50:35,900 --> 00:50:36,785 Kāpēc ne +? 1140 00:50:36,785 --> 00:50:38,550 1141 00:50:38,550 --> 00:50:40,910 >> [Smiekli] 1142 00:50:40,910 --> 00:50:42,160 >> [END VIDEO PLAYBACK]