[عزف الموسيقى] رئيس 1: كل الحق، وهذا هو CS50، وهذا هو بداية الاسبوع الأربعة، وكما كنت قد سمعت أو قراءة، وقد ينتهي العالم. يحدث في جميع أنحاء الإنترنت وقد المعرفة والوعي لوجود خطأ في أحد البرامج، و لغة البرمجة دعا باش. وقد وصفت هذه رائعة كما Shellshock، أو الباب باش، لكن مثل هذه المواد لم يكن من غير المألوف. في واقع الأمر، وكثير منهم جلب ذكريات الخلفية Heartbleed، التي كنت قد لاحظت في اضغط العودة في الربيع الماضي، والتي وبالمثل مثيرة إلى حد ما. الآن لأولئك منكم هنا اليوم، كم لديك، حتى لو كنت لا تفهم ما انها كل شيء، سمعت من Shellshock؟ كل الحق، وكم منكم لدينا أجهزة الكمبيوتر التي هي عرضة؟ حسنا، ينبغي أن يكون هناك الآن، أكثر بكثير يد حتى الآن، لأسباب سنرى. دعونا نلقي نظرة على ما هو يجري في وسائل الإعلام ثم شرح ذلك قليلا هنا بالنسبة لنا من الناحية الفنية. المتحدث 2: خبراء الأمن أن يكون حذر من أن يمكن عيب خطير يكون على وشك أن تؤثر على مئات الملايين من مستخدمي الإنترنت في العالم. ذلك بالضبط ما هو الخطأ وهذا ما كان يطلق عليها اسم Shellshock، وماذا يفعل؟ حسنا، ومن المعروف أيضا باسم Shellshock علة باش، فإنه يستغل البرنامج. قراصنة استخدام الفيروسات لفحص عرضة أنظمة تشغيل لينكس ويونكس أنظمة التشغيل ثم نقل العدوى لهم. باش هو قذيفة سطر الأوامر. هذا يتيح للمستخدمين أوامر القضية لإطلاق برامج وميزات ضمن برامج عن طريق الكتابة في النص. انها عادة ما تستخدم من قبل المبرمجين، و لا ينبغي أن تكون مفتوحة إلى العالم الأوسع، على الرغم من التغييرات التي Shellshock. حسنا، worringly بعض المحللين تحذير يمكن أن يكون تهديدا أكبر، لأن Shellshock يسمح الكامل السيطرة على الجهاز المصاب، في حين Heartbleed سمح فقط قراصنة للتجسس على أجهزة الكمبيوتر. انها خطيرة للغاية، انها تم تصنيف 10 من 10 لشدة من قبل الوطني قاعدة بيانات الضعف. 2/3 جميع خوادم الشبكة هي في المخاطر، بما في ذلك بعض أجهزة الكمبيوتر ماك. أيضا، تأكد من أنك تصحيح النظم الخاصة بك الآن. أي شخص استضافة موقع على التوالي أنظمة التشغيل المتأثرة يجب اتخاذ إجراءات في أقرب وقت ممكن. أي شخص يمكن أن تحمله ينبغي أن ننظر لرصد وتطبيق على شبكة الإنترنت الجدران النارية لأبحث عن أي هجمات. SPEAKER 3: أسوأ شيء يمكن أن يحدث هو أن شخصا ما من شأنه أن كتابة التعليمات البرمجية التي سوف تذهب تلقائيا والمسح الضوئي إن الإنترنت ويؤثر كل هذه الحواسيب. وعندما يفعلون ذلك، حسنا، أسوأ شيء يمكنهم القيام به هو مجرد حذف كل شيء، أو تغلق مواقع أسفل. حتى يمكننا أن نرى الضرر من وجهة النظر هذه، حيث سيكون لدينا شعب الخبيثة الذين يقررون فقط لإثارة الفوضى من خلال جلب أنظمة أسفل أو حذفها ملفات، وأشياء من هذا القبيل. المتحدث 2: يقول البعض هذا هو واحد من أصعب لقياس الخلل في سنوات، و قد يستغرق أسابيع أو حتى أشهر لتحديد أثرها في نهاية المطاف. رئيس 1: لذلك كل هذا صحيح، ولكن الشيء المضحك هو، وكلها تقريبا من الصور التي شاهدتها للتو، ربما باستثناء لوحة المفاتيح، له علاقة مع أي شيء علة على الإطلاق. خوادم والأسلاك وهكذا دواليك، انها نوع من الصلة بشكل عرضي، ولكن في صميم انها فعلا جميلة دراية بما يجري هنا. في الواقع، اسمحوا لي أن أذهب إلى لدينا الأجهزة CS50. اسمحوا لي المضي قدما وتعظيم إطار المحطة الطرفية هنا. ويا رفاق وقد تم استخدام هذا، أو النسخة جزءا لا يتجزأ منها، في gedit من أجل كتابة البرامج، اكتب الأوامر، وهكذا دواليك، وهذا هو في الواقع، ولها كان لأسابيع، باش، B-A-S-H. هذا هو بورن مرة أخرى قذيفة، الذي هو مجرد طريقة أخرى للقول، هذا هو البرنامج الذي لديه امض موجه، على نحو فعال، الذي يجلس هناك في انتظار لإدخال لك. وأنه من الأمر عبر واجهة سطر الذي تم يا رفاق تشغيل الأوامر و تجميع في نهاية المطاف ثم تشغيل البرامج. ولكن باش هو أيضا البرمجة اللغة بمعنى التالية. هل تعلم أن هناك أوامر مثل ومؤتمر نزع السلاح ليرة سورية وأيضا رنة وغيرها، ولكن يمكنك تحديد الأوامر الخاصة بك بواسطة تنفيذها في باش. الآن نحن لن الخوض في التفاصيل العظيم لباش لغة البرمجة، ولكن نعرف، على سبيل المثال، أنه في لحظة، ليس هناك أمر يسمى "مرحبا." لذلك يمكن العثور عليها في واحدة من هذه الحزم. ليس تثبيته على جهاز الكمبيوتر الخاص بي. نسأل بالمسؤول. ولكن إذا أريد أن يكون هناك برنامج ودعا "مرحبا" في باش في بلدي أو موجه، أنا يمكن فعلا استخدام بناء جملة هذا تماما مثل C. انها ليست تماما نفس، ولكن يبدو مشابها جدا ل وظيفة، وإن كان في عداد المفقودين بعض التفاصيل. لا شيء يبدو أن يحدث، ولكن الآن إذا كنت اكتب "مرحبا" يمكنك كتابة الواقع برنامج، وليس في C، وليس في جاوة، ليس في برمجة أخرى اللغة، ولكن في باش نفسها. الآن المفتاح هنا هو أنني كتب اسم أردت أن تعطي هذا الأمر جديد، والأقواس هي أيضا رمزية من هذا كونه وظيفة. بوصفها جانبا، يمكنك أيضا القيام المرح الأشياء، في واقع الأمر، حتى على نظام التشغيل ماك، هذا هو برنامج يسمى المحطة. يأتي بناؤه إلى أي شخص كمبيوتر يحتوي على ماك في هذه الغرفة، ويمكنك أن تفعل أشياء مماثلة في ماك نظام التشغيل، ولكن يمكن أن تذهب أبعد من ذلك أكثر. وهذا عرضية قليلا، ولكن هذا نوع من المرح. تذكرت هذا الصباح، عند التفكير من خلال هذا، لعبة صغيرة اعتدت على اللعب مع واحدة من TFS CS50 السابقين حيث أي وقت وقال انه يمشي بعيدا عن لوحة المفاتيح له مع شاشة مقفلة له، وأود أن تنفيذ أمر مثل this-- "يقول مرحبا." والآن أي وقت عاد إلى بلده لوحة المفاتيح بعد أن مسح الشاشة وكان يجلس إلى أسفل، محاولة للقيام ببعض الأعمال، سرد محتويات directory-- له [قراءة الصوت] -Hello. مرحبا. رئيس 1: لذا، في العدالة، لم يكن في الواقع "مرحبا". كان من عادة شيء أقرب إلى that-- [قراءة الصوت] -Beep. رئيس 1: --that أنا would-- حتى أن جهاز الكمبيوتر الخاص به أقسم له في أي وقت كان في الواقع جلست في لوحة المفاتيح له. وبسرعة جدا انه أحسب عدم ترك الشاشة له مقفلة. لكن هذا يشير إلى نوع من المرح الغبية التي قمت يمكن أن يكون مع شيء من هذا القبيل باش. لكنه أكثر من ذلك بقليل جدية، للتأكد، من ذلك. وفي الواقع، هذا هو واحد من معظم الحشرات الخطيرة وطويلة الأمد التي ضربت العالم حقا عالميا. وكان هذا الخطأ حول لنحو 20 عاما، وسوف يكون مجرد ضرب في لحظة من بساطتها النسبية. لذلك هذا هو ممثل الأمر الذي إذا تملك ماك، حرفيا الآن عندما يكون لديك غطاء مفتوحا، يمكنك أن تجرب كتابة في هذا برنامج يسمى المحطة. محطة تحت تطبيقات Utilities-- لمرة واحدة، مستخدمي ويندوز لا يجب أن تقلق بشأن هذا threat-- خاصة ولكن تلك التي كنت مع أجهزة ماكينتوش يمكنك كتابة هذا إلى نافذة مثل سأفعل هنا، وإذا لم اكتب إن في هذا البرنامج ودعا الطرفي، مثل سأفعل الآن، إذا رأيت كلمة "عرضة" جهاز الكمبيوتر الخاص بك عرضة للاستغلال. الآن ماذا يعني ذلك في الواقع؟ وهذا باعتراف الجميع بعض تركيب مجنون جدا، ولكن دعونا على الأقل استخلاص بعض الجوانب المثيرة للاهتمام. لذلك هناك بعض بناء الجملة التي تبدو قليلا مألوفة، على الأقل من C والبرمجة بشكل عام. أرى بعض قوسين، الفاصلة المنقوطة، الأقواس المعقوفة، وكذا، ولكن تبين أن هذا شيء غبي هنا باللون الأصفر هو في الأساس وظيفة أن لا يفعل شيئا. وسائل القولون لا تفعل شيئا، و الفاصلة المنقوطة تعني يتوقف عن فعل أي شيء. حتى داخل هذه الأقواس المعقوفة، حقيقة أن لدي تساوي التوقيع على اليسار، وهذا هو خلق أساسا أمر، أو متغير، دعا س، وإسناد ذلك أن الشيء الأصفر من التعليمات البرمجية هناك. يمكن أن يكون شيئا مثل "صدى مرحبا "أو" القول زمارة "أو شيء من هذا أقرب إلى ذلك. لكن لاحظ إذا عينيك يهيمون على وجوههم أيضا على الحق، هناك المزيد لهذا الخط من مجرد نهاية ذلك منقوطة. "صدى ضعفا"، ثم أبعد من ذلك هناك أكثر من ذلك. آخر منقوطة، باش -c:. حتى قصة قصيرة طويلة، هذا الخط من التعليمات البرمجية كافية للقاهرة كمبيوتر هذا عرضة لتفعل شيئا الذي تريد أن تفعله، لأن هناك خطأ في باش حيث على الرغم من باش كان من المفترض أن تتوقف خطوط القراءة من حق القيادة هناك بعد النص الأصفر، ل20 زائد العام علة القديم، وكان باش الواقع قراءة أبعد من ذلك منقوطة وجميلة القيام بكثير ما قيل. فما هي الآثار المترتبة لأنه في نهاية المطاف؟ قلت للتو "صدى مرحبا" أو "صدى عرضة" ولكن ماذا لو كنت فعلت شيئا في الواقع خبيثة، مثل RM * -rf، التي قد لا يكون ل من أي وقت مضى كتبته من قبل، وبصراحة كنت على الارجح لا ينبغي في وقت قريب جدا، لأنك يمكن أن تفعل الكثير من الضرر به. لماذا؟ RM يفعل ما، بالطبع؟ يزيل. * يعني ماذا؟ جميع. لذلك هو ما يسمى بطاقة البرية، لذلك يعني حذف كل شيء في الدليل الحالي. -r يحدث يعني العودية، وهو ما يعني إذا ما كنت حذف هو دليل، وهناك داخل وغيرها من الملفات والدلائل الأخرى، الغوص بشكل متكرر إلى هناك وحذف كل ذلك. و-f هو أسوأ من كل منهم. أحد يعرف ما -f يعني هنا؟ القوة. حتى إجبار الوسائل، حتى إذا كان هذا هو فكرة سيئة، تفعل ذلك من دون دفع لي لمزيد من التأكيد. لذلك، كما تعلمون، نحن نضحك على هذا، ولكن بصراحة، وأنا ربما اكتب هذا عدة مرات يوم واحد، لأن الواقع غير انها اسرع وسيلة ل حذف مجموعة كاملة من الاشياء. ولكن حتى أنا قد فعلت بعض الأضرار. ولكن إذا كانت لخداع جهاز كمبيوتر إلى تحديد بعض متغير غبي أو وظيفة تسمى X، ولكن بعد خداع الكمبيوتر في تنفيذ خارج حدود التي وظيفة، أبعد من ذلك منقوطة، هل يمكن حقا خداع جهاز كمبيوتر في تنفيذ شيء من هذا القبيل RM -rf أو الأمر البريد الإلكتروني أو الأمر نسخ. أي شيء حرفيا يمكنك أن تفعل مع الكمبيوتر، سواء كان حذف الملفات، إنشاء ملفات، إغراق شخص ما، مهاجمة بعض خادم عن بعد، إذا كنت تستطيع التعبير عنه مع الأمر، يمكن خداع جهاز كمبيوتر في القيام بذلك. الآن ما هو مثال كيف يمكن القيام بذلك؟ حسنا، هناك الكثير من أجهزة الكمبيوتر على الانترنت باش التوالي. جميع مستخدمي ماك لنا من بين هذه الدول. وهناك الكثير من خوادم لينكس من بين لهم أيضا، وخوادم يونكس. يحصل Windows مرة أخرى نسبيا ورطتها إلا إذا كنت قد قمت بتثبيت برنامج خاص. الآن الكثير من الخوادم، ل المثال، تشغيل خوادم الويب، في واقع الأمر لينكس وربما كان معظم نظام التشغيل شعبية لتشغيلها على أجهزة الكمبيوتر على الإنترنت التي تخدم ما يصل صفحات الويب. الآن كما سنرى لاحقا في الفصل الدراسي، عندما يمكنك إرسال طلب من لديك كروم browser--، إنترنت إكسبلورر، whatever-- إلى ملقم بعيد، اتضح أنه على الرغم من كتبته فقط www.example.com، ومتصفحك يرسل رسالة هذا هو أكثر قليلا غامضة، مثل هذا. ولكن لاحظت شيئا قليلا غريب. خطوط الأولين أنا لم أر قط من قبل، لكنها لا تبدو تهديد خاص. لكن لاحظ ما كنت سرقت للخط الثالث هنا. إذا كان رجل سيء لإرسال رسالة مثل هذا من جهاز الكمبيوتر الخاص به إلى ماك أو المعرضين للخطر عرضة خادم لينكس، الشيء المضحك هو أن باش، بهذه البساطة موجه الأوامر قليلا، موجود في كل مكان وغالبا ما يكون وتستخدم أساسا لتنفيذ محتويات الرسالة التي تتلقاها. وهذا المنطق، يمكنك خداع خادم الويب، وبالتالي، عن طريق إرسال شيء من هذا القبيل عامل المستخدم، والتي عادة ما من المفترض أن يقول اسم متصفحك. عامل المستخدم كروم، عامل المستخدم الإنترنت اكسبلورر، فايرفوكس وكيل المستخدم، وهذا هو مجرد المتصفح طريقة تحديد نفسها. ولكن إذا كان الرجل سيئ جدا يقول بذكاء، ملم ملم، وأنا لن اقول لكم ما هو متصفحي، أنا بدلا بصدد ارسال لكم هذا خفي المظهر الشيء مع -rf RM * في ذلك، يمكنك خداع حرفيا خادم الويب عرضة على الإنترنت إلى تنفيذ ذلك بالضبط في هناك لحذف كافة الملفات. وبصراحة، هذا ليس حتى أسوأ ما في الأمر. يمكنك أن تفعل أي شيء. هل يمكن بدء توزيعها الحرمان من الخدمة الهجوم إذا قمت بإرسال هذه الرسالة إلى باقات كاملة من خوادم الويب وكان كل منهم ثم ينزل، ل المثال، على خوادم Harvard.edu، ويمكنك فرز من الدوي هيك للخروج منها من قبل حركة مرور الشبكة التي كانت تسبب خلاف ذلك هذا الرجل سيئة. لذلك، قصة قصيرة طويلة، تقريبا الجميع في هذه القاعة الذي يملك ماك هو عرضة لذلك. الجانب المشرق هو أن إلا إذا كنت تشغيل خادم الويب على جهاز الكمبيوتر المحمول الخاص بك، وإلا إذا كنت قد تكوين الواقع للسماح شيء مثل SSH في ذلك، كنت آمنة فعلا. انها ضعفا، ولكن ليس هناك واحد يحاول أن يحصل في الكمبيوتر المحمول، حتى تتمكن من نوع من الاطمئنان. ومع ذلك، فإن أبل قريبا يكون التحديث على إصلاح هذا. أصدرت عالم لينكس بالفعل عدد من إصلاحات لفيدورا وأوبونتو وإصدارات أخرى من لينكس، بل و إذا قمت بتشغيل تحديث 50 في الأجهزة، حتى ذلك أيضا سيكون تحديث وتصحيح. ولكن هذا أيضا ليس لديها كان حقا ضعفا، لأنه ما لم كنت قد العبث مع الأجهزة وجعل الكمبيوتر المحمول علنا يمكن الوصول إليها على شبكة الانترنت، وهي ليست افتراضيا، كنت قد كان في الواقع غرامة بسبب من جدار النار وغيرها من التقنيات. ولكن هذا مثالا صارخا لوجود خطأ أننا عشت عن حرفيا 20 سنوات، ومن يدري إذا كان شخص ما كل هذا الوقت لم يعرف عن ذلك؟ وفي الواقع، هذا هو واحد من التحديات الأساسية أننا سنرى في وقت لاحق فصل دراسي حول الأمن و هو تماما كما في العالم الحقيقي، الأخيار هم في غير مؤات. للحفاظ على الأشرار، لدينا ل تأكد من أن كل باب مقفل، أن كل نافذة آمن، أن كل نقطة الدخول الى المنزل آمنة للحفاظ على الأشرار. ولكن ماذا يفعل الرجل السيئ أن لا للتنازل فعلا منزلك وسرقة من أنت؟ انه أو انها فقط أن تجد واحدة مقفلة الباب، نافذة مكسورة واحد، أو شيء من هذا على هذا المنوال، وانها نفس الشيء في امن الكومبيوتر. يمكننا إرسال الملايين من الأسطر من التعليمات البرمجية البرمجة وتنفق مئات أو آلاف من ساعات في محاولة للحصول على انها صحيحة، ولكن إذا قمت بإجراء واحد فقط خطأ في دقة و يمكنك وضع النظام بأكمله و بالفعل في هذه الحالة، الإنترنت بأكمله والعالم في خطر. حتى إذا كنت ترغب في معرفة المزيد حول هذا، يذهب إلى هذا URL هنا. ليس هناك حاجة للعمل هذه الليلة إلا إذا كنت من بين هؤلاء أكثر راحة أن تم تشغيل الويب الخاص بك الخادم، وفي هذه الحالة يجب عليك، في الواقع، تحديث البرنامج. وهذا هو أيضا عنوان كلمة، والآن ورقة، بعد أن قمنا مرتبطة على موقع بالطبع لهذا اليوم. كان عليه من قبل زميل اسمه كين تومسون، الذي تم قبول مشهورة جدا جائزة في علوم الكمبيوتر، وألقى هذا الخطاب عدة سنوات قبل أساسا على هذا الموضوع نفسه. يسأل الناس السؤال، يجب عليك حقا الثقة، في نهاية المطاف، و برنامج كنت قد أعطيت؟ على سبيل المثال، لدينا جميعا تم كتابة البرامج، ولقد تم تجميع رنة لهم. ولعلمك، هل مكتوبة أي برامج لCS50 حيث هناك الباب الخلفي من نوع ما، هناك طريقة أن الرجل سيئة، وإذا تشغيل البرنامج، يمكن السيطرة على جهاز الكمبيوتر الخاص بك؟ ربما لا، أليس كذلك؟ ماريو، والجشع، والائتمان. هذه كلها برامج صغيرة جدا. كنت قد لتكون جميلة سيئة إذا كنت فعلا جعل الكمبيوتر الخاص بك عرضة كله بعد كتابة 10 أو 20 أسطر من التعليمات البرمجية، أو على الأقل يجهل بعض من تداعيات أمنية. الآن أقول إن مازحا، ولكننا سنشهد اليوم وهذا الاسبوع انها فعلا حقا، من السهل حقا أن تكون سيئة وجعل حتى برامج قصيرة الضعيفة. لكن في الوقت الراهن، على الأقل، وتحقيق ان السؤال المطروح هنا هو حول رنة في المجمع. لماذا نحن لم يثق رنة لمدة يومين أو ثلاثة الأسابيع الماضية؟ من الذي يقول أن كل من كتب رنة لم يكن لديها "لو" في حالة وجود أساسا أن حقن بعض الأصفار ومنها إلى كل برنامج يجمع عليه التي من شأنها أن تسمح له أو الوصول لها عندما يكون الكمبيوتر كنت نائما وغطاء جهاز الكمبيوتر المحمول مفتوح وجهاز الكمبيوتر الخاص بك يعمل بنظام التشغيل؟ أليس كذلك؟ لدينا هذا النوع من نظام الشرف الحق الآن حيث أننا على ثقة من أن رنة غير شرعي. كنت على ثقة من أن الجهاز هو شرعي. كنت على ثقة بأن حرفيا كل برنامج على جهاز Mac أو PC غير جديرة بالثقة. وكما يوحي هذا الخطأ بسيط، حتى لو انها ليست خبيثة، وهذا ليس على الاطلاق من المحتمل أن يكون هذا هو الحال. لذلك يجب أن تكون خائفة كما الجحيم. بصراحة، ليس هناك بسيطة حل لهذا البعض من نوع من الوعي المجتمعي من التعقيد المتزايد اننا بناء على أعلى أنظمة الكمبيوتر لدينا، وكيف عرضة بشكل متزايد نحن قد يكون جيدا جدا. الآن مع أن قال، الهروب. لذلك وضعت هو مشكلة اندلاع الثلاثة، و اندلاع هي لعبة من الأمس التي قد تذكر، ولكن بالنسبة لنا في مشكلة وضع ثلاثة، أنها تسمح لنا لاتخاذ أشياء العودة لأعلى درجة بحيث عندما نكتب برامج، حتى في إطار المحطة الطرفية مثل هذا، نحن يمكن تشغيلها في الواقع، في نهاية المطاف، برامج رسومية لا خلافا لأولئك الذين كنا قد الوصول إليها في خدش. لذلك هذا هو والموظفين تنفيذ اندلاع، الذي هو مجرد هذا الطوب كسر اللعبة، التي تقوم بنقل مجداف العودة وهكذا، ويمكنك ضرب الكرة ضد من الطوب الملونة حتى أعلى. لذلك هذا هو جلب لنا نوع من العودة إلى حيث استطعنا أن يكون سريعا جدا مع خدش، والآن مع C، تنفيذ منطقتنا واجهات المستخدم الرسومية. بل أكثر من ذلك، وهذا مجموعة مشكلة يمثل أول الذي منحنا لك مجموعة من التعليمات البرمجية. في واقع الأمر، أحمل صريح الانتباه إلى هذا الأمر، لاسيما بالنسبة لأولئك أقل راحة، وهذا مشكلة تعيين على الأقل للوهلة الأولى،، سوف تشعر وكأنك لقد اتخذنا عنه قليلا. لأننا قد أعطيت لك، لبعض من البحث والفرز المشاكل في pset، مجموعة من التعليمات البرمجية التي كتبنا، وزوجين من التعليقات التي تقول "للقيام" حيث لديك لملء الفراغات. حتى لا مخيف جدا، ولكن انها أول مرة نحن كنت تسليم التعليمات البرمجية التي تحتاج إلى أولا قراءة، فهم، ثم قم بإضافة ل واستكماله. ثم مع اندلاع، نحن في طريقنا لتفعل الشيء نفسه، مما يتيح لك المزيد من بضع عشرات من خطوط من التعليمات البرمجية التي، بصراحة، تعطيك الكثير من الإطار ل لعبة ولكن توقف قصيرة تنفيذ الطوب والكرة ومجداف، لكننا تنفيذ بعض الميزات الأخرى. وحتى ذلك للوهلة الأولى، مرة أخرى، خاصة إذا كان أقل راحة، قد تبدو شاقة للغاية و كنت أعتقد أن هناك الكثير من وظائف جديدة تحتاج إلى التفاف عقلك حولها، وهذا صحيح. ولكن نأخذ في الاعتبار، فإنه من تماما مثل خدش. الاحتمالات هي لم تستخدم كل قطع اللغز في خدش. الاحتمالات هي أنك لم تهتم التفاف رأيك حول كل منهم لأن كل ما أحاط كان نظرة سريعة لفهم، أوه، هذا ما يمكنني القيام به مع أن قطعة اللغز. وبالفعل، في تحديد المشكلة 3 المواصفات، فإننا سوف نشير لكم في الوثائق التي من شأنها أن أعرض لكم لبعض وظائف جديدة، وفي نهاية المطاف البرمجة يبني تستخدمها. شروط، حلقات، المتغيرات، وظائف سوف تكون مطابقة ل ما رأيناه حتى الآن. ذلك الواقع، ما سوف نقدم لكم هو بعض نموذج التعليمات البرمجية التي يتيح لك إنشاء إطار التي تبدو لا تختلف عن هذا، وتتحول في النهاية إلى شيء تماما مثل هذا. وذلك للاستفادة من CS50، مناقشة ساعات العمل وغيرها، وتأخذ الراحة في حقيقة أن كمية من التعليمات البرمجية لديك لكتابة هو في الواقع ليس كل ذلك بكثير. التحدي الأول هو فقط ليتأقلم نفسك لبعض رمز لدينا كتب. أي أسئلة على pset3، Shellshock، أو غير ذلك؟ الجمهور: إنه بدا وكأنه تمر مع اندلاع أن الرمز هو تقريبا أسلوب وجوه المنحى، ولكنني اعتقدت C كان وجوه المنحى البرنامج. رئيس 1: سؤال ممتاز. حتى في النظر من خلال كود التوزيع، رمز كتبنا عن pset3، بالنسبة لأولئك مألوفة، فإنه يبدو انها يذكر جوه المنحى. الجواب القصير هو، هو. انها تقريبي لكيفية لك قد تفعل كود جوه المنحى باستخدام لغة مثل C، وإنما هو لا يزال الإجرائية في نهاية المطاف. لا توجد طرق داخل المتغيرات، كما سترى. ولكنه يذكرنا ذلك. وسنرى هذه الميزة مرة أخرى عندما نصل الى PHP و JavaScript في نهاية الفصل الدراسي. لكنه الآن، والتفكير في الأمر على النحو اشارة إلى ما يأتي. سؤال جيد. كل الحق. لذلك الدمج كان نوعا كيف يمكننا أشياء اليسرى في المرة السابقة. ودمج كان نوعا باردة في بمعنى أنه كان أسرع كثيرا، على الأقل على أساس اختبارات سريعة فعلنا الأسبوع الماضي، من، مثلا، فقاعة الفرز، واختيار نوع، نوع الإدراج. وما كان أنيق جدا هو فقط كيف بإيجاز ونظيفة يمكنك التعبير عنه. وماذا نقول أنه كان العلوي ملزمة على وقت تشغيل دمج فرز؟ نعم؟ الجمهور: ن ن تسجيل؟ رئيس 1: ن ن تسجيل، والحق. ن ن تسجيل. وسوف نعود إلى ما أن يعني حقا أو الذي يأتي من حيث، ولكن هذا كان أفضل مما مدة العرض الذي رأيناه لفقاعة اختيار وإدراج النوع؟ حتى ن المربعة. ن تربيع هو أكبر من هذا، وحتى لو انها ليست واضحة تماما، نعلم أن سجل ن أصغر من ن، حتى إذا كنت تفعل مرات ن شيء أصغر من ن، انها سوف تكون أقل من مربع ن. انها قليلا من الحدس هناك. لكننا دفعنا ثمنا لذلك. كان أسرع، ولكن الموضوع الذي بدأ في الظهور في الاسبوع الماضي كان هذا المقايضة. حصلت على أداء أفضل الساعة الحكمة، ولكن ما لم أكن لديك لقضاء من جهة أخرى جهة، من أجل تحقيق ذلك؟ الجمهور: الذاكرة. رئيس 1: قل مرة أخرى؟ الجمهور: الذاكرة. رئيس 1: الذاكرة، أو الفضاء بشكل عام. وأنه لم يكن السوبر واضح مع البشر لدينا، ولكن أذكر أن متطوعينا ويخطو إلى الأمام ويخطو العودة وكأن هناك مجموعة هنا، وكما لو أن هناك مجموعة الثانية هنا أن أنها يمكن أن تستخدم، لأننا مكان المطلوب لدمج هؤلاء الناس. نحن لا يمكن أن مجرد مبادلة لهم في المكان. حتى دمج النفوذ نوع هو أكثر مساحة، والتي لم أكن نحتاج مع خوارزميات أخرى، ولكن الاتجاه الصعودي هو أنه أسرع بكثير. وبصراحة، في فضاء العالم الحقيقي هذه days-- ذاكرة الوصول العشوائي، القرص الصلب space-- هي رخيصة نسبيا، وذلك أن ليس بالضرورة أمرا سيئا. لذلك دعونا نلقي نظرة سريعة، قليلا أكثر منهجي، في ما فعلناه ولماذا قلنا انها ن ن تسجيل. حتى هنا هي أرقام ثمانية و ثمانية متطوعين كان لدينا الوقت الماضي. والشيء الأول الذي دمج نوع أخبرنا القيام به هو ماذا؟ الجمهور: الفجوة في اثنين. رئيس 1: قل مرة أخرى؟ الجمهور: الفجوة في اثنين. رئيس 1: الفجوة في اثنين، والحق. هذا يذكرنا جدا من دفتر الهاتف، من الانقسام وقهر أكثر عموما. لذلك بحثنا في النصف الأيسر. ثم مرة واحدة قلنا، نوع النصف الأيسر من العناصر، ماذا نقول بعد ذلك؟ فرز النصف الأيسر من اليسار النصف، الأمر الذي سمح لنا ل، بعد تقسيم في اثنين، التركيز على أربعة واثنين. كيف يمكنك فرز قائمة الآن، في الأصفر، من حجم اثنين، وذلك باستخدام دمج ترتيب؟ كذلك تقسيمه إلى نصفين، وفرز النصف الأيسر. وكانت هذه الأشياء حيث حصلت على فترة وجيزة غبي قليلا. كيف يمكنك فرز قائمة هذا من حجم واحد، مثل هذا العدد أربعة هنا؟ لقد تم فرزها ذلك. الانتهاء من ذلك. ولكن بعد ذلك كيف يمكنك فرز قائمة حجم واحد عندما يكون عدد اثنين؟ حسنا، الشيء نفسه، ولكن الآن ما كان الثالث وخطوة رئيسية في دمج ترتيب؟ كان عليك أن دمج اليسار ونصف النصف الأيمن. وبمجرد أن فعلت ذلك، نظرنا في أربعة، ونحن ننظر في اثنين. قررنا كل الحق، ومن الواضح أن اثنين من يأتي أولا، لذلك وضعنا اثنين في تقريرها المكان، تليها أربع. والآن لديك لنوع من الترجيع، وهذا هو نوع من الخصائص خوارزمية مثل دمج النوع، الترجيع في الذاكرة. ما هو السطر التالي من القصة؟ ما ينبغي أن يكون التركيز على الخطوة التالية؟ النصف الأيمن من اليسار النصف، وهو ستة وثمانية. لذلك اسمحوا لي مجرد خطوة من خلال هذا دون الاستفاضة النقطة كثيرا. ستة وثمانية، ثم هو ستة فرزها، يتم فرز ثمانية. دمجها معا من هذا القبيل، والآن الخطوة الكبيرة التالية هو، بالطبع، فرز النصف الأيمن من الخطوة الأولى من هذه الخوارزمية. لذلك نحن نركز على واحد، ثلاثة، سبعة، خمسة. نحن ثم التركيز على النصف الأيسر. النصف الأيسر من ذلك، فإن النصف الأيمن من ذلك، ومن ثم دمج في واحد وثلاثة. ثم النصف الأيمن، ثم غادر نصف لذلك، ثم النصف الأيمن منه. دمج في ذلك، والآن ما تبقى الخطوة؟ دمج النصف الأيسر كبير وكبير النصف الأيمن، لذلك يذهب احد الى هناك، ثم اثنين، ثم ثلاثة، ثم أربعة، ثم خمسة، ثم ستة، ثم سبعة ثم ثمانية. حتى الآن لماذا تم الكشف عن هذا في نهاية المطاف، خصوصا إذا كان n واللوغاريتمات أكثر عموما ليس الهروب لك، على الأقل في الذاكرة الحديثة؟ كذلك، لاحظ ارتفاع هذا الشيء. كان لدينا ثمانية عناصر، ونحن تقسيمها من قبل اثنين، اثنين، اثنين. حتى تسجيل قاعدة اثنين من ثمانية يعطينا الثلاثة. والثقة لي على أنه إذا وضبابي قليلا على ذلك. لكن قاعدة تسجيل اثنين من ثمانية هو ثلاثة، لذا قمنا به ثلاث طبقات من الدمج. وعندما اندمجت العناصر، وكيفية العديد من العناصر لم ننظر في كل من هذه الصفوف؟ ما مجموعه ن، أليس كذلك؟ لأن لدمج الصف العلوي، على الرغم من أننا فعلنا ذلك مجزأة، تطرقنا في نهاية المطاف كل رقم مرة واحدة. وفي الصف الثاني، ل دمج تلك القوائم من حجم اثنين، كان علينا أن تلمس كل عنصر مرة واحدة. ثم هنا حقا بشكل واضح في الصف الأخير، كان علينا أن تلمس كل من تلك عناصر مرة واحدة، ولكن مرة واحدة فقط، لذلك يكمن هنا، إذن، لدينا ن ن السجل. والآن فقط لجعل الامور قليلا أكثر رسمية لمجرد لحظة، إذا كنت كانت لتحليل هذا الآن في نوع من مستوى أعلى ومحاولة لاتخاذ قرار، جيدا كيف قد تذهب عن التعبير وقت تشغيل هذه الخوارزمية فقط من خلال النظر في ذلك وليس باستخدام المثال مفتعلة؟ حسنا، كم من الوقت كنت أقول خطوة مثل هذه باللون الأصفر ستتخذ، إذا كان n <2 العودة؟ هذا هو يا كبير من ماذا؟ حتى اراه واحد، حتى خطوة واحدة، ربما خطوتين لأنه إذا ثم يعود، لكنه وقت ثابت، أليس كذلك؟ ذلك قلنا O (1)، وهذا كيف سوف تعبر عن هذا. T، يكون مجرد إدارة الوقت. ن هو حجم المدخلات، لذلك T (ن)، مجرد وسيلة الهوى القول على التوالي وقت معين من حجم المدخلات ن سيكون على النظام من وقت ثابت، في O (1). لكن على خلاف ذلك، ماذا عن هذا؟ كيف يمكنك التعبير عن إدارة الوقت من هذا الخط الأصفر؟ T لماذا؟ يمكنك النوع من الغش هنا و الإجابة على سؤالي دوريا. حتى إذا كان الوقت يعمل في عموما نقول فقط هو T (ن). والآن أنت نوع من بونت هنا و قال: حسنا، مجرد فرز النصف الأيسر، ومن ثم فرز النصف الأيمن. كيف يمكن أن نمثل رمزيا الوقت تشغيل هذا الخط الأصفر؟ T لماذا؟ ما هو حجم المدخلات؟ ن أكثر من اثنين. لماذا لا أستطيع أن أقول ذلك؟ ثم وهذا هو T أخرى (ن / 2) ثم مرة أخرى، إذا كنت دمج نصفين فرزها، كم عدد العناصر أنا ذاهب لدينا للمس الكل؟ ن. حتى أتمكن من التعبير عن هذا، لمجرد أن يكون نوع من الهوى، ووقت التشغيل بشكل عام. T (ن) هو مجرد وقت تشغيل T (ن / 2)، T زائد (ن / 2)، غادر النصف والنصف الأيمن، بالإضافة إلى O (ن)، الذي هو على الارجح ن الخطوات، ولكن ربما، إذا أنا باستخدام إصبعين، انها ضعف هذا العدد الخطوات، لكنه خطية. انها بعض عدد من الخطوات وهذا هو عامل ن، ولذا فإننا قد تعبر عن هذا لأن هذا. وهذا هو المكان الذي نحن الآن سوف البونت ل ظهر لدينا كتاب الرياضيات في المدرسة الثانوية نحن في نهاية المطاف أن تكرار ينتهي يعادل هذا، ن ن مرات تسجيل الدخول، إذا كنت فعلا من الرياضيات أكثر رسميا. ذلك أن وجهات نظر اثنين فقط. واحد عدديا مع الثابت تلوينها سبيل المثال التمثيلي باستخدام ثمانية أرقام، وأكثر نظرة عامة على كيف وصلنا إلى هناك. ولكن ما هو مثير للاهتمام حقا هنا هو، مرة أخرى، هذه فكرة ركوب الدراجات. أنا لا تستخدم للحلقات. أنا نوع من تحديد شيء من حيث نفسه، ليس فقط مع هذا وظيفة رياضية، ولكن أيضا من حيث هذا الرمز الزائفة. هذا الرمز هو الزائفة العودية في أن اثنين من خطوطها هو قول ذلك أساسا للذهاب استخدام نفسها في حل أصغر مشكلة حجم أصغر، ثم مرة أخرى، ومرة ​​أخرى ونحن مرة أخرى حتى ينجر ذلك وصولا الى ما يسمى حالة الأساس. لذلك دعونا رسم الواقع أكثر إلحاحا اتخاذ بعيدا من هذا على النحو التالي. اسمحوا لي أن أخوض في gedit واتخاذ ننظر في بعض شفرة المصدر اليوم، خاصة في هذا المثال هنا. سيجما 0، الذي يضيف على ما يبدو أرقام واحد من خلال ن. لذلك دعونا نرى ما هو مألوف وغير مألوف هنا. أولا لدينا بضعة يشمل، لذلك لا شيء جديد هناك. النموذج. أنا ضبابي قليلا على هذا بعد أيام قليلة، ولكن ماذا نقول نموذج من وظيفة هو؟ الجمهور: [غير مسموع]. رئيس 1: ما هذا؟ الجمهور: نعلن ذلك. رئيس 1: نعلن ذلك. حتى انك تعليم رنة، مهلا، عدم تنفيذ هذه التسديدة بعد، لكن في مكان ما في هذا الملف، ويفترض، سوف يتم دالة يسمى ماذا؟ سيغما. وهذا هو مجرد الوعد الذي انها سوف تبدو هذه. انها سوف تأخذ عدد صحيح و input-- ويمكنني أن أكون أكثر وضوحا ويقول ن الباحث --and انها سوف تعود على كثافة العمليات، لكن وسائل منقوطة، مم، وأنا التفاف لتنفيذ هذا بعد ذلك بقليل. مرة أخرى، هو رنة البكم. انها لن يؤدي الا الى معرفة ما كنت أقول ذلك أعلى إلى أسفل، لذلك نحن بحاجة إلى إعطاء على الأقل انها اشارة ما يأتي. الآن دعونا ننظر الرئيسي هنا. دعونا انتقل لأسفل هنا و نرى ما تقوم به الرئيسي. انها ليست طويلة من وظيفة، و في الواقع هنا هو بناء مألوفة. أعلن متغير n ومن ثم أنا الالحاح المستخدم مرارا وتكرارا لعدد صحيح موجب باستخدام getInt، والمخرج الوحيد للخروج من هذه الحلقة مرة واحدة قد امتثلت للمستخدم. وبينما تفعل، لقد استخدمت ل الالحاح المستخدم بهذه الطريقة. الآن هذا مثير للاهتمام. أعلن عدد صحيح يسمى "الجواب". أنا تعيينه قيمة الإرجاع وظيفة تسمى "سيغما". أنا لا أعرف ما الذي يفعله بعد، ولكن أتذكر معلنا أنه قبل لحظة. ثم أنا يمر في قيمة أن المستخدم كتابتها في، ن، ومن ثم أقوم بالإبلاغ عن الجواب. حسنا دعونا التمرير إلى الخلف لمجرد لحظة. دعونا نمضي قدما في هذا الدليل، وجعل سيجما 0، وفعلا تشغيل هذا البرنامج ونرى ما سيحدث. حتى لو كنت المضي قدما وتشغيل هذا البرنامج، ./sigma-0، وأنا اكتب بطريقة إيجابية صحيح مثل اثنين، سيغما، كما يوحي رمز اليوناني، هو مجرد سوف تضيف ما يصل جميع الأرقام من الصفر على ما يصل إلى اثنين. لذلك 0 زائد 1 زائد 2. هذا ما ينبغي أن نأمل أن تعطيني 3. هذا كل ما تقوم به. وبالمثل، إذا كنت تشغيل هذا مرة أخرى وأعطيها لرقم ثلاثة، هذا هو 3 زائد 2، ذلك أن 5 زائد 1 يجب أن تعطيني 6. ثم إذا حصلت مجنون حقا و ابدأ الكتابة في أعداد أكبر، يجب أن تعطيني مبالغ أكبر وأكبر. حتى هذا كل شيء. فماذا سيغما تبدو وكأنها؟ حسنا، انها واضحة جدا. إنها الكيفية التي قد نفذت هذا للالأسبوعين الماضيين. "صحيح" سيكون نوع الإرجاع. سيغما هو اسم، ويستغرق وم متغير بدلا من ن. أنا تغيير ذلك حتى أعلى. ثم وهذا هو مجرد الاختيار التعقل. سنرى ماذا في لحظة. الآن أعلن متغير آخر، باختصار، تهيئة إلى الصفر. ثم لدي هذا لحلقة بالتكرار، على ما يبدو من أجل الوضوح، من ط = 1 على ما يصل إلى = م، وهو كتابة مهما كان المستخدم في، وبعد ذلك زيادة مبلغ من هذا القبيل. ثم يعود المبلغ. حتى بضعة أسئلة. واحد، ويدعون في تعليقي أن هذا يتجنب خطر حلقة لا نهائية. لماذا يمر في عدد السلبي حث يحتمل، حلقة لا نهائية؟ الجمهور: أنت لن تصل إلى متر. رئيس 1: أبدا وصول م. ولكن يتم تمرير م في، لذلك دعونا النظر في مثال بسيط. إذا تم تمريره من قبل م في المستخدم والآخر سلبي. بصرف النظر عن الأصل. الرئيسية يحمينا من هذا أيضا، لذلك أنا فقط يجري الشرج حقا مع سيغما أيضا التأكد من أن المدخلات لا يمكن أن يكون سلبيا. حتى إذا م هو سلبي، شيء من هذا القبيل الآخر سلبي. ما الذي سيحدث؟ حسنا، أنا ذاهب الى الحصول على تهيئة واحد، وبعد ذلك ستكون أقل من أو يساوي م؟ الوقوف إلى جانب. was-- أن دعونا لا، دعونا لا شىء هذه القصة. أنا لم أطلب هذا السؤال، ل خطر أنني منوها إلى لا سيحدث لأنني غير دائما ما تكون أكبر OK than--، أنا أتراجع عن هذا السؤال. موافق. دعونا نركز فقط على هذا الجزء هنا. لماذا أعلن بعض خارج حلقة؟ ملاحظة على خط 49 لدي أعلن ط داخل الحلقة، ولكن على الانترنت 48 لدي أعلن بعض خارج. نعم. الجمهور: [غير مسموع]. رئيس 1: متأكد. أولا وقبل كل شيء لذلك أنا لا بالتأكيد أريد أن أصرح وتهيئة المبلغ إلى الصفر داخل على كل حلقة التكرار، لأن هذا من شأنه أن هزيمة بوضوح الغرض من تلخيص الأرقام. وأود أن تبقي تغيير القيمة إلى الصفر. وأيضا، ما هو آخر أكثر غامضة سبب هذا القرار التصميم نفسه؟ نعم. الجمهور: [غير مسموع]. رئيس 1: بالضبط. أريد الوصول إليه خارج الحلقة جدا على ما سطر؟ على 53. وبناء على حكمنا من الإبهام من زوجين من المحاضرات قبل، وخاصة بتطبيق المتغيرات، حقا، ل الأقواس المعقوفة التي تشمل لهم. حتى لو كنت لا تعلن المبلغ داخل هذه الأقواس المعقوفة الخارجية، أنا لا يمكن استخدامه في خط 53. وبعبارة أخرى، إذا أنا أعلن خلاصة القول هنا، أو حتى داخل للحلقة، لم أتمكن من الوصول إليه في 53. أن يكون قد انتهى المتغير على نحو فعال. لذلك عدة أسباب هناك. ولكن الآن دعونا نعود ونرى ما سيحدث. حتى يحصل دعا سيغما. وتضيف ما يصل 1 زائد 2 أو 1 زائد 2 زائد 3، ثم إرجاع القيمة، يخزنها في الجواب، وprintf هنا هو السبب اراه على الشاشة. لذلك هذا هو ما سنقوم استدعاء تكرارية النهج، حيث التكرار فقط يعني استخدام حلقة. حلقة For، حلقة في حين، وهل حين حلقة، فقط تفعل شيئا مرة أخرى ومرارا وتكرارا. لكن سيغما هو نوع من وظيفة أنيق في أن أتمكن من تنفيذها بشكل مختلف. ماذا عن هذا الذي لمجرد أن يكون نوع من باردة، اسمحوا لي حقا التخلص الكثير من الهاء لأن هذه وظيفة هو حقا بسيط جدا. دعونا تهذيبها فقط للخطوط الأساسية الأربعة والتخلص من جميع التعليقات والأقواس المعقوفة. هذا هو نوع من العقل تهب تنفيذ بديل. حسنا، ربما لا تمانع تهب، ولكن هذا النوع من أكثر جنسية، كل الحق، أن ننظر إلى هذا حتى أكثر وضوحا بكثير. مع فقط أربعة أسطر من التعليمات البرمجية، أنا أولا يكون هذا الاختيار التعقل. إذا م هو أقل من أو يساوي الصفر، سيغما لا معنى له. إلا أنه من المفترض أن يكون في هذه الحالة لأرقام إيجابية، لذلك أنا ذاهب لمجرد إرجاع صفر تعسفا حتى يتسنى لنا على الأقل أن يكون بعض ما يسمى حالة الأساس. ولكن هنا في الجمال. مجمل هذه الفكرة، إضافة الأرقام من 1 إلى ن، م أو في هذه الحالة، يمكن أن تقوم به نوع من تمرير باك. حسنا، ما هو مجموع من 1 إلى م؟ حسنا، أنت تعرف لماذا؟ انها نفس مجموع م بالإضافة إلى مبلغ من 1 إلى m ناقص 1. تعلمون جيدا ماذا؟ ما هو سيجما للم ناقص 1؟ حسنا، إذا كنت تتبع هذا النوع من منطقيا، انها نفس م ناقص 1 بالإضافة إلى سيغما من ناقص 2 م. حتى يمكن لكم نوع من فقط .. هذا هو مثل، إذا كنت فقط تحاول مزعجة صديق وانهم أسألك سؤالا، تردون نوع من بسؤال، يمكنك إبقاء نوع من تمرير باك. ولكن ما هو المفتاح هو أنه إذا واصلتم مما يجعل السؤال أصغر وأصغر وأصغر، وكنت لا نطلب ما هو سيغما ن، ما هو سيجما لل ن، ما سيجما من ن؟ كنت طالبا ما سيغما ن، ما سيغما ن ناقص 1، ما هو سيجما ن ناقص 2؟ في نهاية المطاف سؤالك سوف تصبح ماذا؟ ما هو سيغما واحد أو الصفر، وبعض القيمة صغيرة جدا، وبمجرد الحصول على هذا، صديقك، انك لن نسأل ل نفس السؤال مرة أخرى، كنت فقط أريد أن أقول، يا انها الصفر. نحن الانتهاء من لعب هذا النوع لعبة غبية الدورية. حتى العودية هي الفعل البرمجة وظيفة تطلق على نفسها. هذا البرنامج، عندما جمعت وتشغيل، و سوف تتصرف بنفس الطريقة تماما، ولكن ما هو المفتاح هو أن الداخل وظيفة تسمى سيغما، هناك سطر من التعليمات البرمجية حيث فنحن نطالب أنفسنا، التي تكون عادة سيئة. على سبيل المثال، ماذا لو كنت أول جمعت هذا، لذلك جعل sigma-- جعل سيغما 1 ./sigma-1. صحيح موجب، من فضلك، 50 1275. وذلك ما يبدو وظيفة ل يكون بناء على اختبار واحد، الصحيح. ولكن ماذا لو أحصل خطيرا قليلا وحذف ما يسمى حالة قاعدة، ونقول فقط، حسنا أنا صنع فقط هذه أكثر تعقيدا مما هو عليه. دعونا فقط حساب سيجما من خلال اتخاذ م ثم إضافة في سيجما من م ناقص واحد؟ حسنا، ما الذي يحدث هنا؟ دعونا تصغير. دعونا إعادة ترجمة البرنامج، حفظه، إعادة ترجمة البرنامج، ثم استعداد ./sigma-1 التكبير، يرجى إدخال عدد صحيح موجب، 50. كم كنت على استعداد لفيس يصل إلى رؤية ذلك؟ موافق. لذلك هذا يمكن أن يحدث ل عدد من الأسباب، وبصراحة هذا الاسبوع نحن حول لإعطائك المزيد منها. لكن في هذه الحالة، حاول لسبب الوراء ما قد حدث هنا؟ خطأ تجزئة، قلنا مشاركة الوقت، يشير إلى جزء من الذاكرة. حدث شيء سيئ. ولكن ما كان عليه ميكانيكيا الذي ذهب منحرف هنا بسبب إزالة بلدي من أن ما يسمى حالة قاعدة، حيث عدت قيمة الثابت تلوينها؟ ما رأيك الخطأ؟ نعم. الجمهور: [غير مسموع]. رئيس 1: آه. سؤال جيد. وبالتالي فإن حجم عدد ان كنت تلخيص حصلت كبيرة بحيث تجاوزت حجم مساحة الذاكرة. فكرة جيدة، ولكن ليس جوهريا سوف يؤدي إلى تحطم الطائرة. يمكن أن يسبب تجاوز عدد صحيح، حيث البتات فقط على الوجه وبعد ذلك خطأ كبيرة حقا عدد لمثل رقم سالب، ولكن هذا في حد ذاته لن يسبب تحطم الطائرة. لأنه في نهاية اليوم لا يزال عدد صحيح 32 بت. كنت لن سرقة عن طريق الخطأ قليلا 33. ولكن فكرة جيدة. نعم. الجمهور: [غير مسموع]. رئيس 1: الأسلوب يتوقف أبدا على التوالي، والواقع أنه يدعو نفسه مرة أخرى ومرارا وتكرارا وتكرارا ومرة أخرى، وأيا تلك الوظائف من أي وقت مضى إنهاء لخطهم الوحيد لل كود ذاتهما يدعو مرارا وتكرارا ومرة أخرى. وما هو حقا يحدث هنا، ونحن الآن ويمكن استخلاص هذا النوع من بالصور. اسمحوا لي أن يذهب أكثر إلى الصورة لمجرد لحظة. هذه صورة، أن سوف اللحم النهاية بمزيد من التفصيل، من ما يحدث داخل ذاكرة الكمبيوتر الخاص بك. واتضح أنه في أسفل هذه الصورة. هو ما يسمى المكدس. هذا هو قطعة من الذاكرة، جزءا من ذاكرة الوصول العشوائي، الذي يتم استخدامه فقط في أي وقت ويسمى وظيفة. أي وقت لك، مبرمج، استدعاء دالة، نظام التشغيل، مثل نظام التشغيل ماك، ويندوز، أو لينكس، الاستيلاء على مجموعة من بايت، ربما قليل كيلوبايت، ربما بضعة ميغابايت من الذاكرة، يسلم منهم لكم، ويتيح ثم تشغيل وظيفة باستخدام مهما كانت المتغيرات التي تحتاج إليها. وإذا كنت ثم استدعاء آخر وظيفة وظيفة أخرى، يمكنك الحصول على شريحة أخرى من الذاكرة وشريحة أخرى من الذاكرة. وفي الواقع، إذا كانت هذه الصواني الخضراء من أننبرغ تمثل تلك الذاكرة، وهنا ما يحدث أول مرة كنت استدعاء دالة سيغما. انها مثل وضع علبة مثل هذا على ما هو في البداية كومة فارغة. ولكن بعد ذلك إذا كان هذا الدرج تطلق على نفسها، إذا جاز التعبير، داعيا حالة أخرى من سيغما، وهذا مثل طرح نظام التشغيل، أوه، بحاجة إلى المزيد من الذاكرة قليلا، أعطني ذلك. ومن ثم يحصل على مكدسة على أعلى. ولكن ما هو المفتاح هنا هو أن علبة الأولى لا تزال هناك، لأنه يحتج هذا علبة الثانية. الآن وفي الوقت نفسه، تدعو سيغما سيغما، هذا هو كمن يسأل عن المزيد من الذاكرة. يحصل مكدسة على أكثر من هنا. سيغما سيغما الدعوة، وهذا آخر صينية مكدسة على أن يحصل هنا. واذا واصلتم القيام بذلك، في نهاية المطاف، هذا النوع من الخريطة البصرية إلى ذلك الرسم البياني، ما الذي يحدث ل يحدث مع كومة من الصواني؟ أريد لها أن يتجاوز المبلغ من الذاكرة لديه جهاز الكمبيوتر الخاص بك. وحالما هذا علبة خضراء يتجاوز الخط الأفقي فوق كومة وفوق كومة تلك الكلمة، التي سوف نعود إليها في المستقبل، هذا أمر سيء. كومة هي مختلفة جزء من الذاكرة، وإذا ما تركت هذه الصواني كومة كومة وعلى، وأنت تسير أن يتجاوز القطاع الخاص من الذاكرة، والبرنامج هو في الواقع سوف تحطم الطائرة. الآن بوصفها جانبا، هذه الفكرة من العودية، وبالتالي، يمكن أن تؤدي بوضوح إلى المشاكل، ولكن انها ليست بالضرورة أمرا سيئا. لأن النظر، بعد كل شيء، وربما how-- هذا يستغرق بعض التعود ل--how أنيقة أو كيف بسيط كان أن تنفيذ سيغما. ونحن لن تستخدم العودية كل ذلك بكثير في CS50، ولكن في CS51، وحقا أي فئة حيث يمكنك التعامل مع هياكل البيانات مثل الأشجار، أو شجرة العائلة، التي لديها بعض التسلسل الهرمي، انها فائقة، فائقة مفيد. الآن، بوصفها جانبا، حتى يتسنى لك كما تطمح علماء الكمبيوتر هم على دراية بعض من جوجل النكات الداخل، وإذا ذهبت إلى Google وقمت بالبحث ما هو تعريف، مثلا، العودية، أدخل. هاه. بوصفها جانبا، وانسحبت حتى انني لا الحصر. كان هذا مثل 10 دقيقة من التسويف هذا الصباح. إذا كنت أيضا جوجل "منحرف"، إشعار عن طريق إمالة رأسك slightly-- ثم هذا هو واحد ربما الأكثر فظيعة جميع منذ قضى شخص مثل يومهم تنفيذ هذا بعض السنوات ago-- هيا. أوه، wait-- هذا الخلل. بحيث يعمل على واحدة من أكبر المواقع في العالم هذه هي بيض عيد الفصح قليلا الغبية. أنها ربما تستهلك عدد غير بديهي من الأسطر من التعليمات البرمجية فقط حتى أننا يمكن أن يكون الأشياء الممتعة قليلا من هذا القبيل. ولكن على الأقل الآن تحصل بعض هذه النكات في الداخل. الآن دعونا نلقي نظرة على بعض من الأبيض يكمن كنا نقول في الآونة الأخيرة، والبدء في قشر العودة بعض طبقات تقنيا حتى يتسنى لك فهم حقا ما كان يحدث ويمكنك فهم بعض التهديدات، مثل Shellshock، أن بدأت الآن لتصبح في طليعة الجميع الاهتمام، على الأقل في وسائل الإعلام. حتى هنا هو وظيفة بسيطة جدا وترجع أي شيء، الفراغ. اسمها المبادلة. فإنه يأخذ في متغيرين وتعود شيئا. يأخذ في أ و ب. حتى مظاهرة سريعة. أحضرنا هذه المباراة. ونحن قد يستغرق فضلا قليلا كسر هنا لمجرد لحظة ويكون شيئا قليلا للشرب. اذا كان شخص ما لا تمانع في الانضمام لي هنا لمجرد لحظة. كيف عنك في قميص كستنائي؟ تأتي على ما يصل. مجرد واحد اليوم. شكرا، وإن كان. كل الحق، وعلينا الخروج من هنا؟ ما اسمك؟ SPEAKER 4: لورا. رئيس 1: لورا. تأتي على ما يصل. حتى لورا، التحدي بسيط جدا اليوم. لطيفة لتلبية يو. كل الحق. لذلك لدينا بعض الحليب أكثر من هنا و لدينا بعض عصير البرتقال هنا وبعض أكواب أننا اقترضت من أننبرغ اليوم. SPEAKER 4: المستعارة. رئيس 1: والذهاب الى المضي قدما وأعطيك نصف كوب من هذا. كل الحق. وسنعطيك نصف كوب من الحليب. أوه، وفقط بحيث يمكنك نتذكر ما كان مثل هذا، تذكرت لجلب وهذا الأمر اليوم. حسنا. إذا كنت لا تمانع، دعونا نرى، ونحن يمكن وضعها على النظارات الخاصة بك إذا كنت تريد. هذا سوف يكون العالم من عيون لورا. كل الحق. لذلك هدفك، نظرا كوبين من السائل هنا والحليب وعصير البرتقال، ومبادلة محتويات اثنين بحيث عصير البرتقال يذهب الى كوب الحليب والحليب يذهب الى كأس عصير البرتقال. SPEAKER 4: هل يمكنني الحصول على كوب آخر؟ رئيس 1: أنا سعيد جدا أنك سألت، على الرغم من كان يمكن أن يكون أفضل بكثير لقطات إذا لم يطلب. ولكن نعم، يمكننا ان نقدم لكم ثلث هذا كوب فارغ، بطبيعة الحال. كل الحق. حتى مبادلة محتويات هناك. لطيفة جدا. جيد جدا. كنت تفعل هذا بعناية بشكل ملحوظ. والخطوة الثالثة. كل الحق. ممتازة. جولة كبيرة من التصفيق سيكون من الجيد لورا. كل الحق. لدينا هدية فراق قليلا بالنسبة لك، ولكن اسمحوا لي أن أغتنم هذه. شكرا جزيلا. ذلك مثال بسيط، رغم ذلك، لإثبات أنه إذا كنت تفعل تريد مبادلة محتويات من حاويتين، أو دعونا نسميها متغيرات، كنت بحاجة الى بعض التخزين المؤقت على مرحلة واحدة من محتويات في ذلك التي يمكنك القيام به في الواقع المبادلة. ذلك في الواقع، وهذا شفرة المصدر هنا في C هو ممثل لتلك بالضبط. إذا كان عصير البرتقال والحليب و كان ب، وأردنا لمبادلة اثنين، قد تتمكن من محاولة شيء خلاق بصب واحد إلى الآخر، ولكن هذا ربما لن ينتهي بشكل خاص. وهكذا نستخدم ثلث كوب، مكالمة أنه تمة، T-M-P من الاتفاقية، ووضع محتويات OJ في ذلك، ثم مبادلة كوب واحد، ثم وضع في الجريدة الرسمية كوب الأصلي، وبالتالي تحقيق، تماما كما فعلت لورا، والمبادلة. لذلك دعونا نفعل ذلك بالضبط. اسمحوا لي المضي قدما وفتح تصل مثال ذلك دعا فعلا "لا مبادلة "، لأن هذا ليس كما يتم ببساطة كما قد يعتقد. حتى في هذا البرنامج، لاحظ أن أنا باستخدام stdio.h، صديقنا القديم. لدي نموذج للمقايضة هناك، والتي يعني في تنفيذ لها ربما انخفض أدناه، ودعونا نرى ما هو هذا الرئيسي البرنامج سيفعل بالنسبة لي. أنا أولا يعلن الباحث العاشر يحصل واحد، وكثافة العمليات ذ يحصل على اثنين. حتى التفكير في تلك كما OJ والحليب على التوالي. وبعد ذلك يكون مجرد printf قائلا x هو هذا و y هو هذا، فقط حتى يمكنني ترى بالعين المجردة ما يحدث. ثم لقد printf مدعيا أنني مبادلة اثنين، وبعد ذلك بطباعة يدعون انهم تبادلت، وأنا بطباعة x و y مرة أخرى. حتى هنا في المبادلة بالضبط ما فعله لورا، وبالضبط ما رأيناه على الشاشة قبل لحظة. لذلك دعونا نمضي قدما و تكون بخيبة أمل ماسة. إجراء أي تبادل، وتشغيل أي المبادلة التكبير على الانتاج هنا. أدخل x هو 1، ص هو 2، المقايضة تبادلت. س لا يزال 1، و y لا يزال 2. على الرغم من ذلك، بصراحة، وهذا يبدو و أحب بالضبط، وإن كان أكثر من الناحية الفنية، ماذا فعلت لورا، لا يبدو أن العمل. فلماذا هذا؟ حسنا، اتضح أنه عندما نكتب مثل هذا البرنامج الذي على حد سواء الرئيسية، أبرز هنا، ثم وظيفة أخرى، مثل المبادلة أبرز هنا، والتي أنه يدعو، العالم يبدو قليلا ما يشبه هذه الصواني قبل لحظة. عندما الرئيسي أولا يحصل دعا، هذا هو كمن يسأل نظام التشغيل قليلا من الذاكرة لأي المحلية المتغيرات مثل x و y التي لديها الرئيسي، وأنهم في نهاية المطاف هناك. ولكن إذا المكالمات الرئيسية مبادلة، والرئيسية يمر لمبادلة اثنين من الحجج، أ و ب، عصير البرتقال والحليب، انها لا ترغب في ذلك تسليم عصير البرتقال والحليب لورا. ما يفعله الكمبيوتر، هل هو يمر نسخ من عصير البرتقال ونسخ من الحليب لورا، بحيث ما هو في نهاية المطاف داخل هذا صينية هو قيمة واحد واثنين، أو OJ والحليب، ولكن نسخ منها، حتى في هذه المرحلة في القصة، هناك غير OJ والحليب في كل من هذه الصواني. هناك واحد واثنين في كل من هذه الصواني، وظيفة المبادلة تعمل بالفعل. انها مبادلة لهم داخل من ثاني العلوي صينية، إلا أن مبادلة لديها أي تأثير. واستنادا إلى بعض فقط المبدأ الأساسي قمنا تحدث عن قبل، بل و قبل بضع دقائق، ما قد يفسر لماذا تغيير أ و ب داخل مقايضة له أي تأثير على x و y، على الرغم من مررت x و y إلى وظيفة المبادلة. ما هي الكلمة الأساسية هنا أن قد شرح مبسط؟ أعتقد أنني سمعت هنا؟ الجمهور: العودة. رئيس 1: العودة؟ لن يعود. دعنا نذهب مع الآخر. ما هذا؟ الجمهور: [غير مسموع]. رئيس 1: موافق، لذلك نستطيع return-- جعل العمل عودة في القصة، ولكن هناك تفسيرا أبسط. الجمهور: نطاق. رئيس 1: نطاق. سآخذ النطاق. حتى النطاق، نتذكر فيها لدينا x و y أعلن. كنت أعلنت أنها داخل الرئيسية من الحق هنا. أ و ب، وفي الوقت نفسه، هي أعلن فعال داخل مبادلة، ليس تماما في الأقواس المعقوفة ولكن لا يزال في المنطقة العامة من المبادلة. وذلك في الواقع، وب لا توجد إلا في هذا صينية من أننبرغ، وهذا قطعة الثانية من التعليمات البرمجية. لذلك نحن حقا تغيير نسخة، ولكن هذا ليس حقا كل ذلك مفيدا. لذلك دعونا نلقي نظرة على هذا المستوى أقل قليلا. انا ذاهب الى العودة إلى الدليل المصدر، وانا ذاهب لأول تكبير هنا، وفقط للتأكد من أن أكون في هذا أكبر نافذة المحطة، البرنامج لا يزال يتصرف من هذا القبيل. لنفترض الآن أن هذا ليس مقصودا. بوضوح أردت تبادل ل العمل، لذلك يشعر وكأنه علة. الآن يمكنني أن تبدأ بإضافة الكثير من لprintf لقانون بلدي، طباعة خارج × أكثر من هنا، ص على هنا، هنا، ب أكثر من هنا. ولكن بصراحة، وهذا ربما ما كنت قد تم القيام لبضعة أسابيع الآن، في ساعات العمل وعند العمل في المنزل على psets محاولة للعثور على بعض الحشرات. ولكن سترى، إذا كنت لم تقم بذلك بالفعل، تحدد هذه المشكلة ثلاثة يقدم لك إلى أمر دعا GDB، حيث GDB، GNU المصحح، لديه نفسها في مجمله مجموعة من الميزات التي يمكن في الواقع دعونا نفهم الحالات مثل هذا، ولكن أكثر مقنع، حل المشاكل وإيجاد البق. لذلك أنا ذاهب للقيام بذلك. بدلا من ./noswap، أنا بدلا سوف يدير GDB ./noswap. وبعبارة أخرى، انا ذاهب لتشغيل بلدي البرنامج لا في باش، صديقنا الجديد اليوم. انا ذاهب لتشغيل بلدي noswap برنامج داخل هذا برنامج آخر يسمى GDB، وهو المصحح، الذي هو برنامج مصمم للمساعدة كنت البشر إيجاد وإزالة الخلل. حتى إذا أنا ضربت تشغيل هنا، هناك مبلغ الوحشي النص ان كنت حقا لا يجب أن تقرأ. انها في الأساس الهاء من موجه، والتي انا ذاهب الى ضرب تحكم-L الحصول على ما يصل في أعلى هناك. هذا هو موجه GDB. إذا كنت ترغب في تشغيل هذا البرنامج الآن، لأن هذا الغش ورقة صغيرة في اليوم وتشير الشريحة، تشغيل هي الأولى أوامر يعني أننا لإدخال. وأنا ذاهب لمجرد اكتب سبقت هنا داخل GDB، والواقع أنه يتعارض مع برنامجي. الآن هناك بعض إضافية مخرجات الشاشة مثل هذا، ولكن هذا مجرد كونها GDB الشرج وتقول لنا ما يجري. لم يكن لديك ما يدعو للقلق حقا حول هذه التفاصيل الآن. ولكن ما هو رائع حقا عن GDB، إذا كنت تفعل هذا again-- ضبط L مسح screen-- السماح لي بالرحيل قدما واكتب "كسر الرئيسي"، وبالتالي، عندما كنت هاهنا، وتحديد ما هو دعا نقطة فاصل في noswap.c، خط 16، وهو حيث GDB أحسب برنامجي الواقع هو، وظيفة بلدي هو في الواقع. هذا سنقوم تجاهل حتى الآن ولكن هذا العنوان في الذاكرة خصيصا لهذه المهمة. حتى الآن عندما كنت اكتب تشغيل، تلاحظ ما هو بارد هنا. يكسر برنامجي في خط I وقال GDB لإيقاف التنفيذ في. لذلك ليس لدي الآن لتغيير قانون بلدي، إضافة بعض لprintf، إعادة ترجمة عليه، باعادة ذلك، وتغيير، وإضافة بعض لprintf، حفظه، إعادة ترجمة عليه، تشغيله. أستطيع المشي فقط من خلال برنامجي خطوة خطوة بخطوة بسرعة الإنسان، ليس في نوع إنتل من الداخل من السرعة. حتى الآن لاحظت هذا الخط يبدو هنا، وإذا أعود لبرنامجي في gedit، تلاحظ أن هذا هو الواقع السطر الأول جدا من التعليمات البرمجية. هناك خط 16 في gedit. هناك خط 16 داخل GDB، وحتى على الرغم من هذه الواجهة بالأبيض والأسود لا يكاد كمستخدم ودية، وهذا يعني لم يتم تنفيذ هذا الخط 16 بعد، ولكنها على وشك أن يكون. حتى لو كنت بالفعل اكتب الطباعة س، وليس printf، فقط طباعة س، أحصل على بعض قيمة وهمية هناك من الصفر، لأنه لم يتم تهيئة العاشر بعد. لذلك أنا ذاهب لكتابة المقبل، أو، إذا كنت تريد أن تكون نزوة، فقط لN المقبل. ولكن عندما كنت اكتب إدخال المقبل، الآن تلاحظ ذلك ينتقل إلى خط 17. لذلك منطقيا، إذا لقد أعدم خط 16 وأنا الآن اكتب الطباعة س، ما يجب أن أرى؟ واحد. والآن هذا هو الخلط بين المسلم. $ 2 هو مجرد وسيلة لنزوة، إذا كنت أريد أن أشير إلى تلك القيمة في وقت لاحق، يمكنك القول "علامة الدولار اثنين." انها مثل إشارة إلى الوراء. لكنه الآن، تجاهله. ما هو المثير للاهتمام هو ما على يمين علامة المساواة. والآن إذا كنت اكتب مرة أخرى المقبل وطباعة ذ، أود أن انظر 2. يمكنني أيضا طباعة الآن س مرة أخرى، وبصراحة، إذا أنا الحصول على الخلط قليلا ل مكاني، ويمكنني أن اكتب قائمة للقائمة وانظر فقط بعض السياق حول النقطة أنا فعلا في. والآن أستطيع أن اكتب المقبل، وهناك x هو 1. الآن وأنا اكتب المقبل. أوه، نعم هو 2. ومرة أخرى، فمن مربكة، لأن الانتاج في GDB ويجري مختلطة مع الانتاج بلدي. ولكن اذا واصلتم في الاعتبار، من قبل نظرة عابرة ذهابا وإيابا في التعليمات البرمجية أو زرع بها الجانب إلى جنب ربما عليك نرى أن حقا أنا فقط التنقل خلال برنامجي. لكن لاحظ ما سيحدث بعد ذلك، حرفيا. هنا خط 22. اسمحوا لي أن أذهب أكثر من ذلك، وبالتالي تتحرك على إلى 23، وإذا كنت طباعة العاشر الآن، لا تزال واحدة. وإذا كنت طباعة ذ الآن، لا تزال واحدة. لذلك هذا ليس ممارسة مفيدة. لذلك دعونا إعادة هذا. اسمحوا لي أن أعود حتى العلوي واكتب تشغيل مرة أخرى. وانها قائلا إن البرنامج الذي يتم تصحيحه وقد بدأت بالفعل، بدأت من البداية. نعم، دعونا نفعل ذلك مرة أخرى. وهذه المرة دعونا نفعل المقبل، المقبل، المقبل، المقبل، المقبل، ولكن الآن الامور مثيرة للاهتمام. الآن أريد أن خطوة الى مبادلة، ولذا فإنني لا تكتب المقبل. أنا اكتب الخطوة، والآن تلاحظ ذلك وقفز لي أن خط noswap.c 33. إذا أعود إلى gedit، ما هو خط 33؟ هذا هو أول الفعلية سطر من التعليمات البرمجية داخل المبادلة. الذي هو لطيف، لأنه الآن يمكنني نوع من كزة حول والحصول على الغريب كما أن ما يجري حقا هناك. اسمحوا لي طباعة تمة. قف. لماذا يكون بعض تمة مجنون، قيمة القمامة وهمية؟ الجمهور: لم يتم تهيئة و. رئيس 1: لم يتم تهيئة و. وبالفعل، عند تشغيل البرنامج، كنت أعطيت مجموعة كاملة من الذاكرة من قبل نظام التشغيل، ولكنك لم تهيئة أية قيم، لذلك كل ما كنت بت رؤية هنا، على الرغم من انها هذه سلبية كبيرة مجنونة العدد، يعني: أن تلك هي بقايا من بعض الاستخدام السابق من أن RAM، على الرغم من أنني لم نفسي الحاجة إليها بعد. وحتى الآن أنا ذاهب إلى المضي قدما ونوع المقبل، وإذا أنا الآن اكتب تمة الطباعة، ما يجب أن أرى؟ مهما كانت قيمة، من هو الحجة الأولى، فقط مثل س كان أول شيء يتم تمريرها في، لذلك، وينبغي أن يكون x نفسه، لذلك يجب طباعة طباعة تمة لي واحد. فماذا سترى في مجموعة مشكلة ثلاثة هو البرنامج التعليمي من نوع ما على GDB، ولكن ندرك أن هذا هو بداية من نظرة على أداة من شأنها أن الواقع تساعدك على حل المشاكل حتى أكثر فعالية بكثير. ما نحن في نهاية المطاف تنوي القيام به يوم الاربعاء تم البدء في قشر العودة بضع طبقات وإزالة بعض عجلات التدريب. هذه السلسلة الشيء يسمى ذلك استخدمنا لبعض الوقت، ونحن في طريقنا لاتخاذ ببطء بعيدا أن منك و تبدا بالكلام عن أكثر شيء باطني المعروف شار *، ولكن نحن في طريقنا للقيام بذلك لطيفة و بلطف في البداية، على الرغم من المؤشرات، كما انهم دعا، يمكن القيام ببعض أشياء سيئة جدا إذا سوء المعاملة، و من خلال النظر في claymation القليل من صديقنا نيك Parlante من جامعة ستانفورد الجامعة، وهو أستاذ في الكمبيوتر العلم الذين وضعوا معا هذه المعاينة من ما يأتي هذا الاربعاء. [VIDEO قراءة] يا، بينكي. يستيقظون. حان الوقت لمؤشر المرح. وماذا هذا؟ تعرف على المؤشرات؟ أوه، جودي! [END تشغيل الفيديو] رئيس 1: هذا ينتظركم يوم الاربعاء. سنرى لك، ثم. [VIDEO قراءة] -و الآن، الأفكار العميقة، بواسطة Daven فارنهام. -لماذا نحن تعلم C؟ لماذا لا A +؟ [ضحك] [END تشغيل الفيديو]