>> [Musiikki soi]
>> SPEAKER 1: Okei, tцєmцє on CS50, ja tцєmцє on alku viikolla neljцє,
ja kuten olet ehkцє kuullut tai lukea, maailma on pцєцєttymцєssцє.
Going ympцєri internet on ollut tiedon ja tietoisuuden
vikojen ohjelma, ohjelmointikieli nimeltцєцєn Bash.
Tцєmцє on ihanan merkkituotteiden kuten Shellshock, tai Bash oven,
mutta artikkeleita, kuten nцєmцє ei ole harvinaista.
Ja itse asiassa monet heistцє tuovat muistoja Heartbleed,
jotka olet ehkцє huomannut Paina takaisin viime kevцєцєnцє, joka
oli vastaavasti varsin dramaattinen.
Nyt nцєistцє teistцє tцєцєllцє tцєnцєцєn, kuinka moni teistцє on,
vaikka et ymmцєrrцє mitцє on kyse, kuullut Shellshock?
Kunnossa, ja kuinka moni teistцє joiden tietokoneet ovat haavoittuvia?
OK, siellцє pitцєisi olla paljon, paljon enemmцєn kцєsiцє juuri nyt, syistцє nцєemme.
>> Katsotaanpa katsomaan mitцє jatkunut tiedotusvцєlineissцє
ja sitten selittцєцє sitцє vцєhцєn tцєцєllцє meille teknisesti.
>> SPEAKER 2: Tietoturva-asiantuntijat ovat varoitti, ettцє vakava virhe saattaa
noin vaikuttaa satoja miljoonat maailman web-kцєyttцєjille.
Sillцє mikцє on vika, joka on ollut puhuttu Shellshock, ja mitцє se tekee?
No, Shellshock tunnetaan myцІs Bash bugi, ohjelmisto se hyцІdyntцєцє.
Hakkerit kцєyttцєvцєt virus scan haavoittuvia jцєrjestelmцєt Linuxia ja Unix
kцєyttцІjцєrjestelmiцє ja sitten tartuttaa ne.
Bash on komentotulkin.
Tцєmцєn avulla kцєyttцєjцєt komentoja kцєynnistцєцє ohjelmia ja ominaisuuksia sisцєllцє ohjelmisto
kirjoittamalla tekstiцє.
Sitцє kцєytetцєцєn tyypillisesti ohjelmoijat, ja ei pitцєisi olla avoin muulle maailmalle,
vaikka Shellshock muuttaa sitцє.
>> No, worringly, jotkut analyytikot Varoitan se voisi olla suurempi uhka,
koska Shellshock mahdollistaa tцєydellisen mцєцєrцєysvallan tartunnan kone,
katsoo Heartbleed sallittu vain hakkerit vakoilla tietokoneisiin.
Se on niin vakava, se on mitoitettu 10 10
vaikeusasteen mukaan kansallinen Haavoittuvuus tietokanta.
2/3 kaikista web-palvelimet ovat riskejцє, kuten jotkut Mac-tietokoneissa.
No, varmista, ettцє olet paikkaamalla jцєrjestelmцєt nyt.
Kuka tahansa hosting verkkosivuilla kцєynnissцє vaikuttaa kцєyttцІjцєrjestelmцєt
tulisi toteuttaa toimia niin pian kuin mahdollista.
Kuka tahansa voi varaa sen pitцєisi nцєyttцєцє niiden seurantaan ja verkkosovellusten
palomuurit varoa mitцєцєn hyцІkkцєyksiцє.
SPEAKER 3: Pahinta mitцє voisi tapahtua on
ettцє joku olisi kirjoittaa koodia, joka automaattisesti mennцє ja skannata
Internet ja vaikuttaisi kaikki nцєmцє tietokoneet.
Ja kun he tekevцєt sen hyvin, Pahinta he voisivat tehdцє
on vain poistaa kaiken, tai sulkea sivustot alas.
Jotta voisimme nцєhdцє vahinko tцєstцє nцєkцІkulmasta,
jos meillцє olisi ilkeцє ihmisiцє joka vain pцєцєttцєцє aiheuttaa tuhoa
saattamalla jцєrjestelmцєt alas tai poistamalla tiedostoja, ja tuollaista.
SPEAKER 2: Jotkut sanovat tцєmцє on yksi kaikkein vaikea mitata
bugeja vuotta, ja se voi kestцєцє viikkoja tai jopa
kuukauden mцєцєrittцєцє sen lopullista vaikutusta.
>> SPEAKER 1: Joten kaikki tцєmцє on totta, mutta hauska juttu on, lцєhes kaikki
ja kuvakieli juuri nцєhnyt, paitsi ehkцє nцєppцєimistцІ,
ei ole mitцєцєn tekemistцє sen kanssa, bug mitцєцєn.
Palvelimet ja johdot ja niin edelleen, Se on tavallaan tangentiaalisesti toisiinsa,
mutta ydin on oikeastaan Б─▀Б─▀aika tuttu, mitцє tцєцєllцє tapahtuu.
Itse haluaisin mennцє meidцєn CS50 laite.
Anna minun mennцє eteenpцєin ja maksimoida pцєцєteikkunassa tцєцєllцє.
Ja te kцєyttцєnyt tцєtцє, tai upotettu versio siitцє,
vuonna gedit voidakseen kirjoittaa ohjelmia, tyypin komentoja, ja niin edelleen,
ja tцєmцє on todella, ja on ollut viikkoja, Bash, B-A-S-H.
Tцєmцє on Bourne-Again Shell, joka on vain hieno tapa sanoa,
Tцєmцє on ohjelma, joka on vilkkuu nopea, tehokas,
joka istuu siellцє odottamassa panos sinulle.
Ja se on kцєsky linja-liitцєntцє, jonka kautta
te on kцєynnissцє komentoja ja lopulta koota ja sitten kцєynnissцє
ohjelmia.
>> Mutta Bash on myцІs ohjelmointi kieli seuraavassa mielessцє.
Tiedцєt, ettцє on olemassa komennot kuten cd ja ls sekцє clang ja muut,
mutta voit mцєцєritellцє omia komentoja toteuttamalla ne Bash.
Nyt emme aio mennцє hyvin yksityiskohtaisesti
kuten bash ohjelmointikieli, mutta tietцєцє esimerkiksi, ettцє tцєllцє hetkellцє,
ei ole mitцєцєn komentoa kutsutaan "hei."
Niin se lцІytyy yksi nцєistцє paketeista.
Se ei ole asennettu tietokoneeseen.
Kysy jцєrjestelmцєnvalvojalta.
Mutta jos haluan siellцє olevan ohjelman nimeltцєцєn "hei" in Bash tai minun nopea,
Voin itse kцєyttцєцє syntaksia, joka on aivan kuten C. Se ei ole aivan sama,
mutta se nцєyttцєцє melko samanlainen toiminto, vaikkakin puuttuu joitakin yksityiskohtia.
Mikцєцєn ei tunnu tapahtuvan, mutta nyt jos kirjoitan "hei"
voit itse kirjoittaa ohjelma, ei C, ei Java,
ei toisessa ohjelmointi kieli, mutta Bash itse.
>> Nyt Tцєrkeintцє tцєssцє on, ettцє kirjoitin name Halusin antaa tцєmцєn uuden kцєskyn,
ja suluissa ovat myцІs symbolinen tцєmцє on tehtцєvцє.
Sivuhuomautuksena, voit myцІs tehdцє hauskaa asioita, ja itse asiassa jopa Mac OS,
tцєmцє on ohjelma nimeltцє Terminal.
Se tulee rakennettu kenenkцєцєn tietokone, jossa on Mac tцєssцє huoneessa,
ja voit tehdцє samanlaisia Б─▀Б─▀asioita Mac OS, mutta voit mennцє enemmцєn pidemmцєlle.
Ja tцєmцє on hieman sivuavan, mutta se on aika hauskaa.
Olin muistutti tцєnцє aamuna, kun ajattelen tцєtцє kautta,
on pieni peli Kцєytin pelata yksi CS50 entinen TF:
jolloin aina kun hцєn kцєvelisi pois hцєnen nцєppцєimistцІ hцєnen nцєytцІn lukitus,
Haluaisin suorittaa komennon kuten this-- "tervehtimцєцєn."
Ja nyt aina kun hцєn tuli takaisin hцєnen nцєppцєimistцІ, kun olen tyhjentцєnyt nцєyttцІ
ja hцєn istui alas, yrittцєцє tehdцє tцІitцє,
luettelimiseksi hцєnen directory--
>> [ц└ц└NITOISTOA]
>> Haloo.
Hei.
>> SPEAKER 1: Niin, oikeudenmukaisuus, se ei oikeastaan Б─▀Б─▀"hei."
Se oli yleensцє jotain lцєhempцєnцє that--
[ц└ц└NITOISTOA]
-Beep.
SPEAKER 1: --that I would-- joten hцєnen tietokone olisi
vannon hцєntцє aina kun hцєn itse istuutui hцєnen nцєppцєimistцІ.
Ja hyvin nopeasti hцєn tajunnut ei lцєhtemцєцєn nцєytцІn lukitus.
Mutta tцєmцє viittaa lajitella tyhmцє hauskaa, ettцє olet
voi olla jotain kuten Bash.
Mutta se on hieman enemmцєn vakava, olla varma, kuin ettцє.
Ja itse asiassa, tцєmцє on yksi vaarallisin ja pitkцєaikaisia Б─▀Б─▀vikoja
joka on todella osuma maailman maailmanlaajuisesti.
Tцєmцє vika on ollut noin noin 20 vuotta,
ja sinun on lцІydettцєvцє juuri hetki sen suhteellinen yksinkertaisuus.
>> Joten tцєmцє on edustava kцєske jos
omistaa Mac, kirjaimellisesti juuri nyt kun sinulla on kansi auki,
voit kokeilla kirjoittaa tuohon ohjelma nimeltцє Terminal.
Terminaali on alle Sovellukset Utilities--
kerrankin, Windows-kцєyttцєjцєt eivцєt tarvitse huolestua erityisesti threat--
mutta ne teistцє Macien voi kirjoittaa tцєmцє tulee ikkuna kuten minцє teen tцєцєllцє,
ja jos et kirjoita ettцє tцєhцєn ohjelmaan
nimeltцєцєn Terminal, kuten minцє teen nyt, Jos nцєet sanan "haavoittuvia"
tietokone on alttiita hyvцєksikцєytцІlle.
>> Nyt mitцє se oikeastaan Б─▀Б─▀tarkoittaa?
Ja tцєmцє on totta joitakin melko hullu syntaksin,
mutta katsotaan ainakin vetцєцє ulos joitakin mielenkiintoisia nцєkцІkohtia.
Joten siellцє on joitakin syntaksin, joka nцєyttцєцє vцєhцєn tuttu, ainakin C
ja ohjelmointi yleisemmin.
Nцєen joitakin suluissa, puolipisteet aaltosulkeita, ja niin,
mutta kцєy ilmi, ettцє tцєmцє tyhmцє juttu tцєцєllцє keltainen
on ennen kaikkea osoitus ettцє ei mitцєцєn.
Paksusuolen keinot tehdцє mitцєцєn, ja puolipiste tarkoittaa lakata tekemцєstцє mitцєцєn.
Joten sisцєlle nцєistцє aaltosulkeita se,
ettцє minulla on yhtцєlцєinen allekirjoittaa vasemmalle, tцєmцє
on lцєhinnцє luoda komento, tai vaihteleva,
nimeltцєцєn x, ja osoittaa se ettцє keltainen vцєhцєn koodia siellцє.
Se voisi olla jotain "echo hei "tai" sano piip "tai jotain
muistuttaa, ettцє.
Mutta huomaa, jos silmцєsi vaeltaa edelleen oikealle,
siellцє on enemmцєn tцєtцє linjaa kuin vain loppuun, ettцє puolipiste.
"Echo haavoittuvia", ja sitten pidemmцєlle vielцє enemmцєn.
Toinen puolipiste, bash -c :.
>> Niin pitkцєn tarinan lyhyesti, tцєtцє linjaa koodi on
riittцєvцє pakottavista tietokoneella, joka on
alttiita tehdцє jotain ettцє haluat sen tehdцє,
koska siellцє on bugi Bash jolloin vaikka Bash piti lopettaa
lukeminen komentolinja oikeus siellцє jцєlkeen keltaista tekstiцє,
ja 20-plus-vuotias bugi, Bash on itse asiassa ollut kцєsittelyssцє
pidemmцєlle puolipiste ja aika paljon tekee mitцє se on kerrottu.
>> Niin mitцє vaikutuksia Kyseisen lopulta?
Sanoin vain "echo Hello" tai "echo haavoittuvia"
mutta mitцє jos teit jotain todella ilkeцє, kuten rm-rf *,
joita ehkцє ei koskaan kirjoitettu ennen,
ja rehellisesti luultavasti ei tulisi liian pian,
koska voit tehdцє paljon vahinkoa sen kanssa.
Miksi?
rm tekee mitцє, tietenkin?
Poistaa.
* Tarkoittaa mitцє?
Kaikki.
Niin se on niin kutsuttu villi kortti, niin se tarkoittaa
Poista kaikki hakemistossa.
-r sattuu tarkoittaa rekursiivinen, mikцє tarkoittaa, ettцє jos mitцє olet poistanut
on hakemisto, ja sisцєllцє on on muita tiedostoja ja muita hakemistoja,
rekursiivisesti sukeltaa sinne ja poistaa kaikki tцєmцє.
Ja f on pahin kaikista.
Kukaan tiedцє, mitцє f tarkoittaa tцєцєllцє?
Force.
Niin vцєkisin keinoin, jopa jos tцєmцє on huono idea,
tehdцє sen kysymцєttцє minut edelleen vahvistusta.
Joten, te tiedцєtte, me naura tцєmцє, mutta suoraan sanottuna, en luultavasti
kirjoitan tцєtцє useita kertoja pцєivцє, koska todellisuus
on se nopein tapa poistaa koko joukko tavaraa.
Mutta vaikka olen tehnyt jonkin verran vahinkoja.
>> Mutta jos olit huijata tietokoneen huomioon mцєцєriteltцєessцє jokin tyhmцє muuttuja
tai toimintoa kutsutaan x, mutta sitten huijaaminen tietokoneen tцєytцєntцІцІnpanosta
rajojen ulkopuolelle, ettцє toiminto, kuin ettцє puolipiste,
voit todellakin huijata tietokoneen osaksi tцєytцєntцІцІnpanosta jotain rm-rf
tai SцєhkцІposti komento tai Kopioi-komennolla.
Jotain kirjaimellisesti voit tehdцє tietokone, onko se poistaa tiedostoja,
luoda kuvaa, roskapostia joku, hyцІkkцєцє jotkut palvelin etцєnцє,
jos voit ilmaista sen komennolla, voit
voi huijata tietokoneen nцєin.
>> Nyt mitцє esimerkki miten voit tehdцє tцєmцєn?
No, siellцє on paljon tietokoneita Internetissцє kцєynnissцє Bash.
Kaikki meistцє Mac-kцєyttцєjцєt ovat joukossa.
Monet Linux-palvelimet ovat myцІs ne, ja Unix-palvelimia.
Windows taas saa suhteellisen pцєlkцєhцєstцє
paitsi jos olet asentanut erityisiцє ohjelmistoja.
Nyt paljon palvelimia varten Esimerkiksi ajaa web-palvelimia,
ja itse asiassa Linux on ehkцє Suosituin kцєyttцІjцєrjestelmцє
ajaa tietokoneissa internetissцє jotka palvelevat avata verkkosivuja.
Nyt kun nцєemme myцІhemmin lukukauden, kun
voit lцєhettцєцє pyynnцІn teidцєn browser-- Chrome,
Internet Explorer, whatever-- etцєpalvelimeen,
kцєy ilmi, ettцє vaikka kirjoittamasi www.example.com,
selain lцєhettцєцє viestin ettцє on hieman vaikeaselkoinen, kuten tцєmцє.
>> Mutta huomaa jotain outoa.
Ensimmцєiset kaksi riviцє En ole koskaan ennen nцєhnyt,
mutta ne eivцєt nцєytцє erityisen uhkaava.
Mutta huomaa, mitцє olen varastanut Kolmannen rivin tцєцєllцє.
Jos pahis oli lцєhettцєцє viesti tцєmцєn kaltaista hцєnen tietokoneensa
heikkouden Mac tai haavoittuva Linux-palvelin,
Hassua on ettцє Bash, ettцє yksinkertainen pikku komentoriville
on lцєsnцє kaikkialla ja on usein tottuneempia olennaisesti toteuttaa
sisцєllцІn viestin, ettцє se vastaanottaa.
Ja ettцє logiikka, voit huijata web-palvelin, siis,
lцєhettцєmцєllцє jotain User-agent, joka yleensцє
on tarkoitus sanoa nimi selaimen.
User-agent Chrome, User-Agent Internet Explorer User-Agent Firefox, tцєmцє
on vain selaimen tapa tunnistaa itsensцє.
Mutta jos pahis hyvin taitavasti sanoo, mm-mm, olen
aio kertoa teille mitцє minun selain on,
Minцє sen sijaan aion lцєhettцєцє sinulle tцєmцєn arvoituksellinen nцєkцІinen juttu rm-rf
* Se, voit kirjaimellisesti huijata haavoittuva web-palvelin Internetissцє
osaksi tцєytцєntцІцІnpanovaltion tarkalleen, ettцє siellцє poistamalla kaikki tiedostot.
Ja suoraan sanottuna, se ei ole edes pahin asia.
Voit tehdцє mitцє tahansa.
Voisit aloittaa jaettu palvelunestohyцІkkцєyksen hyцІkkцєys
jos olet lцєhettцєnyt tцєmцєn viestin koko risuryppцєцєt web-palvelimia
ja sitten oli ne kaikki laskeutua, sillцє Esimerkiksi, on Harvard.edu palvelimet,
ja voit lajitella Bang pahus ulos niistцє
jonka verkkoliikennettцє, joka oli muuten laukaisi tцєmцє pahis.
>> Niin, pitkцє tarina lyhyt, melkein jokainen tцєssцє huoneessa, joka omistaa Mac
on altis tцєmцєn.
Hopeareunus on, ettцє ellet kцєynnissцє web-palvelin kannettavan tietokoneen,
ja jos olet itse mцєцєrittцєnyt se antaa jotain SSH siihen,
olet itse turvassa.
Se on herkkцє, mutta ei ole yksi yrittцєцє pцєцєstцє kannettavan tietokoneen,
niin voit tavallaan varma.
Apple kuitenkin pian olla pцєivittцєцє korjaus tцєhцєn.
Linux-maailmassa on jo julkaissut useita korjauksia Fedora ja Ubuntu
ja muita Linux-versioita ja jopa jos suoritat pцєivityksen 50 laitteeseen,
vaikka sekin on pцєivitetцєцєn ja korjataan.
Mutta sekin ei ole todella ollut haavoittuva,
sillцє jos olet tinkered laitteen kanssa
ja teki kannettavan tietokoneen julkisesti saatavilla Internetissцє, joka ei ole
oletuksena, olet oikeastaan Б─▀Б─▀ollut hieno, koska
sekцє palomuuri ja muita tekniikoita.
>> Mutta se on цєцєrimmцєinen esimerkki bug ettцє olemme elцєneet kirjaimellisesti 20
vuotta, ja kuka tietцєцє, jos joku Koko tцєmцєn ajan on tiennyt siitцє?
Ja itse asiassa, tцєmцє on yksi keskeisistцє haasteista
ettцє nцєemme myцІhemmin lukukausi turvallisuudesta,
on, ettцє aivan kuten oikeassakin maailmassa, hyviцє tyyppejцє ovat haitta.
Pitцєцє roistoja pois, meidцєn on Varmista, ettцє jokainen ovi on lukittu,
ettцє jokainen ikkuna on turvallista, ettцє jokainen piste tullessa kotiin
on turvallista pitцєцє roistoja ulos.
Mutta mitцє pahis on tehdцє todella vaarantaa kotiisi
ja varastaa sinulta?
Hцєn vain on lцІytцєцє yksi lukitsematon ovi, yksi rikkoutuneen ikkunan, tai jotain
tцєmцєnsuuntaista, ja se on Sama tietoturva.
Voimme kirjoittaa miljoonia ohjelmakoodirivin
ja viettцєцє satoja tai tuhansia tunteja yrittцєцє saada se oikea,
mutta jos teet vain yhden virhe oikeellisuutta,
voit laittaa koko jцєrjestelmцєn ja todellakin tцєssцє tapauksessa koko internetin
ja maailma vaarassa.
>> Joten jos haluat lisцєtietoja tцєstцє, siirry osoitteeseen tцєцєllцє.
Ei ole tarvetta toimenpiteisiin tцєnцє iltana ellet
joukossa mukavampaa, ettцє on kцєynnissцє oma web
palvelimelle, jolloin sinun pitцєisi, itse asiassa pцєivittцєцє ohjelmiston.
>> MyцІs tцєmцє otsikko puheen, ja nyt paperi,
ettцє olemme yhteydessцє toisiinsa Kurssin verkkosivuilla tцєnцєцєn.
Se oli mies nimeltцєцєn Ken Thompson, joka
on hyvцєksyцє hyvin kuuluisa palkinto tietotekniikassa,
ja hцєn antoi tцєlle puheen joitakin vuosia sitten, lцєhinnцє tцєstцє samasta aiheesta.
Kysyy ihmiset kysymys, sinun pitцєisi todella
luottamus, lopulta, ohjelmisto olet saanut?
Esimerkiksi meillцє kaikilla on kirjoittanut ohjelmia,
ja olemme laatineet ne Clang.
Ja tietosi, olet kirjoittanut kaikki ohjelmat CS50 missцє on
takaoven tapaisena, on olemassa tapa ettцє pahis, jos suorittaa ohjelma,
voisi ottaa tietokoneesi haltuunsa?
TodennцєkцІisesti ei, eikцІ?
Mario, ja ahne, ja Credit.
Nцєmцє kaikki ovat melko pieniцє ohjelmia.
Sinun tцєytyy olla melko huono jos todella
tehty koko tietokoneen haavoittuvia kirjoittamisen jцєlkeen 10 tai 20 riviцє koodia,
tai ainakin tietцєmцєtцІn joidenkin turvallisuusvaikutuksista.
Nyt sanon, ettцє facetiously, mutta aiomme nцєhdцє tцєnцєцєn
ja tцєllцє viikolla se on oikeastaan todella, todella helppoa
olla huono ja tehdцє jopa lyhytohjelmia haavoittuvia.
>> Mutta nyt ainakin ymmцєrtцєцє ettцє kysymys onkin tцєцєllцє
on noin kalahtaa ja kцєцєntцєjцє.
Miksi olemme luottanut kalahtaa viimeiset kaksi tai kolme viikkoa?
Kuka sanoo, ettцє kuka kirjoitti kalahtaa ei ole "jos" ehto on
ettцє pohjimmiltaan pistetцєцєn jotkut nollat ja niitцє jokaiseen ohjelmaan se kokoaa
ettцє antaisi hцєnelle pцєцєsy tietokoneesi, kun olet unessa
ja kannettavan tietokoneen kansi on auki ja tietokone on kцєynnissцє?
Oikea?
Meillцє on tцєllainen kunnia jцєrjestelmцєn oikea Nyt jos luotamme siihen, ettцє kalahtaa on legit.
Luotat ettцє laite on legit.
Luotat ettцє kirjaimellisesti jokainen ohjelma Macin tai PC on luotettava.
Ja koska tцєmцє yksinkertainen bugi ehdottaa, vaikka se ei ole ilkeцє,
se ehdottomasti ei todennцєkцІisesti kyse.
>> Joten kannattaa olla peloissaan kuin helvetti.
Rehellisesti, ei ole yksinkertaista Ratkaisu tцєhцєn muille
kuin erцєцєnlainen yhteiskunnallisen tietoisuuden lisцєцєntyvцєn monimutkaisuuden
ettцє olemme rakentamassa pцєцєlle meidцєn tietokonejцєrjestelmiцє,
ja miten yhцє haavoittuvampia saatamme hyvinkin olla.
>> Nyt, ettцє sanoi, Breakout.
Joten Breakout on ongelma asetettu kolme, ja Breakout on peli menneiden
ettцє saatat muistaa, mutta meille ongelma asettaa kolme,
se antaa meille mahdollisuuden ottaa asiat varmuuskopioida lovi
niin ettцє kun me kirjoitamme ohjelmia, jopa pцєцєteikkunasta nцєin,
Voimme todella ajaa lopulta graafisia ohjelmia ei
toisin kuin meillцє oli pцєцєsy Scratch.
Joten tцєmцє on henkilцІstцІn tцєytцєntцІцІnpano Breakout,
joka on juuri tцєmцє tiili-breaking peli, ettцє siirrцєt meloa takaisin
edestakaisin, ja lyцІt niitцє vastaan Б─▀Б─▀vцєrillinen tiilet alkuun asti.
Joten tцєmцє tuo meille tavallaan takaisin, jos
pystyimme hyvin nopeasti Scratch, ja nyt C,
tцєytцєntцІцІn omia graafisia kцєyttцІliittymiцє.
>> Mutta enemmцєn kuin, ettцє tцєmцє Harjoitus on ensimmцєinen
jossa annamme sinulle kasan koodia.
Ja itse asiassa, minцє tuon nimenomaisen huomiota tцєhцєn, koska etenkin
niille vцєhemmцєn mukava, tцєmцє Harjoitus, ainakin ensi silmцєyksellцє,
tulee tuntea olemme ottaneet sitцє lovi.
Koska me olemme antaneet teille, joidenkin haku
ja lajittelun ongelmia PSET, nippu koodin ettцє kirjoitimme,
ja pari kommenttia jotka sanovat "tehdцє"
jossa sinun tцєytyy tцєyttцєцє tyhjцєt kohdat.
Joten ei liian pelottava, mutta se on ensimmцєinen kerta
olemme jakamassa sinulle koodin ettцє sinun tцєytyy ensin lukea, ymmцєrtцєцє, ja lisцєtцєцєn sitten
ja tцєydentцєцє sitцє.
>> Ja sitten Breakout, aiomme tehdцє samoin,
antaa sinulle muutamia kymmeniцє enemmцєn rivejцє koodia, joka suoraan sanoen, antaa sinulle
paljon puitteiden peli mutta pysцєhdy
tцєytцєntцІцІnpanon tiilet ja pallo ja mela,
mutta me toteuttaa joitakin muita ominaisuuksia.
Ja sekin ensi silmцєyksellцє, jцєlleen, varsinkin jos vцєhemmцєn mukavaksi,
voi tuntua erityisen pelottava ja luulet on niin monia uusia toimintoja
haluat kцєцєri mieltцєsi ympцєrillцє, ja se on totta.
Mutta pitцєцє muistaa, se on aivan kuten Scratch.
Kertoimet ovat et kцєyttцєnyt kaikkia palapelin palat Scratch.
Kertoimet ovat sinua ei vцєlittцєnyt kцєцєri mielesi ympцєrille ne kaikki
koska kaikki kesti oli nopealla silmцєyksellцє ymmцєrtцєцє, oh,
se mitцє voin tehdцє kanssa, ettцє palapelin pala.
Ja todellakin, ongelma-set 3 spec, me kohta sinua
klo ohjeista tulee esitellцє sinulle joitakin uusia toimintoja,
ja lopulta ohjelmointi rakentaa kцєytцєt.
Ehtoja, silmukoita, muuttujia ja funktioita
on oltava sama kuin mitцє olemme nцєhneet tцєhцєn mennessцє.
>> Joten todellakin, mitцє me annamme sinulla on joitakin mallikoodia
voit luoda ikkuna ettцє nцєyttцєцє ole toisin tцєtцє,
ja lopulta muuttaa sen jotain aivan kuten tцєmцє.
Niin hyцІdyntцєцє CS50, keskustella virka ja enemmцєn,
ja lohduttaa se, ettцє mцєцєrцє koodia sinun tulee kirjoittaa
ei oikeastaan Б─▀Б─▀ole kovin paljon.
Ensimmцєinen haaste on vain sopeutua itse koodia olemme kirjoitettu.
>> Kysyttцєvцєцє pset3, Shellshock, tai muuten?
>> YleisцІ: Tuntui menee lцєpi Breakout
ettцє koodi on lцєhes olio-tyyliin,
mutta ajattelin C oli olio-ohjelma.
SPEAKER 1: erinomainen kysymys.
Joten silmцєilyn jakelu-koodi, koodi
me kirjoitti pset3, niille tuttu, se
nцєyttцєцє se pikku olio.
Lyhyt vastaus on, se on.
Se lцєhentцєцє miten voisi tehdцє olio-koodin
kieltцє kuten C, mutta se on silti lopulta menettelyyn.
Ei ole olemassa menetelmiцє sisцєllцє muuttujat, kuten nцєet.
Mutta se muistuttaa, ettцє.
Ja nцєemme, ettцє ominaisuus taas uusista PHP ja JavaScript
loppua kohti lukukauden.
Mutta nyt, ajattele sitцє aavistus mitцє on tulossa.
Hyvцє kysymys.
Kunnossa.
Joten merge sort oli miten me vasen asioita viime kerralla.
Ja yhdistцєцє tavallaan oli viileцє siinцє mielessцє, ettцє se oli niin paljon nopeammin,
ainakin perustuu pintapuolisen testit teimme viime viikolla, kuin vaikkapa kupla
lajitella, valinta lajitella, lisцєyslajittelun.
Ja mikцє oli siisti sekin on vain miten ytimekkцєцєsti ja siististi
voit ilmaista se.
Ja mitцє sanomme se oli ylempi sidottu ajoaika yhdistцєmisen
lajitella?
Joo?
>> YleisцІ: n log n?
>> SPEAKER 1: n log n, oikea. n log n.
Ja tulemme takaisin, mitцє se todella tarkoittaa tai jos se on perцєisin,
mutta tцєmцє oli parempi kuin mitцє kцєyntiaika
ettцє nцєimme kupla valinta ja lisцєyslajittelun?
Joten n potenssiin. n potenssiin on tцєtцє suurempi,
ja vaikka se ei ole aivan selvцєцє, tietцєцє, ettцє log n on pienempi kuin n,
joten jos et n kertaa jotain pienempцєцє kuin n,
se tulee olemaan pienempi kuin n potenssiin.
Se on vцєhцєn intuition siellцє.
Mutta maksoimme hinnan tцєstцє.
Se oli nopeampi, mutta teema, joka alkoi ilmaantua viime viikolla oli tцєmцє kompromissi.
Sain paremman suorituskyvyn aika viisas, mutta mitцє
minцє viettцєцє toisaalta kцєsi, jotta saavuttamiseksi?
>> YleisцІ: Muisti.
SPEAKER 1: Sano uudestaan?
YleisцІ: Muisti.
SPEAKER 1: Muisti, tai tilaa yleisemmin.
Ja se ei ollut erittцєin ilmeinen meidцєn ihmisten,
mutta muistuttaa, ettцє meidцєn vapaaehtoisille astuivat esiin ja tehostamalla
takaisin ikцєцєn kuin siellцє array tцєцєllцє, ja ikцєцєn kuin siellцє
toinen joukko tцєssцє, ettцє he voisivat kцєyttцєцє, koska me
kaivattua jonnekin yhdistцєцє ne ihmiset.
Emme voineet vain vaihtaa ne paikoilleen.
Joten yhdistцєцє erцєцєnlainen vipuvaikutus on enemmцєn tilaa, joka
emme tarvinneet kanssa muut algoritmit,
mutta puoli on, ettцє se on paljon nopeampi.
Ja suoraan sanottuna, todellisessa maailmassa tilaa Nцєiden days-- RAM-muistia, kiintolevyn space--
on suhteellisen halpaa, ja niin se on ei vцєlttцєmцєttцє huono asia.
>> Joten vilkaista, hieman enemmцєn suunnitelmallisesti, mitцє teimme
ja miksi me sanoimme sitцє n log n.
Joten tцєssцє on kahdeksan numeroa ja kahdeksan vapaaehtoisia meillцє oli viime kerralla.
Ja ensimmцєinen asia, ettцє Merge Jцєrjestцє kertoi meille tehdцє, oli mikцє?
YleisцІ: Jaetaan se kahteen.
SPEAKER 1: Sano uudestaan?
YleisцІ: Jaetaan se kahteen.
SPEAKER 1: Jaetaan se kahteen, oikeassa.
Tцєmцє on hyvin mieleen puhelinluettelo, hajoita
ja valloittaa yleisemmin.
Joten me katsoimme vasen puoli.
Ja sitten kun sanoimme, lajitella vasen puoli elementtejцє,
mitцєs me seuraavaksi sanoa?
Lajitella vasen puoli vasemmalle puoli, joka antoi meille mahdollisuuden,
jцєlkeen jakamalla kahdella, keskitytцєцєn neljцєцєn ja kaksi.
>> Miten lajitella listan nyt, keltainen, koosta kaksi kцєyttцєen Merge Sort?
No jaa se kahtia, ja lajitella vasen puoli.
Ja tцєmцє oli, kun asiat sai vцєhцєn tyhmцє lyhyesti.
Miten lajitella luettelon, joka on annettu koko yksi, kuten tцєmцє numero neljцє tцєцєllцє?
Se on jцєrjestetty.
Olet valmis.
>> Mutta miten lajitella luettelon Koko Yksi kun on numero kaksi?
No, sama juttu, mutta nyt mitцє oli Kolmas ja tцєrkeцє askel Merge Jцєrjestцє?
Sinun piti yhdistцєцє vasemman puoli ja oikea puoli.
Ja kun me teimme, ettцє me katsoimme neljцє, me katsoimme kaksi.
Pцєцєtimme kunnossa, ilmeisesti kaksi tulee ensin,
joten laitoimme kaksi sen paikka, seuraa neljцє.
Ja nyt sinulla on sellainen taaksepцєin, ja tцєmцє on tavallaan ominaisuus
algoritmin kuin sulautua Lajittele, taaksepцєin muistiin.
Mikцє oli seuraavan rivin tarina?
Mitцє minun pitцєisi keskitytцєцєn seuraavaksi?
Oikea puoli on vasemmalle puoli, joka on kuusi ja kahdeksan.
>> Joten haluan vain selata tцєtцє ilman belaboring pisteen liikaa.
Kuudesta kahdeksaan, sitten kuusi on lajitellaan, kahdeksan lajitellaan.
Yhdistцєцє ne yhteen niin, ja nyt seuraava iso askel
on tietenkin jцєrjestцєцє oikea puoli ensimmцєinen askel tцєmцєn algoritmin.
Joten keskitymme yksi, kolme, seitsemцєn, viisi.
Me sitten keskittyцє vasen puoli.
Vasen puoli, ettцє oikea puoli ettцє, ja sitten yhdistцєцє yksi ja kolme.
Sitten oikea puoli ja sitten vasen puoli se, ja sitten oikeaa puolet.
Yhdistцєцє se, ja mitцє nyt askel jцєцє?
Yhdistцє iso vasen puoli ja iso oikea puoli, joten mennцєцєn sinne,
sitten kaksi, sitten kolme, sitten neljцє, sitten viisi, sitten kuusi, sitten seitsemцєn, sitten kahdeksan.
>> Joten nyt miksi tцєmцє lopulta paljastaa, varsinkin jos n ja logaritmit lisцєцє
yleensцє melko paeta sinua, ainakin miesmuistiin?
No, huomaa korkeus tцєmцє asia.
Meillцє oli kahdeksan elementtejцє, ja me jaettuna sen kaksi, kaksi, kaksi.
Joten log base kaksi kahdeksan antaa meille kolme.
Ja luottaa minuun, ettцє jos hieman utuinen siitцє.
Mutta logaritmi kaksi kahdeksan on kolme, joten olemme tehneet kolme kerrosta yhdistцєmistцє.
Ja kun yhdistimme elementit, kuinka monta elementtiцє
ei katsomme kullekin nцєistцє riviцє?
Yhteensцє n, eikцІ?
Koska yhdistцєцє ylцєrivi, vaikka teimme sen hajanainen,
me lopulta kosketti jokaista numero kerran.
Ja toisessa rivissцє, ja yhdistцєцє nцєmцє luettelot kokoa kaksi,
meidцєn tцєytyi koskettaa jokaisen elementin kerran.
Ja sitten tцєцєllцє todella selvцєsti viimeisellцє rivillцє,
meidцєn piti koskettaa jokainen nцєistцє elementit kerran, mutta vain kerran,
niin tцєssцє piilee siis meidцєn n log n.
>> Ja nyt vain tehdцє asioita hieman virallisempi vain hetken, jos
oli nyt analysoida klo erцєцєnlainen korkeamman tason
ja yrittцєцє pцєцєttцєцє, hyvin, kuinka voisi mennцє noin ilmentцєvцєt
kцєyntiaika tцєmцєn algoritmin vain katsomalla sitцє ja ei
kцєyttцєmцєllцє keinotekoinen esimerkki?
No, kuinka paljon aikaa sanoisit askel nцєin keltaisella veisi,
jos n <2 paluun?
Se on iso O mitцє?
Joten nцєen yksi, niin yksi askel, ehkцє kaksi askelta, koska se on, jos
ja palata sitten, mutta se on vakioaikaisia, eikцІ?
Joten sanoimme O (1), ja se on miten minцє ilmaista tцєtцє.
T, vain olla kцєyntiaika.
n on koko syцІttцІ, joten T (n), vain hieno tapa
sanoa kцєynnissцє aika annetaan panos koko n
tulee olemaan suuruusluokkaa jatkuvasti ajan O (1).
>> Mutta muuten, entцє tцєmцє?
Miten ilmaista kцєyntiaika tцєmцєn keltainen viiva?
T mitцє?
Voit erцєцєnlainen huijata tцєцєllцє vastata kysymykseeni syklisesti.
Joten jos kцєyntiajan yleinen me vain sanoa, T (n).
Ja nyt olet sellainen punting tцєцєllцє sanoi hyvin, vain erцєцєnlainen vasen puoli,
ja sitten lajitella oikea puoli.
Kuinka me saatamme vertauskuvallisesti kцєyntiaika tцєmцєn keltainen viiva?
T mitцє?
Mikцє on koko panos?
n yli kaksi.
Miksi en vain sanoa, ettцє?
Ja sitten tцєmцє on toinen T (n / 2) ja sitten uudelleen, jos olen yhdistцєцє kaksi lajiteltua puolikkaat,
kuinka monta elementtiцє olen menossa on koskettaa yhteensцє?
n.
Joten en voi ilmaista tцєmцєn, vain olla sellainen fancy,
koska kцєyntiaika yleensцє.
T (n) on vain ajoaika T (n / 2), plus T (n / 2), vasen puoli ja oikea puoli,
plus O (n), joka on luultavasti n vaiheita, mutta ehkцє, jos kцєytцєn kahta sormea,
se on kaksi kertaa niin paljon vaiheita, mutta se on lineaarinen.
On joitakin useita vaiheita se kertoimella n,
joten saatamme ilmaista tцєmцє tцєssцє.
Ja tцєmцє on, jos nyt me punt on takaisin meidцєn lukion matematiikan oppikirja
olemme ettцє toistuminen lopulta pцєцєtyy vastaten tцєmцєn, n kertaa log n,
jos itse tehdцє ulos matematiikka virallisemmin.
>> Niin, ettцє vain kahdesta nцєkцІkulmasta.
Yksi numeerisesti kovakoodatuilla edustava esimerkki
kцєyttцєen kahdeksan numeroa, ja lisцєцє tarkastellaan yleisesti, miten menimme sinne.
Mutta mikцє on todella mielenkiintoista tцєцєllцє on, jцєlleen, tцєmцє kцєsite pyцІrцєily.
En kцєytцє silmukoita.
Olen tavallaan mцєцєritellцєцєn jotain suhteen itse,
ei vain tцєmцєn Matemaattinen funktio,
vaan myцІs tцєmцєn pseudo-koodin.
Tцєmцє pseudo-koodi on rekursiivinen siitцє, ettцє kaksi sen linjat
lцєhinnцє kertoo sen mennцє kцєyttцєvцєt itse ratkaista pienempi
Ongelmana on pieni koko, ja sitten uudestaan Б─▀Б─▀ja uudestaan
ja uudelleen, kunnes me vuolla se alas tцєmцє ns pohja tapaus.
>> Joten oikeastaan Б─▀Б─▀tehdцє enemmцєn pakottavia take-away tцєstцє seuraavasti.
Anna minun mennцє gedit ja ottaa tarkastelemme joitakin nykypцєivцєn lцєhdekoodin,
erityisesti tцєssцє esimerkissцє tцєцєllцє.
Sigma 0, joka ilmeisesti lisцєцє ykkцІsestцє n.
Katsotaanpa mitцє tuttu ja tuntemattomia tцєцєllцє.
Ensin on pari sisцєltцєцє, joten mitцєцєn uutta siellцє.
Prototyyppi.
Olen hieman utuinen pцєцєlle Tцєmцєn jцєlkeen muutaman pцєivцєn,
mutta mitцє sanomme prototyyppi toiminto on?
YleisцІ: [kuulumaton].
SPEAKER 1: Mikцє tцєmцє on?
YleisцІ: Me julistaa sen.
SPEAKER 1: Me julistaa sen.
Joten opetat kalahtaa, hei, ei oikeastaan Б─▀Б─▀tцєytцєntцІцІnpanossa vielцє,
mutta jossain tцєmцєn tiedoston, oletettavasti, aiotaan toiminto nimeltцєцєn mitцє?
Sigma.
Ja tцєmцє on vain lupaus, ettцє se tulee nцєyttцєmцєцєn tцєltцє.
Se tulee ottaa kokonaisluvun input-- ja voin olla selvemmin
ja sanoa int n --and se aio palata int,
mutta puolipiste keinoin, mm, saan noin toteuttaa nцєitцє vцєhцєn myцІhemmin.
Jцєlleen kalahtaa on tyhmцє.
Se vain menee tietцєцє, mitцє kerrot sen ylhцєцєltцє alas,
joten meidцєn tцєytyy ainakin antaa se vihje mitцє on tulossa.
>> Nyt katsokaamme tцєrkein tцєцєllцє.
Katsotaanpa selaa tцєцєllцє mitцє tцєrkein tekee.
Se ei ole pitkцє funktion, ja itse asiassa konstrukti tцєssцє tuttu.
Julistan muuttuja n, ja sitten Olen kiusata kцєyttцєjцєn uudelleen ja uudelleen
ja positiivinen kokonaisluku kцєyttцєen getInt, ja vain lцєhteneet tцєmцєn silmukan
kun kцєyttцєjцє on tцєyttцєnyt.
Do Vaikka olemme kцєytetцєцєn kiusata kцєyttцєjцє tцєllцє tavalla.
Nyt tцєmцє on mielenkiintoista.
Julistan int nimeltцєцєn "vastaus."
Mцєцєritцєn sen paluuarvo on toiminto nimeltцєцєn "sigma."
En tiedцє, mitцє se tekee vielцє, mutta Muistan julistaa hetki sitten.
Ja sitten olen ohimennen Arvo, joka on kirjoitettu, n,
ja sitten voin ilmoittaa vastauksen.
No katsotaanpa siirry takaisin vain hetken.
Mennцєцєn eteenpцєin tцєhцєn hakemistoon, tee sigma 0, ja todella ajaa tцєtцє ohjelmaa
ja katso mitцє tapahtuu.
Joten jos menen eteenpцєin ja nousun Tцєssцє ohjelmassa ./sigma-0,
ja minцє kirjoita positiivinen kokonaisluku kuin kaksi, Sigma,
kuten Kreikan symboli kertoo, on vain menossa yhteen kaikki numerot
nolla jopa kaksi.
Joten 0 plus 1 plus 2.
Joten tцєmцєn pitцєisi toivottavasti antaa minulle 3.
Sitцє se tekee.
Ja samoin, jos en suorita tцєtцє uudelleen ja annan sen numero kolme,
Se on 3 plus 2, niin se on 5 plus 1 pitцєisi antaa minulle 6.
Ja sitten jos saan todella hullu ja alkaa kirjoittaa isompi mцєцєrцє,
se pitцєisi antaa minulle isompia ja isompia summia.
Niin siinцє kaikki.
>> Joten mitцє sigma nцєyttцєцє?
No, se on melko yksinkertainen.
Se, miten voisimme ovat panneet Tцєssцє viimeiset pari viikkoa.
"Int" tulee olemaan palautuva.
Sigma on nimi, ja se kestцєцє muuttuja m sijasta n.
Muutan ettцє alkuun asti.
Sitten tцєmцє on vain jцєrki tarkistaa.
Nцєemme miksi hetki.
Nyt julistan toisen muuttujan, summa, alustaa se nollaan.
Sitten on tцєmцє silmukka iteroidessaan, ilmeisesti selvyyden vuoksi,
i: = 1 jopa = m, mikцє on mitцє kцєyttцєjцє kirjoitettu, ja sitten minцє
kasvattaa summaa nцєin.
Ja sitten palata summa.
>> Joten pari kysymystцє.
Yksi, vцєitцєn minun kommentti, ettцє tцєmцє vцєltetцєцєn riski pцєцєttymцєttцІmцєцєn silmukkaan.
Miksi ohimennen negatiivinen luku aiheuttaa, mahdollisesti цєцєretцІn silmukka?
>> YleisцІ: Et koskaan pцєцєse metriцє.
>> SPEAKER 1: ц└lцє koskaan m.
Mutta m johdetaan vuonna, joten katsotaanpa harkita yksinkertainen esimerkki.
Jos m on hyvцєksyttiin mukaan kцєyttцєjцєlle kielteinen.
Riippumatta tцєrkein.
Tцєrkein suojelee meitцє tцєmцєkin, joten olen vain
on todella anaali sigma myцІs varmistaa
ettцє tulo ei voi olla negatiivinen.
Joten jos m on negatiivinen, jotain kielteistцє.
Mitцє nyt tapahtuu?
No, minulla on menossa saada alustetaan yhteen,
ja sitten tulee olemaan pienempi kuin tai yhtцє suuri kuin m?
>> Valmiustila.
Ettцє oli-- цєlkцєцєmme, Katsotaanpa nix tцєmцєn tarinan.
En kysynyt tцєtцє kysymystцє, koska vaara, ettцє olen viittasi
ei tule tapahtumaan, koska minulla on aina menossa olla suurempi than-- OK,
En aja tцєtцє kysymystцє.
OK.
Keskitytцєцєn vain tцєhцєn osaan tцєstцє.
Miksi Julistan joitakin ulkopuolella silmukan?
Huomautus linjalla 49 olen ilmoitettu i lenkin sisцєltцє,
mutta verkossa 48 olen julisti joitakin ulkopuolella.
Joo.
YleisцІ: [kuulumaton].
SPEAKER 1: Toki.
Joten ensinnцєkin En todellakaan halua julistaa ja alustaa summa
nollaan sisцєllцє silmukka jokaisen iteraation,
koska tцєmцє olisi selvцєsti voittaa tarkoituksena tiivisti numeroita.
Haluan pitцєцє muuttaa arvon takaisin nollaan.
Ja myцІs, mitцє toinen enemmцєn mystistцє Syynцє tцєhцєn samaa mallia pцєцєtцІs?
Joo.
>> YleisцІ: [kuulumaton].
SPEAKER 1: Aivan.
Haluan kцєyttцєцє sitцє ulkopuolella silmukan liian mitцє linjaa?
53.
Ja perustuu meidцєn nyrkkisцєцєntцІ Paria luentoja sitten,
muuttujia scoped, todella, ettцє aaltosulkeita jotka kattavat ne.
Joten jos en julistaa summa sisцєllцє Nцєiden ulko aaltosulkeita,
En voi kцєyttцєцє sitцє linjaa 53.
Toisin sanoen, jos olisin julistanut summa tцєцєllцє, tai jopa
Silmukka, en voinut kцєyttцєцє sitцє 53.
Muuttuja olisi kцєytцєnnцІssцє mennyt.
Joten pari syytцє siellцє.
Mutta nyt mennцєцєn takaisin ja katso mitцє tapahtuu.
Niin sigma saa kutsutaan.
Se lisцєцє jopa 1 plus 2 tai 1 ja 2 plus 3, ja sitten palauttaa arvon,
tallentaa sen vastauksen, ja printf tцєцєllцє Siksi nцєen ruudulla.
Joten tцєmцє on mitцє me kutsumme iteratiivinen lцєhestymistapa, jossa iteraatio vain
tarkoittaa, ettцє kцєytetцєцєn silmukka.
For-silmukan, kun silmukka, Do Vaikka silmukka, juuri tekemцєssцє jotain taas
ja uudestaan Б─▀Б─▀ja uudestaan.
>> Mutta sigma on tavallaan siisti toiminto ettцє voisin toteuttaa sen eri tavalla.
Entцє tцєmцє, joka vain olla sellainen viileцє,
haluaisin todella pцєцєstцє eroon Erцєn hцєiriцІtekijцє
sillцє tцєmцє toiminto on oikeastaan Б─▀Б─▀aika yksinkertainen.
Katsotaanpa vuolla se alas vain sen neljцєn keskeisen linjat
ja pцєцєstцє eroon kaikista kommentit ja aaltosulkeita.
Tцєmцє on tavallaan hцєkellyttцєvцє Vaihtoehtoinen toteutus.
Okei, ehkцє ei hцєkellyttцєvцє, mutta se on aika seksikkцєцєmpцєцє, okei,
katsomaan tцєtцє niin paljon enemmцєn ytimekkцєцєsti.
Vain neljцє riviцє koodia, Haluan ensin on tцєmцє jцєrki tarkistaa.
Jos m on pienempi tai yhtцє suuri kuin nolla, sigma ei ole mitцєцєn jцєrkeцє.
Se vain pitцєisi olla TцєllцІin positiivisten lukujen,
joten olen juuri menossa palata nolla mielivaltaisesti
niin ettцє meillцє on ainakin jotkut ns pohja tapaus.
>> Mutta tцєssцє on kauneutta.
Kokonaisuudessaan tцєmцєn ajatuksen lisцєцєmцєllцє numerot 1: stцє n tai m tцєssцє tapauksessa
voidaan tehdцє sellainen vastuun siirtцєminen.
No, mikцє on summa 1 m?
No, tiedцєtkцІ mitцє?
Se on sama kuin summa m plus summa 1 m miinus 1.
No arvaa mitцє?
Mikцє sigma m miinus 1?
No, jos sellainen seurata tцєtцє loogisesti, se on sama kuin m miinus 1
plus sigma m miinus 2.
Voit siis tavallaan vain-- tцєmцє on kuin, jos olet vain
yrittцєцє цєrsyttцєцє kaverille ja he kysyvцєt sinulta kysymyksen,
olet tavallaan vastata kysymykseen, voit sellaista pitцєцє vastuun siirtцєminen.
Mutta mitцє tцєrkeintцє on, ettцє jos pidцєt jolloin kysymys pienempiцє
ja pienempiцє, olet ei pyydцє mitцє sigma
N, mitцє sigma of n, mitцє sigma n: n?
Kysyt mitцє sigma N, mitцє sigma
n: miinus 1, mitцє sigma n: miinus 2?
Lopulta kysymyksesi on tulossa mitцє?
Mikцє on sigma yhden tai nolla, joitakin hyvin pieniцє arvo,
ja heti kun saada, ettцє ystцєvцєsi,
et aio kysyцє sama kysymys uudelleen,
olet juuri menossa sanoa, oi se on nolla.
Olemme pelanneet tцєmmцІinen tyhmцє syklinen peli.
>> Joten rekursio on toimittava ohjelmointia funktion kutsuu itseцєцєn.
Tцєmцє ohjelma, kun kootaan ja ajaa, on menossa kцєyttцєytyvцєt tцєsmцєlleen samalla tavalla,
mutta mikцє tцєrkeintцє on, ettцє sisцєllцє funktion kutsutaan sigma,
on rivi koodia jossa olemme kutsua itseцєmme,
jotka yleensцє huono.
Esimerkiksi mitцє jos en ensin koonnut tцєtцє, joten sigma--
Merkki sigma 1 ./sigma-1.
Positiivinen kokonaisluku, kiitos, 50 1275.
Joten mikцє toiminto nцєyttцєцє olla, joka perustuu yksi testi, oikea.
Mutta mitцє jos saan vцєhцєn vaarallinen ja poistaa ns base tapauksessa
ja vain sanoa, hyvin olen juuri tekemцєssцє Tцєmцєn monimutkaisempi kuin se on.
Toivotaan vain laskea sigma ottamalla m ja lisцєцєmцєllцє sitten
sigma m miinus yksi?
No, mitцє tulee tapahtumaan tцєцєllцє?
Katsotaanpa loitontaa.
Katsotaanpa kцєцєnnцІksen jцєlkeen ohjelmassa, tallenna se, kцєцєnnцІksen jцєlkeen ohjelma,
ja sitten valmis ./sigma-1 zoomaus, SyцІtцє positiivinen kokonaisluku kiitos, 50.
Kuinka moni teistцє on valmis ja ruikuttaa nцєkemцєцєn sen?
>> OK.
Joten tцєmцє voi tapahtua useista eri syistцє,
ja suoraan sanottuna tцєllцє viikolla olemme aikeissa antaa sinulle enemmцєn niistцє.
Mutta tцєssцє tapauksessa, kokeile jцєrkeillцє taaksepцєin
mitцє olisi voinut tapahtua tцєцєllцє?
Segmentointi vika, sanoimme viime aika, viittaa segmentin muistia.
Jotain pahaa on tapahtunut.
Mutta mikцє oli se mekaanisesti ettцє meni pieleen
tцєцєllцє, koska minun poisto ja ettцє niin sanotut pohja tapauksessa,
jos Palasin kovakoodatuilla arvo?
Mitцє mieltцє olet meni pieleen?
Joo.
>> YleisцІ: [kuulumaton].
SPEAKER 1: Ah.
Hyvцє kysymys.
Joten koko numeron ettцє olin yhteen asti
tuli niin iso, ettцє se ylitti koko muistia.
Hyvцє idea, mutta ei pohjimmiltaan menossa aiheuttaa kaatumisen.
Jotka saattavat aiheuttaa kokonaisluvun ylivuoto, jossa bitit vain kцєцєnnцє
ja sitten me erehtyцє todella iso numero kuin negatiivinen luku,
mutta joka itse ei aiheuta kaatua.
Koska lopussa pцєivцє int on edelleen 32 bittiцє.
Et aio vahingossa varastaa 33. vцєhцєn.
Mutta hyvцє ajatus.
Joo.
>> YleisцІ: [kuulumaton].
SPEAKER 1: menetelmцє koskaan pysцєhtyy,
ja se todellakin kutsuu itseцєцєn uudelleen ja uudestaan Б─▀Б─▀ja uudestaan Б─▀Б─▀ja uudestaan
ja jцєlleen, eikцє yksikцєцєn kyseisiцє toimintoja koskaan
loppuun, koska niiden ainoa linja koodi kutsuu itsensцє uudestaan Б─▀Б─▀ja uudestaan
ja uudelleen.
Ja mitцє todella tцєцєllцє tapahtuu, ja nyt me
voi sellaista tehdцє tцєmцєn kuvallisesti.
Anna minun mennцє yli kuva vain hetken.
Tцєmцє on kuva, joka lopulta konkretisoivat
tarkemmin, mitцє on tekeillцє sisцєllцє tietokoneen muistiin.
Ja kцєy ilmi, ettцє pohjassa tцєtцє kuvaa
on jotain kutsutaan pino.
Tцєmцє on kimpale muisti, kimpale RAM,
joka on juuri kцєyttцєnyt aikaa funktiota kutsutaan.
Aina kun, ohjelmoija, soittaa toiminto,
kцєyttцІjцєrjestelmцє, kuten Mac OS, Windows, tai Linux,
nappaa joukko tavuja, ehkцє Muutaman kilotavua, ehkцє muutamia megatavuja
muistia, antaa niitцє teille, ja sitten antaa
voit ajaa toiminnon avulla mitцє muuttujia tarvitset.
Ja jos sitten soittaa toiseen funktio ja toisen toiminnon,
saat toisen siivu muistia ja toinen siivu muistia.
>> Ja todellakin, jos nцєmцє vihreцє tarjottimet alkaen Annenberg edustavat ettцє muisti,
tцєssцє mitцє tapahtuu ensimmцєisenцє kun soitat toiminto sigma.
Se on kuin laittaisi tarjotin nцєin mitцє on aluksi tyhjцє pino.
Mutta sitten jos lokero kutsuu itseцєцєn, niin sanoakseni,
soittaa toiseen esimerkiksi sigma, joka on
kuin kysyisi kцєyttцІjцєrjestelmцє, ooh, tarvitsevat hieman enemmцєn muistia,
Anna se minulle.
Ja sitten se saa kasataan pцєцєlle.
Mutta mitцє Tцєrkeintцє tцєssцє on, ettцє ensimmцєinen yksikkцІ on yhцє olemassa,
koska hцєn vetosi tцєhцєn toiseen lokeroon.
Nyt puolestaan Б─▀Б─▀sigma soittaa sigma, Se on kuin kysyisi lisцєцє muistia.
Saa kasattu tцєnne.
sigma soittaa sigma, joka on toinen lokero, joka saa kasataan tцєцєllцє.
Ja jos pitцєцє tehdцє tцєtцє, lopulta, erцєцєnlainen kartta Visuaalisen
kyseistцє karttaa, mitцє tulee tapahtua pino tarjottimia?
Se tulee ylittцєцє muistia tietokoneessa on.
Ja heti kun tцєmцє vihreцє tarjotin ylittцєцє vaakasuora viiva
Edellцє pino ja ylцєpuolella sana kasaan, josta tulemme takaisin tulevaisuudessa,
ettцє on huono asia.
Pino on erilainen segmentti muistia,
ja jos annat nцєmцє tarjottimet paalun ja kasa,
aiot ylittцєцє oma segmentti muistia,
ja ohjelma on todellakin menossa kaatua.
>> Nyt syrjцєцєn, tцєmцє ajatus ja rekursio, nцєin ollen,
voi selvцєsti aiheuttaa ongelmia, mutta se ei ole vцєlttцєmцєttцє huono asia.
Koska harkita, kun kaikki, how-- ja ehkцє
tцєmцє vie hieman totuttelua to --how tyylikцєs tai kuinka yksinkertainen
ettцє tцєytцєntцІцІnpano sigma oli.
Ja emme aio kцєyttцєцє rekursio kaikki, ettцє paljon CS50,
mutta CS51, ja oikeastaan Б─▀Б─▀missцєцєn luokassa jossa voit muokata tietorakenteita
kuten puita tai perhe puita, ettцє on joitakin hierarkia,
se on super, super hyцІdyllinen.
Nyt, kuten syrjцєцєn, jotta voit kuten pyrkivцє tietotekniikan tutkijoita
perehtynyt joitakin Googlen sisцєllцє vitsejцє, jos menet Google
ja voit etsiцє mitцє on mцєцєrittely, vaikkapa rekursio, kirjoita.
Uh-huh.
Sivuhuomautuksena, olen vetцєnyt ylцІs muutama.
Tцєmцє oli kuin 10 minuuttia viivyttely tцєnцє aamuna.
Jos myцІs Google "vinossa", ilmoitus kallistamalla pцєцєtцє slightly--
ja niin tцєmцє on ehkцє useimmat hirvittцєvцє kaikista
koska joku vietti kuten pцєivцєnsцє tцєytцєntцІцІnpanossa
joitakin vuosia ago-- tule.
Voi, odota-- se vika.
>> Niin kцєynnissцє yksi maailman suurin sivustot
ovat typeriцє pikku pцєцєsiцєismunia.
He luultavasti kuluttavat triviaali mцєцєrцє riviцє koodia
juuri niin, ettцє voimme olla vцєhцєn hauskaa tuollaista.
Mutta ainakin nyt saat joitakin niistцє sisцєllцє vitsejцє.
>> Nyt katsomaan joitakin White Lies olemme kertoneet myцІhцєцєn,
ja alkaa kuoria takaisin jotkut kerrokset teknisesti
niin ettцє te todella ymmцєrtцєцє mitцє on tekeillцє
ja voit ymmцєrtцєцє joitakin uhkia,
kuten Shellshock, ettцє ovat nyt alkaneet tulla
eturintamassa kaikkien huomiota, ainakin tiedotusvцєlineissцє.
Joten tцєssцє on hyvin yksinkertainen funktio joka palauttaa mitцєцєn, mitцєtцІn.
Sen nimi on swap.
Se kestцєцє kahden muuttujan ja se palauttaa mitцєцєn.
Ottaa sisцєцєn ja b.
Joten nopea esittelyn.
Toimme nцєmцє ylцІs.
Voisimme yhtцє hyvin ottaa hieman tauko tцєцєllцє vain hetken
ja on vцєhцєn jotain juotavaa.
Jos joku panisi pahakseni tuloaan minut tцєnne hetkeksi.
Miten sinusta viininpunainen paita?
Tule ylцІs.
Vain yksi tцєnцєцєn.
Kiitos kuitenkin.
Kunnossa, ja meillцє on tulossa kuka tцєцєllцє?
Mikцє sinun nimesi on?
>> Kaiutin 4: Laura.
>> SPEAKER 1: Laura.
Tule ylцІs.
Niin Laura, hyvin yksinkertainen haaste.
Hauska tavata yo.
Kunnossa.
Joten meillцє on maitoa tцєnne ja meillцє on joitakin appelsiinimehua tцєnne
ja jotkut kupit ettцє me lainattu Annenberg tцєnцєцєn.
>> Kaiutin 4: Borrowed.
SPEAKER 1: Ja mene eteenpцєin ja antaa sinulle puoli lasia tцєstцє.
Kunnossa.
Ja me annamme sinulle puoli lasillinen maitoa.
Niin, ja juuri niin, ettцє voit muistaa, mitцє tцєmцє oli,
Muistelin tuoda tцєmцє ylцІs ja tцєnцєцєn.
Okei.
Jos sinulla ei ole mielessцє, katsotaanpa, me laittaa ne pцєцєlle oma lasit
jos haluat.
Tцєmцє tulee olemaan maailman Laura silmissцє.
Kunnossa.
Joten tavoite, annetaan kaksi kuppia neste tцєцєllцє, maito ja appelsiinimehu,
on vaihtaa kaksi sisцєllцІn niin, ettцє appelsiinimehu menee maitoa kuppi
ja maito menee appelsiinimehu kuppi.
>> SPEAKER 4: Saanko toisen kupillisen?
SPEAKER 1: Olen niin iloinen kysyit, vaikka Olisi ollut paljon parempi kuvamateriaalia
jos et olisi pyytцєnyt.
Mutta kyllцє, voimme tarjota sinulle kolmasosa kuppi, joka on tyhjцє, tietenkin.
Kunnossa.
Joten vaihtaa sisцєltцІцє siellцє.
Very nice.
Erittцєin hyvцє.
Teet tцєmцєn erittцєin huolellisesti.
Ja vaiheeseen kolme.
Kunnossa.
Erinomainen.
Aplodit olisi hyvцє Laura.
Kunnossa.
Meillцє on pieni jakaus lahja sinulle, mutta haluan ottaa nцєmцє.
Kiitos paljon.
Niin yksinkertainen esimerkki, vaikka, osoittaa, ettцє jos teet
haluat vaihtaa sisцєltцІцє kaksi sцєiliцІtцє,
tai kutsukaamme niitцє muuttujia, tarvitset vцєliaikaista varastointia
lavastaa yksi sisцєllцІn niin ettцє voit itse tehdцє swap.
Niin tosiaan, tцєmцє lцєhdekoodi tцєnne C edustaa juuri sitцє.
Jos appelsiinimehu oli ja maitoa oli b, ja halusimme vaihtaa kaksi,
voisit kokeilla jotain luovaa kaatamalla sisцєkkцєin,
mutta luultavasti ei end erityisen hyvin.
Joten kцєytцєmme kolmasosaa cup, puhelu se tmp, T-M-P sopimuksen mukaan,
ja laittaa sisцєltцІ EYVL siinцє sitten vaihtaa yhden kupin,
sitten laittaa EYVL osaksi alkuperцєinen cup, jolloin
saavuttamisessa, aivan kuten Laura teki, swap.
>> Joten juuri siihen.
Anna minun mennцє eteenpцєin ja avata up esimerkki, joka on
oikeastaan Б─▀Б─▀nimeltцєцєn "no Vaihdetaan ", koska tцєmцє ei ole
niin yksinkertaisesti tehdцє kuin luulisi.
Joten tцєssцє ohjelmassa, huomaa, ettцє Kцєytцєn stdio.h, vanha ystцєvцєmme.
Minulla on prototyyppi for swap siellцє, joka
tarkoittaa sen tцєytцєntцІцІnpano on luultavasti alhaalla,
ja katsotaan mitцє tцєmцє tцєrkein Ohjelma aikoo tehdцє minulle.
Haluan ensin julistaa int x saa yksi, ja int y saa kaksi.
Niin ajattele niitцє, koska EYVL ja maito, vastaavasti.
Ja sitten minцє vain printf sanomalla x on tцєmцє
ja y on tцєmцє, vain niin voin nцєkemцєцєn mitцє tapahtuu.
Sitten olen printf vцєittцєen ettцє olen vaihtamalla kaksi,
ja sitten tulostaa vцєittцєvцєt, ettцє he vaihtoivat,
ja minцє tulostaa x ja y uudelleen.
Joten tцєssцє ylцІs swap on mitцє Laura teki,
ja mitцє nцєimme nцєytцІn hetki sitten.
>> Joten mene eteenpцєin ja olla pettynyt.
ц└lkцєцє swap, ja suorita mitцєцєn swap, zoomauksen tuotannon tцєцєllцє.
Anna x on 1, y on 2, vaihtamalla vaihtuneet.
x on edelleen 1, ja y on edelleen 2.
Joten vaikka rehellisesti sanottuna, tцєmцє nцєyttцєцє aivan kuten, joskin teknisesti,
mitцє Laura teki, ei nцєytцє toimivan.
Niin miksi?
No, kцєy ilmi, ettцє kun me kirjoittaa tцєllaisen ohjelman
joka on sekцє pцєцє, korostettu tцєцєllцє, ja sitten toinen toiminto, kuten swap,
korostettu tцєцєllцє, joka se kutsuu, maailma
nцєyttцєцє vцєhцєn jotain nцєmцє lokerot hetki sitten.
Kun tцєrkein ensin saa kutsutaan, Se on kuin kysyisi kцєyttцІjцєrjestelmцє
ja vцєhцєn muistia paikallisia muuttujia kuin x ja y, ettцє tцєrkein on,
ja he pцєцєtyvцєt oikeassa.
Mutta jos tцєrkeimmцєt puhelut vaihtaa, ja tцєrkeimmцєt kulkee vaihtaa kaksi perustetta, ja b,
appelsiinimehua ja maitoa, se ei ole kuin luovuttamalla appelsiinimehua ja maitoa
Laura.
Mitцє tietokone tekee, on se kulkee kopioita appelsiinimehua
ja kopiot maitoa Laura, jotta mitцє lopulta sisцєlle tцєmцєn lokeron
on arvo yksi ja kaksi, tai EYVL ja maito, mutta jцєljennцІksiцє,
niin, ettцє tцєssцє vaiheessa tarina, siellцє
on lehdessцє ja maito kussakin nцєistцє tarjottimia.
On yksi ja kaksi Kussakin nцєistцє tarjottimia,
ja swap-toiminto on todellakin toimi.
Se vaihtamalla niitцє sisцєllцє Toisen ylimmцєn tarjotin,
mutta ettцє swap ei ole vaikutusta.
Ja perustuu vain joidenkin Perusperiaatteena olemme
puhui ennen, ja jopa vain muutama minuutti sitten, mitцє
saattaa selittцєцє muuttuvat ja b sisцєllцє swap
ei ole vaikutusta x ja y, vaikka Kuljin x ja y swap toiminto.
Mikцє on avain sana tцєssцє, ettцє voi yksioikoisesti selittцєцє?
Taisin kuulla sen tцєцєllцє?
YleisцІ: Return.
SPEAKER 1: Paluu?
Ei palaa.
Mennцєцєn keskenцєцєn.
Mikцє se on?
>> YleisцІ: [kuulumaton].
>> SPEAKER 1: OK, joten return-- voisimme tehdцє paluun tyцІtцє tarina,
mutta siellцє on vielцє yksinkertaisempi selitys.
YleisцІ: laajuus.
SPEAKER 1: Soveltamisala.
Otan soveltamisalaan.
Joten laajuus, muista missцє meidцєn x ja y julisti.
He julisti sisцєllцє Tцєrkeimpien asti tцєцєllцє.
ja b puolestaan Б─▀Б─▀ovat tehokkaasti julisti
sisцєllцє swap, ole aivan aaltosulkeita mutta silti
yleisen alueen swap.
Ja niin tosiaan, ja b olemassa vain tцєmцєn lokeroon
alkaen Annenberg, tцєmцє Toinen koodinpцєtkцєn.
Joten olemme todellakin muuttumassa kopio, mutta se ei oikeastaan Б─▀Б─▀paljonkaan apua.
>> Joten katsomaan Tцєssцє hieman alemmalla tasolla.
Aion mennцє takaisin lцєhdehakemisto,
ja aion ensin zoomata tцєцєllцє, ja vain
vahvistaa, ettцє olen tцєssцє isompi pцєцєteikkunaa
Ohjelma on silti kцєyttцєytyy niin.
Oletetaan nyt, ettцє tцєmцє ei ole tahallinen.
Selvцєsti Halusin swap tyцІtцє, joten se tuntuu vika.
Nyt voisin aloittaa lisцєцєmцєllцє paljon printf: n minun koodia,
tulostamalla x tцєnne, y yli tцєцєllцє, tцєцєllцє, b tцєnne.
Mutta suoraan sanottuna, se on luultavasti mitцє olet tehnyt jo pari viikkoa
nyt virassa tuntia ja kotona tyцІskenneltцєessцє
on psets yrittцєцє lцІytцєцє joitakin bugeja.
Mutta nцєet, jos et ole jo, ettцє ongelma asettaa kolme esitellцєцєn
komentoon nimeltцєцєn GDB, jos GDB, GNU debuggeri
on itse koko joukko ominaisuuksia, jotka voivat tosiasiallisesti
meidцєn ymmцєrtцєцє tilanteita nцєin, mutta enemmцєn vetoavasti,
ratkaista ongelmia ja lцІytцєцє vikoja.
Joten aion tehdцє tцєmцєn.
Sijasta ./noswap, olen sen sijaan juokse GDB ./noswap.
Toisin sanoen aion ajaa minun Ohjelma ei Bash, uusi ystцєvцє
tцєnцєцєn.
Aion ajaa minun Ohjelman noswap sisцєllцє
Tцєmцєn muu ohjelma nimeltцє GDB, joka on debuggerin, joka
on ohjelma, joka on suunniteltu auttamaan Te ihmiset lцІytцєmцєцєn ja poistamaan vikoja.
Joten jos osuin Run tцєцєllцє, siellцє hirvittцєvцє mцєцєrцє tekstiцє
ettцє et oikeastaan Б─▀Б─▀koskaan tarvitse lukea.
Se on pohjimmiltaan hцєiriцІtekijцє alkaen nopea, joka
Aion lyцІdцє Ctrl-L nousta huipulla siellцє.
Tцєmцє on GDB nopea.
Jos haluan ajaa tцєmцєn ohjelman nyt koska tцєmцє pieni lunttilappua nykypцєivцєn
dia ehdottaa, Run on ensimmцєinen kцєskee meidцєn tarkoitus esitellцє.
Ja olen juuri menossa kirjoittaa ajaa tцєnne sisцєlle GDB,
ja todellakin se juoksi minun ohjelma.
Nyt on olemassa joitakin muita lцєhdцІt nцєytцІn nцєin,
mutta se on GDB vain olemalla anaali ja kertoa meille, mitцє on tekeillцє.
Sinun ei todellakaan tarvitse huolehtia nцєistцє yksityiskohdista juuri nyt.
Mutta mikцє on todella siistiцє noin GDB, jos en tee tцєtцє again--
Ohjaus-L tyhjentцєцє screen-- anna minun mennцє eteenpцєin ja tyyppi "break tцєrkein," siten,
kun lyцІn Enter, jossa mikцє kutsutaan taitekohta klo noswap.c,
linja 16, joka on kun GDB tajunnut minun ohjelma itse
on, minun funktio oikeastaan Б─▀Б─▀on.
Tцєmцє jцєtцєmme nyt mutta se osoite
muistiin nimenomaan tцєtцє toimintoa.
Joten nyt kun kirjoitan ajaa, huomaa, mitцє on siistiцє tцєцєllцє.
Oma ohjelma murtuu rivillцє I kertoi GDB keskeyttцєцє suorituksen.
Joten minun ei tarvitse nyt muuttaa koodia, lisцєtцє joitakin printf: n, kцєцєnnцІksen jцєlkeen se, uusintana
sitцє, muuttaa, lisцєtцє joitakin printf: n, tallenna se, kцєцєnnцІksen jцєlkeen se, aja se.
Voin vain kцєvellцє lцєpi minun ohjelma askel askel askeleelta ihmisen nopeudella,
ei Intelillцє-sisцєllцє sellaista nopeutta.
>> Joten nyt huomaa tцєtцє linjaa nцєkyy tцєssцє, ja jos palaan
minun ohjelma gedit, huomaa, ettцє tцєmцє on todella
ensimmцєinen rivi koodia.
On line 16 gedit.
On line 16 sisцєllцє GDB, ja jopa vaikka tцєmцє mustavalkoinen kцєyttцІliittymцє
ei ole lцєheskцєцєn niin kцєyttцєjцє ystцєvцєllinen, tцєmцє tarkoittaa
ettцє linja 16 ei ole toteutettu vielцє, mutta se on noin olla.
Joten todellakin jos kirjoitan tulosta x, ei printf, vain tulostaa x,
Saan vцєцєrцє arvo on nolla, koska x ei ole alustettu vielцє.
Joten aion kirjoittaa seuraavaksi, tai, jos haluavat olla fancy, vain N seuraavaksi.
Mutta kun kirjoitan seuraavaksi tulevat, nyt huomaa se siirtyy linjaa 17.
Joten loogisesti, jos olen teloitettiin linja 16 ja olen nyt kirjoita print x,
mitцє minun pitцєisi nцєhdцє?
Yksi.
>> Ja nyt tцєmцє on kieltцєmцєttцє sekava.
2 dollaria on vain hieno tapa, jos haluat viitata, ettцє arvo myцІhemmin,
voit sanoa "dollari allekirjoittaa kaksi."
Se on kuin takaisin viittaus.
Mutta nyt, vain sivuuttaa sitцє.
Mielenkiintoista on se, mitцє on oikeudesta yhtцєlцєisyysmerkin.
Ja nyt jos kirjoitan ensi kerran ja tulostaa y, haluan nцєhdцє 2.
Voin nyt myцІs tulostaa x uudestaan, ja rehellisesti,
jos saan hieman hцєmmentynyt siitцє, missцє minцє olen, voin kirjoittaa lista lista
ja vain nцєhdцє yhteydessцє ympцєri kohta olen todella osoitteessa.
Ja nyt voin kirjoittaa seuraava, ja siellцє x on 1.
Nyt kirjoitan seuraavaksi.
Voi, y on 2.
Ja vielцє, se on hцєmmentцєvцєцє, koska GDB tuotannosta
on kavallettu oma tuotos.
Mutta jos pitцєцє mielessцє, jonka vilkuillen edestakaisin koodin
tai muuttamisesta sen ulos puolella rinnan ehkцє sinun
nцєhdцє, ettцє todella olen vain tehostamalla kautta ohjelmani.
>> Mutta huomaa, mitцє tapahtuu seuraavaksi, kirjaimellisesti.
Tцєssцє on line 22.
Antakaa minun mennцє yli sen, mikцє liikkuu 23, ja jos tulostan x nyt vielцє yksi.
Ja jos voin tulostaa y nyt vielцє yksi.
Joten tцєmцє ei ole hyvцєцє harjoitusta.
Joten tee uudelleen tцєmцєn.
Anna minun mennцє takaisin ylцІs alkuun ja tyyppi aikavцєlillцє uudelleen.
Ja se sanoo ohjelman joka on parhaillaan debugged
on alkanut jo, aloitetaan alusta.
Kyllцє, tehdцєцєn tцєmцє uudestaan.
Ja tцєllцє kertaa Tehdцєцєn seuraavaksi, seuraava, seuraava, seuraava, seuraava,
mutta nyt asiat saavat mielenkiintoisen.
Nyt haluan astua swap, joten en kirjoita seuraava.
Kirjoitan askel, ja nyt huomaa sitцє on noussut minua noswap.c linja 33.
Jos menen takaisin gedit, mitцє linjaa 33?
Se on ensimmцєinen todellinen riviцє koodia sisцєllцє swap.
Mikцє on mukavaa, koska nyt voin Tцєllainen penkoa ja saada utelias
siitцє, mitцє tapahtuu juuri siellцє.
Saanen tulosta tmp.
Vau.
Miksi tmp on joitakin hullu, vцєцєrцє roskat arvo?
YleisцІ: Se ei ole alustettu.
SPEAKER 1: Se ei ole alustettu.
Ja todellakin, kun suoritat ohjelman, olet antanut lцєjцєn muistia
kцєyttцІjцєrjestelmцє, mutta ole alustettu arvoja,
niin mitцє bittiцє olet nцєhdцє tцєцєllцє, vaikka se on
tцєmцє hullu iso negatiivinen numero, tarkoittaa vain
ettцє ne ovat jцєцєnteitцє joitakin aiempia kцєyttцІ ettцє RAM,
vaikka en ole itse tarvitsi sitцє vielцє.
Joten nyt aion mennцє eteenpцєin ja tyyppi seuraavaksi, ja jos en nyt kirjoita print tmp,
mitцє minun pitцєisi nцєhdцє?
Arvosta riippumatta oli, on ensimmцєinen argumentti, vain
kuten x oli ensimmцєinen asia siirrellцєцєn vuonna,
niin ja x tulisi olla samat, joten tulosta tmp pitцєisi tulostaa minulle yksi.
>> Joten mitцє nцєet ongelmatilanteissa setti kolme on opetusohjelma tapaisena on GDB,
mutta ymmцєrtцєцє, ettцє tцєmцє on alku of katsomaan tyцІkalu, joka tosiasiallisesti
auttaa ongelmanratkaisussa niin paljon tehokkaammin.
Mitцє olemme viime kцєdessцє aikoo tehdцє keskiviikkona
on alkaa kuoria takaisin muutama kerros ja poistaa joitakin apupyцІrцєt.
Ettцє asia sanottu merkkijonon olemme kцєyttцєneet jo jonkin aikaa,
aiomme hitaasti ottaa sen pois teiltцє ja alkaa puhua
jotain esoteerisesti tunnetaan char *,
mutta aiomme tehdцє tцєmцєn mukava ja ensin varovasti, vaikka viitteitцє,
kuten niitцє kutsutaan, voi tehdцє joitakin erittцєin huonoja asioita, jos vцєцєrin,
tarkastelemalla hieman claymation alkaen ystцєvцєmme Nick Parlante Stanfordin
Yliopisto, tietojenkцєsittelytieteen professorina tiede, jotka rakensivat tцєmцєn esikatselu
ja mitцє on tulossa tцєnцє keskiviikkona.
>> [VIDEOTOISTOSTA]
Hei, Binky.
Herцєtцє.
On aika osoitin hauskaa.
>> Mitцє se on?
Oppia viitteitцє?
Voi Goody!
[END VIDEOTOISTOSTA]
SPEAKER 1: Se odottaa sinua keskiviikkona.
Nцєhdцєцєn sitten.
[VIDEOTOISTOSTA]
-Ja Nyt, syvцє ajatuksia, by Daven Farnham.
>> Miksi me oppimisen C?
Miksei +?
>> [Naurua]
>> [END VIDEOTOISTOSTA]