1 00:00:00,000 --> 00:00:12,040 >> [संगीत खेल] 2 00:00:12,040 --> 00:00:16,460 >> स्पीकर 1: सब ठीक है, इस CS50 है, और इस सप्ताह चार की शुरुआत है, 3 00:00:16,460 --> 00:00:20,420 और आप सुना सकते हैं या पढ़ें, दुनिया का अंत हो गया है. 4 00:00:20,420 --> 00:00:23,520 इंटरनेट के आसपास सभी जा रहे हैं गया ज्ञान और जागरूकता है 5 00:00:23,520 --> 00:00:27,100 एक कार्यक्रम, एक में एक बग की बैश बुलाया प्रोग्रामिंग भाषा. 6 00:00:27,100 --> 00:00:32,729 इस शानदार ब्रांडेड किया गया है SHELLSHOCK, या बैश द्वार के रूप में, 7 00:00:32,729 --> 00:00:35,485 लेकिन इस तरह के लेख असामान्य नहीं किया गया है. 8 00:00:35,485 --> 00:00:38,807 और वास्तव में, उनमें से कई लाना Heartbleed के पीछे यादें, 9 00:00:38,807 --> 00:00:41,640 आप में देखा हो जो यह पिछले वसंत पीछे प्रेस जो 10 00:00:41,640 --> 00:00:43,980 इसी प्रकार काफी नाटकीय था. 11 00:00:43,980 --> 00:00:47,110 अब आप में से उन लोगों के यहां आज, आप में से कितने हैं, 12 00:00:47,110 --> 00:00:50,330 आप समझ में नहीं आता है, भले ही क्या यह SHELLSHOCK के बारे में सुना, सब के बारे में? 13 00:00:50,330 --> 00:00:51,370 14 00:00:51,370 --> 00:00:54,245 सब ठीक है, और आप में से कितने कमजोर कर रहे हैं कि कंप्यूटर है? 15 00:00:54,245 --> 00:00:55,680 16 00:00:55,680 --> 00:01:00,250 ठीक है, दूर, बहुत अधिक हाथ होना चाहिए अभी, कारणों के लिए हम देखेंगे. 17 00:01:00,250 --> 00:01:02,580 >> का क्या है पर एक नज़र रखना मीडिया में चल रहा 18 00:01:02,580 --> 00:01:05,304 और फिर इसे थोड़ा समझा यहाँ हमारे लिए तकनीकी रूप से. 19 00:01:05,304 --> 00:01:07,670 20 00:01:07,670 --> 00:01:11,250 >> अध्यक्ष 2: सुरक्षा विशेषज्ञों चेतावनी दी एक गंभीर दोष सकता है कि 21 00:01:11,250 --> 00:01:15,650 के सैकड़ों को प्रभावित करने के बारे में हो दुनिया की वेब उपयोगकर्ताओं के लाखों. 22 00:01:15,650 --> 00:01:20,600 तो क्या वास्तव में हो गया है कि बग क्या है SHELLSHOCK करार दिया, और यह क्या करता है? 23 00:01:20,600 --> 00:01:23,720 24 00:01:23,720 --> 00:01:28,910 खैर, SHELLSHOCK भी रूप में जाना जाता है बैश बग, यह कारनामे सॉफ्टवेयर. 25 00:01:28,910 --> 00:01:33,230 हैकर्स कमजोर स्कैन करने के लिए वायरस का उपयोग लिनक्स और यूनिक्स चल प्रणालियों 26 00:01:33,230 --> 00:01:36,300 ऑपरेटिंग सिस्टम और फिर उन्हें संक्रमित. 27 00:01:36,300 --> 00:01:38,730 पार्टी की योजना बनाई एक कमांड लाइन खोल रहा है. 28 00:01:38,730 --> 00:01:43,460 यह उपयोगकर्ताओं को इस मुद्दे को लांच करने की आज्ञा देता है सॉफ्टवेयर के भीतर कार्यक्रमों और सुविधाओं 29 00:01:43,460 --> 00:01:45,250 पाठ में टाइप करके. 30 00:01:45,250 --> 00:01:49,980 यह आमतौर पर प्रोग्रामर द्वारा इस्तेमाल किया है, और व्यापक दुनिया के लिए खुला नहीं होना चाहिए, 31 00:01:49,980 --> 00:01:51,590 SHELLSHOCK कि परिवर्तन है. 32 00:01:51,590 --> 00:01:54,160 33 00:01:54,160 --> 00:01:57,910 >> खैर, worringly, कुछ विश्लेषकों यह एक बड़ा खतरा हो सकता है चेतावनी दी है, 34 00:01:57,910 --> 00:02:01,580 SHELLSHOCK पूरी अनुमति देता है एक संक्रमित मशीन का नियंत्रण, 35 00:02:01,580 --> 00:02:06,030 Heartbleed जबकि केवल अनुमति दी हैकर्स कंप्यूटर पर जासूसी करने के लिए. 36 00:02:06,030 --> 00:02:09,130 यह बात है, तो गंभीर है 10 में से एक 10 दर्जा दिया गया 37 00:02:09,130 --> 00:02:11,900 नेशनल द्वारा गंभीरता के लिए भेद्यता डाटाबेस. 38 00:02:11,900 --> 00:02:15,530 39 00:02:15,530 --> 00:02:20,015 सभी वेब सर्वर की 2/3 पर हैं कुछ मैक कंप्यूटरों सहित जोखिम,. 40 00:02:20,015 --> 00:02:22,760 41 00:02:22,760 --> 00:02:25,600 खैर, आप यह सुनिश्चित कर लें अब आपके सिस्टम पैच. 42 00:02:25,600 --> 00:02:29,330 एक वेबसाइट चलाने की मेजबानी किसी को भी प्रभावित ऑपरेटिंग सिस्टम 43 00:02:29,330 --> 00:02:31,800 जितनी जल्दी हो सके कार्रवाई करनी चाहिए. 44 00:02:31,800 --> 00:02:35,390 यह देखना चाहिए बर्दाश्त कर सकते हैं जो कोई उनकी निगरानी और वेब आवेदन करने के लिए 45 00:02:35,390 --> 00:02:37,355 फायरवॉल किसी भी हमले के लिए बाहर देखने के लिए. 46 00:02:37,355 --> 00:02:39,979 47 00:02:39,979 --> 00:02:41,770 स्पीकर 3: सबसे बुरी बात हो सकता है 48 00:02:41,770 --> 00:02:45,080 किसी कोड लिखना होगा कि कि स्वचालित रूप से जाने के लिए और स्कैन होगा 49 00:02:45,080 --> 00:02:48,280 इंटरनेट और प्रभावित करेगा इन सभी कंप्यूटरों. 50 00:02:48,280 --> 00:02:50,710 और वे अच्छी तरह से करना है कि, एक बार, वे कर सकते सबसे बुरी बात 51 00:02:50,710 --> 00:02:53,300 अभी सब कुछ नष्ट कर रहा है, या नीचे साइटों बंद. 52 00:02:53,300 --> 00:02:55,360 इसलिए हम क्षति को देख सकता था देखने के उस बिंदु से, 53 00:02:55,360 --> 00:02:58,300 हम दुर्भावनापूर्ण लोग कहाँ होगा जो सिर्फ तबाही का कारण करने का फैसला 54 00:02:58,300 --> 00:03:02,534 सिस्टम को नीचे लाने या हटाने के द्वारा कि जैसे फाइलें, और बातें. 55 00:03:02,534 --> 00:03:05,200 अध्यक्ष 2: कुछ इस एक है कहना सबसे मुश्किल का उपाय करने के लिए 56 00:03:05,200 --> 00:03:08,080 साल में कीड़े, और यह सप्ताह लेने या भी हो सकता है 57 00:03:08,080 --> 00:03:10,820 महीने के अपने अंतिम प्रभाव को निर्धारित करने के लिए. 58 00:03:10,820 --> 00:03:12,180 59 00:03:12,180 --> 00:03:15,560 >> स्पीकर 1: तो है कि सभी, सच है लेकिन मजेदार बात यह है कि लगभग सभी है, 60 00:03:15,560 --> 00:03:18,330 कल्पना की तुम सिर्फ देखा था, शायद कीबोर्ड के अलावा, 61 00:03:18,330 --> 00:03:20,930 साथ कुछ नहीं करना है जो भी बग. 62 00:03:20,930 --> 00:03:23,960 सर्वर और तारों और बहुत आगे है, यह एक तरह से tangentially संबंधित है, 63 00:03:23,960 --> 00:03:27,410 लेकिन मूल में यह बहुत वास्तव में है परिचित यहाँ क्या हो रहा है. 64 00:03:27,410 --> 00:03:30,050 वास्तव में, मुझे में चलते हैं हमारे CS50 उपकरण. 65 00:03:30,050 --> 00:03:32,910 मुझे आगे जाना है और अधिकतम चलो यहां टर्मिनल विंडो. 66 00:03:32,910 --> 00:03:36,020 और तुम लोग, इस का उपयोग किया गया या, उसके संस्करण एम्बेडेड 67 00:03:36,020 --> 00:03:39,460 प्रोग्राम लिखने के क्रम में एडिट में, इसके आगे आदेश टाइप करें, और, 68 00:03:39,460 --> 00:03:43,690 और यह वास्तव में है, और है सप्ताह की मार, बी ए एस एच के लिए किया गया. 69 00:03:43,690 --> 00:03:46,890 यह वह जगह है बॉर्न फिर, शैल जो कह रही है की सिर्फ एक अच्छा तरीका है, 70 00:03:46,890 --> 00:03:50,220 यह एक है कि एक कार्यक्रम है प्रभावी ढंग से, शीघ्र निमिष, 71 00:03:50,220 --> 00:03:51,970 कि इंतज़ार कर बैठता आप के लिए इनपुट के लिए. 72 00:03:51,970 --> 00:03:53,920 और यह आदेश है लाइन इंटरफेस है, जो के माध्यम से 73 00:03:53,920 --> 00:03:57,650 तुम लोग आदेशों से चल रहा है और अंततः संकलन और फिर चल 74 00:03:57,650 --> 00:03:58,400 कार्यक्रम. 75 00:03:58,400 --> 00:04:01,320 >> लेकिन बैश भी एक प्रोग्रामिंग है निम्नलिखित अर्थों में भाषा. 76 00:04:01,320 --> 00:04:05,460 आप की तरह आदेश जानते हैं कि वहाँ सीडी और लोकसभा और भी बजना और दूसरों को, 77 00:04:05,460 --> 00:04:09,580 लेकिन आप अपने खुद के आदेशों को परिभाषित कर सकते हैं बैश में उन्हें लागू करने से. 78 00:04:09,580 --> 00:04:11,420 अब हम नहीं जा रहे हैं महान विस्तार में जाने 79 00:04:11,420 --> 00:04:16,089 के रूप में प्रोग्रामिंग भाषा बैश, लेकिन करने के लिए पता है, उदाहरण के लिए, इस समय यह है कि, 80 00:04:16,089 --> 00:04:17,607 कहा जाता है कि कोई आदेश नहीं है "नमस्ते." 81 00:04:17,607 --> 00:04:19,440 तो उस में पाया जा सकता है इन पैकेजों में से एक. 82 00:04:19,440 --> 00:04:20,856 यह मेरे कंप्यूटर पर स्थापित नहीं है. 83 00:04:20,856 --> 00:04:21,870 अपने व्यवस्थापक से पूछें. 84 00:04:21,870 --> 00:04:26,030 लेकिन मैं वहाँ चाहते हैं एक कार्यक्रम होने के लिए बैश में या मेरे प्रॉम्प्ट पर "हैलो" कहा जाता है, 85 00:04:26,030 --> 00:04:30,810 मैं वास्तव में उस वाक्यविन्यास का उपयोग कर सकते हैं काफी सी की तरह यह बहुत ही नहीं है 86 00:04:30,810 --> 00:04:35,020 लेकिन यह एक सुंदर करने के लिए इसी तरह लग रहा है समारोह, कुछ विवरण लापता यद्यपि. 87 00:04:35,020 --> 00:04:38,090 कुछ भी नहीं होने लगता है, लेकिन अब मैं "हैलो" टाइप 88 00:04:38,090 --> 00:04:40,960 आप वास्तव में एक लिख सकते हैं कार्यक्रम, नहीं सी में, नहीं जावा में, 89 00:04:40,960 --> 00:04:44,280 नहीं एक और प्रोग्रामिंग में भाषा, लेकिन बैश अपने आप में. 90 00:04:44,280 --> 00:04:47,630 >> अब यहां महत्वपूर्ण यह है कि मैं ने लिखा है मैं इस नए आदेश देना चाहता था नाम, 91 00:04:47,630 --> 00:04:50,820 और कोष्ठकों भी हैं इस का प्रतीकात्मक एक समारोह किया जा रहा है. 92 00:04:50,820 --> 00:04:54,010 एक अलग रूप में, आप भी मजा कर सकते हैं , और वास्तव में, यहां तक ​​कि मैक ओएस पर बातें, 93 00:04:54,010 --> 00:04:55,620 इस टर्मिनल नामक एक कार्यक्रम है. 94 00:04:55,620 --> 00:04:58,800 यह किसी के भी में निर्मित आता इस कमरे में एक मैक है कि कंप्यूटर, 95 00:04:58,800 --> 00:05:03,640 और आप मैक में इसी तरह की बातें कर सकते हैं ओएस, लेकिन आप से परे है कि अधिक से जा सकते हैं. 96 00:05:03,640 --> 00:05:07,110 और यह एक छोटी सी स्पर्शरेखा है लेकिन यह मजाक की तरह है. 97 00:05:07,110 --> 00:05:09,715 मैं आज सुबह याद दिला रहा था, इस सोच के माध्यम से करते हैं, 98 00:05:09,715 --> 00:05:13,279 एक छोटे से खेल की मैं खेलने के लिए इस्तेमाल किया CS50 के पूर्व TFS में से एक के साथ 99 00:05:13,279 --> 00:05:16,570 किसी भी समय वह दूर से चलना होगा जिससे उसकी स्क्रीन के साथ अपने कीबोर्ड खुला, 100 00:05:16,570 --> 00:05:23,611 मैं एक आदेश पर अमल होगा this-- तरह "नमस्ते कहना." 101 00:05:23,611 --> 00:05:26,610 और अब किसी भी समय वह वापस आया उसके कुंजीपटल मैं स्क्रीन को मंजूरी दे दी के बाद 102 00:05:26,610 --> 00:05:27,985 और वह नीचे बैठते थे कुछ काम करने की कोशिश, 103 00:05:27,985 --> 00:05:29,250 उसकी directory-- की सामग्री की सूची 104 00:05:29,250 --> 00:05:29,510 >> [ऑडियो प्लेबैक] 105 00:05:29,510 --> 00:05:30,010 >> हैलो. 106 00:05:30,010 --> 00:05:31,621 107 00:05:31,621 --> 00:05:32,120 नमस्कार. 108 00:05:32,120 --> 00:05:35,030 >> निष्पक्षता में तो,: अध्यक्ष 1 यह "नमस्ते." वास्तव में नहीं था 109 00:05:35,030 --> 00:05:36,894 यह आमतौर पर कुछ था that-- के सदृश 110 00:05:36,894 --> 00:05:37,560 [ऑडियो प्लेबैक] 111 00:05:37,560 --> 00:05:37,750 -Beep. 112 00:05:37,750 --> 00:05:39,320 स्पीकर 1: मैं would-- --that इसलिए अपने कंप्यूटर होगा 113 00:05:39,320 --> 00:05:42,170 वह वास्तव में उस पर किसी भी समय कसम खाता अपने कीबोर्ड पर बैठ गए. 114 00:05:42,170 --> 00:05:46,265 और बहुत जल्दी वह समझ से बाहर उसकी स्क्रीन खुला छोड़ने के लिए नहीं. 115 00:05:46,265 --> 00:05:48,730 लेकिन इस तरह का सुझाव बेवकूफ मजाक की है कि आप 116 00:05:48,730 --> 00:05:50,210 बैश तरह कुछ के साथ हो सकता है. 117 00:05:50,210 --> 00:05:52,770 लेकिन यह एक छोटे से अधिक है गंभीर, उस से भी सुनिश्चित हो. 118 00:05:52,770 --> 00:05:57,235 और वास्तव में, इस में से एक है सबसे खतरनाक और लंबे समय तक चलने कीड़े 119 00:05:57,235 --> 00:05:58,860 कि वास्तव में विश्व स्तर पर दुनिया में पहुंच गई है. 120 00:05:58,860 --> 00:06:02,060 इस बग के आसपास रहा है कुछ 20 साल के लिए, 121 00:06:02,060 --> 00:06:05,780 और आप सिर्फ एक में मारा हो जाएगा उसके रिश्तेदार सादगी से पल. 122 00:06:05,780 --> 00:06:07,990 >> तो यह एक प्रतिनिधि है आज्ञा है कि आप अगर 123 00:06:07,990 --> 00:06:10,448 सचमुच अभी, एक मैक ही आप अपने ढक्कन खुला है, 124 00:06:10,448 --> 00:06:12,940 आप उस में टाइप करने की कोशिश कर सकते हैं टर्मिनल बुलाया कार्यक्रम. 125 00:06:12,940 --> 00:06:15,410 टर्मिनल के नीचे है आवेदन Utilities-- 126 00:06:15,410 --> 00:06:18,790 एक बार के लिए, विंडोज उपयोगकर्ताओं के लिए नहीं है इस विशेष threat-- के बारे में चिंता 127 00:06:18,790 --> 00:06:22,310 लेकिन एमएसीएस साथ आप उन लोगों टाइप कर सकते हैं एक खिड़की में यह है कि मैं यहाँ क्या करेंगे जैसे, 128 00:06:22,310 --> 00:06:24,210 और आप टाइप करते हैं इस कार्यक्रम में कि 129 00:06:24,210 --> 00:06:28,830 मैं अब क्या करेंगे जैसे, टर्मिनल कहा जाता है, आप शब्द देखते हैं "कमजोर" 130 00:06:28,830 --> 00:06:32,200 अपने कंप्यूटर है शोषण की चपेट में. 131 00:06:32,200 --> 00:06:33,850 >> अब जब कि वास्तव में क्या मतलब है? 132 00:06:33,850 --> 00:06:35,870 और यह मानते है कुछ सुंदर पागल वाक्यविन्यास, 133 00:06:35,870 --> 00:06:39,050 लेकिन कम से कम बाहर खींचना दिलचस्प पहलुओं के कुछ. 134 00:06:39,050 --> 00:06:42,567 तो लग रहा है कि कुछ वाक्य रचना नहीं है कम से कम सी से, एक छोटे से परिचित 135 00:06:42,567 --> 00:06:43,950 और अधिक आम तौर पर प्रोग्रामिंग. 136 00:06:43,950 --> 00:06:47,550 मैं कुछ कोष्ठकों देखते हैं, अर्धविराम, घुंघराले ब्रेसिज़, और इस तरह, 137 00:06:47,550 --> 00:06:50,820 लेकिन यह इस पता चला है कि पीले रंग में यहाँ बेवकूफ बात 138 00:06:50,820 --> 00:06:53,580 एक समारोह अनिवार्य है कि कुछ भी नहीं है. 139 00:06:53,580 --> 00:06:57,840 पेट के साधन कुछ नहीं करते, और अर्धविराम कुछ नहीं कर रोकने का मतलब है. 140 00:06:57,840 --> 00:07:00,250 इनमें से अंदर तो घुंघराले ब्रेसिज़, तथ्य 141 00:07:00,250 --> 00:07:02,440 मैं एक समान है कि छोड़ दिया, इस पर हस्ताक्षर 142 00:07:02,440 --> 00:07:05,500 अनिवार्य रूप से पैदा होता है एक आदेश, या एक चर, 143 00:07:05,500 --> 00:07:09,520 एक्स कहा जाता है, और यह बताए वहाँ कोड की कि पीला सा. 144 00:07:09,520 --> 00:07:14,040 कि "गूंज ऐसा कुछ हो सकता है नमस्ते "या" कहना बीप "या कुछ और 145 00:07:14,040 --> 00:07:15,120 कि जैसा. 146 00:07:15,120 --> 00:07:17,780 लेकिन अपनी आँखें अगर नोटिस अधिकार के लिए आगे घूमना, 147 00:07:17,780 --> 00:07:22,150 की तुलना में इस लाइन के लिए और भी है कि अर्धविराम की बस अंत. 148 00:07:22,150 --> 00:07:25,160 फिर, "कमजोर" गूंज और उस पार भी अधिक है. 149 00:07:25,160 --> 00:07:26,530 एक और अर्धविराम, पार्टी की योजना बनाई सी :. 150 00:07:26,530 --> 00:07:28,120 151 00:07:28,120 --> 00:07:34,050 >> तो लंबी कहानी को कम, कोड की इस पंक्ति है 152 00:07:34,050 --> 00:07:36,660 सम्मोहक के लिए पर्याप्त है कि एक कंप्यूटर 153 00:07:36,660 --> 00:07:39,830 कुछ कर रही है की चपेट में आप क्या करना चाहते हैं कि, 154 00:07:39,830 --> 00:07:44,290 पार्टी की योजना बनाई जिससे में एक बग है क्योंकि बैश रोकने के लिए चाहिए था, भले ही 155 00:07:44,290 --> 00:07:48,980 आदेश सही से पढ़ लाइनों वहाँ पीले पाठ के बाद, 156 00:07:48,980 --> 00:07:52,520 एक 20 से अधिक साल पुराने बग के लिए, पार्टी की योजना बनाई वास्तव में पढ़ रहा है 157 00:07:52,520 --> 00:07:56,780 कि अर्धविराम से परे और सुंदर ज्यादा यह बताया जाता है कि क्या कर रही है. 158 00:07:56,780 --> 00:07:59,070 >> इसलिए निहितार्थ क्या है का है कि अंततः? 159 00:07:59,070 --> 00:08:01,340 मैं सिर्फ "हैलो गूंज" कहा या ", कमजोर गूंज" 160 00:08:01,340 --> 00:08:05,449 लेकिन क्या आप कुछ किया तो वास्तव में दुर्भावनापूर्ण, rm- आरएफ * जैसे, 161 00:08:05,449 --> 00:08:07,240 जो तुम नहीं हो सकता पहले कभी टाइप किया है, 162 00:08:07,240 --> 00:08:08,920 और स्पष्ट रूप से आप शायद नहीं भी जल्दी ही चाहिए, 163 00:08:08,920 --> 00:08:10,700 आप एक कर सकते हैं क्योंकि इसके साथ नुकसान की बहुत. 164 00:08:10,700 --> 00:08:11,210 क्यों? 165 00:08:11,210 --> 00:08:12,990 आरएम का पाठ्यक्रम क्या करता है? 166 00:08:12,990 --> 00:08:14,270 निकालता है. 167 00:08:14,270 --> 00:08:15,930 * क्या मतलब है? 168 00:08:15,930 --> 00:08:16,430 सभी. 169 00:08:16,430 --> 00:08:18,180 तो यह एक तथाकथित है वाइल्ड कार्ड, यह तो इसका मतलब है 170 00:08:18,180 --> 00:08:20,410 में सब कुछ नष्ट वर्तमान निर्देशिका. 171 00:08:20,410 --> 00:08:23,379 -r पुनरावर्ती मतलब होता है, आप को हटाने क्या कर रहे हैं तो जो मतलब 172 00:08:23,379 --> 00:08:26,420 एक निर्देशिका है, और वहाँ के अंदर अन्य फाइलें और अन्य निर्देशिकाओं है 173 00:08:26,420 --> 00:08:28,950 बारी बारी से वहाँ में डुबकी और है कि सभी को हटा दें. 174 00:08:28,950 --> 00:08:31,040 और च उन सब का सबसे बुरा है. 175 00:08:31,040 --> 00:08:32,580 किसी को भी च यहां का मतलब क्या है? 176 00:08:32,580 --> 00:08:33,690 177 00:08:33,690 --> 00:08:34,360 फोर्स. 178 00:08:34,360 --> 00:08:37,830 तो भी, साधन मजबूर यह एक बुरा विचार है, 179 00:08:37,830 --> 00:08:40,939 मुझे उत्साह के बिना यह कर आगे की पुष्टि के लिए. 180 00:08:40,939 --> 00:08:43,230 तो, आप जानते हैं, हम पर हंस इस, लेकिन स्पष्ट रूप से, मैं शायद 181 00:08:43,230 --> 00:08:44,972 यह कई बार टाइप एक दिन, वास्तविकता क्योंकि 182 00:08:44,972 --> 00:08:47,210 यह करने के लिए सबसे तेज़ तरीका है सामान की एक पूरी गुच्छा हटा दें. 183 00:08:47,210 --> 00:08:48,590 लेकिन फिर भी मैं कुछ नुकसान किया है. 184 00:08:48,590 --> 00:08:53,100 >> लेकिन अगर आप एक कंप्यूटर चाल थे कुछ मूर्ख चर को परिभाषित करने में 185 00:08:53,100 --> 00:08:56,810 या समारोह एक्स कहा जाता है, लेकिन फिर क्रियान्वित करने में कंप्यूटर चकरा देनेवाला 186 00:08:56,810 --> 00:09:00,030 उस की सीमाओं से परे समारोह, कि अर्धविराम से परे, 187 00:09:00,030 --> 00:09:04,430 आप वास्तव में एक कंप्यूटर चाल सकता है आरएम की तरह कुछ क्रियान्वित करने में -rf 188 00:09:04,430 --> 00:09:07,810 या ईमेल कमान या कॉपी कमान. 189 00:09:07,810 --> 00:09:11,400 कुछ भी सचमुच आप के साथ क्या कर सकते हैं कंप्यूटर, यह फ़ाइलों को हटाने चाहे, 190 00:09:11,400 --> 00:09:15,350 , फाइल बनाने किसी स्पैमिंग, दूर से कुछ सर्वर पर हमला, 191 00:09:15,350 --> 00:09:17,190 आप इसे व्यक्त कर सकते हैं एक आदेश के साथ, आप 192 00:09:17,190 --> 00:09:19,120 कर रही है कि में एक कंप्यूटर चाल कर सकते हैं. 193 00:09:19,120 --> 00:09:21,510 >> अब का एक उदाहरण क्या है तुम ऐसा कैसे कर सकता है? 194 00:09:21,510 --> 00:09:24,300 खैर, कंप्यूटर का एक बहुत कुछ है इंटरनेट चल बैश पर. 195 00:09:24,300 --> 00:09:26,390 हमें मैक उपयोगकर्ताओं के सभी उन के बीच में हैं. 196 00:09:26,390 --> 00:09:30,390 लिनक्स सर्वर की एक बहुत शामिल हैं साथ ही उन्हें, और यूनिक्स सर्वर. 197 00:09:30,390 --> 00:09:32,630 विंडोज फिर से हो जाता है अपेक्षाकृत हुक बंद 198 00:09:32,630 --> 00:09:34,590 आप को स्थापित किया है, जब तक विशेष सॉफ्टवेयर. 199 00:09:34,590 --> 00:09:37,130 सर्वर की एक बहुत, के लिए उदाहरण के लिए, चलाने वेब सर्वर, 200 00:09:37,130 --> 00:09:39,840 और वास्तव में लिनक्स शायद है सबसे लोकप्रिय ऑपरेटिंग सिस्टम 201 00:09:39,840 --> 00:09:43,060 इंटरनेट पर कंप्यूटर पर चलाने के लिए उन वेब पृष्ठों की सेवा कर रहे हैं. 202 00:09:43,060 --> 00:09:44,910 अब हम बाद में देखेंगे के रूप में सेमेस्टर, जब में 203 00:09:44,910 --> 00:09:48,470 आप से एक अनुरोध भेज अपने browser-- क्रोम, 204 00:09:48,470 --> 00:09:50,790 इंटरनेट एक्सप्लोरर, whatever-- एक दूरस्थ सर्वर के लिए, 205 00:09:50,790 --> 00:09:53,730 यह पता चला है कि भले ही आप सिर्फ टाइप www.example.com, 206 00:09:53,730 --> 00:09:59,590 अपने ब्राउज़र एक संदेश भेज रहा है कि एक छोटे से अधिक रहस्यमय, इस तरह है. 207 00:09:59,590 --> 00:10:01,239 >> लेकिन अजीब एक छोटे से कुछ नोटिस. 208 00:10:01,239 --> 00:10:03,030 पहली दो पंक्तियों मैंने पहले कभी नहीं देखा 209 00:10:03,030 --> 00:10:04,904 लेकिन वे नहीं लगते विशेष रूप से धमकी. 210 00:10:04,904 --> 00:10:08,030 लेकिन मैं चुरा लिया है क्या नोटिस यहाँ तीसरी लाइन के लिए. 211 00:10:08,030 --> 00:10:13,390 एक बुरा आदमी एक संदेश भेज रहे थे अपने या अपने कंप्यूटर से इस तरह 212 00:10:13,390 --> 00:10:17,270 एक कमजोर मैक या एक के लिए कमजोर लिनक्स सर्वर, 213 00:10:17,270 --> 00:10:21,580 मजेदार बात यह है, कि पार्टी की योजना बनाई है कि साधारण सी कमांड प्रॉम्प्ट, 214 00:10:21,580 --> 00:10:27,450 सर्वव्यापी है और अक्सर है अनिवार्य रूप से निष्पादित करने के लिए खेतों में 215 00:10:27,450 --> 00:10:30,020 एक की सामग्री यह मिलने वाले संदेश. 216 00:10:30,020 --> 00:10:33,490 और उस तर्क से, आप कर सकते हैं इसलिए, एक वेब सर्वर चाल, 217 00:10:33,490 --> 00:10:36,370 जैसे कुछ भेजकर उपयोगकर्ता एजेंट, आमतौर पर जो 218 00:10:36,370 --> 00:10:38,300 कहने के लिए माना जाता है अपने ब्राउज़र के नाम है. 219 00:10:38,300 --> 00:10:42,420 उपयोगकर्ता एजेंट क्रोम, उपयोगकर्ता एजेंट इंटरनेट एक्सप्लोरर, उपयोगकर्ता एजेंट फ़ायरफ़ॉक्स, इस 220 00:10:42,420 --> 00:10:44,590 बस अपने ब्राउज़र की है खुद की पहचान करने का तरीका. 221 00:10:44,590 --> 00:10:46,605 लेकिन अगर एक बुरा आदमी बहुत चतुराई मिमी मिमी, मैं कर रहा हूँ, कहते हैं 222 00:10:46,605 --> 00:10:47,930 आपको बता नहीं जा रहा क्या अपने ब्राउज़र है, 223 00:10:47,930 --> 00:10:50,888 मैं बजाय आप इस भेजने के लिए जा रहा हूँ एक rm- आरएफ के साथ बात गुप्त दिखने 224 00:10:50,888 --> 00:10:55,840 * यह में, आप सचमुच एक चाल कर सकते हैं इंटरनेट पर कमजोर वेब सर्वर 225 00:10:55,840 --> 00:10:59,055 में है कि वास्तव में क्रियान्वित करने में वहाँ फ़ाइलों के सभी हटाने के लिए. 226 00:10:59,055 --> 00:11:00,930 और सच कहूँ तो, ऐसा नहीं है इसके बारे में भी बुरी. 227 00:11:00,930 --> 00:11:01,763 आप कुछ भी कर सकते हैं. 228 00:11:01,763 --> 00:11:04,480 आप शुरू कर सकता है एक वितरित सेवा हमले के इनकार 229 00:11:04,480 --> 00:11:07,030 आप को यह संदेश भेजा वेब सर्वर के पूरे गुच्छों 230 00:11:07,030 --> 00:11:10,256 और फिर उन सब के लिए, उतरना पड़ा उदाहरण, Harvard.edu सर्वरों पर, 231 00:11:10,256 --> 00:11:12,130 और आप धमाके की तरह कर सकते हैं उनमें से बाहर बिल्ली 232 00:11:12,130 --> 00:11:15,490 था कि एक नेटवर्क यातायात से अन्यथा यह बुरा आदमी से शुरू हो गया. 233 00:11:15,490 --> 00:11:18,760 >> तो, लंबी कहानी को कम, लगभग एक मैक का मालिक जो इस कमरे में हर कोई 234 00:11:18,760 --> 00:11:20,240 इस की चपेट में है. 235 00:11:20,240 --> 00:11:24,100 उम्मीद की किरण आप कर रहे हैं, जब तक कि है अपने लैपटॉप पर एक वेब सर्वर चल रहा है, 236 00:11:24,100 --> 00:11:27,780 और आप वास्तव में विन्यस्त किया है जब तक यह इसे में एसएसएच तरह कुछ की अनुमति के लिए 237 00:11:27,780 --> 00:11:28,670 आप वास्तव में सुरक्षित हैं. 238 00:11:28,670 --> 00:11:31,710 यह कमजोर है, लेकिन कोई नहीं है एक अपने लैपटॉप में शामिल होने की कोशिश कर रहा है, 239 00:11:31,710 --> 00:11:33,290 तो आप की तरह आश्वासन दिया आराम कर सकते हैं. 240 00:11:33,290 --> 00:11:36,210 हालांकि, एप्पल जल्द ही होगा इस के लिए एक तय अद्यतन किया. 241 00:11:36,210 --> 00:11:39,660 लिनक्स की दुनिया में पहले से ही जारी किया गया है फेडोरा और Ubuntu के लिए सुधारों की एक संख्या 242 00:11:39,660 --> 00:11:43,790 और अन्य लिनक्स के संस्करणों, और वास्तव में आप उपकरण में अद्यतन 50 चलाते हैं, 243 00:11:43,790 --> 00:11:45,930 बहुत हो जाएगा यह भी है कि अद्यतन और सही. 244 00:11:45,930 --> 00:11:47,764 लेकिन वह भी नहीं है वास्तव में, कमजोर हो गया 245 00:11:47,764 --> 00:11:49,804 आप जब तक क्योंकि उपकरणों के साथ tinkered 246 00:11:49,804 --> 00:11:52,770 और सार्वजनिक रूप से अपने लैपटॉप बनाया नहीं है जो इंटरनेट पर सुलभ 247 00:11:52,770 --> 00:11:54,910 डिफ़ॉल्ट रूप से, आप है वास्तव में, क्योंकि ठीक किया गया 248 00:11:54,910 --> 00:11:56,890 firewalling और अन्य तकनीकों की. 249 00:11:56,890 --> 00:12:01,000 >> लेकिन यह एक बग का एक चरम उदाहरण है हम सचमुच 20 के लिए के लिए रहता है कि 250 00:12:01,000 --> 00:12:04,050 साल, और कोई है जो जानता है कि अगर यह सब समय इसके बारे में जाना जाता है? 251 00:12:04,050 --> 00:12:06,300 और वास्तव में, इस में से एक है मौलिक चुनौतियों 252 00:12:06,300 --> 00:12:08,690 हम बाद में देखेंगे कि सुरक्षा के बारे में सेमेस्टर, 253 00:12:08,690 --> 00:12:13,020 कि, बस असली दुनिया में की तरह है अच्छे लोग नुकसान में रहे. 254 00:12:13,020 --> 00:12:16,500 बुरे लोगों को बाहर रखने के लिए, हम करने के लिए है हर दरवाजा बंद कर दिया है कि यह सुनिश्चित कर लें, 255 00:12:16,500 --> 00:12:20,340 हर खिड़की है कि सुरक्षित है कि एक घर में प्रवेश के हर बिंदु 256 00:12:20,340 --> 00:12:21,980 बुरे लोगों को बाहर रखने के लिए सुरक्षित है. 257 00:12:21,980 --> 00:12:26,870 लेकिन क्या करता है, बुरा आदमी के लिए है वास्तव में अपने घर से समझौता करने के लिए करते हैं 258 00:12:26,870 --> 00:12:28,200 और तुम से चोरी? 259 00:12:28,200 --> 00:12:32,574 वह या वह सिर्फ खुला एक खोजने के लिए है दरवाजा, एक टूटी हुई खिड़की, या कुछ और 260 00:12:32,574 --> 00:12:35,240 उन पंक्तियों के साथ, और यह बात है कंप्यूटर सुरक्षा में एक ही बात. 261 00:12:35,240 --> 00:12:37,660 हम में से लाखों लिख सकते हैं प्रोग्रामिंग कोड की लाइनों 262 00:12:37,660 --> 00:12:40,570 और सैकड़ों या हजारों खर्च यह सही पाने के लिए कोशिश कर रहा घंटे की, 263 00:12:40,570 --> 00:12:43,370 लेकिन अगर आप सिर्फ एक बना शुद्धता में गलती, 264 00:12:43,370 --> 00:12:47,030 आप पूरे सिस्टम को रख सकते हैं और वास्तव में, इस मामले में पूरे इंटरनेट 265 00:12:47,030 --> 00:12:48,660 और जोखिम पर दुनिया. 266 00:12:48,660 --> 00:12:51,950 >> यदि आप अधिक जानकारी चाहते हैं तो अगर इस बारे में, यहाँ इस URL पर जाएं. 267 00:12:51,950 --> 00:12:54,450 कार्रवाई के लिए कोई ज़रूरत नहीं है आज रात आप कर रहे हैं जब तक 268 00:12:54,450 --> 00:12:57,116 उन है कि और अधिक आरामदायक के बीच अपने स्वयं के वेब चल रहा है 269 00:12:57,116 --> 00:12:59,810 सर्वर, जो तुम चाहिए मामले में, वास्तव में, अपने सॉफ्टवेयर को अपडेट करें. 270 00:12:59,810 --> 00:13:03,244 >> और यह भी का शीर्षक है एक भाषण, और अब एक कागज, 271 00:13:03,244 --> 00:13:05,410 हम पर लिंक किया है कि आज के लिए पाठ्यक्रम की वेबसाइट. 272 00:13:05,410 --> 00:13:07,600 यह एक साथी के द्वारा किया गया नामित केन थॉम्पसन, जो 273 00:13:07,600 --> 00:13:10,120 एक बहुत प्रसिद्ध स्वीकार करने गया था कंप्यूटर विज्ञान के क्षेत्र में पुरस्कार, 274 00:13:10,120 --> 00:13:13,495 और वह कुछ साल इस भाषण दिया पहले, अनिवार्य रूप से यह एक ही विषय पर. 275 00:13:13,495 --> 00:13:18,250 276 00:13:18,250 --> 00:13:20,520 सवाल लोगों पूछ, तुम चाहिए सच 277 00:13:20,520 --> 00:13:23,480 विश्वास, अंततः, सॉफ्टवेयर आपको दिया गया है? 278 00:13:23,480 --> 00:13:26,100 उदाहरण के लिए, हम सब की है कार्यक्रमों लिख गया, 279 00:13:26,100 --> 00:13:27,820 और हम संकलन किया गया है बजना साथ उन्हें. 280 00:13:27,820 --> 00:13:31,830 और अपने ज्ञान के लिए, आपको लिखा है CS50 के लिए किसी भी कार्यक्रम है, जहां 281 00:13:31,830 --> 00:13:35,310 एक तरह की पीछे के दरवाजे, एक रास्ता है एक बुरा आदमी है कि अपने कार्यक्रम चल रहे हैं, 282 00:13:35,310 --> 00:13:37,410 अपने कंप्यूटर पर ले सकता है? 283 00:13:37,410 --> 00:13:38,310 शायद नहीं, सही? 284 00:13:38,310 --> 00:13:40,180 मारियो, और लालची, और क्रेडिट. 285 00:13:40,180 --> 00:13:41,680 ये सब बहुत छोटे प्रोग्राम हैं. 286 00:13:41,680 --> 00:13:43,910 आप सुंदर होना होगा बुरा वास्तव में आप अगर 287 00:13:43,910 --> 00:13:47,310 अपने पूरे कंप्यूटर कमजोर बनाया कोड की 10 या 20 लाइनें लिखने के बाद, 288 00:13:47,310 --> 00:13:49,690 या कुछ की कम से कम अनजान सुरक्षा निहितार्थ की. 289 00:13:49,690 --> 00:13:52,023 अब मुझे लगता है कि परिहास कहना लेकिन हम आज देखने जा रहे हैं 290 00:13:52,023 --> 00:13:54,600 और इस सप्ताह यह वास्तव में है वास्तव में, वास्तव में आसान 291 00:13:54,600 --> 00:13:57,980 बुरा हो सकता है और भी बनाने के लिए कम कार्यक्रमों कमजोर. 292 00:13:57,980 --> 00:14:02,880 >> लेकिन अब के लिए, कम से कम, एहसास सवाल यहाँ कहा जा रहा है कि 293 00:14:02,880 --> 00:14:04,850 एक संकलक में बजना के बारे में है. 294 00:14:04,850 --> 00:14:08,360 क्यों हम बजना पर भरोसा किया गया है पिछले दो या तीन सप्ताह के लिए? 295 00:14:08,360 --> 00:14:12,650 कौन है जो कोई भी बजना लिखा है कि कहने के लिए है वहाँ में एक "" अगर हालत नहीं था 296 00:14:12,650 --> 00:14:17,680 कि अनिवार्य रूप से कुछ शून्य इंजेक्शन और हर कार्यक्रम में लोगों को यह compiles 297 00:14:17,680 --> 00:14:21,180 कि ऐसा होगा उसे या उसके पहुँच अपने कंप्यूटर जब आप सो रहे हैं 298 00:14:21,180 --> 00:14:23,580 और अपने लैपटॉप ढक्कन खुला है और आपके कंप्यूटर पर चल रहा है? 299 00:14:23,580 --> 00:14:24,080 है ना? 300 00:14:24,080 --> 00:14:28,350 हम सम्मान प्रणाली सही है की इस प्रकार है अब हम बजना कानूनी है कि भरोसा है. 301 00:14:28,350 --> 00:14:30,000 आप उपकरण कानूनी है कि विश्वास है. 302 00:14:30,000 --> 00:14:34,430 तुम पर भरोसा है कि सचमुच हर कार्यक्रम अपने मैक या पीसी पर भरोसेमंद है. 303 00:14:34,430 --> 00:14:37,510 और इस सरल बग का सुझाव है, यह दुर्भावनापूर्ण नहीं है, भले ही 304 00:14:37,510 --> 00:14:40,580 कि बिल्कुल नहीं है मामला होने की संभावना. 305 00:14:40,580 --> 00:14:42,350 >> तो तुम नरक के रूप में डर होना चाहिए. 306 00:14:42,350 --> 00:14:45,560 सच कहूँ तो, कोई आसान नहीं है इस दूसरे का हल 307 00:14:45,560 --> 00:14:48,185 सामाजिक जागरूकता का एक तरह से बढ़ती जटिलता की 308 00:14:48,185 --> 00:14:50,310 हम शीर्ष पर बना रहे हैं कि हमारे कंप्यूटर सिस्टम की, 309 00:14:50,310 --> 00:14:53,740 और कैसे तेजी से कमजोर हम बहुत अच्छी तरह से हो सकता है. 310 00:14:53,740 --> 00:14:55,570 >> अब जब कि ब्रेकआउट ने कहा, के साथ. 311 00:14:55,570 --> 00:14:59,889 तो ब्रेकआउट है समस्या तीन सेट, और ब्रेकआउट पहल साल से एक खेल है 312 00:14:59,889 --> 00:15:02,180 यदि आपको याद हो सकता है कि, लेकिन हमारे लिए समस्या में, तीन सेट 313 00:15:02,180 --> 00:15:04,450 यह हमें लेने के लिए अनुमति देता है चीजों को एक पायदान का बैक अप 314 00:15:04,450 --> 00:15:08,880 , हम कार्यक्रमों लिख रहे हैं ताकि जब यहां तक ​​कि इस तरह एक टर्मिनल विंडो में, 315 00:15:08,880 --> 00:15:14,670 हम वास्तव में, अंत में, चला सकते हैं चित्रमय कार्यक्रमों नहीं 316 00:15:14,670 --> 00:15:17,800 उन के विपरीत हम था स्क्रैच में करने के लिए उपयोग. 317 00:15:17,800 --> 00:15:20,910 तो यह कर्मचारियों की है ब्रेकआउट के कार्यान्वयन, 318 00:15:20,910 --> 00:15:23,930 जो सिर्फ इस ईंट तोड़ने है खेल, तुम वापस अपने पैडल को स्थानांतरित कि 319 00:15:23,930 --> 00:15:27,590 और आगे, और आप गेंद को हिट ऊपर उन रंग ईंटों के खिलाफ. 320 00:15:27,590 --> 00:15:30,020 तो यह हमें ला रहा है की तरह वापस करने के लिए जहां 321 00:15:30,020 --> 00:15:33,180 हम बहुत जल्दी होने के लिए सक्षम थे खरोंच के साथ, और अब सी के साथ, 322 00:15:33,180 --> 00:15:35,800 हमारे अपने को लागू ग्राफिकल यूजर इंटरफेस. 323 00:15:35,800 --> 00:15:38,960 >> लेकिन उस से अधिक, यह समस्या सेट के पहले का प्रतिनिधित्व करता है 324 00:15:38,960 --> 00:15:41,000 जिसमें हम दे रहे हैं आप कोड का एक गुच्छा. 325 00:15:41,000 --> 00:15:43,940 और वास्तव में, मैं स्पष्ट लाना इस पर ध्यान, विशेष रूप से, क्योंकि 326 00:15:43,940 --> 00:15:47,090 उन कम आराम के लिए, यह समस्या, कम से कम पहली नज़र में, सेट 327 00:15:47,090 --> 00:15:49,170 की तरह महसूस करने के लिए जा रहा है हम एक पायदान ऊपर ले लिया है. 328 00:15:49,170 --> 00:15:51,540 , हम आपको दे दिया है क्योंकि खोज से कुछ के लिए 329 00:15:51,540 --> 00:15:54,930 और pset में समस्याओं छँटाई, हम लिखा है कि कोड का एक गुच्छा, 330 00:15:54,930 --> 00:15:56,680 और टिप्पणियों के एक जोड़े कि, "ऐसा करने के लिए कहते हैं" 331 00:15:56,680 --> 00:15:58,221 जहां आप रिक्त स्थान को भरने के लिए है. 332 00:15:58,221 --> 00:16:00,020 तो भी डरावना नहीं है, लेकिन यह पहली बार है 333 00:16:00,020 --> 00:16:03,370 हम आपको कोड सौंपने रहे हैं आप की जरूरत है कि पहला, पढ़ना, समझना, और उसके बाद के लिए जोड़ 334 00:16:03,370 --> 00:16:04,290 और इसे पूरा. 335 00:16:04,290 --> 00:16:05,940 >> और फिर ब्रेकआउट के साथ, हम भी ऐसा ही करने जा रहे हैं 336 00:16:05,940 --> 00:16:08,740 आप कुछ दर्जन से अधिक लाइनों दे कोड की, स्पष्ट रूप से, आप दे कि 337 00:16:08,740 --> 00:16:11,490 ढांचे के लिए एक बहुत खेल लेकिन कम रोक 338 00:16:11,490 --> 00:16:14,304 की ईंटों को लागू और गेंद और चप्पू, 339 00:16:14,304 --> 00:16:15,970 लेकिन हम कुछ अन्य सुविधाओं को लागू करना. 340 00:16:15,970 --> 00:16:18,280 और यहां तक ​​कि पहली नज़र में लगता है कि, फिर से, विशेष रूप से, कम आरामदायक अगर 341 00:16:18,280 --> 00:16:21,480 विशेष रूप से कठिन लग सकता है और आप इतने सारे नए कार्य लगता है कि वहाँ 342 00:16:21,480 --> 00:16:24,070 आप अपने मन लपेटो करने की जरूरत है चारों ओर, और यह सच है. 343 00:16:24,070 --> 00:16:26,281 लेकिन यह बात है, मन में रखना काफी खरोंच की तरह. 344 00:16:26,281 --> 00:16:28,780 बाधाओं आप सब का उपयोग नहीं किया हैं स्क्रैच में पहेली टुकड़े. 345 00:16:28,780 --> 00:16:31,120 बाधाओं आप रैप करने के लिए परवाह नहीं की हैं उन सभी के आसपास अपने मन 346 00:16:31,120 --> 00:16:33,617 यह सब ले लिया था क्योंकि एक नज़र, ओह, समझने के लिए 347 00:16:33,617 --> 00:16:35,450 कि मैं क्या कर सकता है उस पहेली टुकड़े के साथ. 348 00:16:35,450 --> 00:16:38,260 और वास्तव में, समस्या में सेट 3 कल्पना, हम आप बात करेंगे 349 00:16:38,260 --> 00:16:41,370 प्रलेखन पर कि करेंगे कुछ नए कार्य करने के लिए परिचय, 350 00:16:41,370 --> 00:16:43,570 और अंत में प्रोग्रामिंग आप उपयोग constructs. 351 00:16:43,570 --> 00:16:47,610 , छोरों कानून, चर, और कार्य 352 00:16:47,610 --> 00:16:50,720 करने के समान होगा क्या हम इस प्रकार अब तक देखा है. 353 00:16:50,720 --> 00:16:53,560 >> तो वास्तव में, हम क्या दे दूँगा आप कुछ नमूना कोड है कि 354 00:16:53,560 --> 00:16:56,110 आप एक खिड़की बना सकते हैं कि, इस के विपरीत नहीं लग रहा है 355 00:16:56,110 --> 00:16:59,540 और अंततः में बदल जाते हैं काफी कुछ इस तरह. 356 00:16:59,540 --> 00:17:02,250 तो CS50 का लाभ लेने, कार्यालय समय और अधिक चर्चा 357 00:17:02,250 --> 00:17:05,290 और तथ्य यह है कि में आराम ले आप लिखने के लिए कोड की राशि 358 00:17:05,290 --> 00:17:06,760 वास्तव में नहीं है कि सभी ज्यादा है. 359 00:17:06,760 --> 00:17:10,359 पहली चुनौती सिर्फ acclimate करने के लिए है अपने आप को कुछ कोड को हम लिखा है. 360 00:17:10,359 --> 00:17:11,450 361 00:17:11,450 --> 00:17:15,810 >> Pset3 पर कोई प्रश्न, SHELLSHOCK, या अन्यथा? 362 00:17:15,810 --> 00:17:19,226 >> दर्शक: यह की तरह लग रहा था ब्रेकआउट के साथ से गुजर रही 363 00:17:19,226 --> 00:17:22,154 कोड लगभग है कि एक वस्तु उन्मुख शैली, 364 00:17:22,154 --> 00:17:24,675 लेकिन मैं सी एक सोचा था वस्तु उन्मुख कार्यक्रम. 365 00:17:24,675 --> 00:17:26,050 स्पीकर 1: एक अच्छा सवाल. 366 00:17:26,050 --> 00:17:28,258 तो के माध्यम से तलाश में वितरण कोड, कोड 367 00:17:28,258 --> 00:17:30,180 हम pset3 के लिए लिखा था उन परिचित के लिए, यह 368 00:17:30,180 --> 00:17:32,230 यह एक है की तरह लग रहा है छोटी वस्तु उन्मुख. 369 00:17:32,230 --> 00:17:33,800 संक्षिप्त जवाब यह है, है. 370 00:17:33,800 --> 00:17:38,130 यह आप कैसे की एक सन्निकटन है का उपयोग कर वस्तु उन्मुख कोड हो सकता है 371 00:17:38,130 --> 00:17:41,850 सी की तरह एक भाषा है, लेकिन यह है अभी भी अंततः प्रक्रियात्मक. 372 00:17:41,850 --> 00:17:44,900 के अंदर कोई तरीके हैं चर, जैसा कि आप देखेंगे. 373 00:17:44,900 --> 00:17:46,180 लेकिन यह उस की याद ताजा करती है. 374 00:17:46,180 --> 00:17:48,780 और हम फिर से उस सुविधा देखेंगे हम PHP और जावास्क्रिप्ट को मिलता है जब 375 00:17:48,780 --> 00:17:49,946 अंत सेमेस्टर की ओर. 376 00:17:49,946 --> 00:17:53,667 लेकिन अब के लिए, के रूप में सोच क्या है की एक संकेत आने के लिए. 377 00:17:53,667 --> 00:17:54,250 अच्छा सवाल है. 378 00:17:54,250 --> 00:17:56,051 379 00:17:56,051 --> 00:17:56,550 ठीक है. 380 00:17:56,550 --> 00:17:59,730 इसलिए तरह था मर्ज कैसे हम बाएं बातें पिछली बार. 381 00:17:59,730 --> 00:18:03,250 और प्रकार में अच्छा था मर्ज भावना यह इतना तेज था कि, 382 00:18:03,250 --> 00:18:07,100 कम से कम सरसरी परीक्षण पर आधारित हम बुलबुले हैं, कहते हैं, की तुलना में पिछले हफ्ते किया 383 00:18:07,100 --> 00:18:08,710 क्रमबद्ध, चयन क्रमबद्ध, सम्मिलन तरह. 384 00:18:08,710 --> 00:18:11,780 और क्या बहुत साफ था बस है कैसे संक्षेप और सफाई 385 00:18:11,780 --> 00:18:12,810 आप इसे व्यक्त कर सकते हैं. 386 00:18:12,810 --> 00:18:15,840 और हम इसे एक ऊपरी था क्या कहा मर्ज का समय चल रहा है पर बाध्य 387 00:18:15,840 --> 00:18:16,340 तरह? 388 00:18:16,340 --> 00:18:17,633 389 00:18:17,633 --> 00:18:18,495 हाँ? 390 00:18:18,495 --> 00:18:19,360 >> दर्शक: n लॉग? 391 00:18:19,360 --> 00:18:20,819 >> स्पीकर 1: n सही, लॉग एन. n लॉग. 392 00:18:20,819 --> 00:18:23,776 और हम क्या करने के लिए कि वापस आ गया हूँ वास्तव में इसका मतलब है या कि कहाँ से आता है, 393 00:18:23,776 --> 00:18:25,570 लेकिन यह बेहतर था क्या चल रहा है समय से 394 00:18:25,570 --> 00:18:28,440 हम बुलबुले के लिए देखा था कि चयन और सम्मिलन सॉर्ट? 395 00:18:28,440 --> 00:18:30,610 तो n चुकता. n चुकता , इस से भी बड़ा है 396 00:18:30,610 --> 00:18:34,650 और यह काफी स्पष्ट नहीं है, भले ही लॉग एन की तुलना में छोटी है, 397 00:18:34,650 --> 00:18:36,910 तो आप एन बार करते हैं n से कुछ छोटे, 398 00:18:36,910 --> 00:18:38,680 यह n चुकता की तुलना में कम होने जा रहा है. 399 00:18:38,680 --> 00:18:40,130 यह वहाँ अंतर्ज्ञान का एक सा है. 400 00:18:40,130 --> 00:18:42,190 लेकिन हम इस बात के लिए एक कीमत चुकानी पड़ी. 401 00:18:42,190 --> 00:18:47,000 यह तेजी से गया था, लेकिन एक विषय शुरू कर दिया है कि पिछले सप्ताह में उभरने के लिए इस tradeoff था. 402 00:18:47,000 --> 00:18:49,804 मैं बेहतर प्रदर्शन मिला समय बुद्धिमान, लेकिन क्या 403 00:18:49,804 --> 00:18:52,470 मैं दूसरे पर खर्च करने के लिए किया था हाथ, कि आदेश में प्राप्त करने के लिए? 404 00:18:52,470 --> 00:18:53,591 >> दर्शक: मेमोरी. 405 00:18:53,591 --> 00:18:54,465 स्पीकर 1: फिर से कहो? 406 00:18:54,465 --> 00:18:55,173 दर्शक: मेमोरी. 407 00:18:55,173 --> 00:18:57,040 स्पीकर 1: स्मृति, या अंतरिक्ष अधिक आम तौर पर. 408 00:18:57,040 --> 00:18:59,040 और यह सुपर नहीं था हमारे मनुष्यों के साथ स्पष्ट, 409 00:18:59,040 --> 00:19:02,240 लेकिन हमारे स्वयंसेवकों कि याद आगे कदम और आगे बढ़ गया 410 00:19:02,240 --> 00:19:04,780 हालांकि के रूप में वापस एक सरणी है हालांकि यहाँ के रूप में, और वहाँ 411 00:19:04,780 --> 00:19:07,130 यहां कि एक दूसरे सरणी वे इस्तेमाल कर सकते हैं क्योंकि हम 412 00:19:07,130 --> 00:19:09,080 जरूरत किसी जगह उन लोगों को मर्ज करने के लिए. 413 00:19:09,080 --> 00:19:11,480 हम सिर्फ जगह में उन्हें स्वैप नहीं कर सका. 414 00:19:11,480 --> 00:19:13,800 तो क्रमबद्ध लाभ उठाने विलय और अधिक स्थान है, जो 415 00:19:13,800 --> 00:19:15,620 हम साथ की जरूरत नहीं थी अन्य एल्गोरिदम, 416 00:19:15,620 --> 00:19:17,410 लेकिन उल्टा यह बहुत तेजी से होता है. 417 00:19:17,410 --> 00:19:20,780 और सच कहूँ तो, वास्तविक दुनिया अंतरिक्ष में इन days-- रैम, हार्ड डिस्क space-- 418 00:19:20,780 --> 00:19:25,030 अपेक्षाकृत सस्ता है, और इतनी है कि जरूरी नहीं कि एक बुरी बात. 419 00:19:25,030 --> 00:19:28,320 >> तो, चलो एक त्वरित देखो एक छोटे से अवगत अधिक विधिपूर्वक, हम क्या किया 420 00:19:28,320 --> 00:19:30,220 और यही कारण है कि हम इसे n लॉग रहा था. 421 00:19:30,220 --> 00:19:33,260 तो यहाँ आठ नंबर हैं और आठ स्वयंसेवकों हम पिछली बार किया था. 422 00:19:33,260 --> 00:19:35,718 और मर्ज कि पहली बात क्रमबद्ध करने के लिए हमें क्या बताया? 423 00:19:35,718 --> 00:19:37,010 424 00:19:37,010 --> 00:19:38,010 दर्शक: दो में फूट डालो. 425 00:19:38,010 --> 00:19:38,663 स्पीकर 1: फिर से कहो? 426 00:19:38,663 --> 00:19:39,650 दर्शक: दो में फूट डालो. 427 00:19:39,650 --> 00:19:40,610 स्पीकर 1: दो में फूट डालो, ठीक है. 428 00:19:40,610 --> 00:19:42,818 इस की बहुत याद ताजा करती है विभाजन की फोन बुक, 429 00:19:42,818 --> 00:19:44,220 और अधिक आम तौर पर जीत. 430 00:19:44,220 --> 00:19:45,640 इसलिए हम बाईं आधे पर देखा. 431 00:19:45,640 --> 00:19:48,700 और हम क्रमबद्ध ने कहा, फिर एक बार तत्वों के बाईं आधा, 432 00:19:48,700 --> 00:19:49,690 हम आगे क्या कहा? 433 00:19:49,690 --> 00:19:51,210 434 00:19:51,210 --> 00:19:54,860 वामपंथियों के बाईं आधा छांटे आधा, जो, हमें करने की अनुमति दी 435 00:19:54,860 --> 00:19:57,570 दो में विभाजन के बाद, चार और दो पर ध्यान केंद्रित. 436 00:19:57,570 --> 00:20:01,280 >> कैसे आप में, अब एक सूची तरह है पीले, सॉर्ट मर्ज का उपयोग आकार दो, की? 437 00:20:01,280 --> 00:20:02,330 438 00:20:02,330 --> 00:20:04,580 खैर यह आधे में विभाजित है, और बाईं आधा तरह. 439 00:20:04,580 --> 00:20:07,100 और यह जहां चीजें थी एक थोड़ा बेवकूफ संक्षेप में मिला है. 440 00:20:07,100 --> 00:20:10,720 आप की है कि एक सूची तरह कैसे आकार एक, यहाँ यह संख्या चार की तरह? 441 00:20:10,720 --> 00:20:12,330 442 00:20:12,330 --> 00:20:13,210 इसे हल है. 443 00:20:13,210 --> 00:20:14,200 आप कर रहे हैं. 444 00:20:14,200 --> 00:20:17,300 >> लेकिन तब आप कैसे की एक सूची तरह है आकार में यह संख्या दो है जब एक? 445 00:20:17,300 --> 00:20:21,640 ठीक है, लेकिन अब क्या एक ही बात थी तीसरे और मर्ज प्रकार में महत्वपूर्ण कदम? 446 00:20:21,640 --> 00:20:24,020 आप बाईं विलय करना पड़ा आधा और सही आधा. 447 00:20:24,020 --> 00:20:26,580 हम किया है कि एक बार और, हम देखा चार में, हम दो को देखा. 448 00:20:26,580 --> 00:20:28,750 हम सभी सही फैसला किया जाहिर है दो, पहले आता है 449 00:20:28,750 --> 00:20:31,840 तो हम में दो डाल अपनी चार से पीछा जगह,. 450 00:20:31,840 --> 00:20:35,010 और अब आप की तरह उल्टा करने के लिए, और इस विशेषता की तरह है 451 00:20:35,010 --> 00:20:37,570 मर्ज की तरह एक एल्गोरिथ्म की क्रमबद्ध, स्मृति में उल्टा. 452 00:20:37,570 --> 00:20:40,240 कहानी की अगली पंक्ति क्या था? 453 00:20:40,240 --> 00:20:41,780 मैं आगे क्या करने पर ध्यान केंद्रित किया जाना चाहिए? 454 00:20:41,780 --> 00:20:43,110 455 00:20:43,110 --> 00:20:47,350 बाईं के ठीक आधे छह और आठ है जो आधे,. 456 00:20:47,350 --> 00:20:50,320 >> तो मुझे सिर्फ इस माध्यम से कदम बहुत ज्यादा बात belaboring बिना. 457 00:20:50,320 --> 00:20:53,330 छह और आठ, तो छह है हल, आठ हल है. 458 00:20:53,330 --> 00:20:57,190 कि जैसे उन्हें एक साथ विलय, और अब अगला बड़ा कदम 459 00:20:57,190 --> 00:21:00,990 जाहिर है, से ठीक आधे तरह है इस एल्गोरिथ्म के पहले ही कदम. 460 00:21:00,990 --> 00:21:02,870 तो हम एक, तीन, सात, पांच पर ध्यान केंद्रित. 461 00:21:02,870 --> 00:21:04,540 हम तो बाईं आधे पर ध्यान केंद्रित. 462 00:21:04,540 --> 00:21:09,400 उस की बाईं आधा, के ठीक आधे कि, और फिर एक और तीन में विलय. 463 00:21:09,400 --> 00:21:13,100 तो फिर ठीक आधे, तो आधा छोड़ा इसके बारे में, तो इसके बारे में सही आधा. 464 00:21:13,100 --> 00:21:15,985 कदम क्या रहता है अब इसमें मिलाएं, और? 465 00:21:15,985 --> 00:21:18,040 466 00:21:18,040 --> 00:21:22,460 बड़ा बाईं आधा और बड़ा मर्ज सही आधा, तो एक है, वहाँ नीचे चला जाता है 467 00:21:22,460 --> 00:21:27,330 तो फिर तो फिर दो, तीन, चार, पांच, तो छह, तो सात, फिर आठ. 468 00:21:27,330 --> 00:21:31,990 >> तो अब यही कारण अंततः खुलासा है, खासकर अगर एन और लघुगणक अधिक 469 00:21:31,990 --> 00:21:35,487 आम तौर पर नहीं बल्कि, आप बच कम से कम हाल की स्मृति में? 470 00:21:35,487 --> 00:21:37,070 खैर, इस बात की ऊंचाई नोटिस. 471 00:21:37,070 --> 00:21:41,230 हम आठ तत्वों की थी, और हम दो से, दो से, दो से विभाजित. 472 00:21:41,230 --> 00:21:44,590 तो आधार के लिए लॉग इन आठ में से दो अमेरिकी तीन देता है. 473 00:21:44,590 --> 00:21:45,640 474 00:21:45,640 --> 00:21:48,540 और उस पर मुझे भरोसा है कि अगर उस पर थोड़ा धुंधला. 475 00:21:48,540 --> 00:21:54,710 लेकिन, आठ की दो तीन आधार लॉग इन करें तो हम विलय की तीन परतों किया है. 476 00:21:54,710 --> 00:21:57,170 और हम विलय कर दिया जब तत्वों, कितने तत्वों 477 00:21:57,170 --> 00:21:58,950 हम उन पंक्तियों में से प्रत्येक पर पर लग रही थी? 478 00:21:58,950 --> 00:22:00,212 479 00:22:00,212 --> 00:22:01,437 एन के एक कुल, है ना? 480 00:22:01,437 --> 00:22:04,020 शीर्ष पंक्ति को मर्ज करने की वजह से, हम टुकड़ों में ऐसा किया था, भले ही 481 00:22:04,020 --> 00:22:05,990 हम अंत में एक बार हर संख्या को छुआ. 482 00:22:05,990 --> 00:22:09,054 और दूसरी पंक्ति में, करने के लिए आकार दो की उन सूचियों विलय, 483 00:22:09,054 --> 00:22:10,470 हम एक बार प्रत्येक तत्व को छूने के लिए किया था. 484 00:22:10,470 --> 00:22:12,690 और फिर यहाँ सच स्पष्ट रूप से अंतिम पंक्ति में, 485 00:22:12,690 --> 00:22:15,430 हम उन लोगों में से प्रत्येक को छूने के लिए किया था एक बार, लेकिन केवल एक बार तत्वों, 486 00:22:15,430 --> 00:22:18,400 इसलिए इस के साथ साथ हमारी लॉग एन एन, तो, निहित है. 487 00:22:18,400 --> 00:22:21,780 >> और अब सिर्फ एक छोटी चीजें बनाने के लिए बस एक पल के लिए औपचारिक अधिक, तुम अगर 488 00:22:21,780 --> 00:22:24,260 अब इस विश्लेषण किया गया उच्च स्तर के एक प्रकार पर 489 00:22:24,260 --> 00:22:28,340 और कैसे अच्छी तरह से तय करने की कोशिश आप को व्यक्त करने के बारे में जाना हो सकता है 490 00:22:28,340 --> 00:22:31,780 इस एल्गोरिथ्म के समय चल रहा है बस इसे और नहीं देख कर 491 00:22:31,780 --> 00:22:33,590 एक काल्पनिक उदाहरण का उपयोग करके? 492 00:22:33,590 --> 00:22:36,590 खैर, कितना समय आप एक कहेंगे पीले रंग में इस ले जाएगा जैसे कदम, 493 00:22:36,590 --> 00:22:37,173 n <2 वापसी तो क्या होगा? 494 00:22:37,173 --> 00:22:38,840 495 00:22:38,840 --> 00:22:39,830 यही है की एक बड़ी हे है? 496 00:22:39,830 --> 00:22:41,450 497 00:22:41,450 --> 00:22:44,540 इसलिए मुझे लगता है, एक है, तो एक कदम देख रहा हूँ शायद दो चरणों में यह तो है क्योंकि 498 00:22:44,540 --> 00:22:47,110 और फिर लौटने के लिए, लेकिन यह बात है लगातार समय, सही? 499 00:22:47,110 --> 00:22:49,960 इसलिए हम ओ (1), और कहा कि कहा मैं इस व्यक्त करेंगे. 500 00:22:49,960 --> 00:22:51,480 टी, बस समय चल रहा हो. 501 00:22:51,480 --> 00:22:54,150 एन, इनपुट के आकार है इसलिए टी (एन), सिर्फ एक अच्छा तरीका 502 00:22:54,150 --> 00:22:56,330 चल रहा है कहने का आकार n का समय दिया इनपुट 503 00:22:56,330 --> 00:23:00,220 क्रम पर होने जा रहा है लगातार समय की, हे में (1). 504 00:23:00,220 --> 00:23:01,970 >> लेकिन अन्यथा, इस बारे में क्या? 505 00:23:01,970 --> 00:23:05,660 आप व्यक्त करेंगे कैसे इस पीली लाइन का समय चल रहा है? 506 00:23:05,660 --> 00:23:06,250 क्या टी? 507 00:23:06,250 --> 00:23:09,440 508 00:23:09,440 --> 00:23:12,665 आप की तरह यहाँ धोखा दे सकती है और cyclically मेरे सवाल का जवाब. 509 00:23:12,665 --> 00:23:14,770 510 00:23:14,770 --> 00:23:17,900 तो चल समय में अगर हम सिर्फ कहने जनरल टी (एन) है. 511 00:23:17,900 --> 00:23:18,950 512 00:23:18,950 --> 00:23:22,490 और अब आप की तरह यहाँ punting रहे हैं और , ठीक है, बस बाईं आधा सॉर्ट, कह रही है 513 00:23:22,490 --> 00:23:23,920 और फिर सही आधा तरह. 514 00:23:23,920 --> 00:23:27,520 हम प्रतीकात्मक प्रतिनिधित्व कैसे हो सकता है इस पीली लाइन का समय चल रहा है? 515 00:23:27,520 --> 00:23:28,020 क्या टी? 516 00:23:28,020 --> 00:23:29,360 इनपुट का आकार क्या है? 517 00:23:29,360 --> 00:23:30,510 518 00:23:30,510 --> 00:23:31,057 दो से अधिक एन. 519 00:23:31,057 --> 00:23:32,140 क्यों मैं सिर्फ यह कहना है कि नहीं है? 520 00:23:32,140 --> 00:23:36,449 और फिर यह एक और टी (एन / 2) और फिर फिर, मैं दो हल आधा मर्ज तो, 521 00:23:36,449 --> 00:23:38,615 कितने तत्वों मैं जा रहा हूँ कुल स्पर्श करने के लिए है? 522 00:23:38,615 --> 00:23:39,780 523 00:23:39,780 --> 00:23:40,320 एन. 524 00:23:40,320 --> 00:23:42,790 इसलिए मुझे लगता है, यह व्यक्त कर सकते हैं बस, एक तरह से कल्पना की 525 00:23:42,790 --> 00:23:44,430 सामान्य तौर पर चल रहा है समय के रूप में. 526 00:23:44,430 --> 00:23:51,140 टी (एन), टी (एन / 2) की बस चलने का समय है प्लस टी (एन / 2), आधा और सही आधा छोड़ा 527 00:23:51,140 --> 00:23:55,360 प्लस शायद n कदम है जो हे (एन),, लेकिन हो सकता है, मैं दो उंगलियों का प्रयोग कर रहा हूँ, 528 00:23:55,360 --> 00:23:57,960 यह कई के रूप में दो बार है कदम है, लेकिन यह रेखीय है. 529 00:23:57,960 --> 00:24:00,440 यह कदम से कुछ नंबर कि, एन के एक कारक है 530 00:24:00,440 --> 00:24:02,270 इसलिए हम इस रूप में व्यक्त हो सकता है. 531 00:24:02,270 --> 00:24:05,550 और यह हम को बाज़ी करेंगे जहां अब है वापस अपने उच्च विद्यालय के गणित की पाठ्यपुस्तक की 532 00:24:05,550 --> 00:24:10,290 हम अंततः पुनरावृत्ति कि हो समाप्त होता है, यह बराबर, एन बार लॉग एन 533 00:24:10,290 --> 00:24:12,530 आप वास्तव में बाहर करते हैं गणित और अधिक औपचारिक रूप से. 534 00:24:12,530 --> 00:24:13,950 >> तो यह है कि सिर्फ दो दृष्टिकोण है. 535 00:24:13,950 --> 00:24:17,500 एक साथ एक संख्यानुसार प्रतिनिधि उदाहरण हार्ड कोडित 536 00:24:17,500 --> 00:24:21,140 आठ नंबर, और एक अधिक का उपयोग हम वहाँ कैसे मिल गया पर सामान्य देखो. 537 00:24:21,140 --> 00:24:25,670 लेकिन क्या यहां वाकई दिलचस्प है , फिर से, साइकिल की इस धारणा है. 538 00:24:25,670 --> 00:24:26,900 मैं छोरों के लिए प्रयोग नहीं कर रहा हूँ. 539 00:24:26,900 --> 00:24:29,860 मैं एक तरह से परिभाषित कर रहा हूँ खुद के मामले में कुछ, 540 00:24:29,860 --> 00:24:31,950 न केवल इस के साथ गणितीय समारोह, 541 00:24:31,950 --> 00:24:34,860 लेकिन यह भी इस छद्म कोड के संदर्भ में. 542 00:24:34,860 --> 00:24:38,260 इस छद्म कोड पुनरावर्ती है इसके लाइनों की कि दो में 543 00:24:38,260 --> 00:24:42,310 अनिवार्य रूप से यह कह रहा है जाने के लिए एक छोटे हल करने के लिए ही उपयोग 544 00:24:42,310 --> 00:24:45,400 छोटे आकार की समस्या, और फिर बार बार 545 00:24:45,400 --> 00:24:48,820 और फिर जब तक हम छीलना यह इस तथाकथित आधार मामले को नीचे. 546 00:24:48,820 --> 00:24:52,810 >> तो चलो वास्तव में एक अधिक सम्मोहक खींचना ले दूर इस से इस प्रकार के रूप में. 547 00:24:52,810 --> 00:24:58,420 मुझे एडिट में जाकर एक लेते हैं आज के स्रोत कोड से कुछ को देखो, 548 00:24:58,420 --> 00:24:59,930 इस उदाहरण यहां विशेष रूप से. 549 00:24:59,930 --> 00:25:03,709 जाहिरा तौर पर कहते हैं जो सिग्मा 0, संख्या n के माध्यम से एक. 550 00:25:03,709 --> 00:25:05,750 तो क्या परिचित है चलो देखते हैं यहाँ और अपरिचित. 551 00:25:05,750 --> 00:25:08,690 पहले हम की एक जोड़ी है भी शामिल है, तो कोई नई बात नहीं है वहाँ. 552 00:25:08,690 --> 00:25:09,190 प्रोटोटाइप. 553 00:25:09,190 --> 00:25:11,370 मैं पर थोड़ा धुंधला रहा हूँ यह कुछ दिनों के बाद, 554 00:25:11,370 --> 00:25:13,790 लेकिन हम एक क्या कहा एक समारोह के प्रोटोटाइप है? 555 00:25:13,790 --> 00:25:15,099 556 00:25:15,099 --> 00:25:16,015 दर्शक: [अश्राव्य]. 557 00:25:16,015 --> 00:25:16,905 स्पीकर 1: वह क्या है? 558 00:25:16,905 --> 00:25:17,800 दर्शक: हम यह घोषणा. 559 00:25:17,800 --> 00:25:18,883 स्पीकर 1: हम यह घोषणा. 560 00:25:18,883 --> 00:25:22,290 तो आप, अरे, बजना अध्यापन कर रहे हैं वास्तव में अभी तक यह लागू नहीं, 561 00:25:22,290 --> 00:25:25,740 लेकिन कहीं न कहीं इस फाइल में, शायद, एक समारोह में क्या कहा जा रहा है? 562 00:25:25,740 --> 00:25:26,930 563 00:25:26,930 --> 00:25:27,540 सिग्मा. 564 00:25:27,540 --> 00:25:30,540 और यह सिर्फ एक वादा है कि यह इस तरह लग रहा है. 565 00:25:30,540 --> 00:25:33,720 यह रूप में एक पूर्णांक ले जा रहा है input-- और मैं अधिक स्पष्ट हो सकता है 566 00:25:33,720 --> 00:25:36,570 और int n चार प्रकार यह है कहना एक पूर्णांक वापस जाने के लिए जा रहा है, 567 00:25:36,570 --> 00:25:39,900 लेकिन अर्धविराम साधन, मिमी, मैं चारों ओर मिलेगा थोड़ी देर बाद इस को लागू करने के लिए. 568 00:25:39,900 --> 00:25:40,989 फिर, बजना गूंगा है. 569 00:25:40,989 --> 00:25:43,280 यह केवल पता है क्या हो रहा है आप नीचे से ऊपर यह बताने 570 00:25:43,280 --> 00:25:45,765 तो हम कम से कम देने की जरूरत यह क्या है की एक संकेत आने के लिए. 571 00:25:45,765 --> 00:25:47,330 >> अब यहाँ मुख्य देखो. 572 00:25:47,330 --> 00:25:50,040 यहाँ नीचे स्क्रॉल करते हैं और कर रही है मुख्य देखते हैं क्या. 573 00:25:50,040 --> 00:25:53,780 यह एक समारोह है कि लंबे समय तक नहीं है, और वास्तव में यहां निर्माण परिचित है. 574 00:25:53,780 --> 00:25:57,590 मैं तो एक चर n घोषणा, और मैं फिर से और फिर उपयोगकर्ता परेशान 575 00:25:57,590 --> 00:26:01,880 getInt का उपयोग कर एक सकारात्मक पूर्णांक के लिए, और इस लूप के बाहर ही बाहर निकलें 576 00:26:01,880 --> 00:26:03,280 एक बार उपयोगकर्ता पालन किया है. 577 00:26:03,280 --> 00:26:05,670 जबकि, हम करने के लिए उपयोग किया है उस रास्ते में उपयोगकर्ता परेशान. 578 00:26:05,670 --> 00:26:06,670 अब यह दिलचस्प है. 579 00:26:06,670 --> 00:26:08,510 मैंने फोन एक पूर्णांक घोषित "जवाब." 580 00:26:08,510 --> 00:26:11,420 मैं यह मान असाइन कहा जाता है एक समारोह के "सिग्मा." 581 00:26:11,420 --> 00:26:15,200 मुझे लगता है कि अभी तक क्या है पता नहीं है, लेकिन मैं एक पल पहले यह घोषणा कर याद. 582 00:26:15,200 --> 00:26:18,310 और फिर मैं जा रहा हूँ मूल्य उपयोगकर्ता, में टाइप, एन कि 583 00:26:18,310 --> 00:26:20,420 और फिर मैं जवाब की रिपोर्ट. 584 00:26:20,420 --> 00:26:22,260 खैर वापस स्क्रॉल जाने बस एक पल के लिए. 585 00:26:22,260 --> 00:26:28,620 इस निर्देशिका में आगे चलते हैं, कर सिग्मा 0, और वास्तव में इस कार्यक्रम को चलाने 586 00:26:28,620 --> 00:26:30,490 और देखो क्या होता है. 587 00:26:30,490 --> 00:26:35,930 मुझे आगे जाना है और चलाते हैं तो इस कार्यक्रम, ./sigma -0, 588 00:26:35,930 --> 00:26:40,139 और मैं एक सकारात्मक में टाइप करें दो तरह पूर्णांक, सिग्मा, 589 00:26:40,139 --> 00:26:43,180 ग्रीक प्रतीक के रूप में निकलता है, बस है से सभी नंबरों को जोड़ने के लिए जा रहा 590 00:26:43,180 --> 00:26:44,320 दो के लिए ऊपर पर शून्य. 591 00:26:44,320 --> 00:26:46,560 तो 0 प्लस 1 प्लस 2. 592 00:26:46,560 --> 00:26:48,830 तो यह उम्मीद है कि मुझे 3 देना चाहिए. 593 00:26:48,830 --> 00:26:49,750 यह बात कर रहा है सब है. 594 00:26:49,750 --> 00:26:52,690 और इसी तरह, अगर मैं फिर से इस दौड़ और मैं यह संख्या तीन दे 595 00:26:52,690 --> 00:26:56,721 कि इतना है कि, 3 प्लस 2 है 5, प्लस 1 मुझे 6 देना चाहिए. 596 00:26:56,721 --> 00:26:59,470 और मैं वास्तव में पागल हो तो और अगर बड़ी संख्या में टाइपिंग शुरू, 597 00:26:59,470 --> 00:27:01,290 यह मुझे देना चाहिए और बड़ी बड़ी रकम. 598 00:27:01,290 --> 00:27:02,250 तो वह सब है. 599 00:27:02,250 --> 00:27:04,010 >> तो क्या सिग्मा की तरह दिखता है? 600 00:27:04,010 --> 00:27:05,430 खैर, यह बहुत स्पष्ट है. 601 00:27:05,430 --> 00:27:08,940 यह हम लागू कर दिया है कैसे हो सकता है सप्ताह की पिछले कुछ के लिए यह. 602 00:27:08,940 --> 00:27:11,120 "पूर्णांक" वापसी प्रकार होने जा रहा है. 603 00:27:11,120 --> 00:27:14,330 सिग्मा नाम है, और इसे लेता है बजाय n के एक चर एम. 604 00:27:14,330 --> 00:27:15,940 मैं शीर्ष कि ऊपर बदल देंगे. 605 00:27:15,940 --> 00:27:17,340 तो यह सिर्फ एक मानसिक स्वास्थ्य की जांच है. 606 00:27:17,340 --> 00:27:18,430 607 00:27:18,430 --> 00:27:19,950 हम एक क्षण में क्यों देखेंगे. 608 00:27:19,950 --> 00:27:24,220 अब मैं एक और चर घोषित, योग, शून्य करने के लिए यह इनिशियलाइज़. 609 00:27:24,220 --> 00:27:28,140 तब मैं पाश के लिए यह है जाहिरा तौर पर स्पष्टता के लिए, पुनरावृति, 610 00:27:28,140 --> 00:27:33,810 मैं = 1 पर से एक = मीटर करने के लिए, जो है जो भी उपयोगकर्ता में टाइप करें, और फिर मैं 611 00:27:33,810 --> 00:27:35,690 इस तरह राशि वेतन वृद्धि. 612 00:27:35,690 --> 00:27:37,360 और फिर राशि लौटा. 613 00:27:37,360 --> 00:27:38,440 >> तो सवालों की एक जोड़ी. 614 00:27:38,440 --> 00:27:42,370 एक, मैं यह है कि मेरी टिप्पणी में दावा एक अनंत लूप के जोखिम से बचा जाता है. 615 00:27:42,370 --> 00:27:45,620 क्यों एक नकारात्मक संख्या में गुजर जाएगा , संभावित, एक अनंत लूप प्रेरित? 616 00:27:45,620 --> 00:27:49,396 617 00:27:49,396 --> 00:27:51,290 >> दर्शक: आप मीटर तक कभी नहीं करेंगे. 618 00:27:51,290 --> 00:27:52,880 >> अध्यक्ष: 1 मीटर तक कभी नहीं. 619 00:27:52,880 --> 00:27:55,880 लेकिन मीटर में पारित, तो चलो है एक सरल उदाहरण पर विचार करें. 620 00:27:55,880 --> 00:27:58,510 एम द्वारा में पारित हो जाता है नकारात्मक रूप में उपयोगकर्ता. 621 00:27:58,510 --> 00:28:00,059 चाहे मुख्य की. 622 00:28:00,059 --> 00:28:01,850 मुख्य से बचाता है यह भी है, तो मैं अभी कर रहा हूँ 623 00:28:01,850 --> 00:28:04,680 साथ वास्तव में गुदा जा रहा है सिग्मा भी बनाना 624 00:28:04,680 --> 00:28:06,540 कि इनपुट नकारात्मक नहीं हो सकता. 625 00:28:06,540 --> 00:28:10,130 एम नकारात्मक है तो, अगर नकारात्मक एक तरह से कुछ. 626 00:28:10,130 --> 00:28:11,930 क्या होने वाला है? 627 00:28:11,930 --> 00:28:14,390 खैर, मैं करने जा रहा है एक करने के लिए प्रारंभ हो, 628 00:28:14,390 --> 00:28:19,060 और फिर मैं होने जा रहा है कम से कम या मीटर के बराबर? 629 00:28:19,060 --> 00:28:24,130 630 00:28:24,130 --> 00:28:24,765 >> समर्थन करना. 631 00:28:24,765 --> 00:28:26,930 632 00:28:26,930 --> 00:28:29,370 यही है, के नहीं जाने was-- इस कहानी से इंकार करते हैं. 633 00:28:29,370 --> 00:28:32,780 मैं क्योंकि, यह सवाल नहीं पूछा मैं की ओर इशारा करते हूँ कि जोखिम 634 00:28:32,780 --> 00:28:38,360 मैं है क्योंकि ऐसा करने के लिए नहीं जा रहा है हमेशा अधिक से अधिक than-- ठीक हो जा रहा है, 635 00:28:38,360 --> 00:28:39,871 मुझे लगता है कि सवाल वापस लेना. 636 00:28:39,871 --> 00:28:40,370 ठीक. 637 00:28:40,370 --> 00:28:42,030 यहाँ केवल इस हिस्से पर ध्यान केंद्रित करते हैं. 638 00:28:42,030 --> 00:28:44,210 639 00:28:44,210 --> 00:28:48,830 क्यों मैं कुछ घोषित किया लूप के बाहर? 640 00:28:48,830 --> 00:28:52,010 लाइन मैं 49 पर नोटिस लूप के अंदर मैं घोषित, 641 00:28:52,010 --> 00:28:54,950 लेकिन ऑनलाइन 48 मैं कुछ बाहर की घोषणा की. 642 00:28:54,950 --> 00:28:55,695 हाँ. 643 00:28:55,695 --> 00:28:56,611 दर्शक: [अश्राव्य]. 644 00:28:56,611 --> 00:28:58,734 645 00:28:58,734 --> 00:28:59,400 स्पीकर 1: यकीन है. 646 00:28:59,400 --> 00:29:03,360 तो पहली और महत्वपूर्ण बात मैं निश्चित रूप से नहीं करना घोषित और राशि को प्रारंभ करना चाहते हैं 647 00:29:03,360 --> 00:29:06,130 के शून्य के अंदर करने के लिए हर यात्रा पर पाश, 648 00:29:06,130 --> 00:29:09,370 यह स्पष्ट रूप से हार होगी क्योंकि ऊपर की संख्या में संक्षेप के उद्देश्य. 649 00:29:09,370 --> 00:29:11,770 मैं बदलते रखना होगा वापस शून्य करने के लिए मूल्य. 650 00:29:11,770 --> 00:29:17,992 और यह भी, क्या एक और अधिक रहस्यमय है कि एक ही डिजाइन निर्णय के लिए कारण? 651 00:29:17,992 --> 00:29:18,954 हाँ. 652 00:29:18,954 --> 00:29:20,279 >> दर्शक: [अश्राव्य]. 653 00:29:20,279 --> 00:29:21,070 स्पीकर 1: बिल्कुल. 654 00:29:21,070 --> 00:29:24,060 मैं इसे बाहर का उपयोग करना चाहते हैं भी क्या लाइन पर पाश की? 655 00:29:24,060 --> 00:29:25,390 656 00:29:25,390 --> 00:29:26,400 53 पर. 657 00:29:26,400 --> 00:29:29,910 और अंगूठे के हमारे नियम पर आधारित व्याख्यान की एक जोड़ी पहले से, 658 00:29:29,910 --> 00:29:33,680 चर के लिए, वास्तव में, scoped रहे उन्हें धरना कि घुंघराले ब्रेसिज़. 659 00:29:33,680 --> 00:29:38,190 मैं अंदर राशि की घोषणा नहीं करते हैं तो इन बाहरी घुंघराले ब्रेसिज़ की, 660 00:29:38,190 --> 00:29:40,250 मैं लाइन 53 में इसका इस्तेमाल नहीं कर सकते हैं. 661 00:29:40,250 --> 00:29:43,160 मैं घोषित, तो दूसरा रास्ता रखो यहाँ में, या भी भीतर राशि 662 00:29:43,160 --> 00:29:45,410 पाश के लिए, मैं 53 में इसे उपयोग नहीं कर सका. 663 00:29:45,410 --> 00:29:47,150 चर प्रभावी रूप से चला गया होगा. 664 00:29:47,150 --> 00:29:48,579 तो वहाँ कारणों की एक जोड़ी. 665 00:29:48,579 --> 00:29:50,370 लेकिन अब चलो वापस जाना और देखो क्या होता है. 666 00:29:50,370 --> 00:29:51,730 तो सिग्मा बुलाया जाता है. 667 00:29:51,730 --> 00:29:55,640 यह 1 प्लस 2, या 1 प्लस 2 के लिए कहते हैं प्लस 3, और फिर, मान देता है 668 00:29:55,640 --> 00:29:59,660 जवाब में यह स्टोर, और यहाँ printf मैं स्क्रीन पर देख रहा हूँ क्यों है. 669 00:29:59,660 --> 00:30:03,079 तो यह है कि हम एक चलने का फोन करता हूँ क्या है दृष्टिकोण, जहां चलना बस 670 00:30:03,079 --> 00:30:03,870 एक पाश का प्रयोग होता है. 671 00:30:03,870 --> 00:30:06,900 पाश, एक जबकि पाश, एक मत देर के लिए एक पाश, बस फिर से कुछ कर रही है 672 00:30:06,900 --> 00:30:08,380 और फिर और फिर. 673 00:30:08,380 --> 00:30:13,505 >> लेकिन सिग्मा एक स्वच्छ समारोह में की तरह है मैं इसे दूसरे तरीके से लागू कर सकता है. 674 00:30:13,505 --> 00:30:14,620 675 00:30:14,620 --> 00:30:19,120 इस बारे में क्या, जो बस, एक तरह से शांत होने के लिए 676 00:30:19,120 --> 00:30:21,880 मुझे वास्तव में छुटकारा मिलता है व्याकुलता का एक बहुत की 677 00:30:21,880 --> 00:30:24,380 इस समारोह क्योंकि वास्तव में काफी आसान है. 678 00:30:24,380 --> 00:30:27,780 चलो छीलना यह नीचे बस इसकी चार मुख्य लाइनों के लिए 679 00:30:27,780 --> 00:30:30,410 और से छुटकारा पाने के सभी टिप्पणियाँ और घुंघराले ब्रेसिज़. 680 00:30:30,410 --> 00:30:34,334 यह एक मन उड़ाने की तरह है वैकल्पिक कार्यान्वयन. 681 00:30:34,334 --> 00:30:37,250 सब ठीक है, शायद दिमाग उड़ा नहीं, लेकिन यह sexier, सब ठीक है की तरह है, 682 00:30:37,250 --> 00:30:39,920 इतना अधिक संक्षेप में इस पर ध्यान देने की. 683 00:30:39,920 --> 00:30:43,120 कोड के सिर्फ चार लाइनों, मैं पहली बार इस मानसिक स्वास्थ्य की जांच की है. 684 00:30:43,120 --> 00:30:45,732 मीटर से कम या बराबर है शून्य, सिग्मा कोई मतलब नहीं है. 685 00:30:45,732 --> 00:30:48,190 यह केवल में माना जाता है सकारात्मक संख्या के लिए इस मामले, 686 00:30:48,190 --> 00:30:50,340 तो मैं बस करने के लिए जा रहा हूँ मनमाने ढंग से शून्य वापस 687 00:30:50,340 --> 00:30:53,210 हम कम से कम इतना है कि कुछ आधार मामले तथाकथित. 688 00:30:53,210 --> 00:30:54,430 >> लेकिन यहाँ खूबसूरती है. 689 00:30:54,430 --> 00:30:59,930 उनका कहना है इस विचार की संपूर्णता, n करने के लिए 1 से नंबर, या इस मामले में मीटर, 690 00:30:59,930 --> 00:31:02,630 हिरन गुजर की तरह से किया जा सकता है. 691 00:31:02,630 --> 00:31:04,947 खैर, एम 1 की राशि क्या है? 692 00:31:04,947 --> 00:31:05,780 ठीक है, तुम जानते हो क्या? 693 00:31:05,780 --> 00:31:11,949 यह मीटर की राशि के रूप में ही है प्लस एम शून्य से 1 के लिए 1 का योग. 694 00:31:11,949 --> 00:31:12,740 वैसे आप जानते हो क्या? 695 00:31:12,740 --> 00:31:13,940 एम शून्य से 1 के सिग्मा क्या है? 696 00:31:13,940 --> 00:31:17,860 खैर, अगर आप इस तरह की पालन तार्किक रूप से, यह मीटर शून्य से 1 के रूप में ही है 697 00:31:17,860 --> 00:31:21,415 प्लस एम शून्य से 2 की सिग्मा. 698 00:31:21,415 --> 00:31:22,480 699 00:31:22,480 --> 00:31:26,012 तो आप की तरह just-- कर सकते हैं आप अभी कर रहे हैं इस तरह है, 700 00:31:26,012 --> 00:31:28,220 एक दोस्त को परेशान करने की कोशिश कर और वे तुम्हें एक सवाल पूछना, 701 00:31:28,220 --> 00:31:31,344 आप की तरह, एक सवाल के साथ जवाब आप की तरह हिरन गुजर रख सकते हैं. 702 00:31:31,344 --> 00:31:34,560 लेकिन क्या महत्वपूर्ण है कि आप रखना अगर वह यह है कि प्रश्न और छोटे छोटे बना 703 00:31:34,560 --> 00:31:36,910 और छोटे, आप कर रहे हैं सिग्मा क्या पूछ नहीं 704 00:31:36,910 --> 00:31:39,116 n के, की सिग्मा क्या है एन, एन के सिग्मा क्या है? 705 00:31:39,116 --> 00:31:40,990 तुम क्या पूछ रहे हैं n के सिग्मा, क्या सिग्मा 706 00:31:40,990 --> 00:31:42,839 के एन माइनस 1, एन शून्य से 2 की सिग्मा क्या है? 707 00:31:42,839 --> 00:31:44,880 आखिरकार अपने सवाल क्या बनने जा रहा है? 708 00:31:44,880 --> 00:31:50,250 एक या सिग्मा क्या है शून्य, कुछ बहुत छोटे मूल्य, 709 00:31:50,250 --> 00:31:52,220 और जैसे ही आप के रूप में , कि, अपने दोस्त मिल 710 00:31:52,220 --> 00:31:54,350 आप पूछने के लिए नहीं जा रहे हैं फिर वही सवाल, 711 00:31:54,350 --> 00:31:55,975 तुम सिर्फ अरे यह शून्य है, कहने के लिए जा रहे हैं. 712 00:31:55,975 --> 00:31:58,490 हम इस प्रकार का खेल कर रहे हैं बेवकूफ चक्रीय खेल की. 713 00:31:58,490 --> 00:32:02,950 >> तो प्रत्यावर्तन प्रोग्रामिंग में कार्य है एक समारोह के ही बुला. 714 00:32:02,950 --> 00:32:06,630 संकलित और चलाने जब इस कार्यक्रम है, ठीक उसी तरह व्यवहार करने के लिए जा रहा है, 715 00:32:06,630 --> 00:32:09,620 लेकिन क्या महत्वपूर्ण है कि अंदर है सिग्मा नामक एक समारोह का, 716 00:32:09,620 --> 00:32:13,150 कोड जिसमें से एक रेखा है हम खुद को बुला रहे हैं 717 00:32:13,150 --> 00:32:14,980 जो सामान्य रूप से बुरा होगा. 718 00:32:14,980 --> 00:32:21,160 उदाहरण के लिए, क्या पहले मैं अगर इस संकलित, तो sigma-- बनाने 719 00:32:21,160 --> 00:32:22,710 सिग्मा 1 ./sigma -1 बना. 720 00:32:22,710 --> 00:32:25,050 721 00:32:25,050 --> 00:32:27,690 सकारात्मक पूर्णांक, कृपया, 50 1275. 722 00:32:27,690 --> 00:32:30,810 तो क्या कार्य करने के लिए लगता है सही एक परीक्षण के आधार पर, हो. 723 00:32:30,810 --> 00:32:34,917 लेकिन मैं एक छोटे से खतरनाक क्या मिलता है और तथाकथित आधार मामले को हटाना, 724 00:32:34,917 --> 00:32:37,750 और सिर्फ अच्छी तरह से मैं अभी कर रहा हूँ, कहते हैं यह है की तुलना में यह अधिक जटिल. 725 00:32:37,750 --> 00:32:42,450 चलो बस सिग्मा की गणना करते हैं एम लेने और फिर जोड़कर 726 00:32:42,450 --> 00:32:44,564 एम शून्य से एक के सिग्मा में? 727 00:32:44,564 --> 00:32:45,980 खैर, क्या यहाँ होने जा रहा है? 728 00:32:45,980 --> 00:32:47,140 के बाहर ज़ूम करते हैं. 729 00:32:47,140 --> 00:32:52,920 कार्यक्रम recompile करते हैं, , इसे बचाने के लिए कार्यक्रम recompile, 730 00:32:52,920 --> 00:33:00,450 और फिर तैयार ./sigma-1, में zooming , 50 सकारात्मक पूर्णांक कृपया दर्ज करें. 731 00:33:00,450 --> 00:33:02,180 732 00:33:02,180 --> 00:33:04,430 आप में से कितने तैयार हैं उस देखने के लिए ऊपर fess करने के लिए? 733 00:33:04,430 --> 00:33:04,950 >> ठीक. 734 00:33:04,950 --> 00:33:06,690 तो इस बात के लिए भी हो सकता है कारणों में से एक नंबर, 735 00:33:06,690 --> 00:33:09,148 और स्पष्ट रूप से इस सप्ताह हम कर रहे हैं आप उनमें से अधिक देने के बारे में. 736 00:33:09,148 --> 00:33:11,780 लेकिन इस मामले में, कोशिश पीछे की ओर कारण 737 00:33:11,780 --> 00:33:14,430 यहाँ क्या हुआ होगा? 738 00:33:14,430 --> 00:33:17,400 विभाजन गलती, हम पिछले कहा समय, स्मृति का एक खंड को दर्शाता है. 739 00:33:17,400 --> 00:33:18,690 कुछ बुरा हुआ है. 740 00:33:18,690 --> 00:33:21,550 लेकिन यह क्या था यंत्रवत् धराशायी हो गईं कि 741 00:33:21,550 --> 00:33:25,000 यहाँ क्योंकि मेरे हटाने की उस तथाकथित आधार मामले की, 742 00:33:25,000 --> 00:33:26,870 जहां मैं एक हार्ड कोडित मान दिया? 743 00:33:26,870 --> 00:33:28,970 744 00:33:28,970 --> 00:33:30,460 आप क्या गलत हो गया लगता है? 745 00:33:30,460 --> 00:33:31,219 हाँ. 746 00:33:31,219 --> 00:33:32,135 >> दर्शक: [अश्राव्य]. 747 00:33:32,135 --> 00:33:36,387 748 00:33:36,387 --> 00:33:36,970 स्पीकर 1: आह. 749 00:33:36,970 --> 00:33:37,550 अच्छा सवाल है. 750 00:33:37,550 --> 00:33:39,508 संख्या का आकार तो मैं संक्षेप गया था 751 00:33:39,508 --> 00:33:41,920 यह पार हो गई है कि इतना बड़ा मिला स्मृति अंतरिक्ष के आकार. 752 00:33:41,920 --> 00:33:44,640 विचार अच्छा है, लेकिन नहीं मौलिक एक दुर्घटना के कारण हो रहा. 753 00:33:44,640 --> 00:33:48,230 यही पूर्णांक अतिप्रवाह के कारण हो सकता, बिट्स बस उलटा जहां 754 00:33:48,230 --> 00:33:51,760 और फिर हम एक बहुत बड़ी गलती एक नकारात्मक संख्या तरह की संख्या, 755 00:33:51,760 --> 00:33:53,260 लेकिन अपने आप में एक दुर्घटना का कारण नहीं होगा. 756 00:33:53,260 --> 00:33:55,509 क्योंकि के अंत में दिन एक पूर्णांक अभी भी 32 बिट है. 757 00:33:55,509 --> 00:33:57,640 आप के लिए नहीं जा रहे हैं गलती से एक 33 वीं बिट चोरी. 758 00:33:57,640 --> 00:33:58,431 लेकिन एक अच्छा विचार. 759 00:33:58,431 --> 00:33:58,984 हाँ. 760 00:33:58,984 --> 00:33:59,900 >> दर्शक: [अश्राव्य]. 761 00:33:59,900 --> 00:34:00,551 762 00:34:00,551 --> 00:34:02,300 स्पीकर 1: विधि कभी नहीं चल रहा बंद हो जाता है, 763 00:34:02,300 --> 00:34:06,658 और वास्तव में यह फिर से खुद को कॉल और फिर और फिर और फिर 764 00:34:06,658 --> 00:34:08,449 और फिर, और से कोई भी कभी उन कार्यों 765 00:34:08,449 --> 00:34:13,310 के अपने एकमात्र लाइन क्योंकि खत्म कोड बार बार themself कॉल 766 00:34:13,310 --> 00:34:14,219 और फिर. 767 00:34:14,219 --> 00:34:16,080 और क्या सच है हम यहाँ क्या हो रहा है, और अब 768 00:34:16,080 --> 00:34:18,100 तरह की pictorially यह आकर्षित कर सकते हैं. 769 00:34:18,100 --> 00:34:20,899 मुझे एक के लिए खत्म हो जाने दो बस एक पल के लिए तस्वीर. 770 00:34:20,899 --> 00:34:22,940 यह कि, एक तस्वीर है अंततः बाहर मांस होगा 771 00:34:22,940 --> 00:34:26,336 और अधिक विस्तार में, क्या हो रहा है की आपके कंप्यूटर की मेमोरी के अंदर. 772 00:34:26,336 --> 00:34:28,460 और यह उस पर पता चला है इस तस्वीर के नीचे 773 00:34:28,460 --> 00:34:29,709 ढेर कहलाती है. 774 00:34:29,709 --> 00:34:31,920 इस का एक हिस्सा है स्मृति, राम का एक हिस्सा, 775 00:34:31,920 --> 00:34:33,920 कि बस किसी भी समय इस्तेमाल किया है एक समारोह में कहा जाता है. 776 00:34:33,920 --> 00:34:36,239 किसी भी समय आप एक प्रोग्रामर, एक समारोह कॉल, 777 00:34:36,239 --> 00:34:38,860 ऑपरेटिंग सिस्टम, जैसे मैक ओएस, विंडोज, या लिनक्स, 778 00:34:38,860 --> 00:34:41,920 पकड़ लेता बाइट्स का एक गुच्छा, शायद एक कुछ किलोबाइट, शायद कुछ मेगाबाइट 779 00:34:41,920 --> 00:34:44,590 स्मृति की, उन्हें हाथ आप के लिए, और फिर देता है 780 00:34:44,590 --> 00:34:47,650 आप का प्रयोग कर अपने कार्य को चलाने जो भी चर आप की जरूरत है. 781 00:34:47,650 --> 00:34:50,699 और तुम तो एक और फोन अगर समारोह और एक अन्य समारोह, 782 00:34:50,699 --> 00:34:53,590 आप स्मृति का एक और टुकड़ा मिल और स्मृति का एक और टुकड़ा. 783 00:34:53,590 --> 00:34:57,090 >> और वास्तव में, इन हरे ट्रे अगर Annenberg से, कि स्मृति का प्रतिनिधित्व 784 00:34:57,090 --> 00:34:59,870 यहां पहले क्या होता है बार जब आप समारोह सिग्मा कहते हैं. 785 00:34:59,870 --> 00:35:04,510 यह इस तरह एक ट्रे डाल की तरह है शुरू में एक खाली ढेर है पर. 786 00:35:04,510 --> 00:35:07,142 लेकिन तब यदि उस ट्रे इतनी बात करने के लिए, खुद को कहता है, 787 00:35:07,142 --> 00:35:08,850 एक और उदाहरण बुला सिग्मा की, कि 788 00:35:08,850 --> 00:35:11,640 ऑपरेटिंग सिस्टम पूछ की तरह, ओह, एक छोटे से अधिक स्मृति की आवश्यकता 789 00:35:11,640 --> 00:35:12,520 मुझे उस दे. 790 00:35:12,520 --> 00:35:14,840 और फिर यह शीर्ष पर पर ढेर हो जाता है. 791 00:35:14,840 --> 00:35:18,030 लेकिन क्या यहां महत्वपूर्ण यह है कि पहले ट्रे, अभी भी वहाँ है 792 00:35:18,030 --> 00:35:20,620 वह इस दूसरे ट्रे लागू है. 793 00:35:20,620 --> 00:35:23,500 अब इस बीच, सिग्मा सिग्मा कहते हैं, कि अधिक स्मृति के लिए पूछ की तरह है. 794 00:35:23,500 --> 00:35:25,830 यहाँ पर ढेर हो जाता है. 795 00:35:25,830 --> 00:35:29,350 सिग्मा कि एक और है, सिग्मा कॉल यहाँ पर ढेर हो जाता है कि ट्रे. 796 00:35:29,350 --> 00:35:32,942 और आप यह कर रखें हैं, अंत में, एक तरह से यह दृश्य नक्शा 797 00:35:32,942 --> 00:35:35,525 उस चार्ट को, करने के लिए क्या हो रहा है ट्रे के ढेर के साथ हो? 798 00:35:35,525 --> 00:35:37,480 799 00:35:37,480 --> 00:35:41,160 यह राशि पार करने के लिए जा रहा है स्मृति के अपने कंप्यूटर है. 800 00:35:41,160 --> 00:35:45,790 और जैसे ही यह हरे रंग ट्रे के रूप में क्षैतिज रेखा से अधिक है 801 00:35:45,790 --> 00:35:49,410 ढेर के ऊपर और उस शब्द के ढेर के ऊपर, जो हम भविष्य में करने के लिए वापस आ जाएगा, 802 00:35:49,410 --> 00:35:50,410 कि एक बुरी बात है. 803 00:35:50,410 --> 00:35:52,810 ढेर एक अलग है स्मृति का खंड, 804 00:35:52,810 --> 00:35:55,190 और आप इन करते हैं ट्रे ढेर और ढेर पर 805 00:35:55,190 --> 00:35:57,800 आप को पार करने के लिए जा रहे हैं स्मृति के अपने खुद के खंड, 806 00:35:57,800 --> 00:36:00,420 और एक कार्यक्रम वास्तव में दुर्घटना के लिए जा रहा है. 807 00:36:00,420 --> 00:36:02,930 >> अब एक तरफ, इस विचार के रूप में प्रत्यावर्तन की, इसलिए, 808 00:36:02,930 --> 00:36:06,500 स्पष्ट रूप से, समस्याओं को जन्म दे सकता है लेकिन यह जरूरी नहीं कि एक बुरी बात नहीं है. 809 00:36:06,500 --> 00:36:08,840 विचार करें, क्योंकि बाद सभी, how-- और शायद 810 00:36:08,840 --> 00:36:11,700 यह कुछ का इस्तेमाल किया जा रहा लेता है --how को सुरुचिपूर्ण या कैसे सरल 811 00:36:11,700 --> 00:36:14,890 सिग्मा की कि कार्यान्वयन था. 812 00:36:14,890 --> 00:36:17,440 और हम का उपयोग करने के लिए नहीं जा रहे हैं CS50 में सब इतना प्रत्यावर्तन, 813 00:36:17,440 --> 00:36:20,780 लेकिन CS51 में, और वास्तव में किसी भी वर्ग आप डेटा संरचनाओं में हेरफेर जहां 814 00:36:20,780 --> 00:36:23,640 पेड़, या परिवार के पेड़ की तरह, कि, कुछ पदानुक्रम है 815 00:36:23,640 --> 00:36:26,000 यह सुपर उपयोगी, सुपर है. 816 00:36:26,000 --> 00:36:29,750 अब, एक तरफ, तो के रूप में आपको लगता है कि कंप्यूटर वैज्ञानिकों इच्छुक रूप 817 00:36:29,750 --> 00:36:33,180 गूगल की कुछ के साथ परिचित हैं आप गूगल के पास जाओ तो अंदर चुटकुले, 818 00:36:33,180 --> 00:36:36,345 और तुम क्या है देखो , की परिभाषा का कहना है, प्रत्यावर्तन, दर्ज करें. 819 00:36:36,345 --> 00:36:40,208 820 00:36:40,208 --> 00:36:41,110 उह. 821 00:36:41,110 --> 00:36:42,670 एक अलग रूप में, मैं कुछ ऊपर खींच लिया. 822 00:36:42,670 --> 00:36:45,470 इस के 10 मिनट की तरह था विलंब आज सुबह. 823 00:36:45,470 --> 00:36:52,890 यदि आप भी गूगल "तिरछा," नोटिस अपने सिर झुकने से slightly-- 824 00:36:52,890 --> 00:36:55,120 और फिर यह एक शायद है सभी का सबसे नृशंस 825 00:36:55,120 --> 00:36:57,286 किसी तरह खर्च के बाद इस लागू करने के उनके दिन 826 00:36:57,286 --> 00:36:59,880 कुछ साल पर आ ago--. 827 00:36:59,880 --> 00:37:01,140 828 00:37:01,140 --> 00:37:04,540 ओह, wait-- कि एक बग है. 829 00:37:04,540 --> 00:37:08,410 830 00:37:08,410 --> 00:37:11,410 >> इसलिए में से एक पर चल रहे दुनिया की सबसे बड़ी वेबसाइटों 831 00:37:11,410 --> 00:37:13,510 इन मूर्ख थोड़ा ईस्टर अंडे हैं. 832 00:37:13,510 --> 00:37:16,690 वे शायद एक भस्म कोड की लाइनों के nontrivial संख्या 833 00:37:16,690 --> 00:37:19,280 अभी हम कर सकते हैं कि इतना उस तरह थोड़ा मजेदार बातें. 834 00:37:19,280 --> 00:37:22,140 लेकिन कम से कम अब आप मिल उन के अंदर मजाक के कुछ. 835 00:37:22,140 --> 00:37:28,330 >> अब हम में से कुछ पर एक नज़र रखना सफेद, हम देर से कह रहा हूँ झूठ 836 00:37:28,330 --> 00:37:30,707 और वापस छील करने के लिए शुरू कुछ परतों तकनीकी रूप 837 00:37:30,707 --> 00:37:32,790 आप वास्तव में समझने के लिए इतना है कि क्या चल रहा है 838 00:37:32,790 --> 00:37:34,860 और आप समझ सकते हैं खतरों में से कुछ, 839 00:37:34,860 --> 00:37:38,060 SHELLSHOCK तरह, कि अब बनने के लिए शुरू कर दिया है 840 00:37:38,060 --> 00:37:41,110 सभी की सबसे आगे पर ध्यान, कम से कम मीडिया में. 841 00:37:41,110 --> 00:37:45,810 तो यहाँ एक बहुत ही सरल कार्य है उस शून्य को, कुछ भी नहीं देता है. 842 00:37:45,810 --> 00:37:46,790 इसका नाम स्वैप है. 843 00:37:46,790 --> 00:37:50,880 यह दो चर में लेता है और यह कुछ भी नहीं देता है. 844 00:37:50,880 --> 00:37:52,260 ए और बी में ले जाता है. 845 00:37:52,260 --> 00:37:53,337 तो एक त्वरित प्रदर्शन. 846 00:37:53,337 --> 00:37:54,170 हम इन लाया. 847 00:37:54,170 --> 00:37:56,100 हम के रूप में अच्छी तरह से एक छोटे से लग सकता है बस एक पल के लिए यहाँ तोड़ 848 00:37:56,100 --> 00:37:57,250 और पीने के लिए कुछ है. 849 00:37:57,250 --> 00:38:00,120 किसी को शामिल होने से बुरा नहीं होता यहां सिर्फ एक पल के लिए मुझे. 850 00:38:00,120 --> 00:38:01,830 कैसे लाल रंग की कमीज में आप के बारे में? 851 00:38:01,830 --> 00:38:02,335 ऊपर आओ. 852 00:38:02,335 --> 00:38:04,060 853 00:38:04,060 --> 00:38:05,260 बस एक आज. 854 00:38:05,260 --> 00:38:06,251 हालांकि, धन्यवाद. 855 00:38:06,251 --> 00:38:08,000 सब ठीक है, और हम हैं जो यहां आ रहे हैं? 856 00:38:08,000 --> 00:38:08,660 आपका नाम क्या है? 857 00:38:08,660 --> 00:38:09,360 >> अध्यक्ष 4: लौरा. 858 00:38:09,360 --> 00:38:09,740 >> स्पीकर 1: लौरा. 859 00:38:09,740 --> 00:38:10,370 ऊपर आओ. 860 00:38:10,370 --> 00:38:11,460 861 00:38:11,460 --> 00:38:13,850 तो लौरा, बहुत सरल चुनौती आज. 862 00:38:13,850 --> 00:38:14,704 863 00:38:14,704 --> 00:38:15,370 यो मिलकर अच्छा लगा. 864 00:38:15,370 --> 00:38:16,410 865 00:38:16,410 --> 00:38:16,910 ठीक है. 866 00:38:16,910 --> 00:38:21,179 इसलिए हम यहां पर कुछ दूध है और हम यहाँ पर कुछ संतरे का रस है 867 00:38:21,179 --> 00:38:23,345 और कुछ कप कि हम आज Annenberg से उधार लिया. 868 00:38:23,345 --> 00:38:24,178 >> अध्यक्ष 4: उधार लिया. 869 00:38:24,178 --> 00:38:27,240 स्पीकर 1: और आगे जाने के लिए जा और आप इस के आधा गिलास दे. 870 00:38:27,240 --> 00:38:28,250 871 00:38:28,250 --> 00:38:28,800 ठीक है. 872 00:38:28,800 --> 00:38:30,750 और हम तुम आधा देता हूँ एक गिलास दूध. 873 00:38:30,750 --> 00:38:31,905 874 00:38:31,905 --> 00:38:35,890 ओह, और सिर्फ आप कर सकते हैं कि इतना , इस तरह था क्या याद 875 00:38:35,890 --> 00:38:38,860 मैं लाने के लिए याद किया यह ऊपर और आज पर. 876 00:38:38,860 --> 00:38:42,030 877 00:38:42,030 --> 00:38:42,530 ठीक है. 878 00:38:42,530 --> 00:38:45,470 आप मन नहीं होता है, तो चलो देखते हैं, हम अपने खुद के चश्मे पर उन्हें रख सकते हैं 879 00:38:45,470 --> 00:38:46,560 अगर आप चाहते हैं. 880 00:38:46,560 --> 00:38:48,710 इस लौरा की आंखों से दुनिया हो जाएगा. 881 00:38:48,710 --> 00:38:49,210 ठीक है. 882 00:38:49,210 --> 00:38:53,820 तो अपने लक्ष्य के दो कप दिया यहाँ तरल, दूध और संतरे का रस, 883 00:38:53,820 --> 00:38:58,370 दो सामग्री स्वैप इतना है कि संतरे का रस दूध कप में चला जाता है 884 00:38:58,370 --> 00:39:00,710 और दूध में चला जाता है संतरे का रस कप. 885 00:39:00,710 --> 00:39:02,359 >> अध्यक्ष 4: मैं एक और कप मिलता है? 886 00:39:02,359 --> 00:39:05,650 स्पीकर 1: मैं हालांकि, आप से पूछा खुश हूँ यह ज्यादा बेहतर फुटेज गया होता 887 00:39:05,650 --> 00:39:06,710 आप से पूछा नहीं था. 888 00:39:06,710 --> 00:39:10,620 लेकिन हाँ, हम आपको एक तीसरी पेशकश कर सकते हैं जाहिर है, खाली है कि कप. 889 00:39:10,620 --> 00:39:11,120 ठीक है. 890 00:39:11,120 --> 00:39:12,300 तो वहाँ सामग्री स्वैप. 891 00:39:12,300 --> 00:39:16,100 892 00:39:16,100 --> 00:39:17,050 बहुत अच्छा. 893 00:39:17,050 --> 00:39:20,390 894 00:39:20,390 --> 00:39:21,305 बहुत अच्छा. 895 00:39:21,305 --> 00:39:23,121 896 00:39:23,121 --> 00:39:24,745 आप उल्लेखनीय ध्यान से यह कर रहे हैं. 897 00:39:24,745 --> 00:39:26,970 898 00:39:26,970 --> 00:39:28,655 और तीन कदम. 899 00:39:28,655 --> 00:39:30,390 900 00:39:30,390 --> 00:39:31,350 ठीक है. 901 00:39:31,350 --> 00:39:31,930 बहुत बढ़िया. 902 00:39:31,930 --> 00:39:33,930 प्रशंसा का एक बड़ा दौर लौरा के लिए अच्छा होगा. 903 00:39:33,930 --> 00:39:36,500 904 00:39:36,500 --> 00:39:37,000 ठीक है. 905 00:39:37,000 --> 00:39:40,790 हम एक छोटे से बिदाई उपहार है आप के लिए, लेकिन मुझे इन लेते हैं. 906 00:39:40,790 --> 00:39:42,620 बहुत बहुत धन्यवाद. 907 00:39:42,620 --> 00:39:46,170 तो एक साधारण उदाहरण है, हालांकि, यदि आप करते हैं कि प्रदर्शन करने के लिए 908 00:39:46,170 --> 00:39:48,300 सामग्री स्वैप करना चाहते हैं दो कंटेनरों की, 909 00:39:48,300 --> 00:39:52,360 या के चर उन्हें फोन करते हैं, आप कुछ अस्थायी भंडारण की आवश्यकता 910 00:39:52,360 --> 00:39:56,710 इतने में सामग्री का एक मंच आप वास्तव में स्वैप कर सकते हैं. 911 00:39:56,710 --> 00:40:01,790 तो वास्तव में, यहाँ इस स्रोत कोड में सी वास्तव में इस बात का प्रतिनिधि है. 912 00:40:01,790 --> 00:40:06,340 संतरे का रस एक और दूध था , बी था, और हम दो स्वैप करना चाहता था 913 00:40:06,340 --> 00:40:08,990 आप रचनात्मक कुछ करने की कोशिश कर सकता है अन्य में एक गिरने से, 914 00:40:08,990 --> 00:40:11,031 लेकिन वह शायद नहीं होता विशेष रूप से अच्छी तरह से अंत. 915 00:40:11,031 --> 00:40:15,260 और इसलिए हम एक तिहाई कप, कॉल का उपयोग यह सम्मेलन द्वारा, टी एम पी tmp 916 00:40:15,260 --> 00:40:19,370 और की सामग्री डाल OJ कि में, तो एक कप स्वैप, 917 00:40:19,370 --> 00:40:22,610 फिर में OJ डाल मूल कप, जिससे 918 00:40:22,610 --> 00:40:25,320 बिल्कुल के रूप में, को प्राप्त करने लौरा, स्वैप किया था. 919 00:40:25,320 --> 00:40:26,850 >> तो चलो ठीक है कि करते हैं. 920 00:40:26,850 --> 00:40:30,110 मुझे आगे जाना है और खोलने के चलो है कि एक उदाहरण ऊपर 921 00:40:30,110 --> 00:40:32,720 वास्तव में कोई "कहा जाता है यह नहीं है क्योंकि ", स्वैप 922 00:40:32,720 --> 00:40:36,180 आप सोच सकते हैं के रूप में आसानी से किया. 923 00:40:36,180 --> 00:40:41,190 इसलिए इस कार्यक्रम में, कि नोटिस मैं stdio.h, हमारे पुराने दोस्त का उपयोग कर रहा हूँ. 924 00:40:41,190 --> 00:40:43,130 मैं प्रोटोटाइप है , वहाँ स्वैप के लिए जो 925 00:40:43,130 --> 00:40:45,450 इसके कार्यान्वयन के मतलब शायद नीचे नीचे, 926 00:40:45,450 --> 00:40:48,050 और चलो देखते हैं मुख्य क्या इस कार्यक्रम मेरे लिए क्या करने जा रहा है. 927 00:40:48,050 --> 00:40:52,020 मैं पहले int x हो जाता घोषित एक, और y दो हो जाता है int. 928 00:40:52,020 --> 00:40:54,930 तो OJ के रूप में उन के बारे में सोच क्रमशः और दूध,. 929 00:40:54,930 --> 00:40:57,100 और फिर मैं सिर्फ एक है printf एक्स यह कह रही है 930 00:40:57,100 --> 00:41:00,120 और वाई अभी तो मैं कर सकता हूँ, यह है नेत्रहीन क्या हो रहा है देखते हैं. 931 00:41:00,120 --> 00:41:03,810 तो मैं दावा कर printf है , मैं दो गमागमन रहा हूँ कि 932 00:41:03,810 --> 00:41:07,100 और फिर मैं एक प्रिंट आउट वे बदली कर रहे हैं का दावा है कि, 933 00:41:07,100 --> 00:41:09,300 और मैं फिर से एक्स और वाई बाहर प्रिंट. 934 00:41:09,300 --> 00:41:13,010 तो यहाँ नीचे स्वैप है में वास्तव में लौरा क्या किया, 935 00:41:13,010 --> 00:41:16,240 और हम पर देखा कि क्या वास्तव में एक पल पहले स्क्रीन. 936 00:41:16,240 --> 00:41:19,380 >> तो चलो आगे चलते हैं और कष्टदायी रूप से निराश हो. 937 00:41:19,380 --> 00:41:24,690 कोई स्वैप बनाओ, और कोई स्वैप चलाने, यहां उत्पादन पर zooming. 938 00:41:24,690 --> 00:41:28,320 दर्ज एक्स वाई बदली गमागमन, 2, 1 है. 939 00:41:28,320 --> 00:41:32,700 एक्स अभी भी 1 है, और वाई अभी भी 2 है. 940 00:41:32,700 --> 00:41:37,630 इसलिए, भले ही स्पष्ट है, यह लग रहा है वास्तव में अधिक तकनीकी रूप से यद्यपि, जैसे, 941 00:41:37,630 --> 00:41:40,730 लौरा क्या किया, काम ही नहीं किया. 942 00:41:40,730 --> 00:41:42,130 तो ऐसा क्यों है? 943 00:41:42,130 --> 00:41:46,630 खैर, यह जब पता चला है कि हम इस तरह से एक प्रोग्राम लिखने 944 00:41:46,630 --> 00:41:51,590 कि दोनों मुख्य,, यहाँ पर प्रकाश डाला गया और फिर एक और समारोह, स्वैप की तरह, 945 00:41:51,590 --> 00:41:54,230 , यहाँ पर प्रकाश डाला यह दुनिया, कॉल 946 00:41:54,230 --> 00:41:57,030 जैसे एक छोटे से कुछ दिखता है एक पल पहले इन ट्रे. 947 00:41:57,030 --> 00:42:00,440 जब मुख्य बुलाया जाता है पहले, कि ऑपरेटिंग सिस्टम पूछ की तरह है 948 00:42:00,440 --> 00:42:04,030 किसी भी स्थानीय के लिए स्मृति का एक बिट के लिए एक्स और मुख्य है कि वाई तरह चर, 949 00:42:04,030 --> 00:42:05,660 और वे अभी भी वहीं खत्म होता है. 950 00:42:05,660 --> 00:42:10,920 मुख्य कॉल स्वैप, और मुख्य लेकिन अगर दो तर्क, ए और बी स्वैप करने के लिए गुजरता है, 951 00:42:10,920 --> 00:42:16,410 संतरे का रस और दूध, यह पसंद नहीं है संतरे का रस और दूध सौंपने 952 00:42:16,410 --> 00:42:17,500 लौरा के लिए. 953 00:42:17,500 --> 00:42:21,300 एक कंप्यूटर क्या करता है, यह है संतरे का रस की प्रतियां गुजरता 954 00:42:21,300 --> 00:42:27,110 इतना है कि लौरा के लिए दूध की और प्रतियां, क्या इस ट्रे के अंदर अंततः है 955 00:42:27,110 --> 00:42:32,510 मूल्य एक और दो, या OJ है और दूध, लेकिन प्रतियां क्या है, 956 00:42:32,510 --> 00:42:34,790 इसलिए कि इस बिंदु पर कहानी में, वहाँ 957 00:42:34,790 --> 00:42:36,930 इन ट्रे में से प्रत्येक में OJ और दूध है. 958 00:42:36,930 --> 00:42:39,260 एक एक और एक दो नहीं है इन ट्रे में से प्रत्येक में, 959 00:42:39,260 --> 00:42:41,720 और स्वैप समारोह वास्तव में काम कर रहा है. 960 00:42:41,720 --> 00:42:46,090 यह अंदर उन्हें गमागमन है दूसरा सर्वोच्च ट्रे की, 961 00:42:46,090 --> 00:42:48,147 लेकिन उस गमागमन कोई प्रभाव पड़ता है. 962 00:42:48,147 --> 00:42:49,980 और अभी कुछ पर आधारित हम है बुनियादी सिद्धांत 963 00:42:49,980 --> 00:42:52,970 पहले के बारे में बात की थी, और वास्तव में बस कुछ ही मिनट पहले, क्या 964 00:42:52,970 --> 00:42:58,770 बदलते क्यों समझा सकता है स्वैप के अंदर एक और बी 965 00:42:58,770 --> 00:43:05,560 भले ही, एक्स और वाई पर कोई प्रभाव नहीं है मैं स्वैप समारोह के लिए एक्स और वाई पारित कर दिया. 966 00:43:05,560 --> 00:43:08,750 यहाँ कि कुंजी शब्द क्या है simplistically व्याख्या हो सकती है? 967 00:43:08,750 --> 00:43:11,250 968 00:43:11,250 --> 00:43:12,627 मुझे लगता है मैं यहाँ यह सुना लगता है? 969 00:43:12,627 --> 00:43:13,335 दर्शक: वापसी. 970 00:43:13,335 --> 00:43:14,085 स्पीकर 1: वापसी? 971 00:43:14,085 --> 00:43:14,590 वापस नहीं. 972 00:43:14,590 --> 00:43:15,895 दूसरे एक साथ चलते हैं. 973 00:43:15,895 --> 00:43:16,395 वह क्या है? 974 00:43:16,395 --> 00:43:17,080 >> दर्शक: [अश्राव्य]. 975 00:43:17,080 --> 00:43:20,000 >> स्पीकर 1: ठीक है, हम कर सकते थे return-- तो कहानी में वापसी का काम करने, 976 00:43:20,000 --> 00:43:21,914 लेकिन एक भी सरल व्याख्या है. 977 00:43:21,914 --> 00:43:22,580 दर्शक: स्कोप. 978 00:43:22,580 --> 00:43:23,288 स्पीकर 1: स्कोप. 979 00:43:23,288 --> 00:43:24,300 मैं गुंजाइश ले जाऊँगा. 980 00:43:24,300 --> 00:43:27,290 तो गुंजाइश है, जहां याद हमारे एक्स और वाई की घोषणा की. 981 00:43:27,290 --> 00:43:30,840 वे अंदर घोषित कर रहे हैं मुख्य का यहीं. 982 00:43:30,840 --> 00:43:33,200 ए और बी, इस बीच, कर रहे हैं प्रभावी रूप से घोषित 983 00:43:33,200 --> 00:43:35,930 स्वैप के अंदर, काफी नहीं है में घुंघराले ब्रेसिज़ लेकिन अभी भी 984 00:43:35,930 --> 00:43:37,690 स्वैप के सामान्य क्षेत्र में. 985 00:43:37,690 --> 00:43:40,560 और तो वास्तव में, ए और बी केवल इस ट्रे के भीतर मौजूद 986 00:43:40,560 --> 00:43:44,850 Annenberg से, इस कोड का दूसरा हिस्सा. 987 00:43:44,850 --> 00:43:49,500 इसलिए हम वास्तव में नकल बदल रहे हैं, लेकिन कि सच है कि सभी उपयोगी नहीं है. 988 00:43:49,500 --> 00:43:52,190 >> तो चलो पर एक नज़र रखना यह एक छोटे से कम स्तर. 989 00:43:52,190 --> 00:43:55,430 मैं वापस जाने के लिए जा रहा हूँ स्रोत निर्देशिका, 990 00:43:55,430 --> 00:43:58,330 और मैं पहली बार करने जा रहा हूँ यहाँ में ज़ूम, और बस 991 00:43:58,330 --> 00:44:02,290 मैं इस में हूँ कि पुष्टि करने के लिए बड़ा टर्मिनल विंडो, 992 00:44:02,290 --> 00:44:04,430 कार्यक्रम अभी भी उस तरह से व्यवहार कर रहा है. 993 00:44:04,430 --> 00:44:06,840 अब है कि यह मान लीजिए जानबूझकर नहीं है. 994 00:44:06,840 --> 00:44:10,090 जाहिर है मैं करने के लिए स्वैप चाहता था काम, तो यह एक बग की तरह लगता है. 995 00:44:10,090 --> 00:44:12,780 अब मैं एक जोड़ने शुरू कर सकता है मेरे कोड को printf के बहुत, 996 00:44:12,780 --> 00:44:16,010 यहाँ पर, वाई एक्स पर बाहर मुद्रण यहाँ, यहाँ, यहाँ पर बी एक. 997 00:44:16,010 --> 00:44:18,220 लेकिन स्पष्ट रूप से, कि शायद क्या है आप कुछ हफ़्ते के लिए कर दिया गया है 998 00:44:18,220 --> 00:44:20,190 अब, कार्यालय समय में और घर पर कार्य करते समय 999 00:44:20,190 --> 00:44:22,150 कुछ कीड़े खोजने की कोशिश कर psets पर. 1000 00:44:22,150 --> 00:44:25,560 आप पहले से ही नहीं है लेकिन अगर आप देखेंगे कि समस्या तीन परिचय सेट 1001 00:44:25,560 --> 00:44:31,630 GDB नामक एक आदेश के लिए, जहां GDB, ग्नू डिबगर, 1002 00:44:31,630 --> 00:44:34,040 खुद की एक पूरी गुच्छा है सुविधाओं है कि वास्तव में यह कर सकते हैं 1003 00:44:34,040 --> 00:44:38,160 हमें स्थितियों को समझते हैं इस तरह से, लेकिन अधिक compellingly, 1004 00:44:38,160 --> 00:44:39,940 समस्याओं का समाधान और कीड़े हैं. 1005 00:44:39,940 --> 00:44:40,940 तो मैं यह करने के लिए जा रहा हूँ. 1006 00:44:40,940 --> 00:44:44,770 इसके बजाय ./noswap की, मैं बजाय हूँ GDB ./noswap चला जा रहा. 1007 00:44:44,770 --> 00:44:47,410 1008 00:44:47,410 --> 00:44:51,200 दूसरे शब्दों में, मैं चला जा रहा हूँ मेरे कार्यक्रम नहीं बैश में, हमारे नए दोस्त 1009 00:44:51,200 --> 00:44:51,850 आज. 1010 00:44:51,850 --> 00:44:53,970 मैं चला जा रहा हूँ मेरे अंदर कार्यक्रम noswap 1011 00:44:53,970 --> 00:44:56,900 कहा जाता है यह अन्य कार्यक्रम की एक डीबगर है जो GDB, जो 1012 00:44:56,900 --> 00:45:01,035 मदद करने के लिए बनाया गया है कि एक कार्यक्रम है आप पाते हैं और कीड़ों को दूर मनुष्य. 1013 00:45:01,035 --> 00:45:03,410 मैं यहाँ चलाने मारा तो, अगर वहाँ है पाठ की एक नृशंस राशि 1014 00:45:03,410 --> 00:45:04,868 आप वास्तव में पढ़ने के लिए है कि कभी नहीं. 1015 00:45:04,868 --> 00:45:07,290 यह अनिवार्य रूप से एक व्याकुलता है शीघ्र, से जो 1016 00:45:07,290 --> 00:45:10,030 मैं नियंत्रण एल हिट करने के लिए जा रहा हूँ वहाँ शीर्ष पर पाने के लिए. 1017 00:45:10,030 --> 00:45:11,800 इस GDB शीघ्र है. 1018 00:45:11,800 --> 00:45:15,550 मैं अब इस कार्यक्रम को चलाने के लिए चाहते हैं, आज की पर इस छोटे से धोखा शीट के रूप में 1019 00:45:15,550 --> 00:45:21,860 स्लाइड भागो पहला है, पता चलता है हम पेश करने का मतलब है कि हासिल है. 1020 00:45:21,860 --> 00:45:25,150 और मैं सिर्फ टाइप करने के लिए जा रहा हूँ GDB के अंदर यहां तक ​​चला, 1021 00:45:25,150 --> 00:45:26,811 और वास्तव में यह मेरे कार्यक्रम में भाग गया. 1022 00:45:26,811 --> 00:45:29,310 अब कुछ अतिरिक्त नहीं है इस तरह स्क्रीन के आउटपुट, 1023 00:45:29,310 --> 00:45:31,910 लेकिन उस GDB अभी की जा रही गुदा है और क्या हो रहा है हमें बता. 1024 00:45:31,910 --> 00:45:34,451 आप वास्तव में चिंता करने की ज़रूरत नहीं है सही अब इन विवरणों के बारे में. 1025 00:45:34,451 --> 00:45:36,890 लेकिन बारे में वास्तव में अच्छा क्या है अगर मैं ऐसा GDB, इस again-- 1026 00:45:36,890 --> 00:45:42,100 नियंत्रण एल मुझे जाने दो screen-- साफ करता है आगे और प्रकार, जिससे ", मुख्य तोड़ने" 1027 00:45:42,100 --> 00:45:45,743 मैं दर्ज मारा, क्या सेटिंग एक ब्रेक प्वाइंट noswap.c में कहा जाता है, 1028 00:45:45,743 --> 00:45:51,270 जहां GDB है जो लाइन 16, वास्तव में मेरे कार्यक्रम समझ से बाहर 1029 00:45:51,270 --> 00:45:53,070 है, मेरे कार्य वास्तव में है. 1030 00:45:53,070 --> 00:45:55,070 हम अब के लिए की अनदेखी करेंगे यह लेकिन उस पते है 1031 00:45:55,070 --> 00:45:57,310 विशेष रूप से इस समारोह की स्मृति में. 1032 00:45:57,310 --> 00:46:00,240 तो अब मैं चला टाइप करते हैं, यहाँ क्या अच्छा है नोटिस. 1033 00:46:00,240 --> 00:46:05,650 मेरा कार्यक्रम लाइन मैं में टूट जाता है पर निष्पादन को थामने के लिए GDB बताया. 1034 00:46:05,650 --> 00:46:09,850 तो अब मैं अपने कोड को बदलने की जरूरत नहीं है, कुछ printf के जोड़ इसे फिर कंपाइल करने, फिर से दौड़ना 1035 00:46:09,850 --> 00:46:13,300 यह,,, बदलने के कुछ printf का जोड़ इसे बचाने के लिए, यह फिर कंपाइल करने, इसे चलाते हैं. 1036 00:46:13,300 --> 00:46:18,100 मैं सिर्फ अपने कार्यक्रम के माध्यम से चल सकता है मानव गति से कदम से कदम से कदम, 1037 00:46:18,100 --> 00:46:20,880 नहीं गति के इंटेल के अंदर प्रकार पर. 1038 00:46:20,880 --> 00:46:24,580 >> तो अब इस लाइन को नोटिस मैं वापस जाने के लिए अगर यहां दिखाई देता है, और 1039 00:46:24,580 --> 00:46:27,800 एडिट में अपने कार्यक्रम के लिए, कि वास्तव में है कि नोटिस 1040 00:46:27,800 --> 00:46:29,280 कोड के पहले ही लाइन. 1041 00:46:29,280 --> 00:46:31,240 लाइन 16 एडिट में नहीं है. 1042 00:46:31,240 --> 00:46:34,610 वहाँ लाइन 16 GDB के भीतर है, और यहां तक ​​कि इस काले और सफेद इंटरफ़ेस हालांकि 1043 00:46:34,610 --> 00:46:37,760 लगभग नहीं के उपयोगकर्ता के रूप में है अनुकूल, इस का मतलब 1044 00:46:37,760 --> 00:46:41,680 कि लाइन 16 से क्रियान्वित नहीं किया गया है अभी तक, लेकिन यह हो के बारे में है. 1045 00:46:41,680 --> 00:46:46,220 इसलिए वास्तव में मैं प्रिंट टाइप एक्स, नहीं printf, सिर्फ प्रिंट एक्स, 1046 00:46:46,220 --> 00:46:50,730 मैं, शून्य से वहाँ कुछ फर्जी मूल्य मिल एक्स अभी तक initialized नहीं किया गया है. 1047 00:46:50,730 --> 00:46:54,760 तुम तो अगर मैं अगले टाइप करने के लिए जा रहे हैं, या कर रहा हूँ बस अगले के लिए एन, फैंसी होना चाहते हैं. 1048 00:46:54,760 --> 00:46:59,090 लेकिन मैं अगले अब, दर्ज टाइप करते हैं यह लाइन 17 पर चलता नोटिस. 1049 00:46:59,090 --> 00:47:02,840 तो तार्किक रूप से, मैं मार डाला है अगर लाइन 16 और मैं अब प्रिंट एक्स टाइप करें, 1050 00:47:02,840 --> 00:47:03,640 मैं क्या देखना चाहिए? 1051 00:47:03,640 --> 00:47:04,970 1052 00:47:04,970 --> 00:47:05,520 एक. 1053 00:47:05,520 --> 00:47:07,820 >> और अब यह मानते भ्रामक है. 1054 00:47:07,820 --> 00:47:11,260 $ 2, की सिर्फ एक अच्छा तरीका है आप अगर बाद में उस मूल्य का उल्लेख करना चाहते हैं, 1055 00:47:11,260 --> 00:47:12,510 आप "डॉलर दो पर हस्ताक्षर." कह सकते हैं 1056 00:47:12,510 --> 00:47:13,480 यह एक वापस संदर्भ की तरह है. 1057 00:47:13,480 --> 00:47:14,570 लेकिन अब के लिए, बस इसे अनदेखा. 1058 00:47:14,570 --> 00:47:17,070 क्या दिलचस्प है क्या है बराबर चिह्न के अधिकार पर. 1059 00:47:17,070 --> 00:47:21,000 और अब मैं अगले फिर से लिखें अगर और प्रिंट वाई, मैं 2 देखना चाहिए. 1060 00:47:21,000 --> 00:47:23,870 मैं भी अब प्रिंट कर सकते हैं एक्स फिर से, और स्पष्ट रूप से, 1061 00:47:23,870 --> 00:47:27,130 मैं के रूप में एक छोटी सी उलझन में हो रही है मैं कहाँ हूँ, मैं इस सूची के लिए सूची टाइप कर सकते हैं 1062 00:47:27,130 --> 00:47:30,590 और बस के चारों ओर कुछ संदर्भ देखना बिंदु मैं वास्तव में हूँ. 1063 00:47:30,590 --> 00:47:35,180 और अब मैं टाइप कर सकते हैं अगले, और वहाँ एक्स 1 है. 1064 00:47:35,180 --> 00:47:36,300 अब मैं अगले लिखें. 1065 00:47:36,300 --> 00:47:37,710 ओह, वाई 2 है. 1066 00:47:37,710 --> 00:47:40,750 और फिर, यह भ्रामक है GDB का उत्पादन क्योंकि 1067 00:47:40,750 --> 00:47:43,044 मेरे अपने उत्पादन के साथ मिश्रित किया जा रहा है. 1068 00:47:43,044 --> 00:47:45,710 लेकिन आप से, मन में रखने के लिए आगे और पीछे अपने कोड पर glancing 1069 00:47:45,710 --> 00:47:47,740 या पक्ष इसे बाहर बिछाने शायद तरफ से, तुम हूँ 1070 00:47:47,740 --> 00:47:51,020 वास्तव में मैं अभी कर रहा हूँ कि देखना अपने कार्यक्रम के माध्यम से कदम. 1071 00:47:51,020 --> 00:47:54,620 >> लेकिन सचमुच, आगे क्या होता है नोटिस. 1072 00:47:54,620 --> 00:47:56,380 यहाँ लाइन 22 है. 1073 00:47:56,380 --> 00:48:01,315 जिससे पर चलती है, मुझे इस पर चलते हैं 23 के लिए, और अब मैं अभी भी एक एक्स मुद्रित है. 1074 00:48:01,315 --> 00:48:03,890 और मैं अभी भी, अब वाई मुद्रित है. 1075 00:48:03,890 --> 00:48:05,820 तो यह एक उपयोगी व्यायाम नहीं है. 1076 00:48:05,820 --> 00:48:07,450 तो चलो इस फिर से करते हैं. 1077 00:48:07,450 --> 00:48:10,069 मेरे पास वापस जाओ फिर से शीर्ष और प्रकार रन. 1078 00:48:10,069 --> 00:48:12,110 और यह कार्यक्रम कह रहा है कि debugged किया जा रहा है 1079 00:48:12,110 --> 00:48:14,109 पहले से ही शुरू कर दिया है, शुरू से ही शुरू कर दिया. 1080 00:48:14,109 --> 00:48:15,420 हाँ, चलो फिर से यह करते हैं. 1081 00:48:15,420 --> 00:48:22,000 और इस बार, की अगली करते हैं अगले, अगले, अगले, अगले, 1082 00:48:22,000 --> 00:48:24,180 लेकिन अब चीजें दिलचस्प हो. 1083 00:48:24,180 --> 00:48:27,760 अब मैं में कदम चाहते हैं स्वैप, तो मैं अगले प्रकार नहीं है. 1084 00:48:27,760 --> 00:48:34,380 मैं यह सूचना अब कदम टाइप करें, और noswap.c लाइन 33 तक मुझे कूद पड़ा है. 1085 00:48:34,380 --> 00:48:37,240 मैं एडिट करने के लिए वापस जाना है, लाइन 33 क्या है? 1086 00:48:37,240 --> 00:48:40,500 जो वास्तविक पहला है स्वैप के अंदर कोड की लाइन. 1087 00:48:40,500 --> 00:48:44,150 कौन सा है, क्योंकि अब मैं कर सकता हूँ, अच्छा है एक तरह से चारों ओर ढकेलना और उत्सुक मिल 1088 00:48:44,150 --> 00:48:46,052 के रूप में क्या वहाँ में वास्तव में हो रहा है. 1089 00:48:46,052 --> 00:48:46,760 मुझे tmp मुद्रित करते हैं. 1090 00:48:46,760 --> 00:48:47,770 1091 00:48:47,770 --> 00:48:48,800 वाह. 1092 00:48:48,800 --> 00:48:51,438 क्यों tmp कुछ है पागल, फर्जी कचरा मूल्य है? 1093 00:48:51,438 --> 00:48:54,579 1094 00:48:54,579 --> 00:48:56,120 दर्शक: यह initialized नहीं किया गया है. 1095 00:48:56,120 --> 00:48:57,150 स्पीकर 1: यह initialized नहीं किया गया है. 1096 00:48:57,150 --> 00:49:00,270 और वास्तव में, यदि आप एक प्रोग्राम चलाते हैं, आप स्मृति की एक पूरी गुच्छा दिया हो 1097 00:49:00,270 --> 00:49:03,392 ऑपरेटिंग सिस्टम के द्वारा, लेकिन आप कोई भी मान प्रारंभ नहीं किया है, 1098 00:49:03,392 --> 00:49:05,600 इसलिए जो कुछ बिट्स आप कर रहे हैं यह है, भले ही यहाँ देख 1099 00:49:05,600 --> 00:49:07,770 इस पागल बड़ा नकारात्मक संख्या, सिर्फ मतलब 1100 00:49:07,770 --> 00:49:10,750 उन है कि अवशेष से कर रहे हैं कि राम के कुछ पिछले उपयोग, 1101 00:49:10,750 --> 00:49:13,050 मैं नहीं है, भले ही अपने आप को अभी तक यह जरूरत है. 1102 00:49:13,050 --> 00:49:17,086 तो अब मैं आगे और प्रकार में जाने के लिए जा रहा हूँ इसके बाद, और मैं अब प्रिंट tmp टाइप करें, 1103 00:49:17,086 --> 00:49:17,835 मैं क्या देखना चाहिए? 1104 00:49:17,835 --> 00:49:19,570 1105 00:49:19,570 --> 00:49:23,360 जो भी एक के मूल्य था, एक बस, पहला तर्क है 1106 00:49:23,360 --> 00:49:25,550 एक्स जैसे पहले थी बात में पारित किया जा रहा 1107 00:49:25,550 --> 00:49:30,450 इसलिए एक और एक्स एक ही होना चाहिए, इसलिए प्रिंट tmp मुझे एक प्रिंट चाहिए. 1108 00:49:30,450 --> 00:49:36,360 >> तो क्या आप समस्या सेट में देखेंगे तीन, GDB पर एक तरह की एक ट्यूटोरियल है 1109 00:49:36,360 --> 00:49:40,020 लेकिन यह शुरुआत है कि एहसास एक उपकरण पर एक नज़र की है कि वास्तव में होगा 1110 00:49:40,020 --> 00:49:42,774 आप समस्याओं को सुलझाने में मदद इतना अधिक प्रभावी ढंग से. 1111 00:49:42,774 --> 00:49:44,690 हम अंत में कर रहे हैं क्या बुधवार को क्या करने जा 1112 00:49:44,690 --> 00:49:48,180 कुछ परतें वापस छील करने के लिए शुरू कर रहा है और कुछ प्रशिक्षण पहियों को हटा दें. 1113 00:49:48,180 --> 00:49:50,496 यही बात बुलाया स्ट्रिंग कि हम कुछ समय के लिए उपयोग किया है 1114 00:49:50,496 --> 00:49:53,370 हम धीरे धीरे कि दूर ले जा रहे हैं और आप के बारे में बात करना शुरू 1115 00:49:53,370 --> 00:49:55,725 कुछ अधिक esoterically * चार के रूप में जाना जाता है, 1116 00:49:55,725 --> 00:49:59,550 लेकिन हम यह अच्छा क्या करने जा रहे हैं और धीरे पहली बार में, यहां तक ​​कि संकेत हालांकि, 1117 00:49:59,550 --> 00:50:02,730 वे कहते हैं, के रूप में कुछ कर सकते हैं अगर साथ दुर्व्यवहार बहुत बुरी बातें, 1118 00:50:02,730 --> 00:50:06,040 से थोड़ी claymation को देखकर हमारे दोस्त स्टैनफोर्ड से निक Parlante 1119 00:50:06,040 --> 00:50:09,670 विश्वविद्यालय, कंप्यूटर में एक प्रोफेसर इस पूर्वावलोकन एक साथ रखा है जो विज्ञान 1120 00:50:09,670 --> 00:50:11,075 इस बुधवार क्या आ रहा है की. 1121 00:50:11,075 --> 00:50:12,196 1122 00:50:12,196 --> 00:50:13,400 >> [वीडियो प्लेबैक] 1123 00:50:13,400 --> 00:50:13,900 हे, Binky. 1124 00:50:13,900 --> 00:50:14,930 1125 00:50:14,930 --> 00:50:15,780 जागो. 1126 00:50:15,780 --> 00:50:17,240 यह सूचक मनोरंजन के लिए समय है. 1127 00:50:17,240 --> 00:50:18,260 1128 00:50:18,260 --> 00:50:19,350 >> कि क्या हो रहा है? 1129 00:50:19,350 --> 00:50:21,150 संकेत के बारे में जानें? 1130 00:50:21,150 --> 00:50:22,050 ओह, गुडी! 1131 00:50:22,050 --> 00:50:22,897 1132 00:50:22,897 --> 00:50:23,730 [अंत वीडियो प्लेबैक] 1133 00:50:23,730 --> 00:50:25,396 स्पीकर 1: यह है कि बुधवार को आप इंतजार कर रहा है. 1134 00:50:25,396 --> 00:50:26,440 हम आपको फिर देखेंगे. 1135 00:50:26,440 --> 00:50:27,106 [वीडियो प्लेबैक] 1136 00:50:27,106 --> 00:50:30,420 -और अब, गहरे विचार, Daven Farnham द्वारा. 1137 00:50:30,420 --> 00:50:33,980 1138 00:50:33,980 --> 00:50:35,900 >> क्यों हम सी सीख रहे हैं? 1139 00:50:35,900 --> 00:50:36,785 क्यों नहीं एक +? 1140 00:50:36,785 --> 00:50:38,550 1141 00:50:38,550 --> 00:50:40,910 >> [हंसी] 1142 00:50:40,910 --> 00:50:42,160 >> [अंत वीडियो प्लेबैक]