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 SPEAKER 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 خوادم والأسلاك وهكذا دواليك، انها نوع من الصلة بشكل عرضي، 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 في gedit من أجل كتابة البرامج، اكتب الأوامر، وهكذا دواليك، 68 00:03:39,460 --> 00:03:43,690 وهذا هو في الواقع، ولها كان لأسابيع، باش، B-A-S-H. 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 أنا يمكن فعلا استخدام بناء جملة هذا تماما مثل C. انها ليست تماما نفس، 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 يمكنك كتابة الواقع برنامج، وليس في C، وليس في جاوة، 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 لعبة صغيرة اعتدت على اللعب مع واحدة من TFS CS50 السابقين 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 >> -Hello. 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: --that أنا would-- حتى أن جهاز الكمبيوتر الخاص به 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 لذلك هناك بعض بناء الجملة التي تبدو قليلا مألوفة، على الأقل من C 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 آخر منقوطة، باش -c:. 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 * -rf، 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 RM يفعل ما، بالطبع؟ 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 و-f هو أسوأ من كل منهم. 175 00:08:31,040 --> 00:08:32,580 أحد يعرف ما -f يعني هنا؟ 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 أو وظيفة تسمى X، ولكن بعد خداع الكمبيوتر في تنفيذ 186 00:08:56,810 --> 00:09:00,030 خارج حدود التي وظيفة، أبعد من ذلك منقوطة، 187 00:09:00,030 --> 00:09:04,430 هل يمكن حقا خداع جهاز كمبيوتر في تنفيذ شيء من هذا القبيل RM -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 يحصل Windows مرة أخرى نسبيا ورطتها 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 أنا بدلا بصدد ارسال لكم هذا خفي المظهر الشيء مع -rf 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 وإلا إذا كنت قد تكوين الواقع للسماح شيء مثل SSH في ذلك، 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 أصدرت عالم لينكس بالفعل عدد من إصلاحات لفيدورا وأوبونتو 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 لأنه ما لم كنت قد العبث مع الأجهزة 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 من جدار النار وغيرها من التقنيات. 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 أساسا أن حقن بعض الأصفار ومنها إلى كل برنامج يجمع عليه 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 كنت على ثقة بأن حرفيا كل برنامج على جهاز Mac أو PC غير جديرة بالثقة. 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 استطعنا أن يكون سريعا جدا مع خدش، والآن مع C، 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 وفي نهاية المطاف البرمجة يبني تستخدمها. 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 التحدي الأول هو فقط ليتأقلم نفسك لبعض رمز لدينا كتب. 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 ولكنني اعتقدت C كان وجوه المنحى البرنامج. 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 لغة مثل C، وإنما هو لا يزال الإجرائية في نهاية المطاف. 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 و JavaScript 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 >> الجمهور: ن ن تسجيل؟ 391 00:18:19,360 --> 00:18:20,819 >> رئيس 1: ن ن تسجيل، والحق. ن ن تسجيل. 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 حتى ن المربعة. ن تربيع هو أكبر من هذا، 396 00:18:30,610 --> 00:18:34,650 وحتى لو انها ليست واضحة تماما، نعلم أن سجل ن أصغر من ن، 397 00:18:34,650 --> 00:18:36,910 حتى إذا كنت تفعل مرات ن شيء أصغر من ن، 398 00:18:36,910 --> 00:18:38,680 انها سوف تكون أقل من مربع ن. 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 كان أسرع، ولكن الموضوع الذي بدأ في الظهور في الاسبوع الماضي كان هذا المقايضة. 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 ولماذا قلنا انها ن ن تسجيل. 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 >> لذلك اسمحوا لي مجرد خطوة من خلال هذا دون الاستفاضة النقطة كثيرا. 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 >> حتى الآن لماذا تم الكشف عن هذا في نهاية المطاف، خصوصا إذا كان n واللوغاريتمات أكثر 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 ذلك قلنا O (1)، وهذا كيف سوف تعبر عن هذا. 500 00:22:49,960 --> 00:22:51,480 T، يكون مجرد إدارة الوقت. 501 00:22:51,480 --> 00:22:54,150 ن هو حجم المدخلات، لذلك T (ن)، مجرد وسيلة الهوى 502 00:22:54,150 --> 00:22:56,330 القول على التوالي وقت معين من حجم المدخلات ن 503 00:22:56,330 --> 00:23:00,220 سيكون على النظام من وقت ثابت، في O (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 T لماذا؟ 507 00:23:06,250 --> 00:23:09,440 508 00:23:09,440 --> 00:23:12,665 يمكنك النوع من الغش هنا و الإجابة على سؤالي دوريا. 509 00:23:12,665 --> 00:23:14,770 510 00:23:14,770 --> 00:23:17,900 حتى إذا كان الوقت يعمل في عموما نقول فقط هو T (ن). 511 00:23:17,900 --> 00:23:18,950 512 00:23:18,950 --> 00:23:22,490 والآن أنت نوع من بونت هنا و قال: حسنا، مجرد فرز النصف الأيسر، 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 T لماذا؟ 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 ثم وهذا هو T أخرى (ن / 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 T (ن) هو مجرد وقت تشغيل T (ن / 2)، T زائد (ن / 2)، غادر النصف والنصف الأيمن، 527 00:23:51,140 --> 00:23:55,360 بالإضافة إلى O (ن)، الذي هو على الارجح ن الخطوات، ولكن ربما، إذا أنا باستخدام إصبعين، 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 اسمحوا لي أن أخوض في gedit واتخاذ ننظر في بعض شفرة المصدر اليوم، 548 00:24:58,420 --> 00:24:59,930 خاصة في هذا المثال هنا. 549 00:24:59,930 --> 00:25:03,709 سيجما 0، الذي يضيف على ما يبدو أرقام واحد من خلال ن. 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 ويقول ن الباحث --and انها سوف تعود على كثافة العمليات، 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 سيغما هو اسم، ويستغرق وم متغير بدلا من ن. 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 لا سيحدث لأنني غير دائما ما تكون أكبر OK 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 وخاصة بتطبيق المتغيرات، حقا، ل الأقواس المعقوفة التي تشمل لهم. 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 حلقة For، حلقة في حين، وهل حين حلقة، فقط تفعل شيئا مرة أخرى 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 حسنا، ربما لا تمانع تهب، ولكن هذا النوع من أكثر جنسية، كل الحق، 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 مجمل هذه الفكرة، إضافة الأرقام من 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 إلى m ناقص 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 حتى يمكن لكم نوع من فقط .. هذا هو مثل، إذا كنت فقط 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 ن، ما هو سيجما لل ن، ما سيجما من ن؟ 705 00:31:39,116 --> 00:31:40,990 كنت طالبا ما سيغما ن، ما سيغما 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 دعونا إعادة ترجمة البرنامج، حفظه، إعادة ترجمة البرنامج، 730 00:32:52,920 --> 00:33:00,450 ثم استعداد ./sigma-1 التكبير، يرجى إدخال عدد صحيح موجب، 50. 731 00:33:00,450 --> 00:33:02,180 732 00:33:02,180 --> 00:33:04,430 كم كنت على استعداد لفيس يصل إلى رؤية ذلك؟ 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 إنهاء لخطهم الوحيد لل كود ذاتهما يدعو مرارا وتكرارا 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 ويمكن استخلاص هذا النوع من بالصور. 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 >> وفي الواقع، إذا كانت هذه الصواني الخضراء من أننبرغ تمثل تلك الذاكرة، 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 هم على دراية بعض من جوجل النكات الداخل، وإذا ذهبت إلى Google 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 أنها ربما تستهلك عدد غير بديهي من الأسطر من التعليمات البرمجية 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 >> SPEAKER 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 وبعض أكواب أننا اقترضت من أننبرغ اليوم. 868 00:38:23,345 --> 00:38:24,178 >> SPEAKER 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 >> SPEAKER 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 ذلك في الواقع، وهذا شفرة المصدر هنا في C هو ممثل لتلك بالضبط. 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 وهكذا نستخدم ثلث كوب، مكالمة أنه تمة، T-M-P من الاتفاقية، 916 00:40:15,260 --> 00:40:19,370 ووضع محتويات OJ في ذلك، ثم مبادلة كوب واحد، 917 00:40:19,370 --> 00:40:22,610 ثم وضع في الجريدة الرسمية كوب الأصلي، وبالتالي 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 أنا أولا يعلن الباحث العاشر يحصل واحد، وكثافة العمليات ذ يحصل على اثنين. 928 00:40:52,020 --> 00:40:54,930 حتى التفكير في تلك كما OJ والحليب على التوالي. 929 00:40:54,930 --> 00:40:57,100 وبعد ذلك يكون مجرد printf قائلا x هو هذا 930 00:40:57,100 --> 00:41:00,120 و y هو هذا، فقط حتى يمكنني ترى بالعين المجردة ما يحدث. 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 وأنا بطباعة x و y مرة أخرى. 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 إجراء أي تبادل، وتشغيل أي المبادلة التكبير على الانتاج هنا. 938 00:41:24,690 --> 00:41:28,320 أدخل x هو 1، ص هو 2، المقايضة تبادلت. 939 00:41:28,320 --> 00:41:32,700 س لا يزال 1، و y لا يزال 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 قليلا من الذاكرة لأي المحلية المتغيرات مثل x و y التي لديها الرئيسي، 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 له أي تأثير على x و y، على الرغم من مررت x و y إلى وظيفة المبادلة. 966 00:43:05,560 --> 00:43:08,750 ما هي الكلمة الأساسية هنا أن قد شرح مبسط؟ 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 حتى النطاق، نتذكر فيها لدينا x و y أعلن. 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 من أننبرغ، وهذا قطعة الثانية من التعليمات البرمجية. 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، GNU المصحح، 1002 00:44:31,630 --> 00:44:34,040 لديه نفسها في مجمله مجموعة من الميزات التي يمكن في الواقع 1003 00:44:34,040 --> 00:44:38,160 دعونا نفهم الحالات مثل هذا، ولكن أكثر مقنع، 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 انا ذاهب الى ضرب تحكم-L الحصول على ما يصل في أعلى هناك. 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 ضبط L مسح screen-- السماح لي بالرحيل قدما واكتب "كسر الرئيسي"، وبالتالي، 1027 00:45:42,100 --> 00:45:45,743 عندما كنت هاهنا، وتحديد ما هو دعا نقطة فاصل في noswap.c، 1028 00:45:45,743 --> 00:45:51,270 خط 16، وهو حيث GDB أحسب برنامجي الواقع 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 يكسر برنامجي في خط I وقال 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 لبرنامجي في gedit، تلاحظ أن هذا هو الواقع 1040 00:46:27,800 --> 00:46:29,280 السطر الأول جدا من التعليمات البرمجية. 1041 00:46:29,280 --> 00:46:31,240 هناك خط 16 في gedit. 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 أحصل على بعض قيمة وهمية هناك من الصفر، لأنه لم يتم تهيئة العاشر بعد. 1047 00:46:50,730 --> 00:46:54,760 لذلك أنا ذاهب لكتابة المقبل، أو، إذا كنت تريد أن تكون نزوة، فقط لN المقبل. 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 والآن أستطيع أن اكتب المقبل، وهناك x هو 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 ولكن اذا واصلتم في الاعتبار، من قبل نظرة عابرة ذهابا وإيابا في التعليمات البرمجية 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 وانها قائلا إن البرنامج الذي يتم تصحيحه 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 إذا أعود إلى gedit، ما هو خط 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 اسمحوا لي طباعة تمة. 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 لماذا يكون بعض تمة مجنون، قيمة القمامة وهمية؟ 1093 00:48:51,438 --> 00:48:54,579 1094 00:48:54,579 --> 00:48:56,120 الجمهور: لم يتم تهيئة و. 1095 00:48:56,120 --> 00:48:57,150 رئيس 1: لم يتم تهيئة و. 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 أن تلك هي بقايا من بعض الاستخدام السابق من أن RAM، 1101 00:49:10,750 --> 00:49:13,050 على الرغم من أنني لم نفسي الحاجة إليها بعد. 1102 00:49:13,050 --> 00:49:17,086 وحتى الآن أنا ذاهب إلى المضي قدما ونوع المقبل، وإذا أنا الآن اكتب تمة الطباعة، 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 لذلك، وينبغي أن يكون x نفسه، لذلك يجب طباعة طباعة تمة لي واحد. 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 أكثر شيء باطني المعروف شار *، 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 >> [VIDEO قراءة] 1123 00:50:13,400 --> 00:50:13,900 يا، بينكي. 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 [END تشغيل الفيديو] 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 [VIDEO قراءة] 1136 00:50:27,106 --> 00:50:30,420 -و الآن، الأفكار العميقة، بواسطة Daven فارنهام. 1137 00:50:30,420 --> 00:50:33,980 1138 00:50:33,980 --> 00:50:35,900 >> -لماذا نحن تعلم C؟ 1139 00:50:35,900 --> 00:50:36,785 لماذا لا A +؟ 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 >> [END تشغيل الفيديو]