[MUSIC ifa] HOPARLÖR 1: Bütün sağ, bu CS50 edir, və bu həftə dörd start edir və Siz eşitmişəm bilər və ya oxumaq, dünya bitən edilmişdir. Internet ətrafında bütün Going olmuşdur bilik və maarifləndirmə bir proqram, a bir səhv Bash adlı proqramlaşdırma dili. Bu gözəl markalı edilmişdir Shellshock ya Bash qapı kimi, lakin bu kimi məqalələr qeyri-adi deyil. Və əslində, onların çox gətirmək Heartbleed geri xatirələri, Siz qeyd ola bilər ötən yaz geri düyməsini basın olan eyni kifayət qədər dramatik idi. İndi sizin burada bu gün necə bir çox var başa düşmürəm, hətta nə Bu Shellshock eşitdim, haqqında bütün var? Bütün sağ, və siz necə çox həssas kompüter var? OK, uzaq daha əlləri olmalıdır indi up səbəblərdən biz görəcəksiniz. Nin nə bir nəzər salaq KİV-də davam və sonra bir az izah Burada bizim üçün texniki. HOPARLÖR 2: Təhlükəsizlik mütəxəssisləri var xəbərdarlığını ciddi bir qüsur ola bilər ki, yüzlərlə təsir haqqında Dünyanın web istifadəçilər milyonlarla. Belə ki, məhz oldu ki, səhv nə Shellshock dublyaj, və o nə edir? Yaxşı, Shellshock də kimi tanınır Bash bug, bu istismar proqram. Hackers həssas scan virus istifadə Linux və Unix çalışan sistemləri əməliyyat sistemləri və onlara sirayət. Bash bir command line shell edir. Bu istifadəçi məsələ başlamaq üçün əmr verir proqram çərçivəsində proqramları və xüsusiyyətləri mətn yazaraq. Bu adətən proqramçılar tərəfindən istifadə, və oldu dünyaya açıq olmamalıdır, Shellshock dəyişir baxmayaraq. Yaxşı, worringly, bəzi analitiklər Bu böyük təhlükə ola bilər xəbərdarlıq, Shellshock tam imkan verir, çünki bir yoluxmuş maşın nəzarət, Heartbleed isə yalnız icazə hakerlər kompüter casus. Bu, belə ki, ciddi 10 bir 10 qiymətləndirilib edilmişdir Milli tərəfindən şiddətli Açığı Database. Bütün web server 2/3 var Bəzi Mac kompüterlər daxil olmaqla risk. Yaxşı, siz əmin olun İndi sistemləri yama. Bir web çalışan hosting hər kəs təsirlənən əməliyyat sistemləri qısa müddətdə tədbirlər görməlidir. Bu baxmaq lazımdır ödəyə bilər hər kəs onların monitorinqi və web tətbiqi firewall hər hansı hücumlar üçün baxmaq. HOPARLÖR 3: pis şey ola bilər ki, Kimsə kodu yazmaq olardı ki, avtomatik getmək və scan ki, internet və təsir Bu kompüter bütün. Və onlar, bunu bir dəfə, onlar nə edə bilər, ən pis şey yalnız hər şeyi silin, və ya aşağı saytlar bağlamaq. Beləliklə, biz ziyan oldu bu nöqteyi-dan, biz pis niyyətli insanlar var ki, burada olan yalnız havoc səbəb qərar sistemləri aşağı salınmasında və ya silinməsi ilə kimi faylları, və hər şeyi. HOPARLÖR 2: Bəzi bu demək ən çətin ölçmək üçün il bugs, və bu həftə və ya hətta bilər ay son təsirini müəyyən etmək üçün. HOPARLÖR 1: Belə ki, bütün doğrudur lakin funny şey demək olar ki, bütün deyil görüntü yalnız gördüm, bəlkə klaviatura istisna olmaqla, ilə əlaqəsi yoxdur heç səhv. Serverlər və teller və s, bu cür tangentially bağlı oldu, lakin əsas olduqca həqiqətən tanış burada neler. Əslində, mənə gedək bizim CS50 cihaz. Mənə irəli getmək və maksimize bildirin burada terminal pəncərə. Və uşaqlar, bu istifadə edilmişdir və ya, onun versiyası əlaqədar proqramları yazmaq üçün gedit, s komutları yazın və, və bu həqiqətən var və həftə, Bash, B-A-S-H olmuşdur. Bu edir Bourne yenidən, shell olan deyərək bir xülya yoludur, bu bir var ki, bir proqram səmərəli, tez yanıb-sönən, ki, gözləyir oturur sizin üçün giriş üçün. Və komanda var line interface olan vasitəsilə Sizlərin əmrləri çalışan edilmişdir və nəticədə tərtib və sonra çalışan proqramları. Amma Bash də proqramlaşdırma Aşağıdakı mənada dil. Siz kimi əmrləri olduğunu bilirik cd və ls və həmçinin cingilti və başqaları, lakin öz əmrləri müəyyən edə bilərsiniz Bash onları həyata. İndi biz fikrində deyilik böyük ətraflı daxil kimi proqramlaşdırma dili cümbüş, lakin , məsələn, bilirsiniz, an ki, adlı komanda var "salam". Belə ki, bilər Bu paketləri biridir. Bu, mənim kompüter yüklü deyil. Sizin administrator soruşun. Amma orada istəyirsinizsə bir proqram üçün Bash ya mənim sətirinə "salam" adlı, Mən, həqiqətən, ki, sintaksis istifadə edə bilərsiniz olduqca C. kimi, kifayət qədər eyni deyil ancaq bir olduqca benzer funksiyası, bəzi təfərrüatları itkin olsa. Heç bir şey görünür, lakin indi mən "salam" yazın əgər Siz, həqiqətən, bir yaza bilərsiniz proqram deyil C deyil, Java, başqa proqramlaşdırma dil, lakin Bash özü. İndi burada əsas mən yazdı ki, Bu yeni bir əmr vermək istədim ad, və parantez də Bu simvolik bir funksiyası olan. Bir kənara kimi, siz də əyləncə edə bilərsiniz və əslində, hətta Mac OS şeyi, Bu Terminal adlı bir proqramdır. Bu hər kəs daxil gəlir Bu otaqda bir Mac var ki, kompüter, və Mac bənzər şeylər edə bilərsiniz OS, lakin siz kənarda bilərsiniz. Və bu, bir az teğet lakin bu cür əyləncə var. Mən bu səhər xatırladıldı, Bu vasitəsilə düşünür zaman, bir az oyun Mən oynamaq üçün istifadə CS50 keçmiş TFS biri ilə istənilən vaxt, o uzaq gəzmək vasitəsi onun ekranda ilə klaviatura oxunuş, Mən bir əmri yerinə olardı bu kimi "salam demək." İndi hər hansı bir zaman o geri gəldi onun klaviatura Mən ekran rəsmiləşdirilməyib sonra və o, aşağı oturmaq olardı bəzi iş etmək üçün cəhd, onun qovluğu məzmunu siyahısı [AUDIO playback] -Alo. Hello. Ədalət Belə ki,: HOPARLÖR 1 Bu "salam". həqiqətən deyil Bu adətən bir şey idi that-- daha yaxın [AUDIO playback] -Beep. HOPARLÖR 1: I would-- --that belə ki, onun kompüter ki O, həqiqətən, ona heç bir zaman and onun klaviatura oturdu. Və çox tez o fiqurlu Onun ekran etmişlər tərk etmək deyil. Amma bu cür təklif axmaq əyləncə ki, Bash kimi bir şey ilə ola bilər. Amma bir az daha çox ciddi, daha əmin olmaq. Və əslində, bu biridir ən təhlükəli və uzunmüddətli bugs həqiqətən qlobal dünya isabət etdi. Bu səhv ətrafında olmuşdur 20 ildir, və yalnız bir də vurdu olacaq onun nisbi sadəliyi an. Belə ki, bu nümayəndəsidir əmr əgər sanki indi, Mac öz Siz qapaq açıq zaman, ki yazaraq cəhd edə bilərsiniz Terminal adlı program. Terminal altında Proqramlar kommunal xidmət bir dəfə üçün, Windows users yoxdur bu threat-- narahat lakin Macs ilə sizin yazın bir pəncərə bu mən burada edəcəyik kimi, və siz yazın əgər Bu proqram ki, Mən indi nə olacaq kimi, Terminal adlı, Sözü görmək əgər "zəif" Sizin kompüter istismar həssas. İndi həqiqətən nə deməkdir? Və bu etiraf edir bəzi olduqca crazy sintaksis, lakin ən azı çəkmək imkan maraqlı aspektləri bəzi. Belə görünür ki, bəzi sintaksis var ən azı C, tanış bir az və daha çox, ümumiyyətlə proqramlaşdırma. Mən bəzi parantez görmək, semicolons, qıvrım aşırma və bu, lakin bu çıxır ki, sarı burada axmaq şey bir funksiyası əsasən ki, heç bir şey yoxdur. Kolon vasitələri heç bir şey, və nöqtəli vergül heç bir şey bunu dayandırmaq deməkdir. Bu daxili Belə ki, qıvrım aşırma, əslində Mən bərabər var ki, sol, bu imza mahiyyətcə yaradır bir komanda və ya bir dəyişən, x adlanır və onu təyin orada kodu ki, sarı bit. Ki, "echo kimi bir şey ola bilər salam "və ya" beep "və ya bir şey ki, yaxın. Ancaq gözləri əgər bildiriş doğru daha gezmek, artıq bu xətt daha çox var ki, nöqtəli vergül yalnız son. Sonra ", həssas Echo" və kənarda daha çox var. Digər nöqtəli vergül, bash c :. Belə ki, uzun hekayə qısa, kodu bu xətt çekici üçün kifayət qədər ki, bir kompüter bir şey bunu həssas Siz etmək istəyirəm ki, Bash vasitəsi bir səhv var, çünki Bash dayandırmaq idi baxmayaraq command sağ oxu xətləri orada sarı mətn sonra, 20-plus yaşlı səhv, Bash həqiqətən oxu olmuşdur ki, nöqtəli vergül kənarda və olduqca qədər izah nə. Belə ki, dolayısı nə var ki, nəticədə? Mən yalnız "salam echo" dedi və ya "zəif echo" lakin nə bir şey idi əgər həqiqətən zərərli, rm-rf * kimi, siz ola bilər əvvəl heç yazdığınız, və səmimi yəqin ki, çox tezliklə olmalıdır, Bir edə bilərsiniz, çünki bu zərər var. Niyə? rm əlbəttə nə yoxdur? Rədd et. * Nə deməkdir? Bütün. Belə ki, qondarma var vəhşi kart, o deməkdir ki, hər şeyi silmək cari kataloq. r recursive demək olur, Siz silmə ne varsa deməkdir bir kataloq və orada daxili Digər faylları və digər rehberler edir recursively var dive və bütün silin. Və f onlara bütün pis deyil. Hər kəs f burada nə deməkdir bilirsinizmi? Force. Belə ki, hətta, vasitələri məcbur Bu pis bir fikir varsa, məni isteyen olmadan bunu daha təsdiqi üçün. Belə ki, bilirsiniz, biz gülmək Bu, lakin səmimi, mən yəqin ki, bu neçə dəfə yazın bir gün reallıq çünki bu sürətli yoldur heyəti bütün dəstə silin. Lakin hətta mən bir zərər görmüşük. Amma bir kompüter oyun olsaydı bəzi axmaq dəyişən müəyyən daxil və ya funksiyası x adlı, lakin sonra icra daxil kompüter tricking ki hüdudlarından kənarda funksiyası ki, nöqtəli vergül kənarda, Siz həqiqətən bir kompüter bezemek bilər rm kimi bir şey həyata daxil rf və ya E-poçt command və ya Copy command. Anything sözün siz ilə edə bilərsiniz kompüter, faylları silmə olsun, , faylları yaratmaq kimsə spam, uzaqdan bir server hücum, Siz ifadə edə bilər, əgər bir komanda ilə, siz bunu bir kompüter bezemek bilər. İndi bir nümunə nə bunu necə edə bilər? Yaxşı, kompüter bir çox var internet çalışan Bash. Us Mac istifadəçilər onların bütün var. Linux server bir çox var həmçinin onlara və Unix server. Windows yenidən alır nisbətən çəngəl off Siz quraşdırılmış olduğunuz halda xüsusi proqram. Server İndi bir çox üçün Məsələn, run web server, və əslində Linux bəlkə edir ən məşhur əməliyyat sistemi internet kompüter yayınlanması ki, web pages xidmət edir. İndi biz sonra görəcəksiniz kimi semestr zaman Siz bir sorğu göndərə Sizin browser Chrome, Internet Explorer, whatever-- bir uzaq server, O çıxır ki, hətta baxmayaraq Yalnız tipli www.example.com, Sizin browser bir mesaj göndərir ki, bir az daha gizli, bu kimi. Amma bir az qəribə bir şey hiss. İlk iki xətləri Mən əvvəl görməmişəm lakin onlar baxmaq deyil xüsusilə təhlükəli. Amma oğurlanmış etdik nə görürsünüz Burada üçüncü xətti. Pis oğlan bir mesaj göndərmək üçün, əgər onun kompüter bu kimi zəif Mac və ya a həssas Linux server, lətifə ki, Bash edir ki, sadə az əmr sətri, hər yerdə və tez-tez mahiyyətcə icra istifadə bir məzmunu aldığı mesajı. Və məntiq, siz Buna görə də, bir web server bezemek, kimi bir şey göndərmək User-Agent, adətən Bu ehtimal edilir Brauzerinizin adı. User-Agent Chrome, User-Agent Internet Explorer, User-Agent Firefox, bu yalnız brauzerinizin edir özünü müəyyən yoldur. Amma əgər pis oğlan çox ağılla mm-mm, mən deyir sizə niyyətində deyil nə mənim brauzerinizin, Mən əvəzinə bu göndərmək üçün gedirəm bir rm-rf ilə şey sirli görünüşlü * Bu, sözün bir bezemek bilər internet həssas web server məhz icra daxil orada bütün faylları silmek üçün. Və səmimi, ki, deyil Bu hətta ən pis. Siz bir şey edə bilərsiniz. Siz başlamaq bilər paylanmış xidmət hücum inkar Siz bu mesajı göndərilir web server bütün dəstələri və onlara bütün, enmək idi Məsələn, Harvard.edu server, və bang sıralayabilirsiniz onların həyata heck ki, bir şəbəkə trafik başqa, bu pis oğlan tərəfindən səbəb. Belə ki, uzun hekayə qısa, demək olar ki, Mac sahibi olan bu otaqda hər kəs Bu həssasdır. Gümüş astarlı siz değilseniz ki Sizin laptop bir web server çalışan, və həqiqətən konfiqurasiya olduğunuz halda Bu, onu SSH kimi bir şey imkan Siz, həqiqətən, təhlükəsiz edirik. Bu həssas, lakin heç bir var bir laptop almaq üçün çalışırıq, belə ki, sort arxayın ola bilərsiniz. Lakin, Apple tezliklə olacaq bu bir düzeltme yenilənməsi olacaq. Linux dünya artıq azad etdi Fedora və Ubuntu üçün giderir bir sıra və digər Linux versiyasını, həqiqətən, Siz cihaz yeniləmə 50 run əgər, çox olacaq ki, hətta yenilənir və düzəldilir. Lakin çox deyil həqiqətən, həssas olmuşdur Siz var halda, çünki cihaz ilə tinkered və açıq dizüstü etdi olmayan internet əlçatan default, Siz var həqiqətən, çünki gözəl olmuşdur firewalling və digər texnika. Amma bir səhv bir ifrat nümunəsidir var biz sözün 20 üçün yaşamış etdik ki, il, kimsə əgər bilir bütün bu vaxt bu barədə məlum? Və əslində, bu bir edir əsas problemlər biz sonra görəcəksiniz ki, təhlükəsizlik haqqında semestr, ki, yalnız real dünyada kimi yaxşı uşaqlar əlverişsiz edir. Pis uşaqlar həyata saxlamaq üçün, biz var hər qapı kilidli əmin olun ki, hər pəncərə ki, təhlükəsiz ki, bir ev girdiyi hər nöqtə pis uşaqlar həyata saxlamaq üçün təhlükəsiz edir. Amma nə pis oğlan var həqiqətən, sizin ev güzəştə etmək və siz oğurlamaq? O yalnız oxunuş bir tapmaq üçün var qapı, bir broken pəncərə və ya bir şey o xətlər boyunca və bu var kompüter təhlükəsizliyi eyni şey. Biz milyonlarla yaza bilərsiniz proqramlaşdırma kodu xətləri və yüzlərlə və ya minlərlə sərf Doğru almaq üçün çalışırıq saat, lakin əgər siz yalnız bir etmək düzgünlüyünə səhv, Siz bütün sistemi qoya bilər və həqiqətən, bu halda, bütün internet və risk dünya. Daha çox öyrənmək istəyirsinizsə Belə ki, Bu barədə, burada bu URL getmək. Fəaliyyət üçün heç bir ehtiyac yoxdur gecə siz değilseniz o daha rahat arasında Öz web çalışan edilmişdir server, hansı olmalıdır halda, Əslində, proqram yeniləmə. Və bu da başlığı çıxış, və indi kağız, biz bağlıdır etdik ki, Bu gün üçün kurs veb. Bu bir yoldaş idi adlı Ken Thompson, kim bir çox məşhur qəbul edilib kompüter mükafat, və o, bir neçə il bu çıxış əvvəl, mahiyyətcə eyni mövzu haqqında. Sual millət xahiş, Siz olmalıdır həqiqətən inam, nəticədə, proqram verilmişdir etdik? Məsələn, biz bütün var, proqramları yazılı edilmişdir, və biz tərtib etdik cingilti ilə onlara. Və sizin bilik, siz yazılı CS50 üçün hər hansı bir proqram var olduğu növ arxa qapı, bir yol var pis oğlan ki, sizin proqram çalışan əgər, Sizin kompüter üzərində bilər? Yəqin ki, sağ? Mario, və Greedy, və kredit. Bu bütün olduqca kiçik proqramları var. Siz olduqca olmaq istədiyiniz pis həqiqətən əgər bütün kompüter həssas edib kodu 10 və ya 20 xətləri yazılı sonra, və ya ən azı xəbərsiz təhlükəsizlik nəticələri. İndi mən ki, Facetiously demək lakin biz bu gün görmək olacaq və bu həftə həqiqətən həqiqətən, həqiqətən, asan pis və hətta etmək üçün qısa proqramları həssas. Amma indi, ən azı, həyata sual burada xahiş olunur ki, bir compiler cingilti haqqında. Niyə biz cingilti etibar edilmişdir Son iki və ya üç həftə? Kim kim cingilti yazırdı ki, demək deyil orada bir "əgər" şərt yox idi ki, mahiyyətcə bir adet sıfır vurulub və hər proqram olanları tərtib ki, imkan verərdi ona və ya onun giriş Sizin kompüter zaman yuxuda etdiyiniz və laptop qapaq açıq və kompüter çalışan? Right? Biz şərəf sistemi hüququnun bu cür var İndi biz cingilti legit ki, etibar yerləşir. Siz cihaz legit ki, etibar. Siz etibar sanki hər proqram Mac və ya PC etibarlı deyil. Və bu sadə səhv təklif kimi, bu zərərli deyil, hətta, ki, tamamilə deyil Bu halda ola bilər. Belə ki, cəhənnəm kimi qorxuram edilməlidir. Açığı, heç bir sadə var bu digər həll ictimai maarifləndirmə bir növ daha çox artan mürəkkəbliyi biz üst tikinti edirik ki, kompüter sistemləri, və necə getdikcə həssas biz çox yaxşı ola bilər. İndi Breakout qeyd etdi. Belə ki, Breakout edir problem üç qurmaq, Breakout yesteryear bir oyun Siz geri bilər ki, lakin Bizim üçün problem, üç müəyyən bizə etmək üçün imkan verir şeyi bir pillə geri biz proqramları yazılı zaman, belə ki, hətta bu kimi bir Terminal pəncərə, biz, həqiqətən, nəticədə, çalıştırabilirsiniz qrafik proqramlar fərqli olaraq biz idi Not çıxış. Belə ki, bu heyət nin Breakout həyata keçirilməsi, yalnız bu kərpic-breaking edir oyun, geri sizin avar hərəkət edən və irəli, və siz top hit üst qədər o rəngli kərpic qarşı. Belə ki, bu bizi cəlb edir sort geri harada biz çox tez ola idi Not, indi C, öz həyata qrafik istifadəçi interfeys. Lakin daha çox, bu problem set ilk təqdim biz ötürür Siz kodu bir dəstə. Və əslində, mən açıq gətirmək Bu diqqət, xüsusilə, çünki o az rahat, bu problem, ən azı ilk baxışdan, müəyyən kimi hiss edir biz bir notch onu qəbul etdik. , Biz sizə təqdim etdik, çünki axtarış bəzi və pset problemləri çeşidlənməsi, biz yazırdı ki kodu bir dəstə, və şərh bir neçə ki, "nə üçün" demək siz blanklara doldurmaq lazımdır. Belə ki, çox qorxudan deyil, lakin Bu ilk dəfə Biz sizə kodu təhvil etdiyiniz etmək lazımdır ki, ilk oxumaq anlamaq və əlavə və başa. Və sonra Breakout ilə, biz eyni olacaq bir neçə onlarla daha çox xətləri verilməsi kodu, səmimi, verir ki, çərçivəsində bir çox üçün Bu oyun, lakin qısa dayandırmaq kərpic həyata və top və avar, lakin biz bəzi digər funksiyaları həyata yoxdur. Və hətta ilk baxışda ki, yenə, xüsusilə, az rahat əgər xüsusilə zor görünə bilər və Siz bir çox yeni funksiyalar var edirəm Əgər fikrinizi kesmek lazımdır ətrafında və ki, doğrudur. Amma bu, unutmayın olduqca Not kimi. Oran siz bütün istifadə etməyib var Not puzzle ədəd. Oran siz kesmek üçün qayğı etməyib var Onların bütün ətrafında fikrinizi Bu aldı bütün idi, çünki Söyle, oh, anlamaq üçün Mən nə edə var ki, puzzle parça ilə. Və həqiqətən, problemin müəyyən 3 spec, biz qeyd edəcəyik sənədlərin edəcək bəzi yeni funksiyaları sizə təqdim, və nəticədə proqramlaşdırma istifadə tikir. , Loops Conditions, dəyişənlərin və funksiyaları eyni olacaq nə biz belə uzaq gördüm. Belə ki, həqiqətən, biz nə verəcəyik Bəzi nümunə kodu edir ki, Bir pəncərə yaratmaq imkan verir ki, bu fərqli deyil görünür və nəticədə çevirmək çox bu kimi bir şey. Belə ki, CS50 istifadə etmək, , ofis saat və daha çox müzakirə və əslində rahatlıq yazmaq üçün kod məbləği əslində bütün çox deyil. İlk problem yalnız acclimate olunur özünüzü kod biz yazdıq. Pset3 haqqında hər hansı bir sualınız, Shellshock, və ya başqa? Auditoriya: Bu kimi görünürdü Breakout ilə keçir kod demək olar ki, bir obyekt-yönümlü style, amma C bir idi düşündüm obyekt-yönümlü proqram. HOPARLÖR 1: əla sual. Belə ki, vasitəsilə axtarır distribution kodu, kodu biz pset3 üçün yazdığı tanış olanlar üçün, onu bir var kimi görünür az obyekt-yönümlü. Qısa cavab deyil. Bu sizin necə bir təxmindir istifadə edərək, obyekt-yönümlü kodu edə bilər C kimi dil, lakin hələ nəticədə prosessual. Daxilində metodlar var dəyişənlərin, siz görəcəksiniz kimi. Amma bu xatırladır. Və biz daha xüsusiyyət görəcəksiniz PHP və JavaScript almaq zaman sonunda semestr doğru. Amma indi, kimi hesab nə bir ipucu gəlib. Yaxşı sualdır. Bütün hüquqlar. Belə ki, sort idi birləşmə biz necə Sol şeyi son dəfə. Və sort sərin idi birləşmə mənada bu qədər sürətli idi ki, ən azı ötəri testlər əsasında Biz bubble, demək, çox, ötən həftə idi sort, seçim sort, durub sırala. Və nə çox səliqəli idi yalnız necə müfəssəl və cleanly Siz ifadə edə bilər. Və biz bir üst nə demək idi birləşmə çalışan zaman bound sort? Bəli? Auditoriya: n log n? HOPARLÖR 1: n sağ, n daxil olun. n log n. Və biz nə ki geri gəlmək lazımdır həqiqətən deməkdir və ya gəlir, lakin bu yaxşı idi nə çalışan zaman çox biz bubble üçün gördüm ki, seçilməsi və durub sort? Belə ki, n kvadrat. n kvadrat , bu daha böyükdür və kifayət qədər aydın deyil, hətta, ki, log n n daha kiçik olduğunu, belə ki, n dəfə əgər n daha kiçik bir şey, kvadrat n daha az olacaq. Orada intuisiya bir az var. Amma bunun üçün bir ödədi. Bu sürətli idi, lakin bir mövzu açılmış Keçən həftə ortaya bu tradeoff idi. Mən daha yaxşı performans var vaxt müdrik, lakin nə Mən digər sərf var idi əl, üçün nail olmaq üçün? Auditoriya: Yaddaş. HOPARLÖR 1: Yenə deyirəm? Auditoriya: Yaddaş. HOPARLÖR 1: Yaddaş, və ya space ümumiyyətlə. Və bu super idi Bizim insanlar Aşkar, lakin bizim könüllü Xatırladaq ki, irəli gücləndirməklə və gücləndirməklə edilmişdir sanki geri array var sanki burada və var Burada ikinci bir array onlar istifadə edə bilər Çünki lazım yerde o insanlar daxil etmək üçün. Biz yalnız yerdə onları dəyişdirmək bilmədi. Belə ki, sort leverage daxil daha çox yer olan biz lazım deyil digər alqoritmlər, lakin ayaq çox daha sürətli edir. Və səmimi, real dünya məkanında Bu days-- RAM, sabit disk space-- nisbətən ucuz, və belə ki mütləq pis bir şey. Belə ki, bir sürətli nəzər bir az imkan daha ardıcıl, biz nə və niyə biz n log n bildirib. Belə ki, burada səkkiz ədəd və səkkiz könüllü biz son dəfə idi. Və Birleştirme ki, ilk şey Sort etmək bizə nə idi bildirib? Auditoriya: iki bölün. HOPARLÖR 1: Yenə deyirəm? Auditoriya: iki bölün. HOPARLÖR 1: iki Divide, doğru. Bu çox xatırladan bölmək telefon kitab, və daha çox, ümumiyyətlə fəth. Beləliklə, biz sol yarım baxdı. Və biz sort, dedi, sonra bir dəfə elementləri sol yarısı, Biz növbəti nə dedi? Sol sol yarım sort yarım olan, bizə icazə iki ayırıcı sonra, dörd və iki yönəldir. Necə, indi bir siyahısını sort yoxdur sarı, Sortlaşdır Birleştirme istifadə ölçüsü iki, var? Yaxşı yarı bölmək, və sol yarım sort. Və bu şeylər idi bir az axmaq qısa var. Siz ki, bir siyahısını düzmək necə size bir, burada bu sayı dörd kimi? Bu sıralanır. Siz tamamlayın. Amma sonra necə bir siyahısını sort yoxdur ölçüsü sayı iki zaman bir? Yaxşı, indi nə eyni şey idi üçüncü və Merge Sort əsas addım? Siz sol birləşməsi idi yarısı və sağ yarım. Ki, bir dəfə, biz baxdı dörd, biz iki baxdı. Biz bütün hüququ qərar açıq-aydın iki birinci gəlir, belə ki, biz iki qoydu onun dörd izlədi yer. İndi siz cür geri var, və bu xarakterik sortudur Birləşdirmə kimi bir alqoritm Sort, yaddaş geri. Hekayə növbəti line nə idi? Mən növbəti nə diqqət etmək lazımdır? Sol sağ yarım altı və səkkiz hansı yarım. Mənə yalnız bu addım imkan çox nöqtə belaboring olmadan. Altı və səkkiz, sonra altı sıralanır, səkkiz çeşidlənir. Ki, kimi onları birlikdə daxil, və indi növbəti böyük addım , əlbəttə, doğru yarım sort edir Bu alqoritm ilk addım. Beləliklə, biz bir, üç, yeddi, beş yönəldir. Biz sonra sol yarısının yönəldir. Ki, sol yarısı, sağ yarım ki, və sonra bir və üç birləşməsi. Sonra sağ yarım, sonra yarım buraxdı bu, sonra sağ yarım. Addım qalır nə indi birləşməsi, və? Böyük sol yarım və böyük Birleştirme sağ yarım, belə bir, orada gedir sonra, sonra iki, üç, dörd, beş, altı, yeddi, sonra səkkiz. Belə ki, indi niyə bu nəticədə aşkar olunur, xüsusilə də əgər n və logarithms daha ümumiyyətlə deyil, xilas ən azı son yaddaş? Bəli, bu şey boyu bildiriş. Biz səkkiz elementləri var idi və biz iki, iki, iki bölünür. Belə ki, baza daxil səkkiz iki bizə üç verir. Və mənə etibar əgər ki, bir az dumanlı. Lakin, səkkiz iki üç baza daxil belə ki, biz birləşməsi üç qat etdik. Və biz birləşdi zaman elementləri, necə bir çox elementləri biz o satır hər baxmaq idi? N ümumi, sağ? Üst sıra daxil Çünki, biz tədricən bunu baxmayaraq, biz nəticədə bir dəfə hər sayı toxundu. Və ikinci sırada, üçün ölçüsü iki həmin siyahıları birləşməsi, biz bir dəfə hər element toxunmaq idi. Və sonra burada həqiqətən aydın son sırada, biz o hər toxunmaq idi bir dəfə, lakin yalnız bir dəfə elementləri, belə Buradakı n log n, sonra yatır. Və indi yalnız şeyi bir az etmək yalnız bir an üçün formal daha, əgər İndi bu təhlil etmək idi yüksək səviyyədə bir növ at və necə qərar üçün cəhd edin Siz ifadə haqqında getmək bilər Bu alqoritm çalışan zaman yalnız ona deyil baxaraq bir göstərdi Məsələn istifadə edərək,? Yaxşı, nə qədər vaxt bir deyərdim Sarı bu almaq kimi addım, n <2 qaytarılması əgər? Ki, nə böyük bir O var? Mən, bir, belə bir addım görən deyiləm bəlkə iki addımlar əgər çünki və sonra geri, lakin bu daimi vaxt, sağ? Beləliklə, biz O (1), olduğunu söylədi Mən bu ifadə edəcəyik necə. T, yalnız vaxt çalışan. n, giriş ölçüsü belə T (n), bir xülya yolu çalışmasına deyərək ölçüsü n vaxt giriş qaydada olacaq daimi vaxt, O (1). Lakin başqa, bu barədə nə? Siz ifadə necə bu sarı xətt çalışan zaman? Nə T? Siz cür burada istifadə etmək olar və cyclically mənim sual cavab. Belə ki, çalışan zaman əgər biz yalnız demək general T (n) edir. İndi siz cür burada punting edirik və , yaxşı, yalnız sol yarım sort deyərək və sonra sağ yarım sort. Biz simvolik təmsil bilər necə bu sarı xətt çalışan zaman? Nə T? Giriş ölçüsü nədir? Iki n. Niyə yalnız demək deyil? Və sonra bu başqa T (n / 2) və sonra yenə iki sıralanır yarıya indirir daxil əgər, necə bir çox elementləri gedirəm məlumat toxunmaq var? n. Mən bu ifadə edə yalnız cür xülya olmaq ümumi çalışan zaman kimi. T (n), T (n / 2) yalnız çalışan dəfə plus T (n / 2), yarım və sağ yarım sol plus yəqin ki, n addımlar olan O (n), lakin bəlkə, mən iki barmaqlarını istifadə edirəm əgər, bir çox kimi iki dəfə addımlar, lakin xətti var. Bu addımlar bir sıra var ki, n bir amil var biz bu kimi ifadə edə bilər. Bu, biz ayaqla zərbə lazımdır indi geri orta məktəb riyaziyyat dərsliyinin biz nəticədə təkrarlanma olursunuz başa, bu bərabər, n dəfə log n siz həqiqətən əgər riyaziyyat daha formal. Belə ki, yalnız iki perspektivləri var. Bir ilə bir sayca nümayəndəsi nümunə ağır kodlu səkkiz nömrələri, və daha çox istifadə biz orada almışdır necə ümumi görünüşü. Amma nə həqiqətən maraqlı , yenə velosiped bu anlayışdır. Mən loops üçün istifadə deyiləm. I növ müəyyən edirəm özü baxımından bir şey, yalnız bu riyazi funksiyası, həm də bu yalançı kodu baxımından. Bu yalançı kodu recursive edir onun xətləri ki, iki mahiyyətcə onu izah getmək üçün kiçik həll etmək üçün özünü istifadə kiçik ölçüsü problem, və sonra yenidən və yenidən və yenidən qədər yavaş-yavaş onu bu qondarma baza halda aşağı. Belə nin əslində bir daha çekici çəkmək imkan almaq-üz bu aşağıdakı kimi. Mənə gedit getmək və bir edək bugünkü mənbə kodu bəzi baxmaq, Bu misal burada xüsusilə. Yəqin edər Sigma 0, nömrələri n biridir. Belə ki, nə tanış görək burada və tanımadığı. Birinci biz bir neçə var daxildir, belə ki, yeni bir şey var. Prototip. Mən bir az dumanlı deyiləm Bu bir neçə gün sonra, lakin biz nə demək idi bir funksiyası prototip deyil? Auditoriya: [işitilemez]. HOPARLÖR 1: Nə olub? Auditoriya: Biz bunu elan edir. HOPARLÖR 1: Biz bunu elan edir. Belə ki, hey, cingilti tədris həqiqətən, hələ bu həyata deyil, lakin haradasa bu faylı ehtimalla, bir funksiyası nə adlandırmaq gedir? Sigma. Və bu yalnız bir söz ki, bu kimi baxmaq olacaq. Bu kimi bir tam almaq olacaq input-- və daha çox açıq ola bilər və int n Ve demək bir int geri gedir, lakin nöqtəli vergül vasitələri, mm, mən ətrafında almaq lazımdır bir az sonra bu həyata. Yenə cingilti lal edir. Bu, yalnız nə bilmək olacaq Siz alt üst demək belə ki, biz ən azı vermək lazımdır Bu nə bir ipucu gəlib. İndi burada əsas baxaq. Burada aşağı diyirləyin bildirin və bunu əsas nə görmək. Bu funksiya uzun deyil, və Əslində burada tikinti tanış edir. Mən bir dəyişən n elan və Mən təkrar istifadəçi bezdirmək GetInt istifadə bir müsbət tam üçün, və bu loop yalnız exit bir istifadəçi riayət etmişdir. Isə bunu, biz istifadə etdiyiniz yol istifadəçi bezdirmək. İndi bu maraqlı deyil. Mən adlı int bəyan "cavab". Mən bu qaytarılması dəyəri təyin adlı funksiyası "sigma." Mən hələ nə bilirik, lakin deyil Mən bir an əvvəl elan xatırlayıram. Və sonra mən keçən alıram dəyəri istifadəçi tipli, n ki və sonra mən cavab hesabat. Yaxşı geri hərəkət edək yalnız bir an üçün. Bu kataloq davam edək, etmək sigma 0, həqiqətən, bu proqram çalıştırmak və nə görmək. Mən irəli getmək və run əgər Belə ki, Bu proqram, ./sigma-0, və mən bir müsbət yazın Iki kimi tam, Sigma, Yunan simvolu nəzərdə tutur kimi, yalnız bütün nömrələri qədər əlavə etmək üçün gedir iki qədər sıfır. Belə ki, 0 plus 1 plus 2. Belə ki, bu ümid mənə 3 verməlidir. Yəni bunu bütün var. Və eyni, əgər mən yenidən bu çalıştırmak və mən bu sayı üç vermək ki var, belə ki, 3 plus 2 var 5, üstəgəl 1 mənə 6 verməlidir. Mən, həqiqətən, crazy almaq sonra əgər böyük nömrələri yazmağa başlayın, mənə verməlidir böyük və daha böyük məbləğdə. Belə ki, bütün var. Belə ki, nə sigma kimi görünür? Bəli, bu olduqca sadə var. Biz həyata ola bilər necə həftə keçmiş neçə bu. "Int" qaytarılması növü olacaq. Sigma adı, və edir əvəzinə n dəyişən m. Mən üst qədər dəyişdirmək lazımdır. Sonra bu bir ağlı başında olma çek edir. Biz bir anda nə görürsünüz. İndi mən bir dəyişən elan, məbləği, sıfıra başlamaq. Sonra loop üçün bu var yəqin aydınlıq üçün, iterating, i = 1-dən bir = m, olan nə Yığdığınız istifadəçi, və sonra mən bu kimi məbləği arttırmayı. Və sonra məbləği geri. Belə ki, suallar bir neçə. One, bu ki, mənim comment iddia sonsuz loop riskini qarşısını alır. Niyə bir mənfi sayı keçən olardı , potensial, sonsuz loop vadar? Auditoriya: Siz m nail olmaq olmaz. HOPARLÖR 1: m etməyin. Amma m keçmişdir, edək olunur sadə bir misal hesab edir. M tərəfindən qəbul edilir, əgər mənfi bir istifadəçi. Asılı olmayaraq əsas. Main bizi qoruyur Bu da, mən yalnız deyiləm həqiqətən anal olan sigma də əmin ki, giriş mənfi ola bilməz. M mənfi Belə ki, mənfi bir şey kimi. Nə olacaq? Yaxşı, i gedir bir başlatılmış almaq, sonra i olacaq daha az və ya m bərabərdir? Ilə seçilir. Ki, verməyək əmrində deyilirdi: Bu hekayə nix bildirin. Çünki, ki, sual etməyib Mən alluding edirəm ki, risk i, çünki baş niyyətində deyil həmişə böyük than-- OK ola gedir, Mən sual dönmək. OK. Burada yalnız bu hissəsi diqqət edək. Niyə bəzi bəyan etməyib loop kənarda? Line etdik 49 Notice loop daxilində i elan, lakin online 48 I var bəzi xaricində elan etdi. Bəli. Auditoriya: [işitilemez]. HOPARLÖR 1: Sure. Belə ki, ilk növbədə mən əlbəttə deyil elan və məbləği başlamaq istəyirəm Bu sıfır daxilində hər iteration loop, Bu aydın məğlub çünki nömrələri cəmlənməsi məqsədi. Mən dəyişən saxlamaq olardı sıfır geri dəyəri. Və həmçinin hansı başqa daha gizli deyil eyni dizayn qərar üçün səbəb? Bəli. Auditoriya: [işitilemez]. HOPARLÖR 1: Exactly. Mən kənarda daxil olmaq üçün istədiyiniz çox nə line loop? 53 On. Və thumb bizim qayda əsasında mühazirələr bir neçə əvvəl, dəyişənlər üçün, həqiqətən, xaric olunur onları əhatə edən qıvrım aşırma. Mən daxili məbləğ bəyan yoxsa belə Bu xarici qıvrım aşırma, Mən line 53 istifadə edə bilməz. Mən bəyan, başqa bir yol qoymaq burada, hətta daxilində məbləği Loop, mən 53 ilə gedə bilmədi. Dəyişən səmərəli keçmişdir olardı. Belə ki, səbəblərdən bir neçə. Amma indi geri gedək və nə görmək. Belə ki, sigma adlı olur. Bu 1 plus 2 və ya 1 plus 2 up edir plus 3 və sonra dəyər qaytarır cavab mağazalar onu və burada printf Mən ekranda görən niyə edir. Belə ki, bu biz iterativ zəng edəcəyik nə yanaşma, harada iteration yalnız bir loop istifadə deməkdir. Loop, bir müddət loop, bir Baxmayaraq A loop, yalnız daha bir şey bunu və təkrar. Amma sigma səliqəli funksiyası növ Mən fərqli həyata bilər. Bu barədə nə olan yalnız cür sərin olmaq Mənə həqiqətən xilas edək yayındırma bir çox Bu funksiya çünki həqiqətən, çox sadədir. Gəlin yavaş-yavaş aşağı yalnız onun dörd əsas xətləri və xilas bütün Şərh və qıvrım aşırma. Bu mind-əsən cür alternativ həyata keçirilməsi. Bütün sağ, bəlkə ağla-əsən deyil, lakin sexier, bütün sağ cür, çox daha çox müfəssəl şəkildə bu baxmaq. Kod yalnız dörd xətləri ilə, Mən ilk bu ağlı başında olma çek var. M daha az və ya bərabər olduqda, sıfır, sigma heç bir əhəmiyyət kəsb edir. Bu yalnız ehtimal müsbət nömrələri üçün bu halda, mən yalnız gedirəm özbaşına sıfır geri ən azı biz var ki, bəzi əsas işi qondarma. Amma burada gözəllik var. Bu əlavə bu ideyanın bütövlükdə, n 1 ədəd, və ya bu halda m, dollar keçən cür edilə bilər. Yaxşı, m 1 cəmidir nədir? Yaxşı, siz nə bilirik? Bu m məbləği kimi eyni plus m minus 1 1 cəmidir. Yaxşı nə bilirik? M minus 1 sigma nədir? Yaxşı, əgər növ bu edin məntiqi, bu m minus 1 kimi eyni plus m minus 2 sigma. Siz cür yalnız var bilərsiniz Yalnız əgər bu kimi dost annoy çalışır və onlar sizə bir sual, cür, bir sual ilə cavab cür buck keçən saxlaya bilərsiniz. Amma nə əsas var siz saxlamaq əgər ki, sual kiçik və daha kiçik edilməsi və kiçik, etdiyiniz sigma nə xahiş n, bir sigma nə n, n sigma nə var? Siz nə xahiş edirik n sigma, nə sigma var n minus 1, n minus 2 sigma nə var? Nəhayət, sizin sual nə olmaq niyyətindədir? Bir və ya sigma nədir sıfır, bir çox kiçik dəyəri, və tezliklə sizin kimi ki, dost almaq xahiş etmək niyyətində deyil yenə eyni sual, yalnız oh sıfır, demək olacaq. Biz bu cür oynayan tamamlayın axmaq cyclical oyun. Belə ki, recursion proqramlaşdırma aktdır bir funksiyası özü zəng. Tərtib və run zaman Bu proqram deyil, eyni şəkildə davranmaq üçün gedir, lakin nə əsas var daxili sigma adlı funksiyası, kod orada bir xətt var biz özümüzü zəng etdiyiniz olan normal pis olacaq. Məsələn, nə ilk, mən əgər Bu tərtib, belə sigma-- etmək sigma 1 ./sigma-1 etmək. Müsbət tam, xahiş edirik, 50 1275. Belə ki, nə funksiyası görünür doğru bir test əsasında ola bilər. Amma bir az təhlükəli nə almaq və qondarma baza halda silmək, və yalnız yaxşı mən yalnız edilməsi alıram, demək bu artıq bu daha mürəkkəb. Nin yalnız sigma hesablamaq imkan m alaraq və sonra əlavə m minus bir sigma da? Yaxşı, nə burada nə olacaq? Nin kiçiltmək edək. Nin proqram derleyeceğiz edək, saxlamaq, proqram derleyeceğiz, və sonra hazır ./sigma-1, yakınlaştırma , 50 müsbət tam edin daxil edin. Necə bir çox hazırıq ki, görən qədər fess üçün? OK. Belə ki, bu baş verə bilər bir sıra səbəbləri, və səmimi bu həftə biz istəyirik onlara daha çox vermək haqqında. Amma bu halda, cəhd geri səbəb Burada nə baş verə bilər? Seqmentasiya günah, biz keçən etdi vaxt, yaddaş seqmentinə aiddir. Pis bir şey baş verib. Amma nə oldu mexaniki əyri getdi ki, Çünki burada mənim çıxarılması ki, qondarma baza halda, olduğu bir ağır kodlu dəyəri geri? Nə yanlış getdi düşünürsünüz? Bəli. Auditoriya: [işitilemez]. HOPARLÖR 1: Ah. Yaxşı sualdır. Sayı ölçüsü belə Mən cəmlənməsi ki, Bu ötüb ki, böyük var yaddaş kosmik ölçüsü. Yaxşı fikir, lakin əsaslı bir qəza səbəb olacaq. Ki, tam daşqın səbəb ola bilər bit yalnız çevirmek sonra biz həqiqətən böyük səhv bir mənfi sayı kimi, sayı, lakin özü bir qəza səbəb deyil ki. Çünki sonunda gün bir int hələ 32 bit edir. Siz fikrində deyilik təsadüfən 33-cü az oğurlamaq. Amma yaxşı bir fikir. Bəli. Auditoriya: [işitilemez]. HOPARLÖR 1: Metodu heç çalışan dayanır, və həqiqətən yenə də özünü çağırır və təkrar və yenidən yenidən və heç Heç bu funksiyaları onların yeganə xətti, çünki başa kodu təkrar themself çağırır və yenidən. Və nə həqiqətən var biz burada baş və indi cür pictorially bu cəlb edə bilər. Mənə bir artıq getmək edək yalnız bir an üçün şəkil. Bu ki, bir şəkil nəticədə əti edəcək daha ətraflı haqqında neler Sizin kompüter yaddaş daxilində. Və ki çıxır Bu şəkil alt yığını deyilən bir şey deyil. Bu yığın yaddaş, RAM bir yığın, yalnız hər hansı bir zaman istifadə bir funksiyası adlanır. Istənilən vaxt, bir proqramçı, bir funksiyası zəng, əməliyyat sistemi kimi Mac OS, Windows və ya Linux, Polip bayt bir dəstə, bəlkə bir neçə kilobayt, bəlkə neçə megabayt yaddaş, onları əlləri Sizə və sonra imkan verir Siz istifadə edərək funksiyanı çalıştırmak nə dəyişənlərin lazımdır. Və sonra başqa zəng əgər funksiyası və başqa bir funksiyası, Siz yaddaş bir dilim almaq və yaddaş bir dilim. Və həqiqətən, bu yaşıl qablar əgər Annenberg dən yaddaş etdirir Burada ilk olur zaman funksiyası sigma zəng. Bu kimi bir tray qoyulması kimi ilkin boş yığını nə. Amma sonra ki, əgər tray belə ki, danışmaq, özü çağırır, başqa instansiya zəng sigma ki, var əməliyyat sistemi xahiş kimi, ooh, bir az daha çox yaddaş lazımdır mənə verir. Və sonra üst üstünə olur. Amma nə əsas var ki, ilk tray, hələ O, bu ikinci tray istinad çünki. İndi isə, sigma sigma zəng, ki, daha çox yaddaş tələb kimi var. Buraya piled olur. sigma başqa bir var, sigma zəng burada piled olur ki, tray. Və bunu saxlamaq əgər, nəhayət, növ bu vizual xəritəsi ki, chart, nə olacaq qablar və yığını ilə nə? Bu məbləğ artıq gedir yaddaş sizin kompüter var. Və tezliklə bu yaşıl tray kimi üfüqi xətt artıq yığını yuxarıda və söz yığın bax, biz gələcəkdə geri gəlmək lazımdır, ki, pis bir şey deyil. Yığın fərqli edir yaddaş seqment, və bu imkan qablar xovlu və xovlu üzrə Siz artıq olacaq yaddaş öz seqment, və proqram həqiqətən qəza gedir. İndi bir kənara, bu ideya kimi recursion, buna görə də, aydın, problemlərə gətirib çıxara bilər, lakin mütləq pis bir şey deyil. Çünki hesab, sonra bütün how-- və bəlkə bu bir alışma edir TƏTBİQ NASIL üçün zərif və ya necə sadə sigma ki, həyata idi. Və biz istifadə etmək fikrində deyilik CS50 bütün çox recursion, lakin CS51, və həqiqətən hər hansı bir sinif Siz data strukturları manipulyasiya ağac, və ya ailə ağac kimi, ki, bir iyerarxiya Bu super faydalı super var. İndi bir kənara, belə ki, siz kompüter elm istəyən kimi Google-nin bəzi ilə tanış Google getmək əgər daxili zarafatlar, və siz nə qədər baxmaq , definition demək, recursion daxil edin. Uh-huh. Bir kənara kimi, mən bir neçə qədər çıxardı. Bu 10 dəqiqə kimi idi süründürməçilik bu səhər. Əgər Google "əyri" bildiriş başını əyərək slightly-- və sonra bu bəlkə ən dəhşətli kimsə kimi sərf-ci ildən Bu həyata onların gün bir neçə il gəlib ago--. Oh, wait-- ki, bir səhv var. Belə ki, bir çalışan Dünyanın ən böyük saytları bu axmaq az Pasxa yumurta var. Onlar yəqin ki, bir istehlak kodu xətləri nontrivial sayı yalnız biz ola bilər ki, kimi kiçik fun şeyi. Amma ən azı indi almaq Bu daxili zarafatlar bəzi. İndi bəzi nəzər salaq ağ, biz gec izah etdik yatır və geri peel başlamaq Bəzi qat texniki Siz, həqiqətən, başa düşürəm ki, neler oldu və başa düşmək olar təhdidlər bəzi, Shellshock kimi, İndi olmağa başladı hər kəsin önündə diqqət, ən azı media. Belə ki, burada bir çox sadə funksiyası Boşluq, heç bir şey qaytarır. Onun adı dəyişdirmək olur. Bu iki dəyişənlərin edir və heç bir şey qaytarır. A və b edir. Belə ki, tez nümayiş. Biz bu qədər gətirdi. Biz də bir az bilər yalnız bir an üçün burada qırmaq və içmək üçün bir az bir şey var. Kimsə qoşulması ağla deyil ki, əgər Burada yalnız bir an üçün mənə. Necə maroon köynək haqqında? Qədər Hadi. Yalnız bir gün. Baxmayaraq ki, təşəkkür edirəm. Bütün hüquqlar, biz olan burada gəlir? Sizin adınız nədir? HOPARLÖR 4: Laura. HOPARLÖR 1: Laura. Qədər Hadi. Belə ki, Laura, çox sadə problem bu gün. Yo cavab Nice. Bütün hüquqlar. Beləliklə, biz burada bəzi süd və biz burada bəzi portağal suyu var və bəzi fincan ki, biz Bu gün Annenberg dən borc. HOPARLÖR 4: Borc. HOPARLÖR 1: Və irəli getmək üçün gedir və bu yarım şüşə verir. Bütün hüquqlar. Və biz yarım vermək lazımdır süd bir şüşə. Oh, və yalnız, belə ki, bu kimi nə xatırlayıram Mən gətirmək yadda Bu və bu gün. Okay. Siz ağla deyil ki, görək, biz Öz eynək onları qoya bilər əgər siz. Bu Laura gözü dünya olacaq. Bütün hüquqlar. Belə ki, məqsəd, iki fincan verilir Burada maye, süd və portağal şirəsi, iki məzmunu dəyişdirmək, belə ki, portağal şirəsi süd fincan gider və süd gider portağal şirəsi fincan. HOPARLÖR 4: Mən başqa bir fincan almaq mı? HOPARLÖR 1: Mən də, xahiş elə sevindim Bu daha yaxşı görüntülər olardı xahiş olmasaydı. Amma bəli, biz bir üçüncü təklif edə bilər əlbəttə, boş ki, fincan. Bütün hüquqlar. Belə ki, orada məzmunu dəyişdirmək. Çox gözəl. Çox yaxşı. Siz olduqca diqqətlə bunu edirik. Və üç addım. Bütün hüquqlar. Əla. Alqış böyük dəyirmi Laura üçün yaxşı olardı. Bütün hüquqlar. Biz bir az ayrılıq hədiyyə var sizin üçün, lakin mənə bu götürək. Çox təşəkkür edirik. Sadə misal Beləliklə, baxmayaraq ki, Əgər ki, nümayiş etdirmək məzmunu dəyişdirmək istəyirəm iki qablar, və ya dəyişənlərin onlara zəng edək, Bəzi müvəqqəti saxlama lazımdır belə məzmunu bir keçirməyə Siz, həqiqətən mübadilə edə bilər ki,. Belə ki, həqiqətən, burada bu mənbə kodu qədər C məhz nümayəndəsidir. Portağal şirəsi bir və süd idi , b idi və biz iki dəyişdirmək istədi Siz yaradıcı bir şey cəhd edə bilər digər daxil bir tökərək, lakin yəqin ki, deyil ki xüsusilə də son. Və belə ki, biz üçüncü fincan, zəng istifadə Bu konvensiya tərəfindən T-M-P tmp və məzmunu qoymaq OJ ki, sonra bir fincan dəyişdirmək, sonra daxil OJ qoymaq orijinal fincan, bununla tam olaraq nail olmaq Laura, svop etdi. Belə ki, məhz bunu bildirin. Mənə irəli getmək və açmaq ki, misal up həqiqətən, heç bir "adlı bu deyil, çünki ", dəyişdirmək Sizcə bilər kimi sadəcə edilir. Belə ki, bu proqram, fark Mən stdio.h, bizim köhnə dostumuz istifadə edirəm. Mən prototip var , orada mübadilə üçün olan onun həyata keçirilməsi üzrə deməkdir yəqin ki, aşağı, və görək əsas nə bu proqram mənim üçün nə olacaq. Mən ilk int x olur elan bir və y iki olur int. Belə ki, OJ kimi o hesab müvafiq və süd. Və sonra mən yalnız bir var printf x bu söyləyərək və y yalnız mən bilər, bu vizual neler oldu. Sonra iddia printf var Mən iki dəyişdirmə edirəm ki, və sonra mən bir çap onlar dəyişdirildikdə edirik ki, iddia, və mən yenə x və y çap. Belə ki, aşağı burada svop edir dəqiq Laura nə, və biz gördüm dəqiq nə bir an əvvəl ekran. Belə nin irəli getmək və sorely məyus olacaq. Heç bir mübadilə etmək, və heç bir mübadilə run, Burada çıxış yakınlaştırma. Daxil edin x y dəyişdirildikdə dəyişdirmə, 2, 1. x hələ 1 və y hələ 2. Belə ki, baxmayaraq, səmimi, bu görünür dəqiq daha çox texniki olsa, kimi, Laura nə, iş deyildi. Belə ki, niyə ki? Yaxşı, o zaman çıxır ki, biz bu kimi bir proqram yazmaq həm əsas, burada qeyd olunur və sonra başqa bir funksiyası, svop kimi, Burada qeyd olunan dünya çağırır kimi bir az bir şey görünür bir an əvvəl bu qablar. Zaman əsas adlı olur ilk, ki, əməliyyat sistemi tələb kimi hər hansı bir yerli üçün yaddaş bir az x və əsas var ki, y kimi dəyişənlərin, və onlar orada son. Əsas zənglər dəyişdirmək, və əsas, lakin əgər iki dəlilləri, bir və b dəyişdirmək keçir, portağal şirəsi və süd, bu kimi deyil portağal şirəsi və süd təhvil Laura. Kompüter nə, onu edir portağal şirəsi surətlərini keçir ki, Laura süd və surətləri, nə bu tray daxilində nəticədə var dəyəri bir və iki və ya OJ edir və süd, amma surət, belə ki, bu məqamda hekayə var Bu qablar hər OJ və süd edir. Bir və iki var Bu qablar hər, və svop funksiyası həqiqətən işləyir. Bu daxili onlara dəyişdirmə oldu ikinci topmost tray, lakin dəyişdirmə heç bir təsir var. Və yalnız bəzi əsaslanır biz əsas prinsipi əvvəl danışdıq, və həqiqətən yalnız bir neçə dəqiqə əvvəl, nə dəyişən izah edə bilər svop daxilində və b baxmayaraq ki, x və y heç bir təsiri yoxdur Mən mübadilə funksiyası x və y keçdi. Burada əsas söz nədir simplistically izah edə bilər? Mən burada eşitdim edirəm? Auditoriya: qayıt. HOPARLÖR 1: qayıt? Qayıtmaq deyil. Digər biri ilə gedək. Nə olub? Auditoriya: [işitilemez]. HOPARLÖR 1: OK, biz bilər dönmək belə hekayə geri iş, lakin daha sadə izahı var. Auditoriya: Sayt. HOPARLÖR 1: Sayt. Mən vüsət almaq lazımdır. Belə ki, əhatə dairəsi, harada yadda Bizim x və y elan etdi. Onlar daxilində elan edirik əsas sağ burada. bir və b, eyni zamanda, səmərəli elan svop daxilində, kifayət qədər da qıvrım aşırma, lakin hələ mübadilə ümumi sahəsi. Və həqiqətən, bir və b yalnız bu tray daxilində mövcud Annenberg, bu kod ikinci yığın. Belə ki, biz, həqiqətən, surəti dəyişir, lakin edirik ki, həqiqətən bütün faydalı deyil. Belə ki, bir nəzər edək bu bir az aşağı səviyyədə. Mən geri getmək üçün gedirəm Mənbə Directory, və mən ilk gedirəm burada zoom və yalnız Mən bu olduğumu təsdiq böyük terminal pəncərə, proqram hələ ki, kimi davranır edir. Indi bu düşünək qəsdən deyil. Aydındır I mübadilə istədi iş, belə ki, bir səhv kimi hiss edir. İndi mən bir əlavə başlaya bilər mənim kodu printf nin çox, , burada y x üzərində çap burada, burada, burada b a. Amma səmimi, ki, yəqin ki, nə var Siz bir neçə həftə məşğul olduğunuz İndi, ofis saat və evdə iş zaman Bəzi hataları tapmaq üçün çalışırıq psets. Əgər siz artıq yoxdur, əgər Lakin, görürsünüz ki, problem üç sizə təqdim set GDB adlı komanda, harada gdb, GNU ayıklama, özünü bütün dəstə var xüsusiyyətləri ki, həqiqətən bilərsiniz us hallar anlamaq imkan bu kimi, lakin daha compellingly, problemləri həll və hataları tapa bilərsiniz. Mən bunu gedirəm. Əvəzində ./noswap, mən əvəzinə deyiləm GDB ./noswap run olacaq. Başqa sözlə, mən çalıştırmak üçün gedirəm mənim proqram Bash, bizim yeni dost bu gün. Mən çalıştırmak üçün gedirəm mənim daxili proqram noswap adlı digər proqram Ayıklama olan gdb olan yardım üçün nəzərdə tutulmuşdur bir proqramdır tapmaq və hataları aradan qaldırılması, insanların. Mən burada Run hit əgər Belə ki, var mətn bir dəhşətli məbləği Siz, həqiqətən, oxumaq heç vaxt. Bu əhəmiyyətli bir yayındırma var Tez, hansı I Control-L olmaq üçün gedirəm orada üst almaq üçün. Bu gdb tez edir. Mən indi bu proqram çalıştırmak üçün istəyirsinizsə, Bu gün bu kiçik dələduz hesabatı kimi slide Run ilk təklif biz təqdim etmək nəzərdə əmrləri. Mən yalnız yazın gedirəm gdb daxilində burada run, və həqiqətən mənim proqram qaçdı. İndi bəzi əlavə var bu kimi ekranın çıxış, lakin gdb yalnız olan anal var və neler bizə izah. Siz, həqiqətən, narahat yoxdur İndi bu məlumat haqqında. Amma həqiqətən cool nə Mən əgər gdb, bu again-- Control-L getməmə screen-- təmizləyir irəli və növü "bununla, əsas qırmaq", Mən daxil edin hit zaman, nə qəbulu fasilə point noswap.c adlı, harada gdb olan line 16, həqiqətən, mənim proqramı həyata fiqurlu , mənim funksiyası əslində. Biz indi ignore lazımdır Bu lakin bir ünvan var xüsusi olaraq bu funksiya xatirəsinə. Belə ki, indi mən run yazın zaman, Burada cool nə görürsünüz. Mənim proqram line I pozur duraklatabilirsiniz icra gdb bildirib. Mən indi mənim kodu dəyişdirmək üçün yoxdur, , bəzi printf nin əlavə derleyeceğiz, təkrar Bu, dəyişdirmək, printf nin əlavə saxlamaq, derleyeceğiz, axır. Mən yalnız mənim proqram vasitəsilə gəzmək bilər insan sürətlə addım-addım, deyil sürət Intel-daxili cür. Belə ki, indi bu xətt bildiriş Mən geri getmək əgər burada görünür, və gedit mənim proqram, ki, həqiqətən olduğunu qeyd kodu ilk line. Line 16 gedit var. Var line 16 gdb ərzində, və hətta bu qara və ağ interface baxmayaraq təxminən istifadəçi kimi dostu, bu deməkdir ki, line 16 icra olunmayıb hələ, lakin bu barədə var. Belə ki, həqiqətən, Mən çap yazın əgər x deyil, printf, yalnız çap x, Mən sıfır bəzi saxta dəyər almaq x hələ başlatılmadı deyil, çünki. Əgər Mən, növbəti yazın gedir, ya alıram yalnız növbəti üçün n, xülya olmaq istəyirəm. Amma hal-hazırda daxil yazın zaman Bu xətt 17 hərəkət bildiriş. Belə ki, məntiqi, edam etdik əgər line 16 və indi çap x yazın Mən nə görürsünüz? Biri. Və indi bu etiraf qarışıqdır. 2, bir xülya yoludur əgər sonra ki, dəyəri istinad etmək istəyirəm, Siz "dollar iki imzalayacaq." deyə bilərsiniz Bu geri istinad kimi. Amma indi üçün, yalnız ignore. Nə maraqlı nə edir bərabər işarəsi sağ. Və indi mən daha sonrakı yazın əgər və çap y, mən 2 görməlisiniz. Mən də indi çap edə bilərsiniz x yenidən və səmimi, Mən bir az qarışıq alıram əgər Mən, mən siyahısı üçün daxil edə bilərsiniz və yalnız ətrafında bəzi kontekstində görmək point Mən, həqiqətən deyiləm. Və indi yazın bilər növbəti və orada x 1. İndi mən növbəti yazın. Oh, y 2. Və yenə, o, confusing edir gdb nin çıxış çünki öz çıxışı ilə commingled olunur. Amma siz, unutmayın əgər geri və irəli sizin kodu baxma və ya yan onu çəkilişi bəlkə tərəfindən, will Mən, həqiqətən, yalnız deyiləm ki, yuxarıda Mənim proqram vasitəsilə gücləndirməklə. Amma sanki, sonrakı nə görürsünüz. Burada line 22 var. Bununla hərəkət, mənə artıq getmək edək 23, və mən indi, hələ bir x çap əgər. Və mən bir də, y çap əgər. Belə ki, bu faydalı həyata deyil. Belə ki, bu redo imkan verir. Mənə geri gedək daha üst və növü run. Və bu proqram deyərək ki debugged olunur artıq başlayıb, əvvəldən başladı. Bəli, yenə bunu bildirin. Və bu zaman, növbəti edək növbəti, növbəti, növbəti, növbəti, lakin indi şeylər maraqlı almaq. İndi mən daxil addım istəyirik svop, mən növbəti yazın yoxdur. Mən bunu hiss indi addım yazın, noswap.c line 33 mənə atladı. Mən gedit geri getmək əgər, line 33 nə var? Ki, faktiki ilk var svop daxilində kodu line. Çünki indi mən gözəl, cür ətrafında soxmaq və maraqlı almaq kimi nə var həqiqətən olur. Mənə tmp çap edək. Whoa. Niyə tmp bəzi var crazy, saxta zibil dəyəri? Auditoriya: Bu başlatılmadı deyil. HOPARLÖR 1: Bu başlatılmadı deyil. Və həqiqətən, bir proqram çalıştırdığınızda, Siz yaddaş bütöv bir dəstə sunulur əməliyyat sistemi, lakin siz heç bir dəyərləri başlatılmış deyil, belə nə bit edirik Bu, baxmayaraq ki, burada görən Bu crazy böyük mənfi sayı, yalnız deməkdir o ki, qalıqları var ki, RAM bəzi əvvəlki istifadə, Mən baxmayaraq özüm hələ lazım. Belə ki, indi mən irəli və növü getmək üçün gedirəm növbəti və indi çap tmp yazın əgər, Mən nə görürsünüz? Nə olursa olsun bir dəyəri olub, yalnız ilk arqument x kimi ilk idi şey, qəbul edilir belə bir və x eyni olmalıdır, belə çap tmp mənə bir verməlidir. Beləliklə, nə siz problem set görəcəksiniz üç, gdb on növ bir tutorial edir lakin bu başlanğıcı olduğunu dərk bir alət bir göz ki, həqiqətən olacaq Əgər problem həll kömək çox daha çox səmərəli. Biz nəticədə etdiyiniz nə Çərşənbə günü edəcəyimiz bir neçə qat geri soymaq başlamaq və bəzi təlim təkərlər aradan qaldırılması. Ki, deyilən şey string ki Biz bir müddət üçün istifadə etdiyiniz biz yavaş-yavaş üz olacaq və sizin söhbət başlamaq bir şey daha esoterically char * kimi tanınan, lakin biz bu gözəl nə olacaq və yumşaq ilk belə göstəricilər baxmayaraq, onlar deyilir etdiyiniz kimi, bəzi edə bilərsiniz əgər sui-istifadə çox pis şeylər, bir az claymation baxaraq bizim dostumuz Stanford Nick Parlante University, kompüter bir professor Bu önizleme birlikdə qoymaq edən elm bu çərşənbə gəlmək nə. [Video playback] -Hey, Binky. Uyan. Bu göstərici əyləncə üçün vaxt var. Ki, hansı var? Göstəricilər haqqında məlumat əldə edin? Oh, goody! [END Video playback] HOPARLÖR 1: Bu barədə çərşənbə günü sizi gözləyir. Biz sonra görəcəksiniz. [Video playback] Və indi, Deep Thoughts, Daven Farnham tərəfindən. Niyə biz C öyrənir? Niyə A +? [Gülüş] [END Video playback]