1 00:00:00,000 --> 00:00:12,040 >> [MUSIC پخش] 2 00:00:12,040 --> 00:00:16,460 >> SPEAKER 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 OK، دست به مراتب، به مراتب بیشتر وجود داشته باشد تا حال حاضر، به دلایل خواهیم دید. 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 >> SPEAKER 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 SPEAKER 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 >> SPEAKER 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 شما می دانید که دستورات مانند وجود دارد سی دی و ls و نیز صدای شیپور و دیگران، 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 و شما می توانید کارهایی مشابه در مک انجام OS، اما شما می توانید بیش از آن فراتر بروید. 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 >> [AUDIO پخش] 105 00:05:29,510 --> 00:05:30,010 >> سلام. 106 00:05:30,010 --> 00:05:31,621 107 00:05:31,621 --> 00:05:32,120 سلام. 108 00:05:32,120 --> 00:05:35,030 >> SPEAKER 1: بنابراین، در عدالت، این در واقع نه "سلام." 109 00:05:35,030 --> 00:05:36,894 این معمولا چیزی بود بیشتر شبیه به that-- 110 00:05:36,894 --> 00:05:37,560 [AUDIO پخش] 111 00:05:37,560 --> 00:05:37,750 -Beep. 112 00:05:37,750 --> 00:05:39,320 SPEAKER 1: --that I 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 به نام x، و اختصاص آن که کمی زرد از کد وجود دارد. 144 00:07:09,520 --> 00:07:14,040 که می تواند چیزی شبیه به "اکو سلام "و یا" می گویند بوق "و یا چیزی 145 00:07:14,040 --> 00:07:15,120 شبیه به آن. 146 00:07:15,120 --> 00:07:17,780 اما متوجه اگر چشم شما سرگردان بیشتر به راست، 147 00:07:17,780 --> 00:07:22,150 بیشتر به این خط از وجود دارد فقط در پایان آن نقطه و ویرگول بدین. 148 00:07:22,150 --> 00:07:25,160 "اکو آسیب پذیر،" و سپس فراتر از آن حتی بیشتر وجود دارد. 149 00:07:25,160 --> 00:07:26,530 یکی دیگر از نقطه و ویرگول، ج باش:. 150 00:07:26,530 --> 00:07:28,120 151 00:07:28,120 --> 00:07:34,050 >> بنابراین داستان کوتاه مدت، این خط از کد است 152 00:07:34,050 --> 00:07:36,660 برای قانع کننده کافی یک کامپیوتر که 153 00:07:36,660 --> 00:07:39,830 آسیب پذیر را به انجام کاری که شما می خواهید آن را انجام دهید، 154 00:07:39,830 --> 00:07:44,290 چرا که به موجب آن مشکلات را در پارتی وجود دارد حتی اگر باش قرار بود برای متوقف کردن 155 00:07:44,290 --> 00:07:48,980 خطوط خواندن از دستور راست پس از متن زرد، 156 00:07:48,980 --> 00:07:52,520 برای 20 به علاوه سال اشکال قدیمی، باش تا به حقیقت خواندن 157 00:07:52,520 --> 00:07:56,780 فراتر از آن نقطه و ویرگول و زیبا بسیار انجام آنچه در آن است گفت. 158 00:07:56,780 --> 00:07:59,070 >> پس چه مفهوم است از که در نهایت؟ 159 00:07:59,070 --> 00:08:01,340 من فقط گفت: "اکو سلام" و یا "اکو آسیب پذیر،" 160 00:08:01,340 --> 00:08:05,449 اما اگر شما چیزی را انجام داد در واقع مخرب، مانند کنترل از راه دور -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 کنترل از راه دور می کند چه، البته؟ 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 تحقیق اتفاق می افتد به معنی بازگشتی، که بدان معنی است که اگر آنچه را که شما حذف 172 00:08:23,379 --> 00:08:26,420 یک دایرکتوری است، و در داخل وجود دارد سایر فایل ها و دایرکتوری های دیگر است، 173 00:08:26,420 --> 00:08:28,950 به صورت بازگشتی به وجود شیرجه و حذف همه از آن. 174 00:08:28,950 --> 00:08:31,040 و ج بدترین از همه آنها است. 175 00:08:31,040 --> 00:08:32,580 کسی می داند که اف بدان معنی است که اینجا هستید؟ 176 00:08:32,580 --> 00:08:33,690 177 00:08:33,690 --> 00:08:34,360 نیروی. 178 00:08:34,360 --> 00:08:37,830 بنابراین مجبور معنی، حتی در صورتی که این ایده بدی است، 179 00:08:37,830 --> 00:08:40,939 این کار را انجام بدون موجب من برای تایید بیشتر. 180 00:08:40,939 --> 00:08:43,230 بنابراین، شما می دانید، ما در خنده این، اما رک و پوست کنده، من احتمالا 181 00:08:43,230 --> 00:08:44,972 این چند بار تایپ یک روز، به این دلیل که واقعیت 182 00:08:44,972 --> 00:08:47,210 است آن را به سریع ترین راه برای است حذف یک دسته کامل از مسائل. 183 00:08:47,210 --> 00:08:48,590 اما حتی من برخی از آسیب انجام داده اند. 184 00:08:48,590 --> 00:08:53,100 >> اما اگر شما به فریب یک کامپیوتر به تعریف برخی از متغیر احمق 185 00:08:53,100 --> 00:08:56,810 و یا تابع به نام x و اما بعد از آن فریب کامپیوتر به اجرای 186 00:08:56,810 --> 00:09:00,030 فراتر از مرزهای آن تابع، فراتر از آن نقطه و ویرگول، 187 00:09:00,030 --> 00:09:04,430 شما در واقع می تواند فریب کامپیوتر به اجرای چیزی شبیه به کنترل از راه دور -rf 188 00:09:04,430 --> 00:09:07,810 و یا دستور به ایمیل و یا از دستور کپی. 189 00:09:07,810 --> 00:09:11,400 هر چیزی به معنای واقعی کلمه شما می توانید با انجام کامپیوتر، که آیا آن را پاک کردن فایل ها، 190 00:09:11,400 --> 00:09:15,350 ایجاد فایل ها، هرزه نگاره، وارد کسی، حمله به برخی از سرور از راه دور، 191 00:09:15,350 --> 00:09:17,190 اگر شما می توانید آن را بیان با یک فرمان شما 192 00:09:17,190 --> 00:09:19,120 می توانید یک کامپیوتر را به انجام است که فریب. 193 00:09:19,120 --> 00:09:21,510 >> در حال حاضر آنچه به عنوان مثال از این چگونه ممکن است این کار؟ 194 00:09:21,510 --> 00:09:24,300 خوب، در بسیاری از کامپیوتر وجود دارد در پارتی اینترنت در حال اجرا. 195 00:09:24,300 --> 00:09:26,390 همه کاربران ما مک در میان آنها هستند. 196 00:09:26,390 --> 00:09:30,390 بسیاری از سرور های لینوکس در میان است آنها را به عنوان خوب، و سرور یونیکس. 197 00:09:30,390 --> 00:09:32,630 ویندوز دوباره می شود نسبتا خاموش قلاب 198 00:09:32,630 --> 00:09:34,590 مگر اینکه شما نصب نرم افزار ویژه. 199 00:09:34,590 --> 00:09:37,130 در حال حاضر بسیاری از سرویس دهنده، برای به عنوان مثال، وب سرور اجرا شود، 200 00:09:37,130 --> 00:09:39,840 و در واقع لینوکس است که شاید ترین سیستم عامل محبوب 201 00:09:39,840 --> 00:09:43,060 به اجرا در کامپیوتر در اینترنت که در خدمت کردن صفحات وب است. 202 00:09:43,060 --> 00:09:44,910 حالا که ما بعد خواهید دید در ترم، هنگامی که 203 00:09:44,910 --> 00:09:48,470 شما یک درخواست از ارسال مرورگر خود را به کروم، 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 کنترل از راه دور 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 چرا که مگر اینکه شما در tinkered با لوازم 246 00:11:49,804 --> 00:11:52,770 و لپ تاپ شما عمومی در دسترس بر روی اینترنت است که نمی 247 00:11:52,770 --> 00:11:54,910 به طور پیش فرض، شما در واقع خوب است چون بوده است 248 00:11:54,910 --> 00:11:56,890 از دیواره آتش و روش های دیگر. 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 شما اعتماد که به معنای واقعی کلمه هر برنامه در مک و یا 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 SPEAKER 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 و جاوا اسکریپت را دریافت کنید 375 00:17:48,780 --> 00:17:49,946 در پایان ترم. 376 00:17:49,946 --> 00:17:53,667 اما در حال حاضر، از آن فکر می کنم به عنوان یک اشاره از چه چیزی آمده است. 377 00:17:53,667 --> 00:17:54,250 سوال خوب. 378 00:17:54,250 --> 00:17:56,051 379 00:17:56,051 --> 00:17:56,550 خوب. 380 00:17:56,550 --> 00:17:59,730 بنابراین ادغام مرتب کردن بر اساس بود که چگونه ما همه چیز سمت چپ زمان آخرین. 381 00:17:59,730 --> 00:18:03,250 و ادغام مرتب کردن بر اساس سرد در بود معنای آن است که خیلی سریع تر بود، 382 00:18:03,250 --> 00:18:07,100 حداقل در تست گذرا بر ما در هفته گذشته نسبت به مثلا حباب انجام داد، 383 00:18:07,100 --> 00:18:08,710 مرتب کردن بر اساس، انتخاب نوع، مرتب درج. 384 00:18:08,710 --> 00:18:11,780 و آنچه بیش از حد شسته و رفته بود فقط چگونه موجز و پاک 385 00:18:11,780 --> 00:18:12,810 شما می توانید آن را بیان کنند. 386 00:18:12,810 --> 00:18:15,840 و آنچه را که به ما می گویند که بالا بود محدود به زمان در حال اجرا از ادغام 387 00:18:15,840 --> 00:18:16,340 مرتب سازی بر اساس؟ 388 00:18:16,340 --> 00:18:17,633 389 00:18:17,633 --> 00:18:18,495 آره؟ 390 00:18:18,495 --> 00:18:19,360 >> رسید n log n استفاده؟ 391 00:18:19,360 --> 00:18:20,819 >> SPEAKER 1: n log n استفاده، درست است. n log n استفاده. 392 00:18:20,819 --> 00:18:23,776 و ما را به آنچه که می آیند واقعا به معنی و یا در آن است که از میان می آید، 393 00:18:23,776 --> 00:18:25,570 اما این بهتر بود از چه زمانی در حال اجرا 394 00:18:25,570 --> 00:18:28,440 که ما برای حباب دیدم انتخاب و نوع قرار دادن؟ 395 00:18:28,440 --> 00:18:30,610 بنابراین تعداد مربع. تعداد مربع بزرگتر از این است، 396 00:18:30,610 --> 00:18:34,650 و حتی اگر آن را کاملا روشن نیست، می دانیم که log n است کوچکتر از n است، 397 00:18:34,650 --> 00:18:36,910 بنابراین اگر شما انجام برپایه نفر چیزی کوچکتر از n، 398 00:18:36,910 --> 00:18:38,680 آن را به کمتر از n به توان. 399 00:18:38,680 --> 00:18:40,130 این بیت از شهود وجود دارد. 400 00:18:40,130 --> 00:18:42,190 اما ما قیمت را برای این پرداخت می شود. 401 00:18:42,190 --> 00:18:47,000 آن را سریع تر بود، اما یک موضوع است که آغاز شده در هفته گذشته به ظهور این معاوضه بوده است. 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 SPEAKER 1: دوباره بگو؟ 406 00:18:54,465 --> 00:18:55,173 رسید حافظه. 407 00:18:55,173 --> 00:18:57,040 SPEAKER 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 و رک و پوست کنده، در فضای دنیای واقعی این RAM 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 SPEAKER 1: دوباره بگو؟ 426 00:19:38,663 --> 00:19:39,650 رسید تقسیم به دو. 427 00:19:39,650 --> 00:19:40,610 SPEAKER 1: تقسیم در دو، درست است. 428 00:19:40,610 --> 00:19:42,818 این است که بسیار یادآور کتاب تلفن، از شکاف 429 00:19:42,818 --> 00:19:44,220 و تسخیر به طور کلی. 430 00:19:44,220 --> 00:19:45,640 بنابراین ما در نیمه سمت چپ نگاه کرد. 431 00:19:45,640 --> 00:19:48,700 و پس از آن زمانی که ما گفت، مرتب کردن بر اساس نیمه سمت چپ عناصر، 432 00:19:48,700 --> 00:19:49,690 چه ما بعد می گویند؟ 433 00:19:49,690 --> 00:19:51,210 434 00:19:51,210 --> 00:19:54,860 مرتب کردن بر اساس نیمه چپ سمت چپ نیم، که به ما اجازه، 435 00:19:54,860 --> 00:19:57,570 پس از تقسیم در دو، تمرکز بر روی چهار و دو. 436 00:19:57,570 --> 00:20:01,280 >> چگونه می توانم یک لیست شما مرتب در حال حاضر، در زرد، اندازه دو، با استفاده از ادغام مرتب سازی بر؟ 437 00:20:01,280 --> 00:20:02,330 438 00:20:02,330 --> 00:20:04,580 خوب آن را در نیمه تقسیم می شوند، و مرتب در نیمه سمت چپ. 439 00:20:04,580 --> 00:20:07,100 و این بود که در آن همه چیز به طور خلاصه احمقانه کمی کردم. 440 00:20:07,100 --> 00:20:10,720 چگونه می توانم یک لیست که از شما مرتب کردن بر اساس اندازه یک، مثل این تعداد چهار که اینجا هستید؟ 441 00:20:10,720 --> 00:20:12,330 442 00:20:12,330 --> 00:20:13,210 این طبقه بندی شده اند. 443 00:20:13,210 --> 00:20:14,200 شما انجام می شود. 444 00:20:14,200 --> 00:20:17,300 >> اما پس از آن چگونه می توانم به شما یک لیست از مرتب کردن بر اساس اندازه یک زمانی که آن را به تعداد دو است؟ 445 00:20:17,300 --> 00:20:21,640 خوب، همین است، اما در حال حاضر چه بود سوم و مرحله کلیدی در ادغام مرتب سازی بر؟ 446 00:20:21,640 --> 00:20:24,020 شما تا به حال به ادغام سمت چپ نصف و نیمه سمت راست. 447 00:20:24,020 --> 00:20:26,580 و زمانی که ما کار را انجام دادیم، ما نگاه در چهار، ما در دو نگاه کرد. 448 00:20:26,580 --> 00:20:28,750 ما تصمیم گرفتیم همه حق است، بدیهی است که دو می آید برای اولین بار، 449 00:20:28,750 --> 00:20:31,840 بنابراین ما دو قرار داده در آن محل، پس از چهار. 450 00:20:31,840 --> 00:20:35,010 و در حال حاضر شما به نوع عقب، و این نوع از مشخصه است 451 00:20:35,010 --> 00:20:37,570 یک الگوریتم مانند ادغام مرتب سازی بر، عقب در حافظه است. 452 00:20:37,570 --> 00:20:40,240 خط بعدی از داستان چه بود؟ 453 00:20:40,240 --> 00:20:41,780 باید چه کار کنم با تمرکز بر آینده؟ 454 00:20:41,780 --> 00:20:43,110 455 00:20:43,110 --> 00:20:47,350 نیمه سمت راست سمت چپ نیم، که شش و هشت است. 456 00:20:47,350 --> 00:20:50,320 >> بنابراین اجازه دهید من فقط از طریق این گام به گام بدون belaboring نقطه بیش از حد. 457 00:20:50,320 --> 00:20:53,330 شش و هشت، پس از آن شش است طبقه بندی شده اند، هشت طبقه بندی شده اند است. 458 00:20:53,330 --> 00:20:57,190 ادغام آنها را با هم می خواهم که، و در حال حاضر گام بزرگ بعدی 459 00:20:57,190 --> 00:21:00,990 است، البته، مرتب کردن نیمی از حق را از گام اول از این الگوریتم. 460 00:21:00,990 --> 00:21:02,870 بنابراین ما در یک، سه، هفت، پنج تمرکز می کنند. 461 00:21:02,870 --> 00:21:04,540 پس از آن ما در نیمه سمت چپ تمرکز می کنند. 462 00:21:04,540 --> 00:21:09,400 قسمت سمت چپ آن، نیمه سمت راست که، و سپس در یک و سه ادغام خواهند شد. 463 00:21:09,400 --> 00:21:13,100 سپس نیمه سمت راست، بعد از آن نیمه چپ از آن، و سپس نیمه راست آن است. 464 00:21:13,100 --> 00:21:15,985 ادغام آن را در، و در حال حاضر چه مرحله باقی می ماند؟ 465 00:21:15,985 --> 00:21:18,040 466 00:21:18,040 --> 00:21:22,460 ادغام نیمه چپ بزرگ و بزرگ نیمه سمت راست، بنابراین یکی پایین می رود وجود دارد، 467 00:21:22,460 --> 00:21:27,330 پس از آن دو، پس از آن سه، پس از آن چهار، پس از آن پنج، سپس شش، هفت، هشت. 468 00:21:27,330 --> 00:21:31,990 >> بنابراین در حال حاضر چرا این در نهایت آشکار، به خصوص اگر 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 بنابراین در اینجا نهفته است، پس از آن، ما n log n استفاده. 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 این یک O بزرگ از چه چیزی؟ 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 n اندازه ورودی است، بنابراین T (n) را، فقط یک راه فانتزی 502 00:22:54,150 --> 00:22:56,330 گفت: در حال اجرا زمان ورودی از اندازه n 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 (n) است. 511 00:23:17,900 --> 00:23:18,950 512 00:23:18,950 --> 00:23:22,490 و در حال حاضر شما از punting اینجا و گفت: خوب، فقط مرتب کردن نیمه سمت چپ، 513 00:23:22,490 --> 00:23:23,920 و سپس مرتب کردن نیمه راست. 514 00:23:23,920 --> 00:23:27,520 چگونه ممکن است ما پایتخت زمان در حال اجرا از این خط زرد؟ 515 00:23:27,520 --> 00:23:28,020 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) و پس از آن دوباره، اگر I ادغام دو نیمه مرتب شده، 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 n است. 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 (n) را فقط در زمان در حال اجرا از T (n / 2) است، به علاوه T (n / 2)، سمت چپ نصف و نیمه سمت راست، 527 00:23:51,140 --> 00:23:55,360 به علاوه O (n) است، که احتمالا نفر مراحل، اما شاید اگر من با استفاده از دو انگشت، 528 00:23:55,360 --> 00:23:57,960 آن را دو برابر بسیاری از مراحل، اما این خطی است. 529 00:23:57,960 --> 00:24:00,440 این از چند مرحله است که یک عامل از n است، 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 ما که عود در نهایت هستید به پایان می رسد تا برابر این، n بار ورود نفر، 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 من با استفاده از حلقه for است. 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، که ظاهرا می افزاید: اعداد یک تا n. 550 00:25:03,709 --> 00:25:05,750 بنابراین اجازه دهید ببینیم که چه چیزی است آشنا و نا آشنا است. 551 00:25:05,750 --> 00:25:08,690 اول ما یک زن و شوهر از شامل، بنابراین هیچ چیز جدیدی وجود دارد. 552 00:25:08,690 --> 00:25:09,190 نمونه اولیه. 553 00:25:09,190 --> 00:25:11,370 من مبهم و مه آلود کمی در هستم این بعد از چند روز، 554 00:25:11,370 --> 00:25:13,790 اما چه چیزی به ما می گویند نمونه اولیه از یک تابع است؟ 555 00:25:13,790 --> 00:25:15,099 556 00:25:15,099 --> 00:25:16,015 رسید [نامفهوم]. 557 00:25:16,015 --> 00:25:16,905 SPEAKER 1: آن چیست؟ 558 00:25:16,905 --> 00:25:17,800 رسید ما آن را اعلام خواهد کرد. 559 00:25:17,800 --> 00:25:18,883 SPEAKER 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-- و I می تواند صریح تر 566 00:25:33,720 --> 00:25:36,570 و می گویند اعضای هیات نفر بشکل آن را رفتن به بازگشت به یک int، 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 من اعلام می کنم یک متغیر نفر، و پس از آن I اذیت کردن کاربر دوباره و دوباره 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 من اعلام می کنم یک int به نام "پاسخ دهد." 580 00:26:08,510 --> 00:26:11,420 من آن را مقدار بازگشتی اختصاص از یک تابع به نام "سیگما." 581 00:26:11,420 --> 00:26:15,200 من نمی دانم آنچه را که انجام می دهد، اما من به یاد داشته باشید اعلام آن یک لحظه پیش. 582 00:26:15,200 --> 00:26:18,310 و سپس من در عبور ارزش است که کاربر تایپ در، ن، 583 00:26:18,310 --> 00:26:20,420 و پس از آن من پاسخ گزارش. 584 00:26:20,420 --> 00:26:22,260 خب اجازه دهید به عقب حرکت برای فقط یک لحظه. 585 00:26:22,260 --> 00:26:28,620 اجازه دهید پیش بروید به این شاخه، را سیگما 0، و در واقع این برنامه را اجرا کنید 586 00:26:28,620 --> 00:26:30,490 و ببینید چه اتفاقی می افتد. 587 00:26:30,490 --> 00:26:35,930 بنابراین اگر من جلو بروید و اجرا این برنامه، ./sigma-0، 588 00:26:35,930 --> 00:26:40,139 و من در یک نوع مثبت عدد صحیح مانند دو، سیگما، 589 00:26:40,139 --> 00:26:43,180 به عنوان نماد یونانی به معنی این است که فقط، رفتن به اضافه کردن تمام اعداد از 590 00:26:43,180 --> 00:26:44,320 صفر در تا دو. 591 00:26:44,320 --> 00:26:46,560 بنابراین 0 به علاوه 1 به علاوه 2. 592 00:26:46,560 --> 00:26:48,830 بنابراین این امید باید من 3 را. 593 00:26:48,830 --> 00:26:49,750 که همه آن را انجام می دهید. 594 00:26:49,750 --> 00:26:52,690 و به طور مشابه، اگر من این دوباره اجرا و من آن را به تعداد سه، 595 00:26:52,690 --> 00:26:56,721 که 3 به علاوه 2، به طوری که 5، به علاوه 1 باید به من 6 داد. 596 00:26:56,721 --> 00:26:59,470 و پس از آن اگر من واقعا دیوانه و شروع به تایپ اعداد بزرگتر، 597 00:26:59,470 --> 00:27:01,290 باید آن را به من بدهد مبالغ بزرگتر و بزرگتر. 598 00:27:01,290 --> 00:27:02,250 به طوری که تمام است. 599 00:27:02,250 --> 00:27:04,010 >> پس چه سیگما چگونه است؟ 600 00:27:04,010 --> 00:27:05,430 خوب، آن را بسیار آسان می کند. 601 00:27:05,430 --> 00:27:08,940 این که ما چگونه ممکن است اجرا این کار را برای دو هفته گذشته. 602 00:27:08,940 --> 00:27:11,120 "اعضای هیات" در حال رفتن به نوع بازگشت. 603 00:27:11,120 --> 00:27:14,330 سیگما به نام است، و آن طول می کشد متر متغیر به جای n است. 604 00:27:14,330 --> 00:27:15,940 من آنرا تغییر خواهیم داد بالا. 605 00:27:15,940 --> 00:27:17,340 سپس این فقط یک چک سلامت عقل است. 606 00:27:17,340 --> 00:27:18,430 607 00:27:18,430 --> 00:27:19,950 ما در یک لحظه ببینید که چرا. 608 00:27:19,950 --> 00:27:24,220 حالا من اعلام متغیر دیگر، نتیجه، مقداردهی اولیه به صفر است. 609 00:27:24,220 --> 00:27:28,140 سپس من از این باید برای حلقه تکرار، ظاهرا برای وضوح، 610 00:27:28,140 --> 00:27:33,810 از من = 1 تا = متر است که هر کاربر در تایپ، و پس از آن من 611 00:27:33,810 --> 00:27:35,690 افزایش مجموع مثل این. 612 00:27:35,690 --> 00:27:37,360 و سپس بازگشت از مجموع. 613 00:27:37,360 --> 00:27:38,440 >> بنابراین زن و شوهر از سوالات. 614 00:27:38,440 --> 00:27:42,370 یکی، من در نظر من که این ادعا اجتناب از خطر حلقه بی نهایت. 615 00:27:42,370 --> 00:27:45,620 چرا در یک عدد منفی عبور القاء، به طور بالقوه، حلقه بی نهایت؟ 616 00:27:45,620 --> 00:27:49,396 617 00:27:49,396 --> 00:27:51,290 >> رسید هرگز متر برسد. 618 00:27:51,290 --> 00:27:52,880 >> SPEAKER 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 OK. 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 SPEAKER 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 SPEAKER 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 برای حلقه، یک حلقه در حالی که، آیا در حالی که حلقه، فقط انجام کاری دوباره 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 تا n یا m در این مورد، 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 بنابراین شما می توانید نوع just-- این مثل است، اگر شما فقط هستید 700 00:31:26,012 --> 00:31:28,220 تلاش برای آزار یک دوست و آنها به شما یک سوال بپرسم، 701 00:31:28,220 --> 00:31:31,344 شما نوع با یک سوال پاسخ می دهند، شما می توانید نوع نگه عبور جفتک انداختن. 702 00:31:31,344 --> 00:31:34,560 اما آنچه مهم این است که اگر شما در حفظ و ساخت سوال کوچکتر و کوچکتر 703 00:31:34,560 --> 00:31:36,910 و کوچکتر، شما درخواست نیست که چه سیگما است 704 00:31:36,910 --> 00:31:39,116 از نفر، چه سیگما از است نفر، چه سیگما از n است؟ 705 00:31:39,116 --> 00:31:40,990 شما می گی چه سیگما از n، چه سیگما است 706 00:31:40,990 --> 00:31:42,839 از n منهای 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 >> OK. 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 که در آن I یک مقدار سخت رمزی می گردد؟ 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 SPEAKER 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 SPEAKER 1: روش هرگز در حال اجرا متوقف می شود، 763 00:34:02,300 --> 00:34:06,658 و در واقع آن خود را دوباره می خواند و دوباره و دوباره و دوباره 764 00:34:06,658 --> 00:34:08,449 و دوباره، و هیچ یک از آن دسته از توابع همیشه 765 00:34:08,449 --> 00:34:13,310 پایان چرا که خط خود را تنها از کد دوباره و دوباره می خواند themself 766 00:34:13,310 --> 00:34:14,219 و دوباره. 767 00:34:14,219 --> 00:34:16,080 و چیزی که واقعا اتفاق می افتد، و در حال حاضر ما 768 00:34:16,080 --> 00:34:18,100 می توانید نوع از این رسم pictorially. 769 00:34:18,100 --> 00:34:20,899 اجازه بدهید بیش از رفتن به یک تصویر برای فقط یک لحظه. 770 00:34:20,899 --> 00:34:22,940 این یک عکس است، که در نهایت گوشت از 771 00:34:22,940 --> 00:34:26,336 با جزئیات بیشتر، از چه خبر است در داخل حافظه کامپیوتر شما. 772 00:34:26,336 --> 00:34:28,460 و معلوم است که در پایین این تصویر 773 00:34:28,460 --> 00:34:29,709 چیزی به نام پشته است. 774 00:34:29,709 --> 00:34:31,920 این یک تکه از است حافظه، یک تکه از RAM، 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 با برخی از گوگل آشنا هستند جوک ها در داخل، اگر شما به گوگل 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 طول می کشد در a و b. 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 >> SPEAKER 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 SPEAKER 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 SPEAKER 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 و به این ترتیب ما با استفاده از یک فنجان، تماس سوم آن TMP، T-M-P توسط کنوانسیون، 916 00:40:15,260 --> 00:40:19,370 قرار داده و محتویات OJ در آن، پس از مبادله یک فنجان، 917 00:40:19,370 --> 00:40:22,610 سپس OJ به قرار فنجان اصلی، در نتیجه 918 00:40:22,610 --> 00:40:25,320 دستیابی به، دقیقا به عنوان لورا بود، مبادله. 919 00:40:25,320 --> 00:40:26,850 >> بنابراین اجازه دهید کار را انجام دقیقا همان است که. 920 00:40:26,850 --> 00:40:30,110 اجازه بدهید من به جلو و باز کردن یک مثال که 921 00:40:30,110 --> 00:40:32,720 در واقع به نام "هیچ مبادله، "به خاطر این است که 922 00:40:32,720 --> 00:40:36,180 به سادگی انجام می شود که شما ممکن است فکر می کنم. 923 00:40:36,180 --> 00:40:41,190 بنابراین در این برنامه، توجه کنید که من با استفاده از stdio.h، دوست قدیمی ما. 924 00:40:41,190 --> 00:40:43,130 من نمونه برای مبادله کردن وجود دارد، که 925 00:40:43,130 --> 00:40:45,450 به معنی اجرای آن است احتمالا به پایین، 926 00:40:45,450 --> 00:40:48,050 و اجازه دهید ببینیم که چه چیزی این اصلی برنامه رفتن به برای من انجام دهد. 927 00:40:48,050 --> 00:40:52,020 من برای اولین بار اعلام اعضای هیات ایکس می شود یک و y هوشمند می شود دو. 928 00:40:52,020 --> 00:40:54,930 پس از آن به عنوان OJ فکر می کنم و شیر بود. 929 00:40:54,930 --> 00:40:57,100 و بعد من فقط باید یک تابع () printf گفت ایکس این است 930 00:40:57,100 --> 00:41:00,120 و 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 را وارد کنید * 1 است، سالانه 2 است، مبادله عوض میکنه. 939 00:41:28,320 --> 00:41:32,700 x است هنوز هم 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 اما اگر تماس های اصلی، مبادله و اصلی عبور می کند به مبادله دو آرگومان، a و b، 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 و تابع swap در واقع کار می کند. 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 ممکن است توضیح دهد که چرا در حال تغییر a و b در داخل از مبادله 965 00:42:58,770 --> 00:43:05,560 هیچ تاثیری بر x و y، حتی اگر I x و y به تابع swap منتقل می شود. 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 SPEAKER 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 >> SPEAKER 1: OK، بنابراین ما می تواند 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 SPEAKER 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 a و b، در عین حال، می به طور موثر اعلام کرد 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 و به این ترتیب در واقع، a و b تنها در این سینی وجود دارد 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 اجازه دهید ما موقعیت را درک مثل این، اما compellingly بیشتر، 1004 00:44:38,160 --> 00:44:39,940 حل مشکلات و پیدا کردن باگ. 1005 00:44:39,940 --> 00:44:40,940 من می خواهم به انجام این کار. 1006 00:44:40,940 --> 00:44:44,770 به جای ./noswap، من به جای هستم رفتن به اجرا ./noswap GDB. 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 برنامه من می شکند در خط من 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 من می خواهم به نوع بعدی، و یا، اگر شما می خواهم به فانتزی، فقط ازت برای آینده. 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 و در حال حاضر اگر نوع I بعد دوباره و چاپ سالانه، من باید 2 را ببینید. 1060 00:47:21,000 --> 00:47:23,870 من هم اکنون می توانید نسخه قابل چاپ ایکس دوباره، و رک و پوست کنده، 1061 00:47:23,870 --> 00:47:27,130 اگر من گرفتن کمی گیج به که در آن من هستم، من می توانید لیست برای لیست نوع 1062 00:47:27,130 --> 00:47:30,590 و فقط برخی از زمینه نگاه کنید به اطراف نقطه من در واقع در هستم. 1063 00:47:30,590 --> 00:47:35,180 و در حال حاضر من می توانم نوع بعد، و وجود دارد * 1 است. 1064 00:47:35,180 --> 00:47:36,300 حالا من نوع بعدی. 1065 00:47:36,300 --> 00:47:37,710 اوه، سالانه 2 است. 1066 00:47:37,710 --> 00:47:40,750 و دوباره، آن را گیج کننده است، چون خروجی GDB در 1067 00:47:40,750 --> 00:47:43,044 است که با خروجی خود من commingled. 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 و اگر I سالانه چاپ در حال حاضر، هنوز هم یکی. 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 اجازه بدهید من نسخه قابل چاپ پوشه tmp. 1090 00:48:46,760 --> 00:48:47,770 1091 00:48:47,770 --> 00:48:48,800 ایست. 1092 00:48:48,800 --> 00:48:51,438 چرا tmp در برخی از دیوانه، ارزش زباله های ساختگی؟ 1093 00:48:51,438 --> 00:48:54,579 1094 00:48:54,579 --> 00:48:56,120 رسید این است مقداردهی اولیه نشده است. 1095 00:48:56,120 --> 00:48:57,150 SPEAKER 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 بنابراین در حال حاضر من قصد دارم به جلو بروید و نوع بعد، و اگر من در حال حاضر تایپ tmp در چاپ، 1103 00:49:17,086 --> 00:49:17,835 چه باید مراجعه کرد؟ 1104 00:49:17,835 --> 00:49:19,570 1105 00:49:19,570 --> 00:49:23,360 هر چه ارزش بود، آرگومان اول است، فقط 1106 00:49:23,360 --> 00:49:25,550 مانند x اول چیزی که گذشت در، 1107 00:49:25,550 --> 00:49:30,450 بنابراین و x باید چنین باشد، بنابراین چاپ tmp در باید به من یک چاپ. 1108 00:49:30,450 --> 00:49:36,360 >> پس چه شما در مجموعه ای مشکل سه آموزش از انواع در GDB است، 1109 00:49:36,360 --> 00:49:40,020 اما متوجه باشید که این ابتدای کار است از یک نگاه ابزاری است که در واقع خواهد شد 1110 00:49:40,020 --> 00:49:42,774 به شما کمک کند مشکلات را حل کند بسیار موثر است. 1111 00:49:42,774 --> 00:49:44,690 آنچه ما در نهایت می رفتن به روز چهارشنبه انجام 1112 00:49:44,690 --> 00:49:48,180 است شروع به پوست کندن پشت چند لایه و حذف برخی از چرخ آموزش. 1113 00:49:48,180 --> 00:49:50,496 که چیزی به نام رشته ای که ما برای برخی از زمان استفاده می شود، 1114 00:49:50,496 --> 00:49:53,370 ما قصد داریم به آرامی گرفتن که دور از شما و شروع به صحبت کردن در مورد 1115 00:49:53,370 --> 00:49:55,725 چیزی esoterically تر شناخته شده به عنوان کاراکتر *، 1116 00:49:55,725 --> 00:49:59,550 اما ما قصد داریم برای انجام این کار خوب و به آرامی در ابتدا، حتی اگر اشاره گر، 1117 00:49:59,550 --> 00:50:02,730 به عنوان آنها نامیده می شود، می تواند برخی از انجام همه چیز بسیار بد اگر مورد آزار قرار گرفته، 1118 00:50:02,730 --> 00:50:06,040 با نگاه به claymation کمی از دوستان ما نیک Parlante از دانشگاه استنفورد 1119 00:50:06,040 --> 00:50:09,670 دانشگاه، استاد در کامپیوتر علم که با هم قرار دادن این پیش نمایش 1120 00:50:09,670 --> 00:50:11,075 از چه چیزی آمده است این چهارشنبه. 1121 00:50:11,075 --> 00:50:12,196 1122 00:50:12,196 --> 00:50:13,400 >> [VIDEO پخش] 1123 00:50:13,400 --> 00:50:13,900 -Hey، Binky. 1124 00:50:13,900 --> 00:50:14,930 1125 00:50:14,930 --> 00:50:15,780 از خواب بیدار شوید. 1126 00:50:15,780 --> 00:50:17,240 این زمان برای اشاره گر سرگرم کننده است. 1127 00:50:17,240 --> 00:50:18,260 1128 00:50:18,260 --> 00:50:19,350 >> چه که؟ 1129 00:50:19,350 --> 00:50:21,150 اطلاعات در مورد اشاره گر؟ 1130 00:50:21,150 --> 00:50:22,050 اوه، بسیار خوب! 1131 00:50:22,050 --> 00:50:22,897 1132 00:50:22,897 --> 00:50:23,730 [END VIDEO پخش] 1133 00:50:23,730 --> 00:50:25,396 SPEAKER 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 Farnham. 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 چرا + نه؟ 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 VIDEO پخش]