1 00:00:00,000 --> 00:00:12,040 >> [Musiikki soi] 2 00:00:12,040 --> 00:00:16,460 >> SPEAKER 1: Okei, tцєmцє on CS50, ja tцєmцє on alku viikolla neljцє, 3 00:00:16,460 --> 00:00:20,420 ja kuten olet ehkцє kuullut tai lukea, maailma on pцєцєttymцєssцє. 4 00:00:20,420 --> 00:00:23,520 Going ympцєri internet on ollut tiedon ja tietoisuuden 5 00:00:23,520 --> 00:00:27,100 vikojen ohjelma, ohjelmointikieli nimeltцєцєn Bash. 6 00:00:27,100 --> 00:00:32,729 Tцєmцє on ihanan merkkituotteiden kuten Shellshock, tai Bash oven, 7 00:00:32,729 --> 00:00:35,485 mutta artikkeleita, kuten nцєmцє ei ole harvinaista. 8 00:00:35,485 --> 00:00:38,807 Ja itse asiassa monet heistцє tuovat muistoja Heartbleed, 9 00:00:38,807 --> 00:00:41,640 jotka olet ehkцє huomannut Paina takaisin viime kevцєцєnцє, joka 10 00:00:41,640 --> 00:00:43,980 oli vastaavasti varsin dramaattinen. 11 00:00:43,980 --> 00:00:47,110 Nyt nцєistцє teistцє tцєцєllцє tцєnцєцєn, kuinka moni teistцє on, 12 00:00:47,110 --> 00:00:50,330 vaikka et ymmцєrrцє mitцє on kyse, kuullut Shellshock? 13 00:00:50,330 --> 00:00:51,370 14 00:00:51,370 --> 00:00:54,245 Kunnossa, ja kuinka moni teistцє joiden tietokoneet ovat haavoittuvia? 15 00:00:54,245 --> 00:00:55,680 16 00:00:55,680 --> 00:01:00,250 OK, siellцє pitцєisi olla paljon, paljon enemmцєn kцєsiцє juuri nyt, syistцє nцєemme. 17 00:01:00,250 --> 00:01:02,580 >> Katsotaanpa katsomaan mitцє jatkunut tiedotusvцєlineissцє 18 00:01:02,580 --> 00:01:05,304 ja sitten selittцєцє sitцє vцєhцєn tцєцєllцє meille teknisesti. 19 00:01:05,304 --> 00:01:07,670 20 00:01:07,670 --> 00:01:11,250 >> SPEAKER 2: Tietoturva-asiantuntijat ovat varoitti, ettцє vakava virhe saattaa 21 00:01:11,250 --> 00:01:15,650 noin vaikuttaa satoja miljoonat maailman web-kцєyttцєjille. 22 00:01:15,650 --> 00:01:20,600 Sillцє mikцє on vika, joka on ollut puhuttu Shellshock, ja mitцє se tekee? 23 00:01:20,600 --> 00:01:23,720 24 00:01:23,720 --> 00:01:28,910 No, Shellshock tunnetaan myцІs Bash bugi, ohjelmisto se hyцІdyntцєцє. 25 00:01:28,910 --> 00:01:33,230 Hakkerit kцєyttцєvцєt virus scan haavoittuvia jцєrjestelmцєt Linuxia ja Unix 26 00:01:33,230 --> 00:01:36,300 kцєyttцІjцєrjestelmiцє ja sitten tartuttaa ne. 27 00:01:36,300 --> 00:01:38,730 Bash on komentotulkin. 28 00:01:38,730 --> 00:01:43,460 Tцєmцєn avulla kцєyttцєjцєt komentoja kцєynnistцєцє ohjelmia ja ominaisuuksia sisцєllцє ohjelmisto 29 00:01:43,460 --> 00:01:45,250 kirjoittamalla tekstiцє. 30 00:01:45,250 --> 00:01:49,980 Sitцє kцєytetцєцєn tyypillisesti ohjelmoijat, ja ei pitцєisi olla avoin muulle maailmalle, 31 00:01:49,980 --> 00:01:51,590 vaikka Shellshock muuttaa sitцє. 32 00:01:51,590 --> 00:01:54,160 33 00:01:54,160 --> 00:01:57,910 >> No, worringly, jotkut analyytikot Varoitan se voisi olla suurempi uhka, 34 00:01:57,910 --> 00:02:01,580 koska Shellshock mahdollistaa tцєydellisen mцєцєrцєysvallan tartunnan kone, 35 00:02:01,580 --> 00:02:06,030 katsoo Heartbleed sallittu vain hakkerit vakoilla tietokoneisiin. 36 00:02:06,030 --> 00:02:09,130 Se on niin vakava, se on mitoitettu 10 10 37 00:02:09,130 --> 00:02:11,900 vaikeusasteen mukaan kansallinen Haavoittuvuus tietokanta. 38 00:02:11,900 --> 00:02:15,530 39 00:02:15,530 --> 00:02:20,015 2/3 kaikista web-palvelimet ovat riskejцє, kuten jotkut Mac-tietokoneissa. 40 00:02:20,015 --> 00:02:22,760 41 00:02:22,760 --> 00:02:25,600 No, varmista, ettцє olet paikkaamalla jцєrjestelmцєt nyt. 42 00:02:25,600 --> 00:02:29,330 Kuka tahansa hosting verkkosivuilla kцєynnissцє vaikuttaa kцєyttцІjцєrjestelmцєt 43 00:02:29,330 --> 00:02:31,800 tulisi toteuttaa toimia niin pian kuin mahdollista. 44 00:02:31,800 --> 00:02:35,390 Kuka tahansa voi varaa sen pitцєisi nцєyttцєцє niiden seurantaan ja verkkosovellusten 45 00:02:35,390 --> 00:02:37,355 palomuurit varoa mitцєцєn hyцІkkцєyksiцє. 46 00:02:37,355 --> 00:02:39,979 47 00:02:39,979 --> 00:02:41,770 SPEAKER 3: Pahinta mitцє voisi tapahtua on 48 00:02:41,770 --> 00:02:45,080 ettцє joku olisi kirjoittaa koodia, joka automaattisesti mennцє ja skannata 49 00:02:45,080 --> 00:02:48,280 Internet ja vaikuttaisi kaikki nцєmцє tietokoneet. 50 00:02:48,280 --> 00:02:50,710 Ja kun he tekevцєt sen hyvin, Pahinta he voisivat tehdцє 51 00:02:50,710 --> 00:02:53,300 on vain poistaa kaiken, tai sulkea sivustot alas. 52 00:02:53,300 --> 00:02:55,360 Jotta voisimme nцєhdцє vahinko tцєstцє nцєkцІkulmasta, 53 00:02:55,360 --> 00:02:58,300 jos meillцє olisi ilkeцє ihmisiцє joka vain pцєцєttцєцє aiheuttaa tuhoa 54 00:02:58,300 --> 00:03:02,534 saattamalla jцєrjestelmцєt alas tai poistamalla tiedostoja, ja tuollaista. 55 00:03:02,534 --> 00:03:05,200 SPEAKER 2: Jotkut sanovat tцєmцє on yksi kaikkein vaikea mitata 56 00:03:05,200 --> 00:03:08,080 bugeja vuotta, ja se voi kestцєцє viikkoja tai jopa 57 00:03:08,080 --> 00:03:10,820 kuukauden mцєцєrittцєцє sen lopullista vaikutusta. 58 00:03:10,820 --> 00:03:12,180 59 00:03:12,180 --> 00:03:15,560 >> SPEAKER 1: Joten kaikki tцєmцє on totta, mutta hauska juttu on, lцєhes kaikki 60 00:03:15,560 --> 00:03:18,330 ja kuvakieli juuri nцєhnyt, paitsi ehkцє nцєppцєimistцІ, 61 00:03:18,330 --> 00:03:20,930 ei ole mitцєцєn tekemistцє sen kanssa, bug mitцєцєn. 62 00:03:20,930 --> 00:03:23,960 Palvelimet ja johdot ja niin edelleen, Se on tavallaan tangentiaalisesti toisiinsa, 63 00:03:23,960 --> 00:03:27,410 mutta ydin on oikeastaan Б─▀Б─▀aika tuttu, mitцє tцєцєllцє tapahtuu. 64 00:03:27,410 --> 00:03:30,050 Itse haluaisin mennцє meidцєn CS50 laite. 65 00:03:30,050 --> 00:03:32,910 Anna minun mennцє eteenpцєin ja maksimoida pцєцєteikkunassa tцєцєllцє. 66 00:03:32,910 --> 00:03:36,020 Ja te kцєyttцєnyt tцєtцє, tai upotettu versio siitцє, 67 00:03:36,020 --> 00:03:39,460 vuonna gedit voidakseen kirjoittaa ohjelmia, tyypin komentoja, ja niin edelleen, 68 00:03:39,460 --> 00:03:43,690 ja tцєmцє on todella, ja on ollut viikkoja, Bash, B-A-S-H. 69 00:03:43,690 --> 00:03:46,890 Tцєmцє on Bourne-Again Shell, joka on vain hieno tapa sanoa, 70 00:03:46,890 --> 00:03:50,220 Tцєmцє on ohjelma, joka on vilkkuu nopea, tehokas, 71 00:03:50,220 --> 00:03:51,970 joka istuu siellцє odottamassa panos sinulle. 72 00:03:51,970 --> 00:03:53,920 Ja se on kцєsky linja-liitцєntцє, jonka kautta 73 00:03:53,920 --> 00:03:57,650 te on kцєynnissцє komentoja ja lopulta koota ja sitten kцєynnissцє 74 00:03:57,650 --> 00:03:58,400 ohjelmia. 75 00:03:58,400 --> 00:04:01,320 >> Mutta Bash on myцІs ohjelmointi kieli seuraavassa mielessцє. 76 00:04:01,320 --> 00:04:05,460 Tiedцєt, ettцє on olemassa komennot kuten cd ja ls sekцє clang ja muut, 77 00:04:05,460 --> 00:04:09,580 mutta voit mцєцєritellцє omia komentoja toteuttamalla ne Bash. 78 00:04:09,580 --> 00:04:11,420 Nyt emme aio mennцє hyvin yksityiskohtaisesti 79 00:04:11,420 --> 00:04:16,089 kuten bash ohjelmointikieli, mutta tietцєцє esimerkiksi, ettцє tцєllцє hetkellцє, 80 00:04:16,089 --> 00:04:17,607 ei ole mitцєцєn komentoa kutsutaan "hei." 81 00:04:17,607 --> 00:04:19,440 Niin se lцІytyy yksi nцєistцє paketeista. 82 00:04:19,440 --> 00:04:20,856 Se ei ole asennettu tietokoneeseen. 83 00:04:20,856 --> 00:04:21,870 Kysy jцєrjestelmцєnvalvojalta. 84 00:04:21,870 --> 00:04:26,030 Mutta jos haluan siellцє olevan ohjelman nimeltцєцєn "hei" in Bash tai minun nopea, 85 00:04:26,030 --> 00:04:30,810 Voin itse kцєyttцєцє syntaksia, joka on aivan kuten C. Se ei ole aivan sama, 86 00:04:30,810 --> 00:04:35,020 mutta se nцєyttцєцє melko samanlainen toiminto, vaikkakin puuttuu joitakin yksityiskohtia. 87 00:04:35,020 --> 00:04:38,090 Mikцєцєn ei tunnu tapahtuvan, mutta nyt jos kirjoitan "hei" 88 00:04:38,090 --> 00:04:40,960 voit itse kirjoittaa ohjelma, ei C, ei Java, 89 00:04:40,960 --> 00:04:44,280 ei toisessa ohjelmointi kieli, mutta Bash itse. 90 00:04:44,280 --> 00:04:47,630 >> Nyt Tцєrkeintцє tцєssцє on, ettцє kirjoitin name Halusin antaa tцєmцєn uuden kцєskyn, 91 00:04:47,630 --> 00:04:50,820 ja suluissa ovat myцІs symbolinen tцєmцє on tehtцєvцє. 92 00:04:50,820 --> 00:04:54,010 Sivuhuomautuksena, voit myцІs tehdцє hauskaa asioita, ja itse asiassa jopa Mac OS, 93 00:04:54,010 --> 00:04:55,620 tцєmцє on ohjelma nimeltцє Terminal. 94 00:04:55,620 --> 00:04:58,800 Se tulee rakennettu kenenkцєцєn tietokone, jossa on Mac tцєssцє huoneessa, 95 00:04:58,800 --> 00:05:03,640 ja voit tehdцє samanlaisia Б─▀Б─▀asioita Mac OS, mutta voit mennцє enemmцєn pidemmцєlle. 96 00:05:03,640 --> 00:05:07,110 Ja tцєmцє on hieman sivuavan, mutta se on aika hauskaa. 97 00:05:07,110 --> 00:05:09,715 Olin muistutti tцєnцє aamuna, kun ajattelen tцєtцє kautta, 98 00:05:09,715 --> 00:05:13,279 on pieni peli Kцєytin pelata yksi CS50 entinen TF: 99 00:05:13,279 --> 00:05:16,570 jolloin aina kun hцєn kцєvelisi pois hцєnen nцєppцєimistцІ hцєnen nцєytцІn lukitus, 100 00:05:16,570 --> 00:05:23,611 Haluaisin suorittaa komennon kuten this-- "tervehtimцєцєn." 101 00:05:23,611 --> 00:05:26,610 Ja nyt aina kun hцєn tuli takaisin hцєnen nцєppцєimistцІ, kun olen tyhjentцєnyt nцєyttцІ 102 00:05:26,610 --> 00:05:27,985 ja hцєn istui alas, yrittцєцє tehdцє tцІitцє, 103 00:05:27,985 --> 00:05:29,250 luettelimiseksi hцєnen directory-- 104 00:05:29,250 --> 00:05:29,510 >> [ц└ц└NITOISTOA] 105 00:05:29,510 --> 00:05:30,010 >> Haloo. 106 00:05:30,010 --> 00:05:31,621 107 00:05:31,621 --> 00:05:32,120 Hei. 108 00:05:32,120 --> 00:05:35,030 >> SPEAKER 1: Niin, oikeudenmukaisuus, se ei oikeastaan Б─▀Б─▀"hei." 109 00:05:35,030 --> 00:05:36,894 Se oli yleensцє jotain lцєhempцєnцє that-- 110 00:05:36,894 --> 00:05:37,560 [ц└ц└NITOISTOA] 111 00:05:37,560 --> 00:05:37,750 -Beep. 112 00:05:37,750 --> 00:05:39,320 SPEAKER 1: --that I would-- joten hцєnen tietokone olisi 113 00:05:39,320 --> 00:05:42,170 vannon hцєntцє aina kun hцєn itse istuutui hцєnen nцєppцєimistцІ. 114 00:05:42,170 --> 00:05:46,265 Ja hyvin nopeasti hцєn tajunnut ei lцєhtemцєцєn nцєytцІn lukitus. 115 00:05:46,265 --> 00:05:48,730 Mutta tцєmцє viittaa lajitella tyhmцє hauskaa, ettцє olet 116 00:05:48,730 --> 00:05:50,210 voi olla jotain kuten Bash. 117 00:05:50,210 --> 00:05:52,770 Mutta se on hieman enemmцєn vakava, olla varma, kuin ettцє. 118 00:05:52,770 --> 00:05:57,235 Ja itse asiassa, tцєmцє on yksi vaarallisin ja pitkцєaikaisia Б─▀Б─▀vikoja 119 00:05:57,235 --> 00:05:58,860 joka on todella osuma maailman maailmanlaajuisesti. 120 00:05:58,860 --> 00:06:02,060 Tцєmцє vika on ollut noin noin 20 vuotta, 121 00:06:02,060 --> 00:06:05,780 ja sinun on lцІydettцєvцє juuri hetki sen suhteellinen yksinkertaisuus. 122 00:06:05,780 --> 00:06:07,990 >> Joten tцєmцє on edustava kцєske jos 123 00:06:07,990 --> 00:06:10,448 omistaa Mac, kirjaimellisesti juuri nyt kun sinulla on kansi auki, 124 00:06:10,448 --> 00:06:12,940 voit kokeilla kirjoittaa tuohon ohjelma nimeltцє Terminal. 125 00:06:12,940 --> 00:06:15,410 Terminaali on alle Sovellukset Utilities-- 126 00:06:15,410 --> 00:06:18,790 kerrankin, Windows-kцєyttцєjцєt eivцєt tarvitse huolestua erityisesti threat-- 127 00:06:18,790 --> 00:06:22,310 mutta ne teistцє Macien voi kirjoittaa tцєmцє tulee ikkuna kuten minцє teen tцєцєllцє, 128 00:06:22,310 --> 00:06:24,210 ja jos et kirjoita ettцє tцєhцєn ohjelmaan 129 00:06:24,210 --> 00:06:28,830 nimeltцєцєn Terminal, kuten minцє teen nyt, Jos nцєet sanan "haavoittuvia" 130 00:06:28,830 --> 00:06:32,200 tietokone on alttiita hyvцєksikцєytцІlle. 131 00:06:32,200 --> 00:06:33,850 >> Nyt mitцє se oikeastaan Б─▀Б─▀tarkoittaa? 132 00:06:33,850 --> 00:06:35,870 Ja tцєmцє on totta joitakin melko hullu syntaksin, 133 00:06:35,870 --> 00:06:39,050 mutta katsotaan ainakin vetцєцє ulos joitakin mielenkiintoisia nцєkцІkohtia. 134 00:06:39,050 --> 00:06:42,567 Joten siellцє on joitakin syntaksin, joka nцєyttцєцє vцєhцєn tuttu, ainakin C 135 00:06:42,567 --> 00:06:43,950 ja ohjelmointi yleisemmin. 136 00:06:43,950 --> 00:06:47,550 Nцєen joitakin suluissa, puolipisteet aaltosulkeita, ja niin, 137 00:06:47,550 --> 00:06:50,820 mutta kцєy ilmi, ettцє tцєmцє tyhmцє juttu tцєцєllцє keltainen 138 00:06:50,820 --> 00:06:53,580 on ennen kaikkea osoitus ettцє ei mitцєцєn. 139 00:06:53,580 --> 00:06:57,840 Paksusuolen keinot tehdцє mitцєцєn, ja puolipiste tarkoittaa lakata tekemцєstцє mitцєцєn. 140 00:06:57,840 --> 00:07:00,250 Joten sisцєlle nцєistцє aaltosulkeita se, 141 00:07:00,250 --> 00:07:02,440 ettцє minulla on yhtцєlцєinen allekirjoittaa vasemmalle, tцєmцє 142 00:07:02,440 --> 00:07:05,500 on lцєhinnцє luoda komento, tai vaihteleva, 143 00:07:05,500 --> 00:07:09,520 nimeltцєцєn x, ja osoittaa se ettцє keltainen vцєhцєn koodia siellцє. 144 00:07:09,520 --> 00:07:14,040 Se voisi olla jotain "echo hei "tai" sano piip "tai jotain 145 00:07:14,040 --> 00:07:15,120 muistuttaa, ettцє. 146 00:07:15,120 --> 00:07:17,780 Mutta huomaa, jos silmцєsi vaeltaa edelleen oikealle, 147 00:07:17,780 --> 00:07:22,150 siellцє on enemmцєn tцєtцє linjaa kuin vain loppuun, ettцє puolipiste. 148 00:07:22,150 --> 00:07:25,160 "Echo haavoittuvia", ja sitten pidemmцєlle vielцє enemmцєn. 149 00:07:25,160 --> 00:07:26,530 Toinen puolipiste, bash -c :. 150 00:07:26,530 --> 00:07:28,120 151 00:07:28,120 --> 00:07:34,050 >> Niin pitkцєn tarinan lyhyesti, tцєtцє linjaa koodi on 152 00:07:34,050 --> 00:07:36,660 riittцєvцє pakottavista tietokoneella, joka on 153 00:07:36,660 --> 00:07:39,830 alttiita tehdцє jotain ettцє haluat sen tehdцє, 154 00:07:39,830 --> 00:07:44,290 koska siellцє on bugi Bash jolloin vaikka Bash piti lopettaa 155 00:07:44,290 --> 00:07:48,980 lukeminen komentolinja oikeus siellцє jцєlkeen keltaista tekstiцє, 156 00:07:48,980 --> 00:07:52,520 ja 20-plus-vuotias bugi, Bash on itse asiassa ollut kцєsittelyssцє 157 00:07:52,520 --> 00:07:56,780 pidemmцєlle puolipiste ja aika paljon tekee mitцє se on kerrottu. 158 00:07:56,780 --> 00:07:59,070 >> Niin mitцє vaikutuksia Kyseisen lopulta? 159 00:07:59,070 --> 00:08:01,340 Sanoin vain "echo Hello" tai "echo haavoittuvia" 160 00:08:01,340 --> 00:08:05,449 mutta mitцє jos teit jotain todella ilkeцє, kuten rm-rf *, 161 00:08:05,449 --> 00:08:07,240 joita ehkцє ei koskaan kirjoitettu ennen, 162 00:08:07,240 --> 00:08:08,920 ja rehellisesti luultavasti ei tulisi liian pian, 163 00:08:08,920 --> 00:08:10,700 koska voit tehdцє paljon vahinkoa sen kanssa. 164 00:08:10,700 --> 00:08:11,210 Miksi? 165 00:08:11,210 --> 00:08:12,990 rm tekee mitцє, tietenkin? 166 00:08:12,990 --> 00:08:14,270 Poistaa. 167 00:08:14,270 --> 00:08:15,930 * Tarkoittaa mitцє? 168 00:08:15,930 --> 00:08:16,430 Kaikki. 169 00:08:16,430 --> 00:08:18,180 Niin se on niin kutsuttu villi kortti, niin se tarkoittaa 170 00:08:18,180 --> 00:08:20,410 Poista kaikki hakemistossa. 171 00:08:20,410 --> 00:08:23,379 -r sattuu tarkoittaa rekursiivinen, mikцє tarkoittaa, ettцє jos mitцє olet poistanut 172 00:08:23,379 --> 00:08:26,420 on hakemisto, ja sisцєllцє on on muita tiedostoja ja muita hakemistoja, 173 00:08:26,420 --> 00:08:28,950 rekursiivisesti sukeltaa sinne ja poistaa kaikki tцєmцє. 174 00:08:28,950 --> 00:08:31,040 Ja f on pahin kaikista. 175 00:08:31,040 --> 00:08:32,580 Kukaan tiedцє, mitцє f tarkoittaa tцєцєllцє? 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 Niin vцєkisin keinoin, jopa jos tцєmцє on huono idea, 179 00:08:37,830 --> 00:08:40,939 tehdцє sen kysymцєttцє minut edelleen vahvistusta. 180 00:08:40,939 --> 00:08:43,230 Joten, te tiedцєtte, me naura tцєmцє, mutta suoraan sanottuna, en luultavasti 181 00:08:43,230 --> 00:08:44,972 kirjoitan tцєtцє useita kertoja pцєivцє, koska todellisuus 182 00:08:44,972 --> 00:08:47,210 on se nopein tapa poistaa koko joukko tavaraa. 183 00:08:47,210 --> 00:08:48,590 Mutta vaikka olen tehnyt jonkin verran vahinkoja. 184 00:08:48,590 --> 00:08:53,100 >> Mutta jos olit huijata tietokoneen huomioon mцєцєriteltцєessцє jokin tyhmцє muuttuja 185 00:08:53,100 --> 00:08:56,810 tai toimintoa kutsutaan x, mutta sitten huijaaminen tietokoneen tцєytцєntцІцІnpanosta 186 00:08:56,810 --> 00:09:00,030 rajojen ulkopuolelle, ettцє toiminto, kuin ettцє puolipiste, 187 00:09:00,030 --> 00:09:04,430 voit todellakin huijata tietokoneen osaksi tцєytцєntцІцІnpanosta jotain rm-rf 188 00:09:04,430 --> 00:09:07,810 tai SцєhkцІposti komento tai Kopioi-komennolla. 189 00:09:07,810 --> 00:09:11,400 Jotain kirjaimellisesti voit tehdцє tietokone, onko se poistaa tiedostoja, 190 00:09:11,400 --> 00:09:15,350 luoda kuvaa, roskapostia joku, hyцІkkцєцє jotkut palvelin etцєnцє, 191 00:09:15,350 --> 00:09:17,190 jos voit ilmaista sen komennolla, voit 192 00:09:17,190 --> 00:09:19,120 voi huijata tietokoneen nцєin. 193 00:09:19,120 --> 00:09:21,510 >> Nyt mitцє esimerkki miten voit tehdцє tцєmцєn? 194 00:09:21,510 --> 00:09:24,300 No, siellцє on paljon tietokoneita Internetissцє kцєynnissцє Bash. 195 00:09:24,300 --> 00:09:26,390 Kaikki meistцє Mac-kцєyttцєjцєt ovat joukossa. 196 00:09:26,390 --> 00:09:30,390 Monet Linux-palvelimet ovat myцІs ne, ja Unix-palvelimia. 197 00:09:30,390 --> 00:09:32,630 Windows taas saa suhteellisen pцєlkцєhцєstцє 198 00:09:32,630 --> 00:09:34,590 paitsi jos olet asentanut erityisiцє ohjelmistoja. 199 00:09:34,590 --> 00:09:37,130 Nyt paljon palvelimia varten Esimerkiksi ajaa web-palvelimia, 200 00:09:37,130 --> 00:09:39,840 ja itse asiassa Linux on ehkцє Suosituin kцєyttцІjцєrjestelmцє 201 00:09:39,840 --> 00:09:43,060 ajaa tietokoneissa internetissцє jotka palvelevat avata verkkosivuja. 202 00:09:43,060 --> 00:09:44,910 Nyt kun nцєemme myцІhemmin lukukauden, kun 203 00:09:44,910 --> 00:09:48,470 voit lцєhettцєцє pyynnцІn teidцєn browser-- Chrome, 204 00:09:48,470 --> 00:09:50,790 Internet Explorer, whatever-- etцєpalvelimeen, 205 00:09:50,790 --> 00:09:53,730 kцєy ilmi, ettцє vaikka kirjoittamasi www.example.com, 206 00:09:53,730 --> 00:09:59,590 selain lцєhettцєцє viestin ettцє on hieman vaikeaselkoinen, kuten tцєmцє. 207 00:09:59,590 --> 00:10:01,239 >> Mutta huomaa jotain outoa. 208 00:10:01,239 --> 00:10:03,030 Ensimmцєiset kaksi riviцє En ole koskaan ennen nцєhnyt, 209 00:10:03,030 --> 00:10:04,904 mutta ne eivцєt nцєytцє erityisen uhkaava. 210 00:10:04,904 --> 00:10:08,030 Mutta huomaa, mitцє olen varastanut Kolmannen rivin tцєцєllцє. 211 00:10:08,030 --> 00:10:13,390 Jos pahis oli lцєhettцєцє viesti tцєmцєn kaltaista hцєnen tietokoneensa 212 00:10:13,390 --> 00:10:17,270 heikkouden Mac tai haavoittuva Linux-palvelin, 213 00:10:17,270 --> 00:10:21,580 Hassua on ettцє Bash, ettцє yksinkertainen pikku komentoriville 214 00:10:21,580 --> 00:10:27,450 on lцєsnцє kaikkialla ja on usein tottuneempia olennaisesti toteuttaa 215 00:10:27,450 --> 00:10:30,020 sisцєllцІn viestin, ettцє se vastaanottaa. 216 00:10:30,020 --> 00:10:33,490 Ja ettцє logiikka, voit huijata web-palvelin, siis, 217 00:10:33,490 --> 00:10:36,370 lцєhettцєmцєllцє jotain User-agent, joka yleensцє 218 00:10:36,370 --> 00:10:38,300 on tarkoitus sanoa nimi selaimen. 219 00:10:38,300 --> 00:10:42,420 User-agent Chrome, User-Agent Internet Explorer User-Agent Firefox, tцєmцє 220 00:10:42,420 --> 00:10:44,590 on vain selaimen tapa tunnistaa itsensцє. 221 00:10:44,590 --> 00:10:46,605 Mutta jos pahis hyvin taitavasti sanoo, mm-mm, olen 222 00:10:46,605 --> 00:10:47,930 aio kertoa teille mitцє minun selain on, 223 00:10:47,930 --> 00:10:50,888 Minцє sen sijaan aion lцєhettцєцє sinulle tцєmцєn arvoituksellinen nцєkцІinen juttu rm-rf 224 00:10:50,888 --> 00:10:55,840 * Se, voit kirjaimellisesti huijata haavoittuva web-palvelin Internetissцє 225 00:10:55,840 --> 00:10:59,055 osaksi tцєytцєntцІцІnpanovaltion tarkalleen, ettцє siellцє poistamalla kaikki tiedostot. 226 00:10:59,055 --> 00:11:00,930 Ja suoraan sanottuna, se ei ole edes pahin asia. 227 00:11:00,930 --> 00:11:01,763 Voit tehdцє mitцє tahansa. 228 00:11:01,763 --> 00:11:04,480 Voisit aloittaa jaettu palvelunestohyцІkkцєyksen hyцІkkцєys 229 00:11:04,480 --> 00:11:07,030 jos olet lцєhettцєnyt tцєmцєn viestin koko risuryppцєцєt web-palvelimia 230 00:11:07,030 --> 00:11:10,256 ja sitten oli ne kaikki laskeutua, sillцє Esimerkiksi, on Harvard.edu palvelimet, 231 00:11:10,256 --> 00:11:12,130 ja voit lajitella Bang pahus ulos niistцє 232 00:11:12,130 --> 00:11:15,490 jonka verkkoliikennettцє, joka oli muuten laukaisi tцєmцє pahis. 233 00:11:15,490 --> 00:11:18,760 >> Niin, pitkцє tarina lyhyt, melkein jokainen tцєssцє huoneessa, joka omistaa Mac 234 00:11:18,760 --> 00:11:20,240 on altis tцєmцєn. 235 00:11:20,240 --> 00:11:24,100 Hopeareunus on, ettцє ellet kцєynnissцє web-palvelin kannettavan tietokoneen, 236 00:11:24,100 --> 00:11:27,780 ja jos olet itse mцєцєrittцєnyt se antaa jotain SSH siihen, 237 00:11:27,780 --> 00:11:28,670 olet itse turvassa. 238 00:11:28,670 --> 00:11:31,710 Se on herkkцє, mutta ei ole yksi yrittцєцє pцєцєstцє kannettavan tietokoneen, 239 00:11:31,710 --> 00:11:33,290 niin voit tavallaan varma. 240 00:11:33,290 --> 00:11:36,210 Apple kuitenkin pian olla pцєivittцєцє korjaus tцєhцєn. 241 00:11:36,210 --> 00:11:39,660 Linux-maailmassa on jo julkaissut useita korjauksia Fedora ja Ubuntu 242 00:11:39,660 --> 00:11:43,790 ja muita Linux-versioita ja jopa jos suoritat pцєivityksen 50 laitteeseen, 243 00:11:43,790 --> 00:11:45,930 vaikka sekin on pцєivitetцєцєn ja korjataan. 244 00:11:45,930 --> 00:11:47,764 Mutta sekin ei ole todella ollut haavoittuva, 245 00:11:47,764 --> 00:11:49,804 sillцє jos olet tinkered laitteen kanssa 246 00:11:49,804 --> 00:11:52,770 ja teki kannettavan tietokoneen julkisesti saatavilla Internetissцє, joka ei ole 247 00:11:52,770 --> 00:11:54,910 oletuksena, olet oikeastaan Б─▀Б─▀ollut hieno, koska 248 00:11:54,910 --> 00:11:56,890 sekцє palomuuri ja muita tekniikoita. 249 00:11:56,890 --> 00:12:01,000 >> Mutta se on цєцєrimmцєinen esimerkki bug ettцє olemme elцєneet kirjaimellisesti 20 250 00:12:01,000 --> 00:12:04,050 vuotta, ja kuka tietцєцє, jos joku Koko tцєmцєn ajan on tiennyt siitцє? 251 00:12:04,050 --> 00:12:06,300 Ja itse asiassa, tцєmцє on yksi keskeisistцє haasteista 252 00:12:06,300 --> 00:12:08,690 ettцє nцєemme myцІhemmin lukukausi turvallisuudesta, 253 00:12:08,690 --> 00:12:13,020 on, ettцє aivan kuten oikeassakin maailmassa, hyviцє tyyppejцє ovat haitta. 254 00:12:13,020 --> 00:12:16,500 Pitцєцє roistoja pois, meidцєn on Varmista, ettцє jokainen ovi on lukittu, 255 00:12:16,500 --> 00:12:20,340 ettцє jokainen ikkuna on turvallista, ettцє jokainen piste tullessa kotiin 256 00:12:20,340 --> 00:12:21,980 on turvallista pitцєцє roistoja ulos. 257 00:12:21,980 --> 00:12:26,870 Mutta mitцє pahis on tehdцє todella vaarantaa kotiisi 258 00:12:26,870 --> 00:12:28,200 ja varastaa sinulta? 259 00:12:28,200 --> 00:12:32,574 Hцєn vain on lцІytцєцє yksi lukitsematon ovi, yksi rikkoutuneen ikkunan, tai jotain 260 00:12:32,574 --> 00:12:35,240 tцєmцєnsuuntaista, ja se on Sama tietoturva. 261 00:12:35,240 --> 00:12:37,660 Voimme kirjoittaa miljoonia ohjelmakoodirivin 262 00:12:37,660 --> 00:12:40,570 ja viettцєцє satoja tai tuhansia tunteja yrittцєцє saada se oikea, 263 00:12:40,570 --> 00:12:43,370 mutta jos teet vain yhden virhe oikeellisuutta, 264 00:12:43,370 --> 00:12:47,030 voit laittaa koko jцєrjestelmцєn ja todellakin tцєssцє tapauksessa koko internetin 265 00:12:47,030 --> 00:12:48,660 ja maailma vaarassa. 266 00:12:48,660 --> 00:12:51,950 >> Joten jos haluat lisцєtietoja tцєstцє, siirry osoitteeseen tцєцєllцє. 267 00:12:51,950 --> 00:12:54,450 Ei ole tarvetta toimenpiteisiin tцєnцє iltana ellet 268 00:12:54,450 --> 00:12:57,116 joukossa mukavampaa, ettцє on kцєynnissцє oma web 269 00:12:57,116 --> 00:12:59,810 palvelimelle, jolloin sinun pitцєisi, itse asiassa pцєivittцєцє ohjelmiston. 270 00:12:59,810 --> 00:13:03,244 >> MyцІs tцєmцє otsikko puheen, ja nyt paperi, 271 00:13:03,244 --> 00:13:05,410 ettцє olemme yhteydessцє toisiinsa Kurssin verkkosivuilla tцєnцєцєn. 272 00:13:05,410 --> 00:13:07,600 Se oli mies nimeltцєцєn Ken Thompson, joka 273 00:13:07,600 --> 00:13:10,120 on hyvцєksyцє hyvin kuuluisa palkinto tietotekniikassa, 274 00:13:10,120 --> 00:13:13,495 ja hцєn antoi tцєlle puheen joitakin vuosia sitten, lцєhinnцє tцєstцє samasta aiheesta. 275 00:13:13,495 --> 00:13:18,250 276 00:13:18,250 --> 00:13:20,520 Kysyy ihmiset kysymys, sinun pitцєisi todella 277 00:13:20,520 --> 00:13:23,480 luottamus, lopulta, ohjelmisto olet saanut? 278 00:13:23,480 --> 00:13:26,100 Esimerkiksi meillцє kaikilla on kirjoittanut ohjelmia, 279 00:13:26,100 --> 00:13:27,820 ja olemme laatineet ne Clang. 280 00:13:27,820 --> 00:13:31,830 Ja tietosi, olet kirjoittanut kaikki ohjelmat CS50 missцє on 281 00:13:31,830 --> 00:13:35,310 takaoven tapaisena, on olemassa tapa ettцє pahis, jos suorittaa ohjelma, 282 00:13:35,310 --> 00:13:37,410 voisi ottaa tietokoneesi haltuunsa? 283 00:13:37,410 --> 00:13:38,310 TodennцєkцІisesti ei, eikцІ? 284 00:13:38,310 --> 00:13:40,180 Mario, ja ahne, ja Credit. 285 00:13:40,180 --> 00:13:41,680 Nцєmцє kaikki ovat melko pieniцє ohjelmia. 286 00:13:41,680 --> 00:13:43,910 Sinun tцєytyy olla melko huono jos todella 287 00:13:43,910 --> 00:13:47,310 tehty koko tietokoneen haavoittuvia kirjoittamisen jцєlkeen 10 tai 20 riviцє koodia, 288 00:13:47,310 --> 00:13:49,690 tai ainakin tietцєmцєtцІn joidenkin turvallisuusvaikutuksista. 289 00:13:49,690 --> 00:13:52,023 Nyt sanon, ettцє facetiously, mutta aiomme nцєhdцє tцєnцєцєn 290 00:13:52,023 --> 00:13:54,600 ja tцєllцє viikolla se on oikeastaan todella, todella helppoa 291 00:13:54,600 --> 00:13:57,980 olla huono ja tehdцє jopa lyhytohjelmia haavoittuvia. 292 00:13:57,980 --> 00:14:02,880 >> Mutta nyt ainakin ymmцєrtцєцє ettцє kysymys onkin tцєцєllцє 293 00:14:02,880 --> 00:14:04,850 on noin kalahtaa ja kцєцєntцєjцє. 294 00:14:04,850 --> 00:14:08,360 Miksi olemme luottanut kalahtaa viimeiset kaksi tai kolme viikkoa? 295 00:14:08,360 --> 00:14:12,650 Kuka sanoo, ettцє kuka kirjoitti kalahtaa ei ole "jos" ehto on 296 00:14:12,650 --> 00:14:17,680 ettцє pohjimmiltaan pistetцєцєn jotkut nollat ja niitцє jokaiseen ohjelmaan se kokoaa 297 00:14:17,680 --> 00:14:21,180 ettцє antaisi hцєnelle pцєцєsy tietokoneesi, kun olet unessa 298 00:14:21,180 --> 00:14:23,580 ja kannettavan tietokoneen kansi on auki ja tietokone on kцєynnissцє? 299 00:14:23,580 --> 00:14:24,080 Oikea? 300 00:14:24,080 --> 00:14:28,350 Meillцє on tцєllainen kunnia jцєrjestelmцєn oikea Nyt jos luotamme siihen, ettцє kalahtaa on legit. 301 00:14:28,350 --> 00:14:30,000 Luotat ettцє laite on legit. 302 00:14:30,000 --> 00:14:34,430 Luotat ettцє kirjaimellisesti jokainen ohjelma Macin tai PC on luotettava. 303 00:14:34,430 --> 00:14:37,510 Ja koska tцєmцє yksinkertainen bugi ehdottaa, vaikka se ei ole ilkeцє, 304 00:14:37,510 --> 00:14:40,580 se ehdottomasti ei todennцєkцІisesti kyse. 305 00:14:40,580 --> 00:14:42,350 >> Joten kannattaa olla peloissaan kuin helvetti. 306 00:14:42,350 --> 00:14:45,560 Rehellisesti, ei ole yksinkertaista Ratkaisu tцєhцєn muille 307 00:14:45,560 --> 00:14:48,185 kuin erцєцєnlainen yhteiskunnallisen tietoisuuden lisцєцєntyvцєn monimutkaisuuden 308 00:14:48,185 --> 00:14:50,310 ettцє olemme rakentamassa pцєцєlle meidцєn tietokonejцєrjestelmiцє, 309 00:14:50,310 --> 00:14:53,740 ja miten yhцє haavoittuvampia saatamme hyvinkin olla. 310 00:14:53,740 --> 00:14:55,570 >> Nyt, ettцє sanoi, Breakout. 311 00:14:55,570 --> 00:14:59,889 Joten Breakout on ongelma asetettu kolme, ja Breakout on peli menneiden 312 00:14:59,889 --> 00:15:02,180 ettцє saatat muistaa, mutta meille ongelma asettaa kolme, 313 00:15:02,180 --> 00:15:04,450 se antaa meille mahdollisuuden ottaa asiat varmuuskopioida lovi 314 00:15:04,450 --> 00:15:08,880 niin ettцє kun me kirjoitamme ohjelmia, jopa pцєцєteikkunasta nцєin, 315 00:15:08,880 --> 00:15:14,670 Voimme todella ajaa lopulta graafisia ohjelmia ei 316 00:15:14,670 --> 00:15:17,800 toisin kuin meillцє oli pцєцєsy Scratch. 317 00:15:17,800 --> 00:15:20,910 Joten tцєmцє on henkilцІstцІn tцєytцєntцІцІnpano Breakout, 318 00:15:20,910 --> 00:15:23,930 joka on juuri tцєmцє tiili-breaking peli, ettцє siirrцєt meloa takaisin 319 00:15:23,930 --> 00:15:27,590 edestakaisin, ja lyцІt niitцє vastaan Б─▀Б─▀vцєrillinen tiilet alkuun asti. 320 00:15:27,590 --> 00:15:30,020 Joten tцєmцє tuo meille tavallaan takaisin, jos 321 00:15:30,020 --> 00:15:33,180 pystyimme hyvin nopeasti Scratch, ja nyt C, 322 00:15:33,180 --> 00:15:35,800 tцєytцєntцІцІn omia graafisia kцєyttцІliittymiцє. 323 00:15:35,800 --> 00:15:38,960 >> Mutta enemmцєn kuin, ettцє tцєmцє Harjoitus on ensimmцєinen 324 00:15:38,960 --> 00:15:41,000 jossa annamme sinulle kasan koodia. 325 00:15:41,000 --> 00:15:43,940 Ja itse asiassa, minцє tuon nimenomaisen huomiota tцєhцєn, koska etenkin 326 00:15:43,940 --> 00:15:47,090 niille vцєhemmцєn mukava, tцєmцє Harjoitus, ainakin ensi silmцєyksellцє, 327 00:15:47,090 --> 00:15:49,170 tulee tuntea olemme ottaneet sitцє lovi. 328 00:15:49,170 --> 00:15:51,540 Koska me olemme antaneet teille, joidenkin haku 329 00:15:51,540 --> 00:15:54,930 ja lajittelun ongelmia PSET, nippu koodin ettцє kirjoitimme, 330 00:15:54,930 --> 00:15:56,680 ja pari kommenttia jotka sanovat "tehdцє" 331 00:15:56,680 --> 00:15:58,221 jossa sinun tцєytyy tцєyttцєцє tyhjцєt kohdat. 332 00:15:58,221 --> 00:16:00,020 Joten ei liian pelottava, mutta se on ensimmцєinen kerta 333 00:16:00,020 --> 00:16:03,370 olemme jakamassa sinulle koodin ettцє sinun tцєytyy ensin lukea, ymmцєrtцєцє, ja lisцєtцєцєn sitten 334 00:16:03,370 --> 00:16:04,290 ja tцєydentцєцє sitцє. 335 00:16:04,290 --> 00:16:05,940 >> Ja sitten Breakout, aiomme tehdцє samoin, 336 00:16:05,940 --> 00:16:08,740 antaa sinulle muutamia kymmeniцє enemmцєn rivejцє koodia, joka suoraan sanoen, antaa sinulle 337 00:16:08,740 --> 00:16:11,490 paljon puitteiden peli mutta pysцєhdy 338 00:16:11,490 --> 00:16:14,304 tцєytцєntцІцІnpanon tiilet ja pallo ja mela, 339 00:16:14,304 --> 00:16:15,970 mutta me toteuttaa joitakin muita ominaisuuksia. 340 00:16:15,970 --> 00:16:18,280 Ja sekin ensi silmцєyksellцє, jцєlleen, varsinkin jos vцєhemmцєn mukavaksi, 341 00:16:18,280 --> 00:16:21,480 voi tuntua erityisen pelottava ja luulet on niin monia uusia toimintoja 342 00:16:21,480 --> 00:16:24,070 haluat kцєцєri mieltцєsi ympцєrillцє, ja se on totta. 343 00:16:24,070 --> 00:16:26,281 Mutta pitцєцє muistaa, se on aivan kuten Scratch. 344 00:16:26,281 --> 00:16:28,780 Kertoimet ovat et kцєyttцєnyt kaikkia palapelin palat Scratch. 345 00:16:28,780 --> 00:16:31,120 Kertoimet ovat sinua ei vцєlittцєnyt kцєцєri mielesi ympцєrille ne kaikki 346 00:16:31,120 --> 00:16:33,617 koska kaikki kesti oli nopealla silmцєyksellцє ymmцєrtцєцє, oh, 347 00:16:33,617 --> 00:16:35,450 se mitцє voin tehdцє kanssa, ettцє palapelin pala. 348 00:16:35,450 --> 00:16:38,260 Ja todellakin, ongelma-set 3 spec, me kohta sinua 349 00:16:38,260 --> 00:16:41,370 klo ohjeista tulee esitellцє sinulle joitakin uusia toimintoja, 350 00:16:41,370 --> 00:16:43,570 ja lopulta ohjelmointi rakentaa kцєytцєt. 351 00:16:43,570 --> 00:16:47,610 Ehtoja, silmukoita, muuttujia ja funktioita 352 00:16:47,610 --> 00:16:50,720 on oltava sama kuin mitцє olemme nцєhneet tцєhцєn mennessцє. 353 00:16:50,720 --> 00:16:53,560 >> Joten todellakin, mitцє me annamme sinulla on joitakin mallikoodia 354 00:16:53,560 --> 00:16:56,110 voit luoda ikkuna ettцє nцєyttцєцє ole toisin tцєtцє, 355 00:16:56,110 --> 00:16:59,540 ja lopulta muuttaa sen jotain aivan kuten tцєmцє. 356 00:16:59,540 --> 00:17:02,250 Niin hyцІdyntцєцє CS50, keskustella virka ja enemmцєn, 357 00:17:02,250 --> 00:17:05,290 ja lohduttaa se, ettцє mцєцєrцє koodia sinun tulee kirjoittaa 358 00:17:05,290 --> 00:17:06,760 ei oikeastaan Б─▀Б─▀ole kovin paljon. 359 00:17:06,760 --> 00:17:10,359 Ensimmцєinen haaste on vain sopeutua itse koodia olemme kirjoitettu. 360 00:17:10,359 --> 00:17:11,450 361 00:17:11,450 --> 00:17:15,810 >> Kysyttцєvцєцє pset3, Shellshock, tai muuten? 362 00:17:15,810 --> 00:17:19,226 >> YleisцІ: Tuntui menee lцєpi Breakout 363 00:17:19,226 --> 00:17:22,154 ettцє koodi on lцєhes olio-tyyliin, 364 00:17:22,154 --> 00:17:24,675 mutta ajattelin C oli olio-ohjelma. 365 00:17:24,675 --> 00:17:26,050 SPEAKER 1: erinomainen kysymys. 366 00:17:26,050 --> 00:17:28,258 Joten silmцєilyn jakelu-koodi, koodi 367 00:17:28,258 --> 00:17:30,180 me kirjoitti pset3, niille tuttu, se 368 00:17:30,180 --> 00:17:32,230 nцєyttцєцє se pikku olio. 369 00:17:32,230 --> 00:17:33,800 Lyhyt vastaus on, se on. 370 00:17:33,800 --> 00:17:38,130 Se lцєhentцєцє miten voisi tehdцє olio-koodin 371 00:17:38,130 --> 00:17:41,850 kieltцє kuten C, mutta se on silti lopulta menettelyyn. 372 00:17:41,850 --> 00:17:44,900 Ei ole olemassa menetelmiцє sisцєllцє muuttujat, kuten nцєet. 373 00:17:44,900 --> 00:17:46,180 Mutta se muistuttaa, ettцє. 374 00:17:46,180 --> 00:17:48,780 Ja nцєemme, ettцє ominaisuus taas uusista PHP ja JavaScript 375 00:17:48,780 --> 00:17:49,946 loppua kohti lukukauden. 376 00:17:49,946 --> 00:17:53,667 Mutta nyt, ajattele sitцє aavistus mitцє on tulossa. 377 00:17:53,667 --> 00:17:54,250 Hyvцє kysymys. 378 00:17:54,250 --> 00:17:56,051 379 00:17:56,051 --> 00:17:56,550 Kunnossa. 380 00:17:56,550 --> 00:17:59,730 Joten merge sort oli miten me vasen asioita viime kerralla. 381 00:17:59,730 --> 00:18:03,250 Ja yhdistцєцє tavallaan oli viileцє siinцє mielessцє, ettцє se oli niin paljon nopeammin, 382 00:18:03,250 --> 00:18:07,100 ainakin perustuu pintapuolisen testit teimme viime viikolla, kuin vaikkapa kupla 383 00:18:07,100 --> 00:18:08,710 lajitella, valinta lajitella, lisцєyslajittelun. 384 00:18:08,710 --> 00:18:11,780 Ja mikцє oli siisti sekin on vain miten ytimekkцєцєsti ja siististi 385 00:18:11,780 --> 00:18:12,810 voit ilmaista se. 386 00:18:12,810 --> 00:18:15,840 Ja mitцє sanomme se oli ylempi sidottu ajoaika yhdistцєmisen 387 00:18:15,840 --> 00:18:16,340 lajitella? 388 00:18:16,340 --> 00:18:17,633 389 00:18:17,633 --> 00:18:18,495 Joo? 390 00:18:18,495 --> 00:18:19,360 >> YleisцІ: n log n? 391 00:18:19,360 --> 00:18:20,819 >> SPEAKER 1: n log n, oikea. n log n. 392 00:18:20,819 --> 00:18:23,776 Ja tulemme takaisin, mitцє se todella tarkoittaa tai jos se on perцєisin, 393 00:18:23,776 --> 00:18:25,570 mutta tцєmцє oli parempi kuin mitцє kцєyntiaika 394 00:18:25,570 --> 00:18:28,440 ettцє nцєimme kupla valinta ja lisцєyslajittelun? 395 00:18:28,440 --> 00:18:30,610 Joten n potenssiin. n potenssiin on tцєtцє suurempi, 396 00:18:30,610 --> 00:18:34,650 ja vaikka se ei ole aivan selvцєцє, tietцєцє, ettцє log n on pienempi kuin n, 397 00:18:34,650 --> 00:18:36,910 joten jos et n kertaa jotain pienempцєцє kuin n, 398 00:18:36,910 --> 00:18:38,680 se tulee olemaan pienempi kuin n potenssiin. 399 00:18:38,680 --> 00:18:40,130 Se on vцєhцєn intuition siellцє. 400 00:18:40,130 --> 00:18:42,190 Mutta maksoimme hinnan tцєstцє. 401 00:18:42,190 --> 00:18:47,000 Se oli nopeampi, mutta teema, joka alkoi ilmaantua viime viikolla oli tцєmцє kompromissi. 402 00:18:47,000 --> 00:18:49,804 Sain paremman suorituskyvyn aika viisas, mutta mitцє 403 00:18:49,804 --> 00:18:52,470 minцє viettцєцє toisaalta kцєsi, jotta saavuttamiseksi? 404 00:18:52,470 --> 00:18:53,591 >> YleisцІ: Muisti. 405 00:18:53,591 --> 00:18:54,465 SPEAKER 1: Sano uudestaan? 406 00:18:54,465 --> 00:18:55,173 YleisцІ: Muisti. 407 00:18:55,173 --> 00:18:57,040 SPEAKER 1: Muisti, tai tilaa yleisemmin. 408 00:18:57,040 --> 00:18:59,040 Ja se ei ollut erittцєin ilmeinen meidцєn ihmisten, 409 00:18:59,040 --> 00:19:02,240 mutta muistuttaa, ettцє meidцєn vapaaehtoisille astuivat esiin ja tehostamalla 410 00:19:02,240 --> 00:19:04,780 takaisin ikцєцєn kuin siellцє array tцєцєllцє, ja ikцєцєn kuin siellцє 411 00:19:04,780 --> 00:19:07,130 toinen joukko tцєssцє, ettцє he voisivat kцєyttцєцє, koska me 412 00:19:07,130 --> 00:19:09,080 kaivattua jonnekin yhdistцєцє ne ihmiset. 413 00:19:09,080 --> 00:19:11,480 Emme voineet vain vaihtaa ne paikoilleen. 414 00:19:11,480 --> 00:19:13,800 Joten yhdistцєцє erцєцєnlainen vipuvaikutus on enemmцєn tilaa, joka 415 00:19:13,800 --> 00:19:15,620 emme tarvinneet kanssa muut algoritmit, 416 00:19:15,620 --> 00:19:17,410 mutta puoli on, ettцє se on paljon nopeampi. 417 00:19:17,410 --> 00:19:20,780 Ja suoraan sanottuna, todellisessa maailmassa tilaa Nцєiden days-- RAM-muistia, kiintolevyn space-- 418 00:19:20,780 --> 00:19:25,030 on suhteellisen halpaa, ja niin se on ei vцєlttцєmцєttцє huono asia. 419 00:19:25,030 --> 00:19:28,320 >> Joten vilkaista, hieman enemmцєn suunnitelmallisesti, mitцє teimme 420 00:19:28,320 --> 00:19:30,220 ja miksi me sanoimme sitцє n log n. 421 00:19:30,220 --> 00:19:33,260 Joten tцєssцє on kahdeksan numeroa ja kahdeksan vapaaehtoisia meillцє oli viime kerralla. 422 00:19:33,260 --> 00:19:35,718 Ja ensimmцєinen asia, ettцє Merge Jцєrjestцє kertoi meille tehdцє, oli mikцє? 423 00:19:35,718 --> 00:19:37,010 424 00:19:37,010 --> 00:19:38,010 YleisцІ: Jaetaan se kahteen. 425 00:19:38,010 --> 00:19:38,663 SPEAKER 1: Sano uudestaan? 426 00:19:38,663 --> 00:19:39,650 YleisцІ: Jaetaan se kahteen. 427 00:19:39,650 --> 00:19:40,610 SPEAKER 1: Jaetaan se kahteen, oikeassa. 428 00:19:40,610 --> 00:19:42,818 Tцєmцє on hyvin mieleen puhelinluettelo, hajoita 429 00:19:42,818 --> 00:19:44,220 ja valloittaa yleisemmin. 430 00:19:44,220 --> 00:19:45,640 Joten me katsoimme vasen puoli. 431 00:19:45,640 --> 00:19:48,700 Ja sitten kun sanoimme, lajitella vasen puoli elementtejцє, 432 00:19:48,700 --> 00:19:49,690 mitцєs me seuraavaksi sanoa? 433 00:19:49,690 --> 00:19:51,210 434 00:19:51,210 --> 00:19:54,860 Lajitella vasen puoli vasemmalle puoli, joka antoi meille mahdollisuuden, 435 00:19:54,860 --> 00:19:57,570 jцєlkeen jakamalla kahdella, keskitytцєцєn neljцєцєn ja kaksi. 436 00:19:57,570 --> 00:20:01,280 >> Miten lajitella listan nyt, keltainen, koosta kaksi kцєyttцєen Merge Sort? 437 00:20:01,280 --> 00:20:02,330 438 00:20:02,330 --> 00:20:04,580 No jaa se kahtia, ja lajitella vasen puoli. 439 00:20:04,580 --> 00:20:07,100 Ja tцєmцє oli, kun asiat sai vцєhцєn tyhmцє lyhyesti. 440 00:20:07,100 --> 00:20:10,720 Miten lajitella luettelon, joka on annettu koko yksi, kuten tцєmцє numero neljцє tцєцєllцє? 441 00:20:10,720 --> 00:20:12,330 442 00:20:12,330 --> 00:20:13,210 Se on jцєrjestetty. 443 00:20:13,210 --> 00:20:14,200 Olet valmis. 444 00:20:14,200 --> 00:20:17,300 >> Mutta miten lajitella luettelon Koko Yksi kun on numero kaksi? 445 00:20:17,300 --> 00:20:21,640 No, sama juttu, mutta nyt mitцє oli Kolmas ja tцєrkeцє askel Merge Jцєrjestцє? 446 00:20:21,640 --> 00:20:24,020 Sinun piti yhdistцєцє vasemman puoli ja oikea puoli. 447 00:20:24,020 --> 00:20:26,580 Ja kun me teimme, ettцє me katsoimme neljцє, me katsoimme kaksi. 448 00:20:26,580 --> 00:20:28,750 Pцєцєtimme kunnossa, ilmeisesti kaksi tulee ensin, 449 00:20:28,750 --> 00:20:31,840 joten laitoimme kaksi sen paikka, seuraa neljцє. 450 00:20:31,840 --> 00:20:35,010 Ja nyt sinulla on sellainen taaksepцєin, ja tцєmцє on tavallaan ominaisuus 451 00:20:35,010 --> 00:20:37,570 algoritmin kuin sulautua Lajittele, taaksepцєin muistiin. 452 00:20:37,570 --> 00:20:40,240 Mikцє oli seuraavan rivin tarina? 453 00:20:40,240 --> 00:20:41,780 Mitцє minun pitцєisi keskitytцєцєn seuraavaksi? 454 00:20:41,780 --> 00:20:43,110 455 00:20:43,110 --> 00:20:47,350 Oikea puoli on vasemmalle puoli, joka on kuusi ja kahdeksan. 456 00:20:47,350 --> 00:20:50,320 >> Joten haluan vain selata tцєtцє ilman belaboring pisteen liikaa. 457 00:20:50,320 --> 00:20:53,330 Kuudesta kahdeksaan, sitten kuusi on lajitellaan, kahdeksan lajitellaan. 458 00:20:53,330 --> 00:20:57,190 Yhdistцєцє ne yhteen niin, ja nyt seuraava iso askel 459 00:20:57,190 --> 00:21:00,990 on tietenkin jцєrjestцєцє oikea puoli ensimmцєinen askel tцєmцєn algoritmin. 460 00:21:00,990 --> 00:21:02,870 Joten keskitymme yksi, kolme, seitsemцєn, viisi. 461 00:21:02,870 --> 00:21:04,540 Me sitten keskittyцє vasen puoli. 462 00:21:04,540 --> 00:21:09,400 Vasen puoli, ettцє oikea puoli ettцє, ja sitten yhdistцєцє yksi ja kolme. 463 00:21:09,400 --> 00:21:13,100 Sitten oikea puoli ja sitten vasen puoli se, ja sitten oikeaa puolet. 464 00:21:13,100 --> 00:21:15,985 Yhdistцєцє se, ja mitцє nyt askel jцєцє? 465 00:21:15,985 --> 00:21:18,040 466 00:21:18,040 --> 00:21:22,460 Yhdistцє iso vasen puoli ja iso oikea puoli, joten mennцєцєn sinne, 467 00:21:22,460 --> 00:21:27,330 sitten kaksi, sitten kolme, sitten neljцє, sitten viisi, sitten kuusi, sitten seitsemцєn, sitten kahdeksan. 468 00:21:27,330 --> 00:21:31,990 >> Joten nyt miksi tцєmцє lopulta paljastaa, varsinkin jos n ja logaritmit lisцєцє 469 00:21:31,990 --> 00:21:35,487 yleensцє melko paeta sinua, ainakin miesmuistiin? 470 00:21:35,487 --> 00:21:37,070 No, huomaa korkeus tцєmцє asia. 471 00:21:37,070 --> 00:21:41,230 Meillцє oli kahdeksan elementtejцє, ja me jaettuna sen kaksi, kaksi, kaksi. 472 00:21:41,230 --> 00:21:44,590 Joten log base kaksi kahdeksan antaa meille kolme. 473 00:21:44,590 --> 00:21:45,640 474 00:21:45,640 --> 00:21:48,540 Ja luottaa minuun, ettцє jos hieman utuinen siitцє. 475 00:21:48,540 --> 00:21:54,710 Mutta logaritmi kaksi kahdeksan on kolme, joten olemme tehneet kolme kerrosta yhdistцєmistцє. 476 00:21:54,710 --> 00:21:57,170 Ja kun yhdistimme elementit, kuinka monta elementtiцє 477 00:21:57,170 --> 00:21:58,950 ei katsomme kullekin nцєistцє riviцє? 478 00:21:58,950 --> 00:22:00,212 479 00:22:00,212 --> 00:22:01,437 Yhteensцє n, eikцІ? 480 00:22:01,437 --> 00:22:04,020 Koska yhdistцєцє ylцєrivi, vaikka teimme sen hajanainen, 481 00:22:04,020 --> 00:22:05,990 me lopulta kosketti jokaista numero kerran. 482 00:22:05,990 --> 00:22:09,054 Ja toisessa rivissцє, ja yhdistцєцє nцєmцє luettelot kokoa kaksi, 483 00:22:09,054 --> 00:22:10,470 meidцєn tцєytyi koskettaa jokaisen elementin kerran. 484 00:22:10,470 --> 00:22:12,690 Ja sitten tцєцєllцє todella selvцєsti viimeisellцє rivillцє, 485 00:22:12,690 --> 00:22:15,430 meidцєn piti koskettaa jokainen nцєistцє elementit kerran, mutta vain kerran, 486 00:22:15,430 --> 00:22:18,400 niin tцєssцє piilee siis meidцєn n log n. 487 00:22:18,400 --> 00:22:21,780 >> Ja nyt vain tehdцє asioita hieman virallisempi vain hetken, jos 488 00:22:21,780 --> 00:22:24,260 oli nyt analysoida klo erцєцєnlainen korkeamman tason 489 00:22:24,260 --> 00:22:28,340 ja yrittцєцє pцєцєttцєцє, hyvin, kuinka voisi mennцє noin ilmentцєvцєt 490 00:22:28,340 --> 00:22:31,780 kцєyntiaika tцєmцєn algoritmin vain katsomalla sitцє ja ei 491 00:22:31,780 --> 00:22:33,590 kцєyttцєmцєllцє keinotekoinen esimerkki? 492 00:22:33,590 --> 00:22:36,590 No, kuinka paljon aikaa sanoisit askel nцєin keltaisella veisi, 493 00:22:36,590 --> 00:22:37,173 jos n <2 paluun? 494 00:22:37,173 --> 00:22:38,840 495 00:22:38,840 --> 00:22:39,830 Se on iso O mitцє? 496 00:22:39,830 --> 00:22:41,450 497 00:22:41,450 --> 00:22:44,540 Joten nцєen yksi, niin yksi askel, ehkцє kaksi askelta, koska se on, jos 498 00:22:44,540 --> 00:22:47,110 ja palata sitten, mutta se on vakioaikaisia, eikцІ? 499 00:22:47,110 --> 00:22:49,960 Joten sanoimme O (1), ja se on miten minцє ilmaista tцєtцє. 500 00:22:49,960 --> 00:22:51,480 T, vain olla kцєyntiaika. 501 00:22:51,480 --> 00:22:54,150 n on koko syцІttцІ, joten T (n), vain hieno tapa 502 00:22:54,150 --> 00:22:56,330 sanoa kцєynnissцє aika annetaan panos koko n 503 00:22:56,330 --> 00:23:00,220 tulee olemaan suuruusluokkaa jatkuvasti ajan O (1). 504 00:23:00,220 --> 00:23:01,970 >> Mutta muuten, entцє tцєmцє? 505 00:23:01,970 --> 00:23:05,660 Miten ilmaista kцєyntiaika tцєmцєn keltainen viiva? 506 00:23:05,660 --> 00:23:06,250 T mitцє? 507 00:23:06,250 --> 00:23:09,440 508 00:23:09,440 --> 00:23:12,665 Voit erцєцєnlainen huijata tцєцєllцє vastata kysymykseeni syklisesti. 509 00:23:12,665 --> 00:23:14,770 510 00:23:14,770 --> 00:23:17,900 Joten jos kцєyntiajan yleinen me vain sanoa, T (n). 511 00:23:17,900 --> 00:23:18,950 512 00:23:18,950 --> 00:23:22,490 Ja nyt olet sellainen punting tцєцєllцє sanoi hyvin, vain erцєцєnlainen vasen puoli, 513 00:23:22,490 --> 00:23:23,920 ja sitten lajitella oikea puoli. 514 00:23:23,920 --> 00:23:27,520 Kuinka me saatamme vertauskuvallisesti kцєyntiaika tцєmцєn keltainen viiva? 515 00:23:27,520 --> 00:23:28,020 T mitцє? 516 00:23:28,020 --> 00:23:29,360 Mikцє on koko panos? 517 00:23:29,360 --> 00:23:30,510 518 00:23:30,510 --> 00:23:31,057 n yli kaksi. 519 00:23:31,057 --> 00:23:32,140 Miksi en vain sanoa, ettцє? 520 00:23:32,140 --> 00:23:36,449 Ja sitten tцєmцє on toinen T (n / 2) ja sitten uudelleen, jos olen yhdistцєцє kaksi lajiteltua puolikkaat, 521 00:23:36,449 --> 00:23:38,615 kuinka monta elementtiцє olen menossa on koskettaa yhteensцє? 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 Joten en voi ilmaista tцєmцєn, vain olla sellainen fancy, 525 00:23:42,790 --> 00:23:44,430 koska kцєyntiaika yleensцє. 526 00:23:44,430 --> 00:23:51,140 T (n) on vain ajoaika T (n / 2), plus T (n / 2), vasen puoli ja oikea puoli, 527 00:23:51,140 --> 00:23:55,360 plus O (n), joka on luultavasti n vaiheita, mutta ehkцє, jos kцєytцєn kahta sormea, 528 00:23:55,360 --> 00:23:57,960 se on kaksi kertaa niin paljon vaiheita, mutta se on lineaarinen. 529 00:23:57,960 --> 00:24:00,440 On joitakin useita vaiheita se kertoimella n, 530 00:24:00,440 --> 00:24:02,270 joten saatamme ilmaista tцєmцє tцєssцє. 531 00:24:02,270 --> 00:24:05,550 Ja tцєmцє on, jos nyt me punt on takaisin meidцєn lukion matematiikan oppikirja 532 00:24:05,550 --> 00:24:10,290 olemme ettцє toistuminen lopulta pцєцєtyy vastaten tцєmцєn, n kertaa log n, 533 00:24:10,290 --> 00:24:12,530 jos itse tehdцє ulos matematiikka virallisemmin. 534 00:24:12,530 --> 00:24:13,950 >> Niin, ettцє vain kahdesta nцєkцІkulmasta. 535 00:24:13,950 --> 00:24:17,500 Yksi numeerisesti kovakoodatuilla edustava esimerkki 536 00:24:17,500 --> 00:24:21,140 kцєyttцєen kahdeksan numeroa, ja lisцєцє tarkastellaan yleisesti, miten menimme sinne. 537 00:24:21,140 --> 00:24:25,670 Mutta mikцє on todella mielenkiintoista tцєцєllцє on, jцєlleen, tцєmцє kцєsite pyцІrцєily. 538 00:24:25,670 --> 00:24:26,900 En kцєytцє silmukoita. 539 00:24:26,900 --> 00:24:29,860 Olen tavallaan mцєцєritellцєцєn jotain suhteen itse, 540 00:24:29,860 --> 00:24:31,950 ei vain tцєmцєn Matemaattinen funktio, 541 00:24:31,950 --> 00:24:34,860 vaan myцІs tцєmцєn pseudo-koodin. 542 00:24:34,860 --> 00:24:38,260 Tцєmцє pseudo-koodi on rekursiivinen siitцє, ettцє kaksi sen linjat 543 00:24:38,260 --> 00:24:42,310 lцєhinnцє kertoo sen mennцє kцєyttцєvцєt itse ratkaista pienempi 544 00:24:42,310 --> 00:24:45,400 Ongelmana on pieni koko, ja sitten uudestaan Б─▀Б─▀ja uudestaan 545 00:24:45,400 --> 00:24:48,820 ja uudelleen, kunnes me vuolla se alas tцєmцє ns pohja tapaus. 546 00:24:48,820 --> 00:24:52,810 >> Joten oikeastaan Б─▀Б─▀tehdцє enemmцєn pakottavia take-away tцєstцє seuraavasti. 547 00:24:52,810 --> 00:24:58,420 Anna minun mennцє gedit ja ottaa tarkastelemme joitakin nykypцєivцєn lцєhdekoodin, 548 00:24:58,420 --> 00:24:59,930 erityisesti tцєssцє esimerkissцє tцєцєllцє. 549 00:24:59,930 --> 00:25:03,709 Sigma 0, joka ilmeisesti lisцєцє ykkцІsestцє n. 550 00:25:03,709 --> 00:25:05,750 Katsotaanpa mitцє tuttu ja tuntemattomia tцєцєllцє. 551 00:25:05,750 --> 00:25:08,690 Ensin on pari sisцєltцєцє, joten mitцєцєn uutta siellцє. 552 00:25:08,690 --> 00:25:09,190 Prototyyppi. 553 00:25:09,190 --> 00:25:11,370 Olen hieman utuinen pцєцєlle Tцєmцєn jцєlkeen muutaman pцєivцєn, 554 00:25:11,370 --> 00:25:13,790 mutta mitцє sanomme prototyyppi toiminto on? 555 00:25:13,790 --> 00:25:15,099 556 00:25:15,099 --> 00:25:16,015 YleisцІ: [kuulumaton]. 557 00:25:16,015 --> 00:25:16,905 SPEAKER 1: Mikцє tцєmцє on? 558 00:25:16,905 --> 00:25:17,800 YleisцІ: Me julistaa sen. 559 00:25:17,800 --> 00:25:18,883 SPEAKER 1: Me julistaa sen. 560 00:25:18,883 --> 00:25:22,290 Joten opetat kalahtaa, hei, ei oikeastaan Б─▀Б─▀tцєytцєntцІцІnpanossa vielцє, 561 00:25:22,290 --> 00:25:25,740 mutta jossain tцєmцєn tiedoston, oletettavasti, aiotaan toiminto nimeltцєцєn mitцє? 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 Ja tцєmцє on vain lupaus, ettцє se tulee nцєyttцєmцєцєn tцєltцє. 565 00:25:30,540 --> 00:25:33,720 Se tulee ottaa kokonaisluvun input-- ja voin olla selvemmin 566 00:25:33,720 --> 00:25:36,570 ja sanoa int n --and se aio palata int, 567 00:25:36,570 --> 00:25:39,900 mutta puolipiste keinoin, mm, saan noin toteuttaa nцєitцє vцєhцєn myцІhemmin. 568 00:25:39,900 --> 00:25:40,989 Jцєlleen kalahtaa on tyhmцє. 569 00:25:40,989 --> 00:25:43,280 Se vain menee tietцєцє, mitцє kerrot sen ylhцєцєltцє alas, 570 00:25:43,280 --> 00:25:45,765 joten meidцєn tцєytyy ainakin antaa se vihje mitцє on tulossa. 571 00:25:45,765 --> 00:25:47,330 >> Nyt katsokaamme tцєrkein tцєцєllцє. 572 00:25:47,330 --> 00:25:50,040 Katsotaanpa selaa tцєцєllцє mitцє tцєrkein tekee. 573 00:25:50,040 --> 00:25:53,780 Se ei ole pitkцє funktion, ja itse asiassa konstrukti tцєssцє tuttu. 574 00:25:53,780 --> 00:25:57,590 Julistan muuttuja n, ja sitten Olen kiusata kцєyttцєjцєn uudelleen ja uudelleen 575 00:25:57,590 --> 00:26:01,880 ja positiivinen kokonaisluku kцєyttцєen getInt, ja vain lцєhteneet tцєmцєn silmukan 576 00:26:01,880 --> 00:26:03,280 kun kцєyttцєjцє on tцєyttцєnyt. 577 00:26:03,280 --> 00:26:05,670 Do Vaikka olemme kцєytetцєцєn kiusata kцєyttцєjцє tцєllцє tavalla. 578 00:26:05,670 --> 00:26:06,670 Nyt tцєmцє on mielenkiintoista. 579 00:26:06,670 --> 00:26:08,510 Julistan int nimeltцєцєn "vastaus." 580 00:26:08,510 --> 00:26:11,420 Mцєцєritцєn sen paluuarvo on toiminto nimeltцєцєn "sigma." 581 00:26:11,420 --> 00:26:15,200 En tiedцє, mitцє se tekee vielцє, mutta Muistan julistaa hetki sitten. 582 00:26:15,200 --> 00:26:18,310 Ja sitten olen ohimennen Arvo, joka on kirjoitettu, n, 583 00:26:18,310 --> 00:26:20,420 ja sitten voin ilmoittaa vastauksen. 584 00:26:20,420 --> 00:26:22,260 No katsotaanpa siirry takaisin vain hetken. 585 00:26:22,260 --> 00:26:28,620 Mennцєцєn eteenpцєin tцєhцєn hakemistoon, tee sigma 0, ja todella ajaa tцєtцє ohjelmaa 586 00:26:28,620 --> 00:26:30,490 ja katso mitцє tapahtuu. 587 00:26:30,490 --> 00:26:35,930 Joten jos menen eteenpцєin ja nousun Tцєssцє ohjelmassa ./sigma-0, 588 00:26:35,930 --> 00:26:40,139 ja minцє kirjoita positiivinen kokonaisluku kuin kaksi, Sigma, 589 00:26:40,139 --> 00:26:43,180 kuten Kreikan symboli kertoo, on vain menossa yhteen kaikki numerot 590 00:26:43,180 --> 00:26:44,320 nolla jopa kaksi. 591 00:26:44,320 --> 00:26:46,560 Joten 0 plus 1 plus 2. 592 00:26:46,560 --> 00:26:48,830 Joten tцєmцєn pitцєisi toivottavasti antaa minulle 3. 593 00:26:48,830 --> 00:26:49,750 Sitцє se tekee. 594 00:26:49,750 --> 00:26:52,690 Ja samoin, jos en suorita tцєtцє uudelleen ja annan sen numero kolme, 595 00:26:52,690 --> 00:26:56,721 Se on 3 plus 2, niin se on 5 plus 1 pitцєisi antaa minulle 6. 596 00:26:56,721 --> 00:26:59,470 Ja sitten jos saan todella hullu ja alkaa kirjoittaa isompi mцєцєrцє, 597 00:26:59,470 --> 00:27:01,290 se pitцєisi antaa minulle isompia ja isompia summia. 598 00:27:01,290 --> 00:27:02,250 Niin siinцє kaikki. 599 00:27:02,250 --> 00:27:04,010 >> Joten mitцє sigma nцєyttцєцє? 600 00:27:04,010 --> 00:27:05,430 No, se on melko yksinkertainen. 601 00:27:05,430 --> 00:27:08,940 Se, miten voisimme ovat panneet Tцєssцє viimeiset pari viikkoa. 602 00:27:08,940 --> 00:27:11,120 "Int" tulee olemaan palautuva. 603 00:27:11,120 --> 00:27:14,330 Sigma on nimi, ja se kestцєцє muuttuja m sijasta n. 604 00:27:14,330 --> 00:27:15,940 Muutan ettцє alkuun asti. 605 00:27:15,940 --> 00:27:17,340 Sitten tцєmцє on vain jцєrki tarkistaa. 606 00:27:17,340 --> 00:27:18,430 607 00:27:18,430 --> 00:27:19,950 Nцєemme miksi hetki. 608 00:27:19,950 --> 00:27:24,220 Nyt julistan toisen muuttujan, summa, alustaa se nollaan. 609 00:27:24,220 --> 00:27:28,140 Sitten on tцєmцє silmukka iteroidessaan, ilmeisesti selvyyden vuoksi, 610 00:27:28,140 --> 00:27:33,810 i: = 1 jopa = m, mikцє on mitцє kцєyttцєjцє kirjoitettu, ja sitten minцє 611 00:27:33,810 --> 00:27:35,690 kasvattaa summaa nцєin. 612 00:27:35,690 --> 00:27:37,360 Ja sitten palata summa. 613 00:27:37,360 --> 00:27:38,440 >> Joten pari kysymystцє. 614 00:27:38,440 --> 00:27:42,370 Yksi, vцєitцєn minun kommentti, ettцє tцєmцє vцєltetцєцєn riski pцєцєttymцєttцІmцєцєn silmukkaan. 615 00:27:42,370 --> 00:27:45,620 Miksi ohimennen negatiivinen luku aiheuttaa, mahdollisesti цєцєretцІn silmukka? 616 00:27:45,620 --> 00:27:49,396 617 00:27:49,396 --> 00:27:51,290 >> YleisцІ: Et koskaan pцєцєse metriцє. 618 00:27:51,290 --> 00:27:52,880 >> SPEAKER 1: ц└lцє koskaan m. 619 00:27:52,880 --> 00:27:55,880 Mutta m johdetaan vuonna, joten katsotaanpa harkita yksinkertainen esimerkki. 620 00:27:55,880 --> 00:27:58,510 Jos m on hyvцєksyttiin mukaan kцєyttцєjцєlle kielteinen. 621 00:27:58,510 --> 00:28:00,059 Riippumatta tцєrkein. 622 00:28:00,059 --> 00:28:01,850 Tцєrkein suojelee meitцє tцєmцєkin, joten olen vain 623 00:28:01,850 --> 00:28:04,680 on todella anaali sigma myцІs varmistaa 624 00:28:04,680 --> 00:28:06,540 ettцє tulo ei voi olla negatiivinen. 625 00:28:06,540 --> 00:28:10,130 Joten jos m on negatiivinen, jotain kielteistцє. 626 00:28:10,130 --> 00:28:11,930 Mitцє nyt tapahtuu? 627 00:28:11,930 --> 00:28:14,390 No, minulla on menossa saada alustetaan yhteen, 628 00:28:14,390 --> 00:28:19,060 ja sitten tulee olemaan pienempi kuin tai yhtцє suuri kuin m? 629 00:28:19,060 --> 00:28:24,130 630 00:28:24,130 --> 00:28:24,765 >> Valmiustila. 631 00:28:24,765 --> 00:28:26,930 632 00:28:26,930 --> 00:28:29,370 Ettцє oli-- цєlkцєцєmme, Katsotaanpa nix tцєmцєn tarinan. 633 00:28:29,370 --> 00:28:32,780 En kysynyt tцєtцє kysymystцє, koska vaara, ettцє olen viittasi 634 00:28:32,780 --> 00:28:38,360 ei tule tapahtumaan, koska minulla on aina menossa olla suurempi than-- OK, 635 00:28:38,360 --> 00:28:39,871 En aja tцєtцє kysymystцє. 636 00:28:39,871 --> 00:28:40,370 OK. 637 00:28:40,370 --> 00:28:42,030 Keskitytцєцєn vain tцєhцєn osaan tцєstцє. 638 00:28:42,030 --> 00:28:44,210 639 00:28:44,210 --> 00:28:48,830 Miksi Julistan joitakin ulkopuolella silmukan? 640 00:28:48,830 --> 00:28:52,010 Huomautus linjalla 49 olen ilmoitettu i lenkin sisцєltцє, 641 00:28:52,010 --> 00:28:54,950 mutta verkossa 48 olen julisti joitakin ulkopuolella. 642 00:28:54,950 --> 00:28:55,695 Joo. 643 00:28:55,695 --> 00:28:56,611 YleisцІ: [kuulumaton]. 644 00:28:56,611 --> 00:28:58,734 645 00:28:58,734 --> 00:28:59,400 SPEAKER 1: Toki. 646 00:28:59,400 --> 00:29:03,360 Joten ensinnцєkin En todellakaan halua julistaa ja alustaa summa 647 00:29:03,360 --> 00:29:06,130 nollaan sisцєllцє silmukka jokaisen iteraation, 648 00:29:06,130 --> 00:29:09,370 koska tцєmцє olisi selvцєsti voittaa tarkoituksena tiivisti numeroita. 649 00:29:09,370 --> 00:29:11,770 Haluan pitцєцє muuttaa arvon takaisin nollaan. 650 00:29:11,770 --> 00:29:17,992 Ja myцІs, mitцє toinen enemmцєn mystistцє Syynцє tцєhцєn samaa mallia pцєцєtцІs? 651 00:29:17,992 --> 00:29:18,954 Joo. 652 00:29:18,954 --> 00:29:20,279 >> YleisцІ: [kuulumaton]. 653 00:29:20,279 --> 00:29:21,070 SPEAKER 1: Aivan. 654 00:29:21,070 --> 00:29:24,060 Haluan kцєyttцєцє sitцє ulkopuolella silmukan liian mitцє linjaa? 655 00:29:24,060 --> 00:29:25,390 656 00:29:25,390 --> 00:29:26,400 53. 657 00:29:26,400 --> 00:29:29,910 Ja perustuu meidцєn nyrkkisцєцєntцІ Paria luentoja sitten, 658 00:29:29,910 --> 00:29:33,680 muuttujia scoped, todella, ettцє aaltosulkeita jotka kattavat ne. 659 00:29:33,680 --> 00:29:38,190 Joten jos en julistaa summa sisцєllцє Nцєiden ulko aaltosulkeita, 660 00:29:38,190 --> 00:29:40,250 En voi kцєyttцєцє sitцє linjaa 53. 661 00:29:40,250 --> 00:29:43,160 Toisin sanoen, jos olisin julistanut summa tцєцєllцє, tai jopa 662 00:29:43,160 --> 00:29:45,410 Silmukka, en voinut kцєyttцєцє sitцє 53. 663 00:29:45,410 --> 00:29:47,150 Muuttuja olisi kцєytцєnnцІssцє mennyt. 664 00:29:47,150 --> 00:29:48,579 Joten pari syytцє siellцє. 665 00:29:48,579 --> 00:29:50,370 Mutta nyt mennцєцєn takaisin ja katso mitцє tapahtuu. 666 00:29:50,370 --> 00:29:51,730 Niin sigma saa kutsutaan. 667 00:29:51,730 --> 00:29:55,640 Se lisцєцє jopa 1 plus 2 tai 1 ja 2 plus 3, ja sitten palauttaa arvon, 668 00:29:55,640 --> 00:29:59,660 tallentaa sen vastauksen, ja printf tцєцєllцє Siksi nцєen ruudulla. 669 00:29:59,660 --> 00:30:03,079 Joten tцєmцє on mitцє me kutsumme iteratiivinen lцєhestymistapa, jossa iteraatio vain 670 00:30:03,079 --> 00:30:03,870 tarkoittaa, ettцє kцєytetцєцєn silmukka. 671 00:30:03,870 --> 00:30:06,900 For-silmukan, kun silmukka, Do Vaikka silmukka, juuri tekemцєssцє jotain taas 672 00:30:06,900 --> 00:30:08,380 ja uudestaan Б─▀Б─▀ja uudestaan. 673 00:30:08,380 --> 00:30:13,505 >> Mutta sigma on tavallaan siisti toiminto ettцє voisin toteuttaa sen eri tavalla. 674 00:30:13,505 --> 00:30:14,620 675 00:30:14,620 --> 00:30:19,120 Entцє tцєmцє, joka vain olla sellainen viileцє, 676 00:30:19,120 --> 00:30:21,880 haluaisin todella pцєцєstцє eroon Erцєn hцєiriцІtekijцє 677 00:30:21,880 --> 00:30:24,380 sillцє tцєmцє toiminto on oikeastaan Б─▀Б─▀aika yksinkertainen. 678 00:30:24,380 --> 00:30:27,780 Katsotaanpa vuolla se alas vain sen neljцєn keskeisen linjat 679 00:30:27,780 --> 00:30:30,410 ja pцєцєstцє eroon kaikista kommentit ja aaltosulkeita. 680 00:30:30,410 --> 00:30:34,334 Tцєmцє on tavallaan hцєkellyttцєvцє Vaihtoehtoinen toteutus. 681 00:30:34,334 --> 00:30:37,250 Okei, ehkцє ei hцєkellyttцєvцє, mutta se on aika seksikkцєцєmpцєцє, okei, 682 00:30:37,250 --> 00:30:39,920 katsomaan tцєtцє niin paljon enemmцєn ytimekkцєцєsti. 683 00:30:39,920 --> 00:30:43,120 Vain neljцє riviцє koodia, Haluan ensin on tцєmцє jцєrki tarkistaa. 684 00:30:43,120 --> 00:30:45,732 Jos m on pienempi tai yhtцє suuri kuin nolla, sigma ei ole mitцєцєn jцєrkeцє. 685 00:30:45,732 --> 00:30:48,190 Se vain pitцєisi olla TцєllцІin positiivisten lukujen, 686 00:30:48,190 --> 00:30:50,340 joten olen juuri menossa palata nolla mielivaltaisesti 687 00:30:50,340 --> 00:30:53,210 niin ettцє meillцє on ainakin jotkut ns pohja tapaus. 688 00:30:53,210 --> 00:30:54,430 >> Mutta tцєssцє on kauneutta. 689 00:30:54,430 --> 00:30:59,930 Kokonaisuudessaan tцєmцєn ajatuksen lisцєцєmцєllцє numerot 1: stцє n tai m tцєssцє tapauksessa 690 00:30:59,930 --> 00:31:02,630 voidaan tehdцє sellainen vastuun siirtцєminen. 691 00:31:02,630 --> 00:31:04,947 No, mikцє on summa 1 m? 692 00:31:04,947 --> 00:31:05,780 No, tiedцєtkцІ mitцє? 693 00:31:05,780 --> 00:31:11,949 Se on sama kuin summa m plus summa 1 m miinus 1. 694 00:31:11,949 --> 00:31:12,740 No arvaa mitцє? 695 00:31:12,740 --> 00:31:13,940 Mikцє sigma m miinus 1? 696 00:31:13,940 --> 00:31:17,860 No, jos sellainen seurata tцєtцє loogisesti, se on sama kuin m miinus 1 697 00:31:17,860 --> 00:31:21,415 plus sigma m miinus 2. 698 00:31:21,415 --> 00:31:22,480 699 00:31:22,480 --> 00:31:26,012 Voit siis tavallaan vain-- tцєmцє on kuin, jos olet vain 700 00:31:26,012 --> 00:31:28,220 yrittцєцє цєrsyttцєцє kaverille ja he kysyvцєt sinulta kysymyksen, 701 00:31:28,220 --> 00:31:31,344 olet tavallaan vastata kysymykseen, voit sellaista pitцєцє vastuun siirtцєminen. 702 00:31:31,344 --> 00:31:34,560 Mutta mitцє tцєrkeintцє on, ettцє jos pidцєt jolloin kysymys pienempiцє 703 00:31:34,560 --> 00:31:36,910 ja pienempiцє, olet ei pyydцє mitцє sigma 704 00:31:36,910 --> 00:31:39,116 N, mitцє sigma of n, mitцє sigma n: n? 705 00:31:39,116 --> 00:31:40,990 Kysyt mitцє sigma N, mitцє sigma 706 00:31:40,990 --> 00:31:42,839 n: miinus 1, mitцє sigma n: miinus 2? 707 00:31:42,839 --> 00:31:44,880 Lopulta kysymyksesi on tulossa mitцє? 708 00:31:44,880 --> 00:31:50,250 Mikцє on sigma yhden tai nolla, joitakin hyvin pieniцє arvo, 709 00:31:50,250 --> 00:31:52,220 ja heti kun saada, ettцє ystцєvцєsi, 710 00:31:52,220 --> 00:31:54,350 et aio kysyцє sama kysymys uudelleen, 711 00:31:54,350 --> 00:31:55,975 olet juuri menossa sanoa, oi se on nolla. 712 00:31:55,975 --> 00:31:58,490 Olemme pelanneet tцєmmцІinen tyhmцє syklinen peli. 713 00:31:58,490 --> 00:32:02,950 >> Joten rekursio on toimittava ohjelmointia funktion kutsuu itseцєцєn. 714 00:32:02,950 --> 00:32:06,630 Tцєmцє ohjelma, kun kootaan ja ajaa, on menossa kцєyttцєytyvцєt tцєsmцєlleen samalla tavalla, 715 00:32:06,630 --> 00:32:09,620 mutta mikцє tцєrkeintцє on, ettцє sisцєllцє funktion kutsutaan sigma, 716 00:32:09,620 --> 00:32:13,150 on rivi koodia jossa olemme kutsua itseцєmme, 717 00:32:13,150 --> 00:32:14,980 jotka yleensцє huono. 718 00:32:14,980 --> 00:32:21,160 Esimerkiksi mitцє jos en ensin koonnut tцєtцє, joten sigma-- 719 00:32:21,160 --> 00:32:22,710 Merkki sigma 1 ./sigma-1. 720 00:32:22,710 --> 00:32:25,050 721 00:32:25,050 --> 00:32:27,690 Positiivinen kokonaisluku, kiitos, 50 1275. 722 00:32:27,690 --> 00:32:30,810 Joten mikцє toiminto nцєyttцєцє olla, joka perustuu yksi testi, oikea. 723 00:32:30,810 --> 00:32:34,917 Mutta mitцє jos saan vцєhцєn vaarallinen ja poistaa ns base tapauksessa 724 00:32:34,917 --> 00:32:37,750 ja vain sanoa, hyvin olen juuri tekemцєssцє Tцєmцєn monimutkaisempi kuin se on. 725 00:32:37,750 --> 00:32:42,450 Toivotaan vain laskea sigma ottamalla m ja lisцєцєmцєllцє sitten 726 00:32:42,450 --> 00:32:44,564 sigma m miinus yksi? 727 00:32:44,564 --> 00:32:45,980 No, mitцє tulee tapahtumaan tцєцєllцє? 728 00:32:45,980 --> 00:32:47,140 Katsotaanpa loitontaa. 729 00:32:47,140 --> 00:32:52,920 Katsotaanpa kцєцєnnцІksen jцєlkeen ohjelmassa, tallenna se, kцєцєnnцІksen jцєlkeen ohjelma, 730 00:32:52,920 --> 00:33:00,450 ja sitten valmis ./sigma-1 zoomaus, SyцІtцє positiivinen kokonaisluku kiitos, 50. 731 00:33:00,450 --> 00:33:02,180 732 00:33:02,180 --> 00:33:04,430 Kuinka moni teistцє on valmis ja ruikuttaa nцєkemцєцєn sen? 733 00:33:04,430 --> 00:33:04,950 >> OK. 734 00:33:04,950 --> 00:33:06,690 Joten tцєmцє voi tapahtua useista eri syistцє, 735 00:33:06,690 --> 00:33:09,148 ja suoraan sanottuna tцєllцє viikolla olemme aikeissa antaa sinulle enemmцєn niistцє. 736 00:33:09,148 --> 00:33:11,780 Mutta tцєssцє tapauksessa, kokeile jцєrkeillцє taaksepцєin 737 00:33:11,780 --> 00:33:14,430 mitцє olisi voinut tapahtua tцєцєllцє? 738 00:33:14,430 --> 00:33:17,400 Segmentointi vika, sanoimme viime aika, viittaa segmentin muistia. 739 00:33:17,400 --> 00:33:18,690 Jotain pahaa on tapahtunut. 740 00:33:18,690 --> 00:33:21,550 Mutta mikцє oli se mekaanisesti ettцє meni pieleen 741 00:33:21,550 --> 00:33:25,000 tцєцєllцє, koska minun poisto ja ettцє niin sanotut pohja tapauksessa, 742 00:33:25,000 --> 00:33:26,870 jos Palasin kovakoodatuilla arvo? 743 00:33:26,870 --> 00:33:28,970 744 00:33:28,970 --> 00:33:30,460 Mitцє mieltцє olet meni pieleen? 745 00:33:30,460 --> 00:33:31,219 Joo. 746 00:33:31,219 --> 00:33:32,135 >> YleisцІ: [kuulumaton]. 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 Hyvцє kysymys. 750 00:33:37,550 --> 00:33:39,508 Joten koko numeron ettцє olin yhteen asti 751 00:33:39,508 --> 00:33:41,920 tuli niin iso, ettцє se ylitti koko muistia. 752 00:33:41,920 --> 00:33:44,640 Hyvцє idea, mutta ei pohjimmiltaan menossa aiheuttaa kaatumisen. 753 00:33:44,640 --> 00:33:48,230 Jotka saattavat aiheuttaa kokonaisluvun ylivuoto, jossa bitit vain kцєцєnnцє 754 00:33:48,230 --> 00:33:51,760 ja sitten me erehtyцє todella iso numero kuin negatiivinen luku, 755 00:33:51,760 --> 00:33:53,260 mutta joka itse ei aiheuta kaatua. 756 00:33:53,260 --> 00:33:55,509 Koska lopussa pцєivцє int on edelleen 32 bittiцє. 757 00:33:55,509 --> 00:33:57,640 Et aio vahingossa varastaa 33. vцєhцєn. 758 00:33:57,640 --> 00:33:58,431 Mutta hyvцє ajatus. 759 00:33:58,431 --> 00:33:58,984 Joo. 760 00:33:58,984 --> 00:33:59,900 >> YleisцІ: [kuulumaton]. 761 00:33:59,900 --> 00:34:00,551 762 00:34:00,551 --> 00:34:02,300 SPEAKER 1: menetelmцє koskaan pysцєhtyy, 763 00:34:02,300 --> 00:34:06,658 ja se todellakin kutsuu itseцєцєn uudelleen ja uudestaan Б─▀Б─▀ja uudestaan Б─▀Б─▀ja uudestaan 764 00:34:06,658 --> 00:34:08,449 ja jцєlleen, eikцє yksikцєцєn kyseisiцє toimintoja koskaan 765 00:34:08,449 --> 00:34:13,310 loppuun, koska niiden ainoa linja koodi kutsuu itsensцє uudestaan Б─▀Б─▀ja uudestaan 766 00:34:13,310 --> 00:34:14,219 ja uudelleen. 767 00:34:14,219 --> 00:34:16,080 Ja mitцє todella tцєцєllцє tapahtuu, ja nyt me 768 00:34:16,080 --> 00:34:18,100 voi sellaista tehdцє tцєmцєn kuvallisesti. 769 00:34:18,100 --> 00:34:20,899 Anna minun mennцє yli kuva vain hetken. 770 00:34:20,899 --> 00:34:22,940 Tцєmцє on kuva, joka lopulta konkretisoivat 771 00:34:22,940 --> 00:34:26,336 tarkemmin, mitцє on tekeillцє sisцєllцє tietokoneen muistiin. 772 00:34:26,336 --> 00:34:28,460 Ja kцєy ilmi, ettцє pohjassa tцєtцє kuvaa 773 00:34:28,460 --> 00:34:29,709 on jotain kutsutaan pino. 774 00:34:29,709 --> 00:34:31,920 Tцєmцє on kimpale muisti, kimpale RAM, 775 00:34:31,920 --> 00:34:33,920 joka on juuri kцєyttцєnyt aikaa funktiota kutsutaan. 776 00:34:33,920 --> 00:34:36,239 Aina kun, ohjelmoija, soittaa toiminto, 777 00:34:36,239 --> 00:34:38,860 kцєyttцІjцєrjestelmцє, kuten Mac OS, Windows, tai Linux, 778 00:34:38,860 --> 00:34:41,920 nappaa joukko tavuja, ehkцє Muutaman kilotavua, ehkцє muutamia megatavuja 779 00:34:41,920 --> 00:34:44,590 muistia, antaa niitцє teille, ja sitten antaa 780 00:34:44,590 --> 00:34:47,650 voit ajaa toiminnon avulla mitцє muuttujia tarvitset. 781 00:34:47,650 --> 00:34:50,699 Ja jos sitten soittaa toiseen funktio ja toisen toiminnon, 782 00:34:50,699 --> 00:34:53,590 saat toisen siivu muistia ja toinen siivu muistia. 783 00:34:53,590 --> 00:34:57,090 >> Ja todellakin, jos nцєmцє vihreцє tarjottimet alkaen Annenberg edustavat ettцє muisti, 784 00:34:57,090 --> 00:34:59,870 tцєssцє mitцє tapahtuu ensimmцєisenцє kun soitat toiminto sigma. 785 00:34:59,870 --> 00:35:04,510 Se on kuin laittaisi tarjotin nцєin mitцє on aluksi tyhjцє pino. 786 00:35:04,510 --> 00:35:07,142 Mutta sitten jos lokero kutsuu itseцєцєn, niin sanoakseni, 787 00:35:07,142 --> 00:35:08,850 soittaa toiseen esimerkiksi sigma, joka on 788 00:35:08,850 --> 00:35:11,640 kuin kysyisi kцєyttцІjцєrjestelmцє, ooh, tarvitsevat hieman enemmцєn muistia, 789 00:35:11,640 --> 00:35:12,520 Anna se minulle. 790 00:35:12,520 --> 00:35:14,840 Ja sitten se saa kasataan pцєцєlle. 791 00:35:14,840 --> 00:35:18,030 Mutta mitцє Tцєrkeintцє tцєssцє on, ettцє ensimmцєinen yksikkцІ on yhцє olemassa, 792 00:35:18,030 --> 00:35:20,620 koska hцєn vetosi tцєhцєn toiseen lokeroon. 793 00:35:20,620 --> 00:35:23,500 Nyt puolestaan Б─▀Б─▀sigma soittaa sigma, Se on kuin kysyisi lisцєцє muistia. 794 00:35:23,500 --> 00:35:25,830 Saa kasattu tцєnne. 795 00:35:25,830 --> 00:35:29,350 sigma soittaa sigma, joka on toinen lokero, joka saa kasataan tцєцєllцє. 796 00:35:29,350 --> 00:35:32,942 Ja jos pitцєцє tehdцє tцєtцє, lopulta, erцєцєnlainen kartta Visuaalisen 797 00:35:32,942 --> 00:35:35,525 kyseistцє karttaa, mitцє tulee tapahtua pino tarjottimia? 798 00:35:35,525 --> 00:35:37,480 799 00:35:37,480 --> 00:35:41,160 Se tulee ylittцєцє muistia tietokoneessa on. 800 00:35:41,160 --> 00:35:45,790 Ja heti kun tцєmцє vihreцє tarjotin ylittцєцє vaakasuora viiva 801 00:35:45,790 --> 00:35:49,410 Edellцє pino ja ylцєpuolella sana kasaan, josta tulemme takaisin tulevaisuudessa, 802 00:35:49,410 --> 00:35:50,410 ettцє on huono asia. 803 00:35:50,410 --> 00:35:52,810 Pino on erilainen segmentti muistia, 804 00:35:52,810 --> 00:35:55,190 ja jos annat nцєmцє tarjottimet paalun ja kasa, 805 00:35:55,190 --> 00:35:57,800 aiot ylittцєцє oma segmentti muistia, 806 00:35:57,800 --> 00:36:00,420 ja ohjelma on todellakin menossa kaatua. 807 00:36:00,420 --> 00:36:02,930 >> Nyt syrjцєцєn, tцєmцє ajatus ja rekursio, nцєin ollen, 808 00:36:02,930 --> 00:36:06,500 voi selvцєsti aiheuttaa ongelmia, mutta se ei ole vцєlttцєmцєttцє huono asia. 809 00:36:06,500 --> 00:36:08,840 Koska harkita, kun kaikki, how-- ja ehkцє 810 00:36:08,840 --> 00:36:11,700 tцєmцє vie hieman totuttelua to --how tyylikцєs tai kuinka yksinkertainen 811 00:36:11,700 --> 00:36:14,890 ettцє tцєytцєntцІцІnpano sigma oli. 812 00:36:14,890 --> 00:36:17,440 Ja emme aio kцєyttцєцє rekursio kaikki, ettцє paljon CS50, 813 00:36:17,440 --> 00:36:20,780 mutta CS51, ja oikeastaan Б─▀Б─▀missцєцєn luokassa jossa voit muokata tietorakenteita 814 00:36:20,780 --> 00:36:23,640 kuten puita tai perhe puita, ettцє on joitakin hierarkia, 815 00:36:23,640 --> 00:36:26,000 se on super, super hyцІdyllinen. 816 00:36:26,000 --> 00:36:29,750 Nyt, kuten syrjцєцєn, jotta voit kuten pyrkivцє tietotekniikan tutkijoita 817 00:36:29,750 --> 00:36:33,180 perehtynyt joitakin Googlen sisцєllцє vitsejцє, jos menet Google 818 00:36:33,180 --> 00:36:36,345 ja voit etsiцє mitцє on mцєцєrittely, vaikkapa rekursio, kirjoita. 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 Sivuhuomautuksena, olen vetцєnyt ylцІs muutama. 822 00:36:42,670 --> 00:36:45,470 Tцєmцє oli kuin 10 minuuttia viivyttely tцєnцє aamuna. 823 00:36:45,470 --> 00:36:52,890 Jos myцІs Google "vinossa", ilmoitus kallistamalla pцєцєtцє slightly-- 824 00:36:52,890 --> 00:36:55,120 ja niin tцєmцє on ehkцє useimmat hirvittцєvцє kaikista 825 00:36:55,120 --> 00:36:57,286 koska joku vietti kuten pцєivцєnsцє tцєytцєntцІцІnpanossa 826 00:36:57,286 --> 00:36:59,880 joitakin vuosia ago-- tule. 827 00:36:59,880 --> 00:37:01,140 828 00:37:01,140 --> 00:37:04,540 Voi, odota-- se vika. 829 00:37:04,540 --> 00:37:08,410 830 00:37:08,410 --> 00:37:11,410 >> Niin kцєynnissцє yksi maailman suurin sivustot 831 00:37:11,410 --> 00:37:13,510 ovat typeriцє pikku pцєцєsiцєismunia. 832 00:37:13,510 --> 00:37:16,690 He luultavasti kuluttavat triviaali mцєцєrцє riviцє koodia 833 00:37:16,690 --> 00:37:19,280 juuri niin, ettцє voimme olla vцєhцєn hauskaa tuollaista. 834 00:37:19,280 --> 00:37:22,140 Mutta ainakin nyt saat joitakin niistцє sisцєllцє vitsejцє. 835 00:37:22,140 --> 00:37:28,330 >> Nyt katsomaan joitakin White Lies olemme kertoneet myцІhцєцєn, 836 00:37:28,330 --> 00:37:30,707 ja alkaa kuoria takaisin jotkut kerrokset teknisesti 837 00:37:30,707 --> 00:37:32,790 niin ettцє te todella ymmцєrtцєцє mitцє on tekeillцє 838 00:37:32,790 --> 00:37:34,860 ja voit ymmцєrtцєцє joitakin uhkia, 839 00:37:34,860 --> 00:37:38,060 kuten Shellshock, ettцє ovat nyt alkaneet tulla 840 00:37:38,060 --> 00:37:41,110 eturintamassa kaikkien huomiota, ainakin tiedotusvцєlineissцє. 841 00:37:41,110 --> 00:37:45,810 Joten tцєssцє on hyvin yksinkertainen funktio joka palauttaa mitцєцєn, mitцєtцІn. 842 00:37:45,810 --> 00:37:46,790 Sen nimi on swap. 843 00:37:46,790 --> 00:37:50,880 Se kestцєцє kahden muuttujan ja se palauttaa mitцєцєn. 844 00:37:50,880 --> 00:37:52,260 Ottaa sisцєцєn ja b. 845 00:37:52,260 --> 00:37:53,337 Joten nopea esittelyn. 846 00:37:53,337 --> 00:37:54,170 Toimme nцєmцє ylцІs. 847 00:37:54,170 --> 00:37:56,100 Voisimme yhtцє hyvin ottaa hieman tauko tцєцєllцє vain hetken 848 00:37:56,100 --> 00:37:57,250 ja on vцєhцєn jotain juotavaa. 849 00:37:57,250 --> 00:38:00,120 Jos joku panisi pahakseni tuloaan minut tцєnne hetkeksi. 850 00:38:00,120 --> 00:38:01,830 Miten sinusta viininpunainen paita? 851 00:38:01,830 --> 00:38:02,335 Tule ylцІs. 852 00:38:02,335 --> 00:38:04,060 853 00:38:04,060 --> 00:38:05,260 Vain yksi tцєnцєцєn. 854 00:38:05,260 --> 00:38:06,251 Kiitos kuitenkin. 855 00:38:06,251 --> 00:38:08,000 Kunnossa, ja meillцє on tulossa kuka tцєцєllцє? 856 00:38:08,000 --> 00:38:08,660 Mikцє sinun nimesi on? 857 00:38:08,660 --> 00:38:09,360 >> Kaiutin 4: Laura. 858 00:38:09,360 --> 00:38:09,740 >> SPEAKER 1: Laura. 859 00:38:09,740 --> 00:38:10,370 Tule ylцІs. 860 00:38:10,370 --> 00:38:11,460 861 00:38:11,460 --> 00:38:13,850 Niin Laura, hyvin yksinkertainen haaste. 862 00:38:13,850 --> 00:38:14,704 863 00:38:14,704 --> 00:38:15,370 Hauska tavata yo. 864 00:38:15,370 --> 00:38:16,410 865 00:38:16,410 --> 00:38:16,910 Kunnossa. 866 00:38:16,910 --> 00:38:21,179 Joten meillцє on maitoa tцєnne ja meillцє on joitakin appelsiinimehua tцєnne 867 00:38:21,179 --> 00:38:23,345 ja jotkut kupit ettцє me lainattu Annenberg tцєnцєцєn. 868 00:38:23,345 --> 00:38:24,178 >> Kaiutin 4: Borrowed. 869 00:38:24,178 --> 00:38:27,240 SPEAKER 1: Ja mene eteenpцєin ja antaa sinulle puoli lasia tцєstцє. 870 00:38:27,240 --> 00:38:28,250 871 00:38:28,250 --> 00:38:28,800 Kunnossa. 872 00:38:28,800 --> 00:38:30,750 Ja me annamme sinulle puoli lasillinen maitoa. 873 00:38:30,750 --> 00:38:31,905 874 00:38:31,905 --> 00:38:35,890 Niin, ja juuri niin, ettцє voit muistaa, mitцє tцєmцє oli, 875 00:38:35,890 --> 00:38:38,860 Muistelin tuoda tцєmцє ylцІs ja tцєnцєцєn. 876 00:38:38,860 --> 00:38:42,030 877 00:38:42,030 --> 00:38:42,530 Okei. 878 00:38:42,530 --> 00:38:45,470 Jos sinulla ei ole mielessцє, katsotaanpa, me laittaa ne pцєцєlle oma lasit 879 00:38:45,470 --> 00:38:46,560 jos haluat. 880 00:38:46,560 --> 00:38:48,710 Tцєmцє tulee olemaan maailman Laura silmissцє. 881 00:38:48,710 --> 00:38:49,210 Kunnossa. 882 00:38:49,210 --> 00:38:53,820 Joten tavoite, annetaan kaksi kuppia neste tцєцєllцє, maito ja appelsiinimehu, 883 00:38:53,820 --> 00:38:58,370 on vaihtaa kaksi sisцєllцІn niin, ettцє appelsiinimehu menee maitoa kuppi 884 00:38:58,370 --> 00:39:00,710 ja maito menee appelsiinimehu kuppi. 885 00:39:00,710 --> 00:39:02,359 >> SPEAKER 4: Saanko toisen kupillisen? 886 00:39:02,359 --> 00:39:05,650 SPEAKER 1: Olen niin iloinen kysyit, vaikka Olisi ollut paljon parempi kuvamateriaalia 887 00:39:05,650 --> 00:39:06,710 jos et olisi pyytцєnyt. 888 00:39:06,710 --> 00:39:10,620 Mutta kyllцє, voimme tarjota sinulle kolmasosa kuppi, joka on tyhjцє, tietenkin. 889 00:39:10,620 --> 00:39:11,120 Kunnossa. 890 00:39:11,120 --> 00:39:12,300 Joten vaihtaa sisцєltцІцє siellцє. 891 00:39:12,300 --> 00:39:16,100 892 00:39:16,100 --> 00:39:17,050 Very nice. 893 00:39:17,050 --> 00:39:20,390 894 00:39:20,390 --> 00:39:21,305 Erittцєin hyvцє. 895 00:39:21,305 --> 00:39:23,121 896 00:39:23,121 --> 00:39:24,745 Teet tцєmцєn erittцєin huolellisesti. 897 00:39:24,745 --> 00:39:26,970 898 00:39:26,970 --> 00:39:28,655 Ja vaiheeseen kolme. 899 00:39:28,655 --> 00:39:30,390 900 00:39:30,390 --> 00:39:31,350 Kunnossa. 901 00:39:31,350 --> 00:39:31,930 Erinomainen. 902 00:39:31,930 --> 00:39:33,930 Aplodit olisi hyvцє Laura. 903 00:39:33,930 --> 00:39:36,500 904 00:39:36,500 --> 00:39:37,000 Kunnossa. 905 00:39:37,000 --> 00:39:40,790 Meillцє on pieni jakaus lahja sinulle, mutta haluan ottaa nцєmцє. 906 00:39:40,790 --> 00:39:42,620 Kiitos paljon. 907 00:39:42,620 --> 00:39:46,170 Niin yksinkertainen esimerkki, vaikka, osoittaa, ettцє jos teet 908 00:39:46,170 --> 00:39:48,300 haluat vaihtaa sisцєltцІцє kaksi sцєiliцІtцє, 909 00:39:48,300 --> 00:39:52,360 tai kutsukaamme niitцє muuttujia, tarvitset vцєliaikaista varastointia 910 00:39:52,360 --> 00:39:56,710 lavastaa yksi sisцєllцІn niin ettцє voit itse tehdцє swap. 911 00:39:56,710 --> 00:40:01,790 Niin tosiaan, tцєmцє lцєhdekoodi tцєnne C edustaa juuri sitцє. 912 00:40:01,790 --> 00:40:06,340 Jos appelsiinimehu oli ja maitoa oli b, ja halusimme vaihtaa kaksi, 913 00:40:06,340 --> 00:40:08,990 voisit kokeilla jotain luovaa kaatamalla sisцєkkцєin, 914 00:40:08,990 --> 00:40:11,031 mutta luultavasti ei end erityisen hyvin. 915 00:40:11,031 --> 00:40:15,260 Joten kцєytцєmme kolmasosaa cup, puhelu se tmp, T-M-P sopimuksen mukaan, 916 00:40:15,260 --> 00:40:19,370 ja laittaa sisцєltцІ EYVL siinцє sitten vaihtaa yhden kupin, 917 00:40:19,370 --> 00:40:22,610 sitten laittaa EYVL osaksi alkuperцєinen cup, jolloin 918 00:40:22,610 --> 00:40:25,320 saavuttamisessa, aivan kuten Laura teki, swap. 919 00:40:25,320 --> 00:40:26,850 >> Joten juuri siihen. 920 00:40:26,850 --> 00:40:30,110 Anna minun mennцє eteenpцєin ja avata up esimerkki, joka on 921 00:40:30,110 --> 00:40:32,720 oikeastaan Б─▀Б─▀nimeltцєцєn "no Vaihdetaan ", koska tцєmцє ei ole 922 00:40:32,720 --> 00:40:36,180 niin yksinkertaisesti tehdцє kuin luulisi. 923 00:40:36,180 --> 00:40:41,190 Joten tцєssцє ohjelmassa, huomaa, ettцє Kцєytцєn stdio.h, vanha ystцєvцєmme. 924 00:40:41,190 --> 00:40:43,130 Minulla on prototyyppi for swap siellцє, joka 925 00:40:43,130 --> 00:40:45,450 tarkoittaa sen tцєytцєntцІцІnpano on luultavasti alhaalla, 926 00:40:45,450 --> 00:40:48,050 ja katsotaan mitцє tцєmцє tцєrkein Ohjelma aikoo tehdцє minulle. 927 00:40:48,050 --> 00:40:52,020 Haluan ensin julistaa int x saa yksi, ja int y saa kaksi. 928 00:40:52,020 --> 00:40:54,930 Niin ajattele niitцє, koska EYVL ja maito, vastaavasti. 929 00:40:54,930 --> 00:40:57,100 Ja sitten minцє vain printf sanomalla x on tцєmцє 930 00:40:57,100 --> 00:41:00,120 ja y on tцєmцє, vain niin voin nцєkemцєцєn mitцє tapahtuu. 931 00:41:00,120 --> 00:41:03,810 Sitten olen printf vцєittцєen ettцє olen vaihtamalla kaksi, 932 00:41:03,810 --> 00:41:07,100 ja sitten tulostaa vцєittцєvцєt, ettцє he vaihtoivat, 933 00:41:07,100 --> 00:41:09,300 ja minцє tulostaa x ja y uudelleen. 934 00:41:09,300 --> 00:41:13,010 Joten tцєssцє ylцІs swap on mitцє Laura teki, 935 00:41:13,010 --> 00:41:16,240 ja mitцє nцєimme nцєytцІn hetki sitten. 936 00:41:16,240 --> 00:41:19,380 >> Joten mene eteenpцєin ja olla pettynyt. 937 00:41:19,380 --> 00:41:24,690 ц└lkцєцє swap, ja suorita mitцєцєn swap, zoomauksen tuotannon tцєцєllцє. 938 00:41:24,690 --> 00:41:28,320 Anna x on 1, y on 2, vaihtamalla vaihtuneet. 939 00:41:28,320 --> 00:41:32,700 x on edelleen 1, ja y on edelleen 2. 940 00:41:32,700 --> 00:41:37,630 Joten vaikka rehellisesti sanottuna, tцєmцє nцєyttцєцє aivan kuten, joskin teknisesti, 941 00:41:37,630 --> 00:41:40,730 mitцє Laura teki, ei nцєytцє toimivan. 942 00:41:40,730 --> 00:41:42,130 Niin miksi? 943 00:41:42,130 --> 00:41:46,630 No, kцєy ilmi, ettцє kun me kirjoittaa tцєllaisen ohjelman 944 00:41:46,630 --> 00:41:51,590 joka on sekцє pцєцє, korostettu tцєцєllцє, ja sitten toinen toiminto, kuten swap, 945 00:41:51,590 --> 00:41:54,230 korostettu tцєцєllцє, joka se kutsuu, maailma 946 00:41:54,230 --> 00:41:57,030 nцєyttцєцє vцєhцєn jotain nцєmцє lokerot hetki sitten. 947 00:41:57,030 --> 00:42:00,440 Kun tцєrkein ensin saa kutsutaan, Se on kuin kysyisi kцєyttцІjцєrjestelmцє 948 00:42:00,440 --> 00:42:04,030 ja vцєhцєn muistia paikallisia muuttujia kuin x ja y, ettцє tцєrkein on, 949 00:42:04,030 --> 00:42:05,660 ja he pцєцєtyvцєt oikeassa. 950 00:42:05,660 --> 00:42:10,920 Mutta jos tцєrkeimmцєt puhelut vaihtaa, ja tцєrkeimmцєt kulkee vaihtaa kaksi perustetta, ja b, 951 00:42:10,920 --> 00:42:16,410 appelsiinimehua ja maitoa, se ei ole kuin luovuttamalla appelsiinimehua ja maitoa 952 00:42:16,410 --> 00:42:17,500 Laura. 953 00:42:17,500 --> 00:42:21,300 Mitцє tietokone tekee, on se kulkee kopioita appelsiinimehua 954 00:42:21,300 --> 00:42:27,110 ja kopiot maitoa Laura, jotta mitцє lopulta sisцєlle tцєmцєn lokeron 955 00:42:27,110 --> 00:42:32,510 on arvo yksi ja kaksi, tai EYVL ja maito, mutta jцєljennцІksiцє, 956 00:42:32,510 --> 00:42:34,790 niin, ettцє tцєssцє vaiheessa tarina, siellцє 957 00:42:34,790 --> 00:42:36,930 on lehdessцє ja maito kussakin nцєistцє tarjottimia. 958 00:42:36,930 --> 00:42:39,260 On yksi ja kaksi Kussakin nцєistцє tarjottimia, 959 00:42:39,260 --> 00:42:41,720 ja swap-toiminto on todellakin toimi. 960 00:42:41,720 --> 00:42:46,090 Se vaihtamalla niitцє sisцєllцє Toisen ylimmцєn tarjotin, 961 00:42:46,090 --> 00:42:48,147 mutta ettцє swap ei ole vaikutusta. 962 00:42:48,147 --> 00:42:49,980 Ja perustuu vain joidenkin Perusperiaatteena olemme 963 00:42:49,980 --> 00:42:52,970 puhui ennen, ja jopa vain muutama minuutti sitten, mitцє 964 00:42:52,970 --> 00:42:58,770 saattaa selittцєцє muuttuvat ja b sisцєllцє swap 965 00:42:58,770 --> 00:43:05,560 ei ole vaikutusta x ja y, vaikka Kuljin x ja y swap toiminto. 966 00:43:05,560 --> 00:43:08,750 Mikцє on avain sana tцєssцє, ettцє voi yksioikoisesti selittцєцє? 967 00:43:08,750 --> 00:43:11,250 968 00:43:11,250 --> 00:43:12,627 Taisin kuulla sen tцєцєllцє? 969 00:43:12,627 --> 00:43:13,335 YleisцІ: Return. 970 00:43:13,335 --> 00:43:14,085 SPEAKER 1: Paluu? 971 00:43:14,085 --> 00:43:14,590 Ei palaa. 972 00:43:14,590 --> 00:43:15,895 Mennцєцєn keskenцєцєn. 973 00:43:15,895 --> 00:43:16,395 Mikцє se on? 974 00:43:16,395 --> 00:43:17,080 >> YleisцІ: [kuulumaton]. 975 00:43:17,080 --> 00:43:20,000 >> SPEAKER 1: OK, joten return-- voisimme tehdцє paluun tyцІtцє tarina, 976 00:43:20,000 --> 00:43:21,914 mutta siellцє on vielцє yksinkertaisempi selitys. 977 00:43:21,914 --> 00:43:22,580 YleisцІ: laajuus. 978 00:43:22,580 --> 00:43:23,288 SPEAKER 1: Soveltamisala. 979 00:43:23,288 --> 00:43:24,300 Otan soveltamisalaan. 980 00:43:24,300 --> 00:43:27,290 Joten laajuus, muista missцє meidцєn x ja y julisti. 981 00:43:27,290 --> 00:43:30,840 He julisti sisцєllцє Tцєrkeimpien asti tцєцєllцє. 982 00:43:30,840 --> 00:43:33,200 ja b puolestaan Б─▀Б─▀ovat tehokkaasti julisti 983 00:43:33,200 --> 00:43:35,930 sisцєllцє swap, ole aivan aaltosulkeita mutta silti 984 00:43:35,930 --> 00:43:37,690 yleisen alueen swap. 985 00:43:37,690 --> 00:43:40,560 Ja niin tosiaan, ja b olemassa vain tцєmцєn lokeroon 986 00:43:40,560 --> 00:43:44,850 alkaen Annenberg, tцєmцє Toinen koodinpцєtkцєn. 987 00:43:44,850 --> 00:43:49,500 Joten olemme todellakin muuttumassa kopio, mutta se ei oikeastaan Б─▀Б─▀paljonkaan apua. 988 00:43:49,500 --> 00:43:52,190 >> Joten katsomaan Tцєssцє hieman alemmalla tasolla. 989 00:43:52,190 --> 00:43:55,430 Aion mennцє takaisin lцєhdehakemisto, 990 00:43:55,430 --> 00:43:58,330 ja aion ensin zoomata tцєцєllцє, ja vain 991 00:43:58,330 --> 00:44:02,290 vahvistaa, ettцє olen tцєssцє isompi pцєцєteikkunaa 992 00:44:02,290 --> 00:44:04,430 Ohjelma on silti kцєyttцєytyy niin. 993 00:44:04,430 --> 00:44:06,840 Oletetaan nyt, ettцє tцєmцє ei ole tahallinen. 994 00:44:06,840 --> 00:44:10,090 Selvцєsti Halusin swap tyцІtцє, joten se tuntuu vika. 995 00:44:10,090 --> 00:44:12,780 Nyt voisin aloittaa lisцєцєmцєllцє paljon printf: n minun koodia, 996 00:44:12,780 --> 00:44:16,010 tulostamalla x tцєnne, y yli tцєцєllцє, tцєцєllцє, b tцєnne. 997 00:44:16,010 --> 00:44:18,220 Mutta suoraan sanottuna, se on luultavasti mitцє olet tehnyt jo pari viikkoa 998 00:44:18,220 --> 00:44:20,190 nyt virassa tuntia ja kotona tyцІskenneltцєessцє 999 00:44:20,190 --> 00:44:22,150 on psets yrittцєцє lцІytцєцє joitakin bugeja. 1000 00:44:22,150 --> 00:44:25,560 Mutta nцєet, jos et ole jo, ettцє ongelma asettaa kolme esitellцєцєn 1001 00:44:25,560 --> 00:44:31,630 komentoon nimeltцєцєn GDB, jos GDB, GNU debuggeri 1002 00:44:31,630 --> 00:44:34,040 on itse koko joukko ominaisuuksia, jotka voivat tosiasiallisesti 1003 00:44:34,040 --> 00:44:38,160 meidцєn ymmцєrtцєцє tilanteita nцєin, mutta enemmцєn vetoavasti, 1004 00:44:38,160 --> 00:44:39,940 ratkaista ongelmia ja lцІytцєцє vikoja. 1005 00:44:39,940 --> 00:44:40,940 Joten aion tehdцє tцєmцєn. 1006 00:44:40,940 --> 00:44:44,770 Sijasta ./noswap, olen sen sijaan juokse GDB ./noswap. 1007 00:44:44,770 --> 00:44:47,410 1008 00:44:47,410 --> 00:44:51,200 Toisin sanoen aion ajaa minun Ohjelma ei Bash, uusi ystцєvцє 1009 00:44:51,200 --> 00:44:51,850 tцєnцєцєn. 1010 00:44:51,850 --> 00:44:53,970 Aion ajaa minun Ohjelman noswap sisцєllцє 1011 00:44:53,970 --> 00:44:56,900 Tцєmцєn muu ohjelma nimeltцє GDB, joka on debuggerin, joka 1012 00:44:56,900 --> 00:45:01,035 on ohjelma, joka on suunniteltu auttamaan Te ihmiset lцІytцєmцєцєn ja poistamaan vikoja. 1013 00:45:01,035 --> 00:45:03,410 Joten jos osuin Run tцєцєllцє, siellцє hirvittцєvцє mцєцєrцє tekstiцє 1014 00:45:03,410 --> 00:45:04,868 ettцє et oikeastaan Б─▀Б─▀koskaan tarvitse lukea. 1015 00:45:04,868 --> 00:45:07,290 Se on pohjimmiltaan hцєiriцІtekijцє alkaen nopea, joka 1016 00:45:07,290 --> 00:45:10,030 Aion lyцІdцє Ctrl-L nousta huipulla siellцє. 1017 00:45:10,030 --> 00:45:11,800 Tцєmцє on GDB nopea. 1018 00:45:11,800 --> 00:45:15,550 Jos haluan ajaa tцєmцєn ohjelman nyt koska tцєmцє pieni lunttilappua nykypцєivцєn 1019 00:45:15,550 --> 00:45:21,860 dia ehdottaa, Run on ensimmцєinen kцєskee meidцєn tarkoitus esitellцє. 1020 00:45:21,860 --> 00:45:25,150 Ja olen juuri menossa kirjoittaa ajaa tцєnne sisцєlle GDB, 1021 00:45:25,150 --> 00:45:26,811 ja todellakin se juoksi minun ohjelma. 1022 00:45:26,811 --> 00:45:29,310 Nyt on olemassa joitakin muita lцєhdцІt nцєytцІn nцєin, 1023 00:45:29,310 --> 00:45:31,910 mutta se on GDB vain olemalla anaali ja kertoa meille, mitцє on tekeillцє. 1024 00:45:31,910 --> 00:45:34,451 Sinun ei todellakaan tarvitse huolehtia nцєistцє yksityiskohdista juuri nyt. 1025 00:45:34,451 --> 00:45:36,890 Mutta mikцє on todella siistiцє noin GDB, jos en tee tцєtцє again-- 1026 00:45:36,890 --> 00:45:42,100 Ohjaus-L tyhjentцєцє screen-- anna minun mennцє eteenpцєin ja tyyppi "break tцєrkein," siten, 1027 00:45:42,100 --> 00:45:45,743 kun lyцІn Enter, jossa mikцє kutsutaan taitekohta klo noswap.c, 1028 00:45:45,743 --> 00:45:51,270 linja 16, joka on kun GDB tajunnut minun ohjelma itse 1029 00:45:51,270 --> 00:45:53,070 on, minun funktio oikeastaan Б─▀Б─▀on. 1030 00:45:53,070 --> 00:45:55,070 Tцєmцє jцєtцєmme nyt mutta se osoite 1031 00:45:55,070 --> 00:45:57,310 muistiin nimenomaan tцєtцє toimintoa. 1032 00:45:57,310 --> 00:46:00,240 Joten nyt kun kirjoitan ajaa, huomaa, mitцє on siistiцє tцєцєllцє. 1033 00:46:00,240 --> 00:46:05,650 Oma ohjelma murtuu rivillцє I kertoi GDB keskeyttцєцє suorituksen. 1034 00:46:05,650 --> 00:46:09,850 Joten minun ei tarvitse nyt muuttaa koodia, lisцєtцє joitakin printf: n, kцєцєnnцІksen jцєlkeen se, uusintana 1035 00:46:09,850 --> 00:46:13,300 sitцє, muuttaa, lisцєtцє joitakin printf: n, tallenna se, kцєцєnnцІksen jцєlkeen se, aja se. 1036 00:46:13,300 --> 00:46:18,100 Voin vain kцєvellцє lцєpi minun ohjelma askel askel askeleelta ihmisen nopeudella, 1037 00:46:18,100 --> 00:46:20,880 ei Intelillцє-sisцєllцє sellaista nopeutta. 1038 00:46:20,880 --> 00:46:24,580 >> Joten nyt huomaa tцєtцє linjaa nцєkyy tцєssцє, ja jos palaan 1039 00:46:24,580 --> 00:46:27,800 minun ohjelma gedit, huomaa, ettцє tцєmцє on todella 1040 00:46:27,800 --> 00:46:29,280 ensimmцєinen rivi koodia. 1041 00:46:29,280 --> 00:46:31,240 On line 16 gedit. 1042 00:46:31,240 --> 00:46:34,610 On line 16 sisцєllцє GDB, ja jopa vaikka tцєmцє mustavalkoinen kцєyttцІliittymцє 1043 00:46:34,610 --> 00:46:37,760 ei ole lцєheskцєцєn niin kцєyttцєjцє ystцєvцєllinen, tцєmцє tarkoittaa 1044 00:46:37,760 --> 00:46:41,680 ettцє linja 16 ei ole toteutettu vielцє, mutta se on noin olla. 1045 00:46:41,680 --> 00:46:46,220 Joten todellakin jos kirjoitan tulosta x, ei printf, vain tulostaa x, 1046 00:46:46,220 --> 00:46:50,730 Saan vцєцєrцє arvo on nolla, koska x ei ole alustettu vielцє. 1047 00:46:50,730 --> 00:46:54,760 Joten aion kirjoittaa seuraavaksi, tai, jos haluavat olla fancy, vain N seuraavaksi. 1048 00:46:54,760 --> 00:46:59,090 Mutta kun kirjoitan seuraavaksi tulevat, nyt huomaa se siirtyy linjaa 17. 1049 00:46:59,090 --> 00:47:02,840 Joten loogisesti, jos olen teloitettiin linja 16 ja olen nyt kirjoita print x, 1050 00:47:02,840 --> 00:47:03,640 mitцє minun pitцєisi nцєhdцє? 1051 00:47:03,640 --> 00:47:04,970 1052 00:47:04,970 --> 00:47:05,520 Yksi. 1053 00:47:05,520 --> 00:47:07,820 >> Ja nyt tцєmцє on kieltцєmцєttцє sekava. 1054 00:47:07,820 --> 00:47:11,260 2 dollaria on vain hieno tapa, jos haluat viitata, ettцє arvo myцІhemmin, 1055 00:47:11,260 --> 00:47:12,510 voit sanoa "dollari allekirjoittaa kaksi." 1056 00:47:12,510 --> 00:47:13,480 Se on kuin takaisin viittaus. 1057 00:47:13,480 --> 00:47:14,570 Mutta nyt, vain sivuuttaa sitцє. 1058 00:47:14,570 --> 00:47:17,070 Mielenkiintoista on se, mitцє on oikeudesta yhtцєlцєisyysmerkin. 1059 00:47:17,070 --> 00:47:21,000 Ja nyt jos kirjoitan ensi kerran ja tulostaa y, haluan nцєhdцє 2. 1060 00:47:21,000 --> 00:47:23,870 Voin nyt myцІs tulostaa x uudestaan, ja rehellisesti, 1061 00:47:23,870 --> 00:47:27,130 jos saan hieman hцєmmentynyt siitцє, missцє minцє olen, voin kirjoittaa lista lista 1062 00:47:27,130 --> 00:47:30,590 ja vain nцєhdцє yhteydessцє ympцєri kohta olen todella osoitteessa. 1063 00:47:30,590 --> 00:47:35,180 Ja nyt voin kirjoittaa seuraava, ja siellцє x on 1. 1064 00:47:35,180 --> 00:47:36,300 Nyt kirjoitan seuraavaksi. 1065 00:47:36,300 --> 00:47:37,710 Voi, y on 2. 1066 00:47:37,710 --> 00:47:40,750 Ja vielцє, se on hцєmmentцєvцєцє, koska GDB tuotannosta 1067 00:47:40,750 --> 00:47:43,044 on kavallettu oma tuotos. 1068 00:47:43,044 --> 00:47:45,710 Mutta jos pitцєцє mielessцє, jonka vilkuillen edestakaisin koodin 1069 00:47:45,710 --> 00:47:47,740 tai muuttamisesta sen ulos puolella rinnan ehkцє sinun 1070 00:47:47,740 --> 00:47:51,020 nцєhdцє, ettцє todella olen vain tehostamalla kautta ohjelmani. 1071 00:47:51,020 --> 00:47:54,620 >> Mutta huomaa, mitцє tapahtuu seuraavaksi, kirjaimellisesti. 1072 00:47:54,620 --> 00:47:56,380 Tцєssцє on line 22. 1073 00:47:56,380 --> 00:48:01,315 Antakaa minun mennцє yli sen, mikцє liikkuu 23, ja jos tulostan x nyt vielцє yksi. 1074 00:48:01,315 --> 00:48:03,890 Ja jos voin tulostaa y nyt vielцє yksi. 1075 00:48:03,890 --> 00:48:05,820 Joten tцєmцє ei ole hyvцєцє harjoitusta. 1076 00:48:05,820 --> 00:48:07,450 Joten tee uudelleen tцєmцєn. 1077 00:48:07,450 --> 00:48:10,069 Anna minun mennцє takaisin ylцІs alkuun ja tyyppi aikavцєlillцє uudelleen. 1078 00:48:10,069 --> 00:48:12,110 Ja se sanoo ohjelman joka on parhaillaan debugged 1079 00:48:12,110 --> 00:48:14,109 on alkanut jo, aloitetaan alusta. 1080 00:48:14,109 --> 00:48:15,420 Kyllцє, tehdцєцєn tцєmцє uudestaan. 1081 00:48:15,420 --> 00:48:22,000 Ja tцєllцє kertaa Tehdцєцєn seuraavaksi, seuraava, seuraava, seuraava, seuraava, 1082 00:48:22,000 --> 00:48:24,180 mutta nyt asiat saavat mielenkiintoisen. 1083 00:48:24,180 --> 00:48:27,760 Nyt haluan astua swap, joten en kirjoita seuraava. 1084 00:48:27,760 --> 00:48:34,380 Kirjoitan askel, ja nyt huomaa sitцє on noussut minua noswap.c linja 33. 1085 00:48:34,380 --> 00:48:37,240 Jos menen takaisin gedit, mitцє linjaa 33? 1086 00:48:37,240 --> 00:48:40,500 Se on ensimmцєinen todellinen riviцє koodia sisцєllцє swap. 1087 00:48:40,500 --> 00:48:44,150 Mikцє on mukavaa, koska nyt voin Tцєllainen penkoa ja saada utelias 1088 00:48:44,150 --> 00:48:46,052 siitцє, mitцє tapahtuu juuri siellцє. 1089 00:48:46,052 --> 00:48:46,760 Saanen tulosta tmp. 1090 00:48:46,760 --> 00:48:47,770 1091 00:48:47,770 --> 00:48:48,800 Vau. 1092 00:48:48,800 --> 00:48:51,438 Miksi tmp on joitakin hullu, vцєцєrцє roskat arvo? 1093 00:48:51,438 --> 00:48:54,579 1094 00:48:54,579 --> 00:48:56,120 YleisцІ: Se ei ole alustettu. 1095 00:48:56,120 --> 00:48:57,150 SPEAKER 1: Se ei ole alustettu. 1096 00:48:57,150 --> 00:49:00,270 Ja todellakin, kun suoritat ohjelman, olet antanut lцєjцєn muistia 1097 00:49:00,270 --> 00:49:03,392 kцєyttцІjцєrjestelmцє, mutta ole alustettu arvoja, 1098 00:49:03,392 --> 00:49:05,600 niin mitцє bittiцє olet nцєhdцє tцєцєllцє, vaikka se on 1099 00:49:05,600 --> 00:49:07,770 tцєmцє hullu iso negatiivinen numero, tarkoittaa vain 1100 00:49:07,770 --> 00:49:10,750 ettцє ne ovat jцєцєnteitцє joitakin aiempia kцєyttцІ ettцє RAM, 1101 00:49:10,750 --> 00:49:13,050 vaikka en ole itse tarvitsi sitцє vielцє. 1102 00:49:13,050 --> 00:49:17,086 Joten nyt aion mennцє eteenpцєin ja tyyppi seuraavaksi, ja jos en nyt kirjoita print tmp, 1103 00:49:17,086 --> 00:49:17,835 mitцє minun pitцєisi nцєhdцє? 1104 00:49:17,835 --> 00:49:19,570 1105 00:49:19,570 --> 00:49:23,360 Arvosta riippumatta oli, on ensimmцєinen argumentti, vain 1106 00:49:23,360 --> 00:49:25,550 kuten x oli ensimmцєinen asia siirrellцєцєn vuonna, 1107 00:49:25,550 --> 00:49:30,450 niin ja x tulisi olla samat, joten tulosta tmp pitцєisi tulostaa minulle yksi. 1108 00:49:30,450 --> 00:49:36,360 >> Joten mitцє nцєet ongelmatilanteissa setti kolme on opetusohjelma tapaisena on GDB, 1109 00:49:36,360 --> 00:49:40,020 mutta ymmцєrtцєцє, ettцє tцєmцє on alku of katsomaan tyцІkalu, joka tosiasiallisesti 1110 00:49:40,020 --> 00:49:42,774 auttaa ongelmanratkaisussa niin paljon tehokkaammin. 1111 00:49:42,774 --> 00:49:44,690 Mitцє olemme viime kцєdessцє aikoo tehdцє keskiviikkona 1112 00:49:44,690 --> 00:49:48,180 on alkaa kuoria takaisin muutama kerros ja poistaa joitakin apupyцІrцєt. 1113 00:49:48,180 --> 00:49:50,496 Ettцє asia sanottu merkkijonon olemme kцєyttцєneet jo jonkin aikaa, 1114 00:49:50,496 --> 00:49:53,370 aiomme hitaasti ottaa sen pois teiltцє ja alkaa puhua 1115 00:49:53,370 --> 00:49:55,725 jotain esoteerisesti tunnetaan char *, 1116 00:49:55,725 --> 00:49:59,550 mutta aiomme tehdцє tцєmцєn mukava ja ensin varovasti, vaikka viitteitцє, 1117 00:49:59,550 --> 00:50:02,730 kuten niitцє kutsutaan, voi tehdцє joitakin erittцєin huonoja asioita, jos vцєцєrin, 1118 00:50:02,730 --> 00:50:06,040 tarkastelemalla hieman claymation alkaen ystцєvцєmme Nick Parlante Stanfordin 1119 00:50:06,040 --> 00:50:09,670 Yliopisto, tietojenkцєsittelytieteen professorina tiede, jotka rakensivat tцєmцєn esikatselu 1120 00:50:09,670 --> 00:50:11,075 ja mitцє on tulossa tцєnцє keskiviikkona. 1121 00:50:11,075 --> 00:50:12,196 1122 00:50:12,196 --> 00:50:13,400 >> [VIDEOTOISTOSTA] 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 Herцєtцє. 1126 00:50:15,780 --> 00:50:17,240 On aika osoitin hauskaa. 1127 00:50:17,240 --> 00:50:18,260 1128 00:50:18,260 --> 00:50:19,350 >> Mitцє se on? 1129 00:50:19,350 --> 00:50:21,150 Oppia viitteitцє? 1130 00:50:21,150 --> 00:50:22,050 Voi Goody! 1131 00:50:22,050 --> 00:50:22,897 1132 00:50:22,897 --> 00:50:23,730 [END VIDEOTOISTOSTA] 1133 00:50:23,730 --> 00:50:25,396 SPEAKER 1: Se odottaa sinua keskiviikkona. 1134 00:50:25,396 --> 00:50:26,440 Nцєhdцєцєn sitten. 1135 00:50:26,440 --> 00:50:27,106 [VIDEOTOISTOSTA] 1136 00:50:27,106 --> 00:50:30,420 -Ja Nyt, syvцє ajatuksia, by Daven Farnham. 1137 00:50:30,420 --> 00:50:33,980 1138 00:50:33,980 --> 00:50:35,900 >> Miksi me oppimisen C? 1139 00:50:35,900 --> 00:50:36,785 Miksei +? 1140 00:50:36,785 --> 00:50:38,550 1141 00:50:38,550 --> 00:50:40,910 >> [Naurua] 1142 00:50:40,910 --> 00:50:42,160 >> [END VIDEOTOISTOSTA]