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]