1 00:00:00,000 --> 00:00:12,040 >> [მუსიკის დაკვრა] 2 00:00:12,040 --> 00:00:16,460 >> დინამიკები 1: ყველა უფლება, ეს არის CS50, და ეს არის დაწყების კვირაში ოთხი, 3 00:00:16,460 --> 00:00:20,420 და როგორც თქვენ შეიძლება გსმენიათ ან წავიკითხე, მსოფლიოში უკვე დამთავრებული. 4 00:00:20,420 --> 00:00:23,520 აპირებს მთელი ინტერნეტ უკვე ცოდნის და ინფორმირებულობის 5 00:00:23,520 --> 00:00:27,100 შეცდომა პროგრამაში, პროგრამირების ენა მოუწოდა Bash. 6 00:00:27,100 --> 00:00:32,729 ეს უკვე შესანიშნავად ბრენდირებული როგორც Shellshock, ან Bash კარით, 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, არ უნდა იყოს შორს, უფრო მეტ ხელს, up ახლა, იმის გამო, ვნახოთ. 17 00:01:00,250 --> 00:01:02,580 >> მოდით შევხედოთ, თუ რა არის უკვე მიმდინარეობს მედიაში 18 00:01:02,580 --> 00:01:05,304 და შემდეგ აუხსნას, რომ ცოტა აქ ჩვენთვის ტექნიკურად. 19 00:01:05,304 --> 00:01:07,670 20 00:01:07,670 --> 00:01:11,250 >> დინამიკები 2: უსაფრთხოების ექსპერტები გააფრთხილა, რომ სერიოზული ხარვეზი იქნებოდა 21 00:01:11,250 --> 00:01:15,650 იყოს იმის შესახებ, იმოქმედებს ასობით მილიონობით მსოფლიოში ვებგვერდი მომხმარებლებს. 22 00:01:15,650 --> 00:01:20,600 ასე რომ, რა არის შეცდომა, რომელიც უკვე გახმოვანებული Shellshock და რას აკეთებს ის? 23 00:01:20,600 --> 00:01:23,720 24 00:01:23,720 --> 00:01:28,910 ასევე, Shellshock ასევე ცნობილია, როგორც Bash bug, პროგრამული იყენებს. 25 00:01:28,910 --> 00:01:33,230 ჰაკერები იყენებენ ვირუსის სკანირების დაუცველი სისტემები გაშვებული Linux და Unix 26 00:01:33,230 --> 00:01:36,300 ოპერაციული სისტემები და შემდეგ აინფიცირებს მათ. 27 00:01:36,300 --> 00:01:38,730 Bash არის ბრძანების shell. 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 out of 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 ყველა ვებ სერვერებს, რომლებიც რისკი, მათ შორის ზოგიერთი Mac კომპიუტერი. 40 00:02:20,015 --> 00:02:22,760 41 00:02:22,760 --> 00:02:25,600 ასევე, დარწმუნდით, თქვენ Patch თქვენი სისტემების ახლა. 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 ეკრანები, რათა გამოიყურებოდეს out ნებისმიერი თავდასხმები. 46 00:02:37,355 --> 00:02:39,979 47 00:02:39,979 --> 00:02:41,770 დინამიკები 3: ყველაზე ცუდი რამ რაც შეიძლება მოხდეს არის 48 00:02:41,770 --> 00:02:45,080 რომ ვინმემ დაწეროს კოდი, რომელიც რაც ავტომატურად წავიდეს და ეძებოს 49 00:02:45,080 --> 00:02:48,280 ინტერნეტით და იმოქმედებდა ყველა ამ კომპიუტერებს. 50 00:02:48,280 --> 00:02:50,710 და კიდევ ისინი, რომ, ასევე, ყველაზე უარესი, რაც მათ შეეძლოთ, 51 00:02:50,710 --> 00:02:53,300 უბრალოდ წაშლის, ყველაფერი, ან დახურეს საიტები ქვემოთ. 52 00:02:53,300 --> 00:02:55,360 ამიტომ ვერ ვხედავ დაზიანება საწყისი თვალსაზრისით, 53 00:02:55,360 --> 00:02:58,300 სადაც ჩვენ არ გვაქვს მავნე ადამიანი ვინც უბრალოდ გადაწყვეტს, გამოიწვიოს Havoc 54 00:02:58,300 --> 00:03:02,534 მიერ შემოტანა სისტემების ქვემოთ ან წაშლის ფაილი, და რამ, როგორიცაა, რომ. 55 00:03:02,534 --> 00:03:05,200 დინამიკები 2: ზოგი ამბობს, რომ ეს არის ერთ ერთი ყველაზე რთული გავზომოთ 56 00:03:05,200 --> 00:03:08,080 შეცდომებს წლის განმავლობაში, და შეიძლება კვირით ან თუნდაც 57 00:03:08,080 --> 00:03:10,820 თვეში, რათა დადგინდეს მისი საბოლოო გავლენა. 58 00:03:10,820 --> 00:03:12,180 59 00:03:12,180 --> 00:03:15,560 >> დინამიკები 1: ასე რომ, ყველა, რომ მართალია, მაგრამ სასაცილო ის არის,, თითქმის ყველა 60 00:03:15,560 --> 00:03:18,330 გამოსახულება უბრალოდ დაინახა, გარდა შესაძლოა კლავიატურის, 61 00:03:18,330 --> 00:03:20,930 არაფერი აქვს ერთად შეცდომის გარეშე. 62 00:03:20,930 --> 00:03:23,960 სერვერები და მავთული და ა.შ., ეს ერთგვარი tangentially დაკავშირებული, 63 00:03:23,960 --> 00:03:27,410 მაგრამ ძირითადი ეს რეალურად საკმაოდ ნაცნობი რა ხდება აქ. 64 00:03:27,410 --> 00:03:30,050 ფაქტობრივად, ნება მომეცით წასვლას ჩვენი CS50 ელექტრო მოწყობილობების. 65 00:03:30,050 --> 00:03:32,910 ნება მომეცით წავიდეთ წინ და მაქსიმალურად ტერმინალის ფანჯარაში აქ. 66 00:03:32,910 --> 00:03:36,020 და შენ არ იყენებს ამ, ან ეს ჩანერგილი მობილური მისი, 67 00:03:36,020 --> 00:03:39,460 in gedit რათა დაწეროს პროგრამები, ტიპის ბრძანებები, და ა.შ., 68 00:03:39,460 --> 00:03:43,690 და ეს არის რეალურად, და აქვს უკვე კვირების განმავლობაში, Bash, B-A-S-H. 69 00:03:43,690 --> 00:03:46,890 ეს არის Bourne ისევ ჭურვი, რომელიც არის მხოლოდ ლამაზი გზა ამბობდა, 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 >> მაგრამ Bash ასევე პროგრამირების ენის შემდეგ აზრი. 76 00:04:01,320 --> 00:04:05,460 თქვენ იცით, რომ არსებობს ბრძანებები, როგორიცაა CD და ls და ასევე clang და სხვები, 77 00:04:05,460 --> 00:04:09,580 მაგრამ თქვენ შეგიძლიათ განსაზღვროთ თქვენი საკუთარი ბრძანებები ახორციელებს მათ Bash. 78 00:04:09,580 --> 00:04:11,420 ახლა ჩვენ არ ვაპირებთ წასვლას დიდი დეტალურად 79 00:04:11,420 --> 00:04:16,089 როგორც Bash პროგრამირების ენა, მაგრამ ვიცი, რომ, მაგალითად, ამ ეტაპზე, 80 00:04:16,089 --> 00:04:17,607 არ არსებობს ბრძანება მოუწოდა "Hello". 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 მაგრამ თუ მინდა, რომ იყოს პროგრამა ე.წ. "Hello" Bash ან ჩემი დროული, 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 არაფერი არ მოხდება, მაგრამ ახლა თუ მე აკრიფოთ "Hello" 88 00:04:38,090 --> 00:04:40,960 თქვენ შეგიძლიათ რეალურად დაწეროს პროგრამა კი არა, C, არა Java, 89 00:04:40,960 --> 00:04:44,280 არა სხვა პროგრამირების ენის, მაგრამ Bash თავად. 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 როგორც განზე, ასევე შეგიძლიათ გააკეთოთ გართობა რამ, და, სხვათა შორის, on Mac OS, 93 00:04:54,010 --> 00:04:55,620 ეს არის პროგრამის მოუწოდა Terminal. 94 00:04:55,620 --> 00:04:58,800 ის მოდის ჩაშენებული ვინმეს კომპიუტერი, რომელსაც აქვს Mac ამ ოთახში, 95 00:04:58,800 --> 00:05:03,640 და შეგიძლიათ გააკეთოთ მსგავსი რამ Mac OS, მაგრამ შეიძლება უფრო მიღმა. 96 00:05:03,640 --> 00:05:07,110 და ეს არის პატარა tangential, მაგრამ ეს ერთგვარი გართობა. 97 00:05:07,110 --> 00:05:09,715 მე შეახსენა ამ დილით, როდესაც ვფიქრობ ამ გზით, 98 00:05:09,715 --> 00:05:13,279 პატარა თამაში მე უნდა ითამაშოს ერთი CS50 ყოფილი TFs 99 00:05:13,279 --> 00:05:16,570 რომლის დროსაც ნებისმიერ დროს, იგი ფეხით დაშორებით მისი კლავიატურა მისი ეკრანზე გახსნილია, 100 00:05:16,570 --> 00:05:23,611 მინდა შეასრულოს ბრძანება მსგავსი რამ "მიესალმე." 101 00:05:23,611 --> 00:05:26,610 და ახლა ნებისმიერ დროს იგი დაბრუნდა თავის კლავიატურის შემდეგ I განბაჟებული ეკრანზე 102 00:05:26,610 --> 00:05:27,985 და იგი ზის ქვემოთ, ვცდილობთ გავაკეთოთ ზოგიერთი მუშაობა, 103 00:05:27,985 --> 00:05:29,250 მიუთითეთ შინაარსი მისი დირექტორიაში 104 00:05:29,250 --> 00:05:29,510 >> [აუდიო აღწარმოების] 105 00:05:29,510 --> 00:05:30,010 >> -Hello. 106 00:05:30,010 --> 00:05:31,621 107 00:05:31,621 --> 00:05:32,120 Hello. 108 00:05:32,120 --> 00:05:35,030 >> დინამიკები 1: ასე, რომ სამართლიანობა, ეს არ იყო რეალურად "Hello". 109 00:05:35,030 --> 00:05:36,894 ეს, ჩვეულებრივ, რაღაც უფრო akin რომ that-- 110 00:05:36,894 --> 00:05:37,560 [აუდიო აღწარმოების] 111 00:05:37,560 --> 00:05:37,750 -Beep. 112 00:05:37,750 --> 00:05:39,320 დინამიკები 1: --that I would-- ასე რომ მისი კომპიუტერი 113 00:05:39,320 --> 00:05:42,170 ლანძღავთ მას ნებისმიერ დროს, რეალურად კი დაჯდა კლავიატურაზე. 114 00:05:42,170 --> 00:05:46,265 და ძალიან სწრაფად მან figured out არ დატოვებს ეკრანზე გახსნილია. 115 00:05:46,265 --> 00:05:48,730 მაგრამ ეს მეტყველებს სახის სულელური გართობა, რომ თქვენ 116 00:05:48,730 --> 00:05:50,210 შეიძლება ჰქონდეს რაღაც Bash. 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 ფლობდეს Mac, ფაქტიურად ახლა როდესაც თქვენ გაქვთ თქვენი სახურავი ღიაა, 124 00:06:10,448 --> 00:06:12,940 შეგიძლიათ ცდილობენ აკრეფით, რომ პროგრამა მოუწოდა Terminal. 125 00:06:12,940 --> 00:06:15,410 Terminal მზადების პროგრამები Utilities-- 126 00:06:15,410 --> 00:06:18,790 ერთხელ, Windows წევრებს არ აქვთ ფიქრი ამ კონკრეტულ threat-- 127 00:06:18,790 --> 00:06:22,310 მაგრამ იმ თქვენ, Macs, შეგიძლიათ აკრიფოთ ამ შევიდა ფანჯარა, როგორიცაა მე აქ, 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 მე ვხედავ რაღაც მრგვალი, semicolons, curly braces, და ასეთი, 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 ასე რომ შიგნით ამ curly braces, ის ფაქტი, 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 ეს შეიძლება იყოს რაღაც "ეხო Hello "ან" აცხადებენ, beep "ან რამე 145 00:07:14,040 --> 00:07:15,120 akin რომ. 146 00:07:15,120 --> 00:07:17,780 მაგრამ შეამჩნია, თუ თქვენი თვალები wander უფრო მარჯვნივ, 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 სხვა მძიმით, bash-C :. 150 00:07:26,530 --> 00:07:28,120 151 00:07:28,120 --> 00:07:34,050 >> ასე მოკლედ, ამ ხაზი კოდი არის 152 00:07:34,050 --> 00:07:36,660 საკმარისია მყარი კომპიუტერი, რომელიც არის 153 00:07:36,660 --> 00:07:39,830 სოციალურად დაუცველი თავისსავე რომ გსურთ ამის გაკეთება, 154 00:07:39,830 --> 00:07:44,290 იმიტომ, რომ იქ შეცდომა Bash, რომლის დროსაც მიუხედავად იმისა, რომ Bash იყო უნდა შეწყვიტოს 155 00:07:44,290 --> 00:07:48,980 კითხულობს ხაზები ბრძანება უფლება არსებობს შემდეგ ყვითელი ტექსტი 156 00:07:48,980 --> 00:07:52,520 20-plus წლის bug, Bash ფაქტობრივად კითხულობს 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 მე უბრალოდ განაცხადა "ეხო Hello" ან "ეხმიანება დაუცველი" 160 00:08:01,340 --> 00:08:05,449 მაგრამ რა, თუ თქვენ გააკეთეთ რამე რეალურად მუქარის, როგორიცაა rm -rf * 161 00:08:05,449 --> 00:08:07,240 რომელიც თქვენ შეიძლება არ ოდესმე აკრეფილი, 162 00:08:07,240 --> 00:08:08,920 და გულწრფელად, ალბათ, არ უნდა ძალიან მალე, 163 00:08:08,920 --> 00:08:10,700 იმიტომ, რომ თქვენ არ შეუძლია გააკეთოს ბევრი ზიანი მას. 164 00:08:10,700 --> 00:08:11,210 რატომ? 165 00:08:11,210 --> 00:08:12,990 rm აკეთებს იმას, რასაც, რა თქმა უნდა? 166 00:08:12,990 --> 00:08:14,270 შლის. 167 00:08:14,270 --> 00:08:15,930 * რას ნიშნავს? 168 00:08:15,930 --> 00:08:16,430 ყველა. 169 00:08:16,430 --> 00:08:18,180 ასე რომ, ეს ე.წ. ველური ბარათი, რაც იმას ნიშნავს, 170 00:08:18,180 --> 00:08:20,410 წაშლა ყველაფერი მიმდინარე დირექტორია. 171 00:08:20,410 --> 00:08:23,379 -r ხდება ნიშნავს რეკურსიული, რაც იმას ნიშნავს, თუ თქვენ მას წაშლის 172 00:08:23,379 --> 00:08:26,420 დირექტორია და შიგნით არსებობს არის სხვა ფაილი და სხვა საიტები, 173 00:08:26,420 --> 00:08:28,950 რეკურსიული ჩაყვინთვის შევიდა არსებობს და წაშლა ყველა, რომ. 174 00:08:28,950 --> 00:08:31,040 და -f არის ყველაზე უარესი მათ ყველა. 175 00:08:31,040 --> 00:08:32,580 რა რა -f ნიშნავს აქ? 176 00:08:32,580 --> 00:08:33,690 177 00:08:33,690 --> 00:08:34,360 Force. 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 არის ის, რომ უსწრაფესი გზა წაშლა მთელი bunch პერსონალის. 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, მაგრამ შემდეგ tricking კომპიუტერული სიკვდილით დაესაჯა 186 00:08:56,810 --> 00:09:00,030 საზღვრებს, რომ ფუნქცია, მიღმა, მძიმით, 187 00:09:00,030 --> 00:09:04,430 თქვენ შეიძლება მართლაც შეასრულა კომპიუტერი სიკვდილით დაესაჯა რაღაც rm -rf 188 00:09:04,430 --> 00:09:07,810 ან Email ბრძანება ან კოპირება. 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 ასევე, არსებობს ბევრი კომპიუტერები ინტერნეტ გაშვებული Bash. 195 00:09:24,300 --> 00:09:26,390 ყველა ჩვენგანი Mac წევრებს, მათ შორის. 196 00:09:26,390 --> 00:09:30,390 ბევრი Linux სერვერები შორის მათ ასევე, და Unix სერვერები. 197 00:09:30,390 --> 00:09:32,630 Windows კვლავ იღებს შედარებით გამოეყვანა მოთმინებიდან 198 00:09:32,630 --> 00:09:34,590 თუ თქვენ დაყენებული სპეციალური პროგრამული უზრუნველყოფა. 199 00:09:34,590 --> 00:09:37,130 ახლა ბევრი სერვერები, for მაგალითად, აწარმოებს ვებ სერვერები, 200 00:09:37,130 --> 00:09:39,840 და, ფაქტობრივად, Linux, ალბათ, ყველაზე პოპულარული ოპერაციული სისტემა 201 00:09:39,840 --> 00:09:43,060 აწარმოებს კომპიუტერები ინტერნეტ რომ ემსახურება up ვებ გვერდები. 202 00:09:43,060 --> 00:09:44,910 ახლა, როგორც ვნახავთ, მოგვიანებით სემესტრში, როდესაც 203 00:09:44,910 --> 00:09:48,470 თქვენ აგზავნით მოთხოვნის თქვენი ბრაუზერი Chrome, 204 00:09:48,470 --> 00:09:50,790 Internet Explorer, whatever-- სერვერზე, 205 00:09:50,790 --> 00:09:53,730 გამოდის, რომ, მიუხედავად იმისა, თქვენ უბრალოდ აკრეფილი www.example.com, 206 00:09:53,730 --> 00:09:59,590 თქვენი ბრაუზერის აგზავნის გზავნილი რომ ცოტა უფრო arcane, მოსწონს ეს. 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 რომ დაუცველი Mac ან სოციალურად დაუცველი Linux სერვერზე, 213 00:10:17,270 --> 00:10:21,580 სასაცილო ის არის, რომ Bash, რომ უბრალო პატარა command prompt, 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 გაგზავნით რაღაც User-Agent, რომელიც, როგორც წესი, 218 00:10:36,370 --> 00:10:38,300 უნდა ვთქვა, სახელი თქვენს ბრაუზერში. 219 00:10:38,300 --> 00:10:42,420 User-Agent Chrome, User-Agent ინტერნეტი Explorer, User-Agent Firefox, ამ 220 00:10:42,420 --> 00:10:44,590 მხოლოდ თქვენი ბრაუზერის გზა საიდენტიფიკაციო თავად. 221 00:10:44,590 --> 00:10:46,605 მაგრამ თუ ცუდი ბიჭი ძალიან cleverly ამბობს, mm მმ, მე 222 00:10:46,605 --> 00:10:47,930 არ ვაპირებ გითხრათ, რა ჩემი ბრაუზერს, 223 00:10:47,930 --> 00:10:50,888 მე ნაცვლად აპირებს გამოგიგზავნით ამ cryptic ორიენტირებული რამ rm -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 შემდეგ კი ყველა მათგანი წარმოშობის, for მაგალითად, Harvard.edu სერვერები, 231 00:11:10,256 --> 00:11:12,130 და თქვენ შეგიძლიათ დაალაგოთ bang heck გარეთ მათ 232 00:11:12,130 --> 00:11:15,490 ქსელის ტრაფიკის, რომელიც იყო წინააღმდეგ შემთხვევაში, გამოიწვია ამ ცუდი ბიჭი. 233 00:11:15,490 --> 00:11:18,760 >> ასე რომ, მოკლედ, თითქმის ყველას ამ ოთახში, რომელიც ფლობს Mac 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 თუმცა, Apple მალე განახლებას სარემონტო ამისთვის. 241 00:11:36,210 --> 00:11:39,660 მსოფლიოს Linux უკვე გაათავისუფლეს რიგი აფიქსირებს Fedora და Ubuntu 242 00:11:39,660 --> 00:11:43,790 და სხვა ვერსიებს Linux, და მართლაც თუ თქვენ აწარმოებს update 50 მოწყობილობის, 243 00:11:43,790 --> 00:11:45,930 თუნდაც ის, რომ ძალიან იქნება განახლებული და შესწორებული. 244 00:11:45,930 --> 00:11:47,764 მაგრამ ეს ძალიან არ აქვს მართლაც დაუცველი, 245 00:11:47,764 --> 00:11:49,804 იმიტომ, რომ თუ თქვენ tinkered ერთად ელექტრო 246 00:11:49,804 --> 00:11:52,770 და გააკეთა თქვენი ლეპტოპი საჯაროდ ინტერნეტში, რომელიც არ არის 247 00:11:52,770 --> 00:11:54,910 ჩვეულებრივ, თქვენ რეალურად ჯარიმა, რადგან 248 00:11:54,910 --> 00:11:56,890 საქართველოს firewalling და სხვა ტექნიკა. 249 00:11:56,890 --> 00:12:01,000 >> მაგრამ ეს უკიდურესი მაგალითია შეცდომის შესახებ რომ ჩვენ ცხოვრობდა ფაქტიურად 20 250 00:12:01,000 --> 00:12:04,050 წლის განმავლობაში, და ვინ იცის, თუ ვინმე ყველა ამ დროს უკვე ცნობილია ამის შესახებ? 251 00:12:04,050 --> 00:12:06,300 და, ფაქტობრივად, ეს არის ერთ ერთი ფუნდამენტური გამოწვევები 252 00:12:06,300 --> 00:12:08,690 ჩვენ დავინახავთ შემდეგ სემესტრის უშიშროების, 253 00:12:08,690 --> 00:12:13,020 ის არის, რომ ისევე, როგორც რეალურ ცხოვრებაში, კარგი ბიჭები არიან მინუსი. 254 00:12:13,020 --> 00:12:16,500 იმისათვის რომ ცუდები, ჩვენ უნდა დარწმუნდით, რომ ყველა კარი დაკეტილია, 255 00:12:16,500 --> 00:12:20,340 რომ ყველა ფანჯარა არის უსაფრთხო, რომ ყველა პუნქტი შევიდა სახლში 256 00:12:20,340 --> 00:12:21,980 უსაფრთხო შენარჩუნება ცუდი ბიჭები out. 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 იგი უბრალოდ უნდა იპოვონ unlocked კარით ჩამსხვრეული ფანჯრის, ან რაღაც 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 არ არსებობს აუცილებლობა action დღეს თუ თქვენ 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 და ჩვენ შედგენა მათ Clang. 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 Mario და Greedy და საკრედიტო. 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 ახლა კი ვიტყვი, რომ facetiously, მაგრამ ჩვენ ვაპირებთ, რომ დღეს 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 არის Clang in შემდგენელი. 294 00:14:04,850 --> 00:14:08,360 რატომ არ ჩვენ უკვე ვაღიარებთ Clang ბოლო ორი ან სამი კვირის? 295 00:14:08,360 --> 00:14:12,650 ვინ არის იმის თქმა, რომ ვინც წერდა Clang არ აქვს "თუ" მდგომარეობა იქ 296 00:14:12,650 --> 00:14:17,680 რომ არსებითად გაუკეთეს რამდენიმე zeros და ადამიანებს ყველა პროგრამა, რომ იგი ადგენს 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 ჩვენ გვაქვს ამ სახის პატივი სისტემის სწორი ახლა, სადაც ჩვენ გვწამს, რომ Clang არის legit. 301 00:14:28,350 --> 00:14:30,000 ენდობით, რომ ელექტრო მოწყობილობების არის legit. 302 00:14:30,000 --> 00:14:34,430 ენდობით, რომ ფაქტიურად ყველა პროგრამა თქვენს Mac ან PC არის სანდო. 303 00:14:34,430 --> 00:14:37,510 და, როგორც ეს მარტივი შეცდომის ვარაუდობს, მაშინაც კი, თუ ეს არ არის მავნე, 304 00:14:37,510 --> 00:14:40,580 ეს აბსოლუტურად არ სავარაუდოა, რომ იყოს საქმე. 305 00:14:40,580 --> 00:14:42,350 >> ასე რომ თქვენ უნდა იყოს შეშინებული, როგორც ჯოჯოხეთი. 306 00:14:42,350 --> 00:14:45,560 გულწრფელად ვამბობ, არ არსებობს მარტივი გამოსავალი ამ სხვა 307 00:14:45,560 --> 00:14:48,185 არა ერთგვარი საზოგადოებრივი შეგნების მზარდი კომპლექსურობის 308 00:14:48,185 --> 00:14:50,310 ჩვენ ვაშენებთ თავზე ჩვენი კომპიუტერული სისტემების, 309 00:14:50,310 --> 00:14:53,740 და როგორ უფრო დაუცველი ჩვენ შეიძლება ძალიან კარგად იქნება. 310 00:14:53,740 --> 00:14:55,570 >> ახლა რომ თქვა, Breakout. 311 00:14:55,570 --> 00:14:59,889 ასე Breakout არის პრობლემა მითითებული სამი და Breakout არის თამაშის yesteryear 312 00:14:59,889 --> 00:15:02,180 რომ თქვენ ალბათ გახსოვთ, მაგრამ ჩვენთვის პრობლემა კომპლექტი, სამი, 313 00:15:02,180 --> 00:15:04,450 ეს საშუალებას გვაძლევს მიიღოს რამ up მაღალი დონის 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 განსხვავებით, ჩვენ გვქონდა ხელმისაწვდომობის, Scratch. 317 00:15:17,800 --> 00:15:20,910 ასე რომ, ეს არის პერსონალის განხორციელების Breakout, 318 00:15:20,910 --> 00:15:23,930 რომელიც მხოლოდ ამ აგურის breaking თამაში, რომ თქვენ გადაადგილება თქვენი paddle უკან 319 00:15:23,930 --> 00:15:27,590 და მეოთხე, და თქვენ მოხვდა ბურთი იმ პირთა მიმართ, ფერადი აგური up დაბრუნება. 320 00:15:27,590 --> 00:15:30,020 ასე რომ, ეს მოგვიყვანეთ სახის დაბრუნება, სადაც 321 00:15:30,020 --> 00:15:33,180 ჩვენ შევძელით, რომ ძალიან სწრაფად ერთად Scratch, და ახლა 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 რომელშიც ჩვენ ვაძლევთ თქვენ bunch of კოდი. 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 >> და შემდეგ Breakout, ჩვენ ვაპირებთ, რომ გავაკეთოთ იგივე, 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 განხორციელების აგური და ბურთი და paddle, 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 მაგრამ გახსოვდეთ, ეს საკმაოდ მოსწონს Scratch. 344 00:16:26,281 --> 00:16:28,780 შანსი თქვენ არ გამოიყენონ ყველა თავსატეხი ცალი Scratch. 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 spec, ჩვენ აღვნიშნო თქვენ 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 საშუალებას გაძლევთ შექმნათ window რომ ძალიან არ განსხვავდება ამ, 355 00:16:56,110 --> 00:16:59,540 და საბოლოოდ ჩართოთ იგი რაღაც მსგავსი. 356 00:16:59,540 --> 00:17:02,250 ასე რომ ისარგებლოს CS50, განხილვა საათებში და მეტი, 357 00:17:02,250 --> 00:17:05,290 და ნუგეში ის ფაქტი, რომ ოდენობით კოდი თქვენ უნდა დაწეროს 358 00:17:05,290 --> 00:17:06,760 რეალურად არ არის ყველა, რომ ბევრად. 359 00:17:06,760 --> 00:17:10,359 პირველი გამოწვევა არის ის, acclimate თავს ზოგიერთი კოდი ჩვენ წერილობით. 360 00:17:10,359 --> 00:17:11,450 361 00:17:11,450 --> 00:17:15,810 >> ნებისმიერი კითხვები pset3, Shellshock, ან სხვაგვარად? 362 00:17:15,810 --> 00:17:19,226 >> აუდიტორია: თითქოს გადის Breakout 363 00:17:19,226 --> 00:17:22,154 რომ კოდი, თითქმის ობიექტზე ორიენტირებული სტილი, 364 00:17:22,154 --> 00:17:24,675 მაგრამ ვფიქრობდი, რომ C იყო ობიექტზე ორიენტირებული პროგრამა. 365 00:17:24,675 --> 00:17:26,050 დინამიკები 1: კარგი კითხვა. 366 00:17:26,050 --> 00:17:28,258 ასე რომ, გადახედეთ განაწილების კოდი, კოდი 367 00:17:28,258 --> 00:17:30,180 ჩვენ წერდა pset3, მათთვის, ვინც იცნობს, ის 368 00:17:30,180 --> 00:17:32,230 ჰგავს ეს პატარა ობიექტზე ორიენტირებული. 369 00:17:32,230 --> 00:17:33,800 მოკლე პასუხი არის, ის არის. 370 00:17:33,800 --> 00:17:38,130 ის დაახლოებას, თუ როგორ შეიძლება გავაკეთოთ ობიექტზე ორიენტირებული კოდი გამოყენებით 371 00:17:38,130 --> 00:17:41,850 ენის მსგავსად C, მაგრამ ეს ჯერ კიდევ საბოლოოდ პროცედურული. 372 00:17:41,850 --> 00:17:44,900 არ არსებობს მეთოდები შიგნით ცვლადები, როგორც თქვენ. 373 00:17:44,900 --> 00:17:46,180 მაგრამ ეს არის თქვენში, რომ. 374 00:17:46,180 --> 00:17:48,780 და ჩვენ ვხედავთ, რომ ფუნქცია ერთხელ როდესაც ჩვენ ვიღებთ PHP და JavaScript 375 00:17:48,780 --> 00:17:49,946 დასასრულს სემესტრში. 376 00:17:49,946 --> 00:17:53,667 მაგრამ ახლა, ვფიქრობ, რომ ეს მინიშნება რა მოვა. 377 00:17:53,667 --> 00:17:54,250 კარგი კითხვაა. 378 00:17:54,250 --> 00:17:56,051 379 00:17:56,051 --> 00:17:56,550 ყველა უფლება. 380 00:17:56,550 --> 00:17:59,730 ასე რომ შერწყმა დალაგების, თუ რამდენად ჩვენ მარცხენა რამ ბოლო დროს. 381 00:17:59,730 --> 00:18:03,250 და შერწყმა დალაგების იყო მაგარი გრძნობა, რომ ეს იმდენად სწრაფად, 382 00:18:03,250 --> 00:18:07,100 მინიმუმ საფუძველზე ზედაპირული ტესტები ჩვენ გავაკეთეთ გასულ კვირას, ვიდრე, ვთქვათ, bubble 383 00:18:07,100 --> 00:18:08,710 დახარისხების, შერჩევის დალაგების, Insertion დალაგების. 384 00:18:08,710 --> 00:18:11,780 და რა იყო სუფთა ესეც მხოლოდ როგორ მოკლედ და cleanly 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 შესვლა n? 391 00:18:19,360 --> 00:18:20,819 >> დინამიკები 1: N შესვლა N, უფლება. N შესვლა n. 392 00:18:20,819 --> 00:18:23,776 და ჩვენ დავბრუნდებით რა, რომ ნამდვილად ნიშნავს, ან სად რომ მოდის, 393 00:18:23,776 --> 00:18:25,570 მაგრამ ეს იყო უკეთესი გარდა იმისა, რაც ქრონომეტრაჟი 394 00:18:25,570 --> 00:18:28,440 ჩვენ ვნახეთ ბუშტი შერჩევა და Insertion დალაგების? 395 00:18:28,440 --> 00:18:30,610 ისე N კვადრატში. n კვადრატში უფრო დიდია, ვიდრე ეს, 396 00:18:30,610 --> 00:18:34,650 და მაშინაც კი, თუ ეს არ არის აშკარაა, ვიცი, რომ log N მცირეა n, 397 00:18:34,650 --> 00:18:36,910 ასე რომ, თუ n-ჯერ რაღაც პატარა, ვიდრე n, 398 00:18:36,910 --> 00:18:38,680 ეს იქნება ნაკლები N კვადრატში. 399 00:18:38,680 --> 00:18:40,130 ეს ცოტა ინტუიცია არსებობს. 400 00:18:40,130 --> 00:18:42,190 მაგრამ ჩვენ გადახდილი ფასი ამ. 401 00:18:42,190 --> 00:18:47,000 ეს იყო უფრო სწრაფად, მაგრამ თემა რომ დაიწყო წარმოშობა გასულ კვირას ამ tradeoff. 402 00:18:47,000 --> 00:18:49,804 მე მივიღე უკეთესი შესრულება დროის ბრძენი, მაგრამ რა 403 00:18:49,804 --> 00:18:52,470 არც მე უნდა დაიხარჯოს სხვა მხრივ, რათა მივაღწიოთ, რომ? 404 00:18:52,470 --> 00:18:53,591 >> აუდიტორია: Memory. 405 00:18:53,591 --> 00:18:54,465 დინამიკები 1: ამბობენ, რომ კიდევ ერთხელ? 406 00:18:54,465 --> 00:18:55,173 აუდიტორია: Memory. 407 00:18:55,173 --> 00:18:57,040 დინამიკები 1: მეხსიერება, ან ფართი ზოგადად. 408 00:18:57,040 --> 00:18:59,040 და ეს არ იყო სუპერ ცხადია, ჩვენს ადამიანებში, 409 00:18:59,040 --> 00:19:02,240 მაგრამ გავიხსენოთ, რომ ჩვენი მოხალისეები იყო სტეპინგზე ველით და აძლიერებს 410 00:19:02,240 --> 00:19:04,780 უკან თითქოს არ მასივი აქ, თითქოს, არსებობს 411 00:19:04,780 --> 00:19:07,130 მეორე მასივი აქ, რომ შეეძლო, იმიტომ, რომ ჩვენ 412 00:19:07,130 --> 00:19:09,080 საჭირო ადგილას შერწყმა იმ ეგ. 413 00:19:09,080 --> 00:19:11,480 ჩვენ ვერ მხოლოდ სვოპ მათ ადგილას. 414 00:19:11,480 --> 00:19:13,800 ასე რომ შერწყმა დალაგების ბერკეტები მეტი სივრცე, რომელიც 415 00:19:13,800 --> 00:19:15,620 ჩვენ არ გვჭირდება სხვა ალგორითმები, 416 00:19:15,620 --> 00:19:17,410 მაგრამ თავდაყირა არის, რომ ის ბევრად უფრო სწრაფად. 417 00:19:17,410 --> 00:19:20,780 და გულწრფელად, რეალურ სამყაროში სივრცე ამ days-- ოპერატიული მეხსიერება, ხისტი დისკი სივრცეში 418 00:19:20,780 --> 00:19:25,030 შედარებით იაფია, და ისე, რომ არ არის აუცილებლად ცუდი რამ. 419 00:19:25,030 --> 00:19:28,320 >> ასე რომ, მოდით მიიღოს სწრაფი შევხედოთ, პატარა უფრო მეთოდურად, რაც ჩვენ გავაკეთეთ 420 00:19:28,320 --> 00:19:30,220 და ამიტომ განაცხადა, რომ მას N შესვლა n. 421 00:19:30,220 --> 00:19:33,260 ასე რომ, აქ რვა ნომერს და რვა მოხალისეები გვქონდა ბოლო დროს. 422 00:19:33,260 --> 00:19:35,718 და პირველი, რაც შერწყმა Sort გვითხრა, რომ ამის გაკეთება, რა ხდება? 423 00:19:35,718 --> 00:19:37,010 424 00:19:37,010 --> 00:19:38,010 აუდიტორია: დაიყოს ორი. 425 00:19:38,010 --> 00:19:38,663 დინამიკები 1: ამბობენ, რომ კიდევ ერთხელ? 426 00:19:38,663 --> 00:19:39,650 აუდიტორია: დაიყოს ორი. 427 00:19:39,650 --> 00:19:40,610 დინამიკები 1: დაიყოს ორ, მარჯვნივ. 428 00:19:40,610 --> 00:19:42,818 ეს არის ძალიან თქვენში სატელეფონო წიგნი, გათიშე 429 00:19:42,818 --> 00:19:44,220 და დაიპყროთ უფრო ზოგადად. 430 00:19:44,220 --> 00:19:45,640 ასე რომ, ჩვენ შევხედე მარცხენა ნახევარში. 431 00:19:45,640 --> 00:19:48,700 და შემდეგ კიდევ თქმით, ერთგვარი მარცხენა ნახევარში ელემენტები, 432 00:19:48,700 --> 00:19:49,690 რა მივიღეთ შემდეგი ვთქვა? 433 00:19:49,690 --> 00:19:51,210 434 00:19:51,210 --> 00:19:54,860 დასალაგებლად მარცხენა ნახევარში მარცხენა ნახევარი, რომელიც საშუალებას გვაძლევს, 435 00:19:54,860 --> 00:19:57,570 შემდეგ გამყოფი ორი, ფოკუსირება ოთხი და ორი. 436 00:19:57,570 --> 00:20:01,280 >> როგორ დასალაგებლად სია ახლა, ყვითელი, ზომა ორი გამოყენებით შერწყმა დალაგება? 437 00:20:01,280 --> 00:20:02,330 438 00:20:02,330 --> 00:20:04,580 კარგად დაყოფის ის ნახევარზე, და დასალაგებლად მარცხენა ნახევარში. 439 00:20:04,580 --> 00:20:07,100 და ეს იყო, სადაც ყველაფერი ძალიან ცოტა სულელური მოკლედ. 440 00:20:07,100 --> 00:20:10,720 როგორ დასალაგებლად სია რომ საქართველოს ზომა ერთი, როგორც ეს ნომერი ოთხი აქ? 441 00:20:10,720 --> 00:20:12,330 442 00:20:12,330 --> 00:20:13,210 ეს დახარისხებული. 443 00:20:13,210 --> 00:20:14,200 თქვენ გაკეთდეს. 444 00:20:14,200 --> 00:20:17,300 >> მაგრამ შემდეგ როგორ დასალაგებლად სია ზომა, როდესაც ის ნომერი ორი? 445 00:20:17,300 --> 00:20:21,640 ისე, იგივე, მაგრამ ახლა რა იყო მესამე და გადამწყვეტი შერწყმა დალაგება? 446 00:20:21,640 --> 00:20:24,020 თქვენ ჰქონდა შერწყმა მარცხენა ნახევარი და მარჯვენა ნახევარში. 447 00:20:24,020 --> 00:20:26,580 და კიდევ ჩვენ რომ, ჩვენ შევხედე ოთხი, ჩვენ შევხედე ორი. 448 00:20:26,580 --> 00:20:28,750 ჩვენ გადავწყვიტეთ, ყველა უფლება, ცხადია, ორი მოდის პირველი, 449 00:20:28,750 --> 00:20:31,840 ამიტომ ჩვენ ორი თავის ადგილი, მოჰყვა ოთხი. 450 00:20:31,840 --> 00:20:35,010 და ახლა თქვენ უნდა სახის გადახვევა, და ეს არის ერთგვარი მახასიათებელი 451 00:20:35,010 --> 00:20:37,570 ალგორითმი, როგორიცაა შერწყმა დალაგება, გადახვევა მეხსიერებაში. 452 00:20:37,570 --> 00:20:40,240 რა იყო შემდეგი ხაზი ამბავი? 453 00:20:40,240 --> 00:20:41,780 რა უნდა იყოს აქცენტი მომავალი? 454 00:20:41,780 --> 00:20:43,110 455 00:20:43,110 --> 00:20:47,350 მარჯვენა ნახევარში, მარცხენა ნახევარი, რომელი ექვსი და რვა. 456 00:20:47,350 --> 00:20:50,320 >> ნება მომეცით უბრალოდ დახევას მეშვეობით გარეშე belaboring წერტილი ძალიან ბევრი. 457 00:20:50,320 --> 00:20:53,330 ექვსი და რვა, მაშინ ექვსი არის დახარისხებული, რვა დალაგებულია. 458 00:20:53,330 --> 00:20:57,190 შერწყმა მათ ერთად, როგორც, რომ, და ახლა შემდეგი ნაბიჯი 459 00:20:57,190 --> 00:21:00,990 , რა თქმა უნდა, დასალაგებლად მარჯვენა ნახევარში პირველი ნაბიჯი ამ ალგორითმი. 460 00:21:00,990 --> 00:21:02,870 ასე რომ, ჩვენ ფოკუსირებული ერთი, სამი, შვიდი, ხუთი. 461 00:21:02,870 --> 00:21:04,540 ჩვენ შემდეგ ფოკუსირება მარცხენა ნახევარში. 462 00:21:04,540 --> 00:21:09,400 მარცხენა ნახევარში, რომელიც, მარჯვენა ნახევარში რომ, შემდეგ შერწყმა ერთ და სამი. 463 00:21:09,400 --> 00:21:13,100 შემდეგ მარჯვენა ნახევარში, შემდეგ მარცხენა ნახევარი , მაშინ მარჯვენა ნახევარში იგი. 464 00:21:13,100 --> 00:21:15,985 შერწყმის, და ახლა რა ნაბიჯი რჩება? 465 00:21:15,985 --> 00:21:18,040 466 00:21:18,040 --> 00:21:22,460 შერწყმა დიდი მარცხენა ნახევარში და დიდი მარჯვენა ნახევარში, ასე რომ ერთი მიდის down იქ, 467 00:21:22,460 --> 00:21:27,330 შემდეგ ორი, სამი, მაშინ ოთხი, მაშინ ხუთ, მაშინ ექვსი, მაშინ, შვიდი წლის შემდეგ რვა. 468 00:21:27,330 --> 00:21:31,990 >> ასე რომ, ახლა რატომ არის ეს საბოლოო ჯამში გამოვლენა, მით უმეტეს, თუ n და logarithms მეტი 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 სულ n, არა? 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 და მაშინ აქ ნამდვილად აშკარად ბოლო row, 485 00:22:12,690 --> 00:22:15,430 ჩვენ გვქონდა შეხება თითოეული იმ ელემენტები ერთხელ, მაგრამ მხოლოდ ერთხელ, 486 00:22:15,430 --> 00:22:18,400 ასე ღირს, ჩვენი N შესვლა 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 გამოყენებით contrived მაგალითად? 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 N ორი. 519 00:23:31,057 --> 00:23:32,140 რატომ არ მე უბრალოდ ვამბობ, რომ? 520 00:23:32,140 --> 00:23:36,449 და ეს არის კიდევ ერთი T (n / 2) და შემდეგ კიდევ ერთხელ, თუ მე შერწყმა ორი დახარისხებული halves, 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 plus O (n), რომელიც, სავარაუდოდ, 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 და ეს არის, სადაც ახლა ჩვენ punt to უკან ჩვენი უმაღლესი სკოლის მათემატიკის სახელმძღვანელოს 532 00:24:05,550 --> 00:24:10,290 ჩვენ რომ არ განმეორდეს, საბოლოო ჯამში, მთავრდება რითაც ამ, N ჯერ შესვლა 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 მაგრამ რა მართლაც საინტერესო აქ კიდევ ერთხელ, ეს ცნება Cycling. 538 00:24:25,670 --> 00:24:26,900 მე არ იყენებს ამისთვის მარყუჟების. 539 00:24:26,900 --> 00:24:29,860 მე სახის განმსაზღვრელი რაღაც თვალსაზრისით თავად, 540 00:24:29,860 --> 00:24:31,950 არა მხოლოდ ამ მათემატიკური ფუნქცია, 541 00:24:31,950 --> 00:24:34,860 არამედ იმ თვალსაზრისით, ამ ფსევდო კოდი. 542 00:24:34,860 --> 00:24:38,260 ამ ფსევდო კოდი არის რეკურსიული რომ ორი მისი ხაზები 543 00:24:38,260 --> 00:24:42,310 არსებითად ვეუბნებოდი მას წასვლა გამოყენება თავად გადაწყვიტოს პატარა 544 00:24:42,310 --> 00:24:45,400 პრობლემა მცირე ზომის, და ისევ და ისევ 545 00:24:45,400 --> 00:24:48,820 და ისევ, სანამ ჩვენ whittle ის ქვემოთ ამ ე.წ. ბაზის შემთხვევაში. 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 Sigma 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 მე ცოტა ბუნდოვანი on ამის შემდეგ, რამდენიმე დღეში, 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 აუდიტორია: [INAUDIBLE]. 557 00:25:16,015 --> 00:25:16,905 დინამიკები 1: რა არის ეს? 558 00:25:16,905 --> 00:25:17,800 აუდიტორია: ჩვენ აცხადებს იგი. 559 00:25:17,800 --> 00:25:18,883 დინამიკები 1: ჩვენ აცხადებს იგი. 560 00:25:18,883 --> 00:25:22,290 ასე, რომ თქვენ ასწავლით Clang, hey, რეალურად არ ახორციელებს ამ ჯერ, 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 Sigma. 564 00:25:27,540 --> 00:25:30,540 და ეს მხოლოდ დაპირება, რომ ის აპირებს ასე გამოიყურება. 565 00:25:30,540 --> 00:25:33,720 ის აპირებს მიიღოს მთელი რიცხვი, როგორც შეყვანის და შემიძლია უფრო ზუსტად 566 00:25:33,720 --> 00:25:36,570 და ვთქვათ int n --and ეს დაბრუნებას აპირებს int, 567 00:25:36,570 --> 00:25:39,900 მაგრამ მძიმით საშუალებით, mm, მე კიდევ გარშემო შეასრულოს ამ ცოტა მოგვიანებით. 568 00:25:39,900 --> 00:25:40,989 ერთხელ, Clang არის მუნჯი. 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 აცხადებენ ცვლადი N, და შემდეგ I pester შესახებ ისევ და ისევ 575 00:25:57,590 --> 00:26:01,880 დადებითი რიცხვის getInt, და მხოლოდ გასასვლელი ამ loop 576 00:26:01,880 --> 00:26:03,280 კიდევ მომხმარებლის შეასრულა. 577 00:26:03,280 --> 00:26:05,670 ამის გაკეთება მიუხედავად იმისა, რომ ჩვენ გამოიყენება pester შესახებ, რომ გზა. 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 მე დაავალოს ეს დაბრუნების ღირებულება ფუნქცია მოუწოდა "sigma". 581 00:26:11,420 --> 00:26:15,200 მე არ ვიცი რა, რომ ჯერ არ არის, მაგრამ მახსოვს გამოცხადების ის მომენტი წინ. 582 00:26:15,200 --> 00:26:18,310 და მაშინ მე გავლის ღირებულება, რომელიც მომხმარებლის აკრეფილი, n, 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 მოდით წავიდეთ წინ ამ დირექტორიაში, რათა sigma 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 და მე აკრიფოთ დადებითი რიცხვი, როგორც ორი, Sigma, 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 >> ასე რომ, რას sigma ჰგავს? 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 "Int" იქნება დაბრუნების ტიპის. 603 00:27:11,120 --> 00:27:14,330 Sigma არის სახელი, და ეს ხდება ცვლადი m ნაცვლად 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 მაშინ მე ამ loop iterating, როგორც ჩანს, სიწმინდე, 610 00:27:28,140 --> 00:27:33,810 საწყისი i = 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 რატომ იქნებოდა გავლის უარყოფითი ნომერი გამოიწვიოს, პოტენციურად, უსასრულო loop? 616 00:27:45,620 --> 00:27:49,396 617 00:27:49,396 --> 00:27:51,290 >> აუდიტორია: თქვენ არასოდეს აღწევს m. 618 00:27:51,290 --> 00:27:52,880 >> დინამიკები 1: არასოდეს აღწევს m. 619 00:27:52,880 --> 00:27:55,880 მაგრამ m გავიდა, მოდით განვიხილოთ უბრალო მაგალითი. 620 00:27:55,880 --> 00:27:58,510 თუ m გავიდა მიერ შესახებ, როგორც ნეგატიური. 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 როგორც ძალიან anal ერთად sigma, ასევე დარწმუნდით 624 00:28:04,680 --> 00:28:06,540 რომ შეყვანის არ შეიძლება იყოს უარყოფითი. 625 00:28:06,540 --> 00:28:10,130 ასე რომ, თუ m უარყოფითი, რაღაც უარყოფითი. 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-- მოდით არ, მოდით nix ეს ამბავი. 633 00:28:29,370 --> 00:28:32,780 მე არ ვთხოვ, რომ კითხვაზე, რადგან რისკი იმისა, რომ მე და მიანიშნებენ 634 00:28:32,780 --> 00:28:38,360 არ მოხდება, რადგან მე ყოველთვის აპირებს იყოს უფრო მეტი than-- OK, 635 00:28:38,360 --> 00:28:39,871 I უარყოფა კითხვაზე. 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 განაცხადის on line 49 მე განაცხადა i შიგნით მარყუჟის, 641 00:28:52,010 --> 00:28:54,950 მაგრამ ამჟამად 48 მე გამოაცხადა გარკვეული გარეთ. 642 00:28:54,950 --> 00:28:55,695 Yeah. 643 00:28:55,695 --> 00:28:56,611 აუდიტორია: [INAUDIBLE]. 644 00:28:56,611 --> 00:28:58,734 645 00:28:58,734 --> 00:28:59,400 დინამიკები 1: რა თქმა უნდა. 646 00:28:59,400 --> 00:29:03,360 ასე რომ, პირველ რიგში, რა თქმა უნდა, არ მინდა განვაცხადო და ინიციალიზაცია თანხა 647 00:29:03,360 --> 00:29:06,130 ნულოვანი შიგნით loop ყოველ iteration, 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 და ასევე, რა არის კიდევ უფრო arcane მიზეზი, რომ იგივე დიზაინის გადაწყვეტილება? 651 00:29:17,992 --> 00:29:18,954 Yeah. 652 00:29:18,954 --> 00:29:20,279 >> აუდიტორია: [INAUDIBLE]. 653 00:29:20,279 --> 00:29:21,070 დინამიკები 1: ზუსტად. 654 00:29:21,070 --> 00:29:24,060 მინდა წვდომისათვის გარეთ მარყუჟის ძალიან, თუ რა ხაზი? 655 00:29:24,060 --> 00:29:25,390 656 00:29:25,390 --> 00:29:26,400 53. 657 00:29:26,400 --> 00:29:29,910 და ეფუძნება ჩვენი უზენაესობის ცერის საწყისი რამდენიმე ლექცია წინ, 658 00:29:29,910 --> 00:29:33,680 ცვლადების scoped, მართლაც, curly braces რომ მოიცავს მათ. 659 00:29:33,680 --> 00:29:38,190 ასე რომ, თუ არ ვაცხადებ თანხა შიგნით ამ გარე curly braces, 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 ასე sigma იღებს მოუწოდა. 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 ნიშნავს გამოყენებით loop. 671 00:30:03,870 --> 00:30:06,900 ამისთვის მარყუჟის, ხოლო მარყუჟის, Do მიუხედავად იმისა, loop, უბრალოდ აკეთებს რაიმეს 672 00:30:06,900 --> 00:30:08,380 და ისევ და ისევ. 673 00:30:08,380 --> 00:30:13,505 >> მაგრამ sigma სახის სისუფთავე ფუნქცია რომ მე ვერ განახორციელებს მას განსხვავებულად. 674 00:30:13,505 --> 00:30:14,620 675 00:30:14,620 --> 00:30:19,120 რაც შეეხება ამ, რომელიც უბრალოდ უნდა იყოს სახის cool, 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 მოდით whittle ის ქვემოთ მხოლოდ მისი ოთხი ძირითადი ხაზები 679 00:30:27,780 --> 00:30:30,410 და მოშორება ყველა კომენტარები და curly braces. 680 00:30:30,410 --> 00:30:34,334 ეს არის ერთგვარი გონება აფეთქებით ალტერნატიული განხორციელება. 681 00:30:34,334 --> 00:30:37,250 ყველა უფლება, იქნებ არ იბადება აფეთქებით, მაგრამ ეს ერთგვარი sexier, ყველა უფლება, 682 00:30:37,250 --> 00:30:39,920 შევხედოთ ეს ასე ბევრად უფრო მოკლედ. 683 00:30:39,920 --> 00:30:43,120 მხოლოდ ოთხი ხაზების კოდი, მე პირველი უნდა ამ საღი აზრის ქვითარი. 684 00:30:43,120 --> 00:30:45,732 თუ m ნაკლებია ან ტოლი ნულოვანი, sigma აზრი არა აქვს. 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 ეს იგივეა, რაც თანხა m პლუს თანხა 1 მ მინუს 1. 694 00:31:11,949 --> 00:31:12,740 კარგად იცით, რა? 695 00:31:12,740 --> 00:31:13,940 რა არის sigma მ მინუს 1? 696 00:31:13,940 --> 00:31:17,860 ასევე, თუ თქვენ სახის მიყევით ამ ლოგიკურად, ეს იგივეა, რაც m -1 697 00:31:17,860 --> 00:31:21,415 plus sigma მ მინუს 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 და პატარა, თქვენ არ გეკითხებით რა არის sigma 704 00:31:36,910 --> 00:31:39,116 ო, რა sigma of n, რა sigma N? 705 00:31:39,116 --> 00:31:40,990 თქვენ გეკითხებით, რა არის sigma ო, რა sigma 706 00:31:40,990 --> 00:31:42,839 ო მინუს 1, რა sigma of n-2? 707 00:31:42,839 --> 00:31:44,880 საბოლოოდ თქვენი კითხვა აპირებს გახდეს, თუ რა? 708 00:31:44,880 --> 00:31:50,250 რა არის sigma ერთი ან ნულოვანი, ძალიან მცირე ღირებულება, 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 მოდით უბრალოდ გამოთვლაც sigma გავაპროტესტებ m და შემდეგ დასძინა, 726 00:32:42,450 --> 00:32:44,564 სიგმა მ მინუს ერთი? 727 00:32:44,564 --> 00:32:45,980 ისე, რა მოხდება აქ? 728 00:32:45,980 --> 00:32:47,140 მოდით დააშორებს. 729 00:32:47,140 --> 00:32:52,920 მოდით recompile პროგრამა, გადარჩენა მას, recompile პროგრამა, 730 00:32:52,920 --> 00:33:00,450 და მაშინ მზად ./sigma 1 მასშტაბირება, შესვლის დადებითი მთელი რიცხვი, გთხოვთ, 50. 731 00:33:00,450 --> 00:33:02,180 732 00:33:02,180 --> 00:33:04,430 რამდენი მზად არიან to fess up ხედავს, რომ? 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 მაგრამ რა იყო ის, მექანიკურად რომ წავიდა awry 741 00:33:21,550 --> 00:33:25,000 აქ იმიტომ, რომ ჩემი მოხსნა რომ ე.წ. ბაზის შემთხვევაში, 742 00:33:25,000 --> 00:33:26,870 სადაც დავბრუნდი მყარი კოდირებული მნიშვნელობა? 743 00:33:26,870 --> 00:33:28,970 744 00:33:28,970 --> 00:33:30,460 როგორ ფიქრობთ, რა მოხდა? 745 00:33:30,460 --> 00:33:31,219 Yeah. 746 00:33:31,219 --> 00:33:32,135 >> აუდიტორია: [INAUDIBLE]. 747 00:33:32,135 --> 00:33:36,387 748 00:33:36,387 --> 00:33:36,970 დინამიკები 1: Ah. 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 , რომელიც შეიძლება გამოიწვიოს მთელი რიცხვი overflow, სადაც ბიტი უბრალოდ Flip მეტი 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 იმის გამო, რომ ბოლომდე დღეს int ჯერ კიდევ 32 ბიტი. 757 00:33:55,509 --> 00:33:57,640 თქვენ არ აპირებს შემთხვევით იპარავს 33 bit. 758 00:33:57,640 --> 00:33:58,431 მაგრამ კარგი აზრის. 759 00:33:58,431 --> 00:33:58,984 Yeah. 760 00:33:58,984 --> 00:33:59,900 >> აუდიტორია: [INAUDIBLE]. 761 00:33:59,900 --> 00:34:00,551 762 00:34:00,551 --> 00:34:02,300 დინამიკები 1: მეთოდი არასოდეს აჩერებს გაშვებული, 763 00:34:02,300 --> 00:34:06,658 და მართლაც ის მოუწოდებს თავად ერთხელ და ისევ და ისევ და ისევ 764 00:34:06,658 --> 00:34:08,449 და ისევ, და არცერთი ამ ფუნქციების ოდესმე 765 00:34:08,449 --> 00:34:13,310 დასრულდება, რადგან მათი ერთადერთი ხაზი კოდი მოუწოდებს themself ისევ და ისევ 766 00:34:13,310 --> 00:34:14,219 და ისევ. 767 00:34:14,219 --> 00:34:16,080 და რა არის ნამდვილად ხდება აქ, და ახლა ჩვენ 768 00:34:16,080 --> 00:34:18,100 შეგიძლიათ სახის მიაპყროს ამ ილუსტრირებული. 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 რაღაც მოუწოდა Stack. 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 ოპერაციული სისტემა, როგორიცაა Mac OS, Windows, ან Linux, 778 00:34:38,860 --> 00:34:41,920 grabs რამოდენიმე ბაიტი, შესაძლოა, რამდენიმე kilobytes, შესაძლოა, რამდენიმე მბ 779 00:34:41,920 --> 00:34:44,590 მეხსიერება, გადასცემს თქვენ, და შემდეგ საშუალებას 780 00:34:44,590 --> 00:34:47,650 თქვენ აწარმოებს თქვენი ფუნქციის გამოყენებით რასაც ცვლადი გჭირდებათ. 781 00:34:47,650 --> 00:34:50,699 და თუ შემდეგ მოვუწოდებთ სხვა ფუნქცია და სხვა ფუნქცია, 782 00:34:50,699 --> 00:34:53,590 თქვენ კიდევ ნაჭერი მეხსიერება და კიდევ ერთი ნაჭერი მეხსიერება. 783 00:34:53,590 --> 00:34:57,090 >> და მართლაც, თუ ეს მწვანე ქაღალდის საწყისი Annenberg წარმოადგენს, რომ მეხსიერება, 784 00:34:57,090 --> 00:34:59,870 აქ რა ხდება პირველი ჯერზე რეკავთ ფუნქცია sigma. 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 მოსწონს ითხოვს ოპერაციული სისტემა, ooh, გვჭირდება ცოტა მეტი მეხსიერება, 789 00:35:11,640 --> 00:35:12,520 მაძლევს, რომ. 790 00:35:12,520 --> 00:35:14,840 და შემდეგ იგი იღებს დაგროვილი on თავზე. 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 ახლა იმავდროულად, sigma დარეკეთ sigma, ასეთი ითხოვს მეტი მეხსიერება. 794 00:35:23,500 --> 00:35:25,830 იღებს დაგროვილი მეტი აქ. 795 00:35:25,830 --> 00:35:29,350 sigma დარეკეთ sigma, რომ სხვა უჯრა რომ იღებს დაგროვილი აქ. 796 00:35:29,350 --> 00:35:32,942 და თუ თქვენ ექცევით, საბოლოოდ, სახის რუკა ვიზუალურ 797 00:35:32,942 --> 00:35:35,525 რომ სქემა, თუ რა ხდება მოხდეს Stack of ქაღალდის? 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 და თუ კი ამ ქაღალდის pile და წყობის, 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 ეს იღებს გარკვეული შეგუება to --how ელეგანტური და რამდენად მარტივია 811 00:36:11,700 --> 00:36:14,890 რომ განხორციელების sigma იყო. 812 00:36:14,890 --> 00:36:17,440 და ჩვენ არ ვაპირებთ მის გამოყენებას უკან ყველა რომ ბევრი CS50, 813 00:36:17,440 --> 00:36:20,780 მაგრამ CS51, და მართლაც ნებისმიერი კლასის სადაც თქვენ მანიპულირება მონაცემთა სტრუქტურები 814 00:36:20,780 --> 00:36:23,640 მსგავსი ხეები, ან ოჯახის ხეები, რომ გარკვეული იერარქია, 815 00:36:23,640 --> 00:36:26,000 ეს სუპერ, სუპერ სასარგებლო. 816 00:36:26,000 --> 00:36:29,750 ახლა, როგორც განზე, ასე რომ თქვენ როგორც მიისწრაფვიან კომპიუტერის მეცნიერები 817 00:36:29,750 --> 00:36:33,180 იცნობს ზოგიერთი Google-ს შიგნით ხუმრობები, თუ წასვლა Google 818 00:36:33,180 --> 00:36:36,345 და თქვენ ეძებოთ რა არის განმარტება, ვთქვათ, უკან, შეიყვანოთ. 819 00:36:36,345 --> 00:36:40,208 820 00:36:40,208 --> 00:36:41,110 Uh-დიდია. 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 თუ თქვენ ასევე Google "askew," ცნობა დახრილი თქვენი უფროსი 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 Oh, wait-- რომ bug. 829 00:37:04,540 --> 00:37:08,410 830 00:37:08,410 --> 00:37:11,410 >> ასე გაშვებული ერთი მსოფლიოში ყველაზე დიდი საიტებზე 831 00:37:11,410 --> 00:37:13,510 არიან ამ სულელური პატარა სააღდგომო კვერცხები. 832 00:37:13,510 --> 00:37:16,690 ისინი, ალბათ, მოიხმარენ nontrivial ნომერი ხაზების კოდი 833 00:37:16,690 --> 00:37:19,280 უბრალოდ, ასე რომ ჩვენ შეგვიძლია პატარა fun რამ, როგორიცაა, რომ. 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 ასე რომ თქვენ ნამდვილად მესმის რა ხდება on 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 მისი სახელი არის swap. 843 00:37:46,790 --> 00:37:50,880 იგი იღებს ორი ცვლადის და ის დააბრუნებს არაფერი. 844 00:37:50,880 --> 00:37:52,260 იღებს და ბ. 845 00:37:52,260 --> 00:37:53,337 ასე სწრაფი დემონსტრირება. 846 00:37:53,337 --> 00:37:54,170 ჩვენ მოუტანა ამ up. 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 როგორ შესახებ თქვენ maroon პერანგი? 851 00:38:01,830 --> 00:38:02,335 მოდის up. 852 00:38:02,335 --> 00:38:04,060 853 00:38:04,060 --> 00:38:05,260 მხოლოდ ერთ დღეს. 854 00:38:05,260 --> 00:38:06,251 დიდი მადლობა, თუმცა. 855 00:38:06,251 --> 00:38:08,000 ყველა უფლება, და ჩვენ ახლოვდება, რომელიც აქ არის? 856 00:38:08,000 --> 00:38:08,660 რა გქვია? 857 00:38:08,660 --> 00:38:09,360 >> დინამიკები 4: Laura. 858 00:38:09,360 --> 00:38:09,740 >> დინამიკები 1: Laura. 859 00:38:09,740 --> 00:38:10,370 მოდის up. 860 00:38:10,370 --> 00:38:11,460 861 00:38:11,460 --> 00:38:13,850 ასე რომ, Laura, ძალიან მარტივია წინაშე დგას. 862 00:38:13,850 --> 00:38:14,704 863 00:38:14,704 --> 00:38:15,370 ლამაზი შეხვდება yo. 864 00:38:15,370 --> 00:38:16,410 865 00:38:16,410 --> 00:38:16,910 ყველა უფლება. 866 00:38:16,910 --> 00:38:21,179 ასე რომ, ჩვენ გვაქვს გარკვეული რძე აქ და ჩვენ გვაქვს რამდენიმე ფორთოხლის წვენი მეტი აქ 867 00:38:21,179 --> 00:38:23,345 და რამდენიმე ჭიქა რომ ჩვენ ნასესხები Annenberg დღეს. 868 00:38:23,345 --> 00:38:24,178 >> დინამიკები 4: ნასესხები. 869 00:38:24,178 --> 00:38:27,240 დინამიკები 1: და ვაპირებ წავიდეთ წინ და გაძლევთ ნახევარი ჭიქა ამ. 870 00:38:27,240 --> 00:38:28,250 871 00:38:28,250 --> 00:38:28,800 ყველა უფლება. 872 00:38:28,800 --> 00:38:30,750 და ჩვენ მოგცემთ ნახევარი ჭიქა რძე. 873 00:38:30,750 --> 00:38:31,905 874 00:38:31,905 --> 00:38:35,890 ოჰ, და მხოლოდ, ასე რომ შეგიძლიათ მახსოვს, რა იყო ეს, როგორიცაა, 875 00:38:35,890 --> 00:38:38,860 გამახსენდა, რათა ამ და დღეს. 876 00:38:38,860 --> 00:38:42,030 877 00:38:42,030 --> 00:38:42,530 Okay. 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 ეს იქნება მსოფლიოს Laura თვალში. 881 00:38:48,710 --> 00:38:49,210 ყველა უფლება. 882 00:38:49,210 --> 00:38:53,820 ასე რომ თქვენი მიზანი, მოცემული ორი ჭიქა თხევადი აქ, რძე და ფორთოხლის წვენი, 883 00:38:53,820 --> 00:38:58,370 არის სვოპ ორი შინაარსი ისე, რომ ფორთოხლის წვენი გადადის რძის თასი 884 00:38:58,370 --> 00:39:00,710 და რძის გადადის ფორთოხლის წვენი თასი. 885 00:39:00,710 --> 00:39:02,359 >> დინამიკები 4: მივიღებ ერთი ჭიქა? 886 00:39:02,359 --> 00:39:05,650 დინამიკები 1: მე ასე მოხარული ვარ, რომ თქვენ სთხოვა, თუმცა ეს იქნებოდა ბევრად უკეთესი კადრები 887 00:39:05,650 --> 00:39:06,710 თუ არ უთხოვია. 888 00:39:06,710 --> 00:39:10,620 მაგრამ დიახ, ჩვენ შეგვიძლია შემოგთავაზოთ მესამე თასი რომ ცარიელი, რა თქმა უნდა. 889 00:39:10,620 --> 00:39:11,120 ყველა უფლება. 890 00:39:11,120 --> 00:39:12,300 ასე რომ სვოპ შინაარსი არსებობს. 891 00:39:12,300 --> 00:39:16,100 892 00:39:16,100 --> 00:39:17,050 ძალიან ლამაზი. 893 00:39:17,050 --> 00:39:20,390 894 00:39:20,390 --> 00:39:21,305 ძალიან კარგი. 895 00:39:21,305 --> 00:39:23,121 896 00:39:23,121 --> 00:39:24,745 თქვენ ამით საოცრად ფრთხილად. 897 00:39:24,745 --> 00:39:26,970 898 00:39:26,970 --> 00:39:28,655 და ნაბიჯი სამი. 899 00:39:28,655 --> 00:39:30,390 900 00:39:30,390 --> 00:39:31,350 ყველა უფლება. 901 00:39:31,350 --> 00:39:31,930 შესანიშნავი. 902 00:39:31,930 --> 00:39:33,930 დიდი რაუნდი ტაში კარგი იქნებოდა, ლაურა. 903 00:39:33,930 --> 00:39:36,500 904 00:39:36,500 --> 00:39:37,000 ყველა უფლება. 905 00:39:37,000 --> 00:39:40,790 ჩვენ გვაქვს პატარა მოსაყვანად საჩუქრად მიართვა თქვენთვის, მაგრამ ნება მომეცით მიიღოს ამ. 906 00:39:40,790 --> 00:39:42,620 დიდი მადლობა, რომ. 907 00:39:42,620 --> 00:39:46,170 ასე მარტივი მაგალითი, თუმცა, დემონსტრირება, რომ თუ 908 00:39:46,170 --> 00:39:48,300 მინდა, რომ სვოპ შინაარსი ორი კონტეინერი, 909 00:39:48,300 --> 00:39:52,360 ან მოდით მოვუწოდებთ მათ ცვლადები, თქვენ უნდა გარკვეული დროებითი შენახვის 910 00:39:52,360 --> 00:39:56,710 დადგმა ერთი შინაარსი ასე რომ თქვენ შეგიძლიათ რეალურად გავაკეთოთ swap. 911 00:39:56,710 --> 00:40:01,790 ასე რომ, რა თქმა უნდა, ამ კოდის up აქ C წარმომადგენელი ზუსტად რომ. 912 00:40:01,790 --> 00:40:06,340 თუ ფორთოხლის წვენი იყო და რძის იყო b, და გვინდოდა, რომ სვოპ ორი, 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 მისაღწევად, ზუსტად ისე, როგორც Laura გააკეთა, swap. 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 მაქვს პროტოტიპი for swap up არსებობს, რომელიც 925 00:40:43,130 --> 00:40:45,450 ნიშნავს, რომ მისი განხორციელების ს ალბათ ქვემოთ, 926 00:40:45,450 --> 00:40:48,050 და ვნახოთ რა ეს მთავარი პროგრამა აპირებს ჩემთვის. 927 00:40:48,050 --> 00:40:52,020 მე პირველ განაცხადოს int x იღებს ერთი, და int y იღებს ორი. 928 00:40:52,020 --> 00:40:54,930 ასე რომ, ვფიქრობ ეს რაც OJ და რძე, შესაბამისად. 929 00:40:54,930 --> 00:40:57,100 და მაშინ მე უბრალოდ printf ვამბობ x არის ეს 930 00:40:57,100 --> 00:41:00,120 და y არის, უბრალოდ ასე, რომ შეიძლება ვიზუალურად ვხედავ, რა ხდება. 931 00:41:00,120 --> 00:41:03,810 მერე არ printf აცხადებდნენ რომ მე შევცვალე ორი, 932 00:41:03,810 --> 00:41:07,100 და მერე ამობეჭდოთ აცხადებენ, რომ ისინი გაცვალეს, 933 00:41:07,100 --> 00:41:09,300 და მე ამობეჭდოთ x და y ერთხელ. 934 00:41:09,300 --> 00:41:13,010 ამიტომ ქვემოთ აქ swap არის ზუსტად ის, რაც Laura გააკეთა, 935 00:41:13,010 --> 00:41:16,240 და ზუსტად რა ვნახეთ ეკრანზე მომენტში წინ. 936 00:41:16,240 --> 00:41:19,380 >> მოდით წავიდეთ წინ და sorely იმედგაცრუებული. 937 00:41:19,380 --> 00:41:24,690 რათა არ swap, და აწარმოებს არ swap, მასშტაბირება გამომავალი აქ. 938 00:41:24,690 --> 00:41:28,320 შეიყვანეთ x 1, y 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 რა Laura გააკეთა, როგორც ჩანს არ მუშაობს. 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 რომელიც როგორც ძირითადი, ხაზგასმით აქ, შემდეგ კი კიდევ ერთი ფუნქცია, როგორც swap, 945 00:41:51,590 --> 00:41:54,230 ხაზგასმით აქ, რომელიც ის მოუწოდებს, მსოფლიო 946 00:41:54,230 --> 00:41:57,030 გამოიყურება პატარა რაღაც ამ ქაღალდის მომენტში წინ. 947 00:41:57,030 --> 00:42:00,440 როდესაც მთავარ პირველი იღებს მოუწოდა, ასეთი ითხოვს ოპერაციული სისტემა 948 00:42:00,440 --> 00:42:04,030 ცოტა მეხსიერების ნებისმიერი ადგილობრივი ცვლადები როგორც x და y, რომ მთავარ, 949 00:42:04,030 --> 00:42:05,660 და მათ დასრულდება მდე აქ. 950 00:42:05,660 --> 00:42:10,920 მაგრამ თუ ძირითადი მოუწოდებს სვოპ და მთავარი გადის სვოპ ორი არგუმენტები, და ბ, 951 00:42:10,920 --> 00:42:16,410 ფორთოხლის წვენი და რძე, რომ არ მოსწონს გადაცემის ფორთოხლის წვენი და რძე 952 00:42:16,410 --> 00:42:17,500 ლაურა. 953 00:42:17,500 --> 00:42:21,300 რაც კომპიუტერში აკეთებს, არის ის, გადის ასლები ფორთოხლის წვენი 954 00:42:21,300 --> 00:42:27,110 და ასლები რძის Laura, ისე, რომ რა არის საბოლოოდ შიგნით უჯრა 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 შესაძლოა რატომ იცვლება და ბ შიგნით swap 965 00:42:58,770 --> 00:43:05,560 აქვს ეფექტი x და y, მიუხედავად იმისა, მე გაიარა x და y swap ფუნქცია. 966 00:43:05,560 --> 00:43:08,750 რა არის გასაღები სიტყვა აქ, რომ შეიძლება simplistically ახსნას? 967 00:43:08,750 --> 00:43:11,250 968 00:43:11,250 --> 00:43:12,627 ვფიქრობ, გავიგე აქ? 969 00:43:12,627 --> 00:43:13,335 აუდიტორია: დაბრუნება. 970 00:43:13,335 --> 00:43:14,085 დინამიკები 1: დაბრუნება? 971 00:43:14,085 --> 00:43:14,590 არ დაბრუნდება. 972 00:43:14,590 --> 00:43:15,895 მოდით წავიდეთ ერთად ერთი სხვა. 973 00:43:15,895 --> 00:43:16,395 რა არის ეს? 974 00:43:16,395 --> 00:43:17,080 >> აუდიტორია: [INAUDIBLE]. 975 00:43:17,080 --> 00:43:20,000 >> დინამიკები 1: OK, ასე რომ დაბრუნდეს შეგვეძლო მიიღოს დაბრუნების მუშაობა ამბავი, 976 00:43:20,000 --> 00:43:21,914 მაგრამ არსებობს უფრო მარტივი ახსნა. 977 00:43:21,914 --> 00:43:22,580 აუდიტორია: Scope. 978 00:43:22,580 --> 00:43:23,288 დინამიკები 1: Scope. 979 00:43:23,288 --> 00:43:24,300 მე მიიღოს ფარგლებს. 980 00:43:24,300 --> 00:43:27,290 ასე ფარგლებს, მახსოვს, სადაც ჩვენი x და y განაცხადა. 981 00:43:27,290 --> 00:43:30,840 ისინი განაცხადა შიგნით ძირითადი უფლება აქ. 982 00:43:30,840 --> 00:43:33,200 და ბ, იმავდროულად, არიან ეფექტურად განაცხადა 983 00:43:33,200 --> 00:43:35,930 შიგნით swap, არ საკმაოდ curly braces, მაგრამ მაინც 984 00:43:35,930 --> 00:43:37,690 გენერალური ფართობი swap. 985 00:43:37,690 --> 00:43:40,560 და ასე ნამდვილად, და ბ მხოლოდ არსებობს ამ უჯრა 986 00:43:40,560 --> 00:43:44,850 საწყისი Annenberg, ამ მეორე ბლოკი კოდი. 987 00:43:44,850 --> 00:43:49,500 ასე რომ, ჩვენ მართლაც შეცვლის ასლი, მაგრამ ეს არ არის ნამდვილად, რომ სასარგებლოა. 988 00:43:49,500 --> 00:43:52,190 >> ასე რომ, მოდით შევხედოთ ეს ცოტა ქვედა დონეზე. 989 00:43:52,190 --> 00:43:55,430 მე ვაპირებ დაბრუნდეს წყარო დირექტორია, 990 00:43:55,430 --> 00:43:58,330 და მე ვაპირებ პირველი მიუახლოვდით აქ, და მხოლოდ 991 00:43:58,330 --> 00:44:02,290 იმის დასადასტურებლად, რომ მე ამ დიდი ტერმინალი ფანჯარა, 992 00:44:02,290 --> 00:44:04,430 პროგრამა ჯერ კიდევ იქცევიან, რომ. 993 00:44:04,430 --> 00:44:06,840 ვარაუდობენ, რომ ამ არ არის გამიზნული. 994 00:44:06,840 --> 00:44:10,090 ცხადია, მინდოდა სვოპ მუშაობა, ასე რომ იგრძნობა შეცდომა. 995 00:44:10,090 --> 00:44:12,780 ახლა მე ვერ დაიწყება და დასძინა, ბევრი printf ს ჩემი კოდი, 996 00:44:12,780 --> 00:44:16,010 დაბეჭდვისას x მეტი აქ, y-ზე აქ, სწორედ აქ, b აი აქ. 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 on psets ცდილობს იპოვოს გარკვეული შეცდომები. 1000 00:44:22,150 --> 00:44:25,560 მაგრამ დაინახავთ, თუ არ უკვე, რომ პრობლემა კომპლექტი სამი წარუდგენს თქვენ 1001 00:44:25,560 --> 00:44:31,630 რომ ბრძანება მოუწოდა GDB, სადაც GDB, GNU debugger, 1002 00:44:31,630 --> 00:44:34,040 თავად მთელი bunch თვისებები, რომელიც შეიძლება რეალურად 1003 00:44:34,040 --> 00:44:38,160 მოდით ესმის სიტუაციებში მსგავსი, მაგრამ უფრო compellingly, 1004 00:44:38,160 --> 00:44:39,940 პრობლემების მოსაგვარებლად, რათა შეცდომები. 1005 00:44:39,940 --> 00:44:40,940 ამიტომ, მე ვაპირებ ამის გაკეთება. 1006 00:44:40,940 --> 00:44:44,770 ნაცვლად ./noswap, მე ნაცვლად ვაპირებ აწარმოებს GDB ./noswap. 1007 00:44:44,770 --> 00:44:47,410 1008 00:44:47,410 --> 00:44:51,200 სხვა სიტყვებით, მე ვაპირებ აწარმოებს პროგრამა არ Bash, ჩვენი ახალი მეგობარი, 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, რომელიც debugger, რომელიც 1012 00:44:56,900 --> 00:45:01,035 არის პროგრამა, რომელიც მიზნად ისახავს დაეხმაროს თქვენ ადამიანებზე და ამოიღონ შეცდომები. 1013 00:45:01,035 --> 00:45:03,410 ასე რომ, თუ მე მოხვდა Run აქ, იქ მტკივნეული თანხის ტექსტი 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 მისაღებად up ზედა არსებობს. 1017 00:45:10,030 --> 00:45:11,800 ეს არის GDB ზოლზე. 1018 00:45:11,800 --> 00:45:15,550 თუ მინდა, რომ აწარმოებს ამ პროგრამის არის, როგორც ამ პატარა cheat ფურცელი დღეს 1019 00:45:15,550 --> 00:45:21,860 slide ვარაუდობს, Run პირველი ბრძანებები, რომ ჩვენ იმას ნიშნავდა, რომ წარმოგიდგინოთ. 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 მხოლოდ იმიტომ, რომ anal და გვეუბნება, თუ რა ხდება. 1024 00:45:31,910 --> 00:45:34,451 თქვენ ნამდვილად არ უნდა ფიქრი ამ დეტალები ახლავე. 1025 00:45:34,451 --> 00:45:36,890 მაგრამ რა მართლაც მაგარი შესახებ GDB, თუ ამ ერთხელ 1026 00:45:36,890 --> 00:45:42,100 Control-L წინანდელ ეკრანზე ნება მომეცით წავიდეთ წინ და ტიპის "შესვენება მთავარ," ამით, 1027 00:45:42,100 --> 00:45:45,743 როდესაც მე დააჭიროთ, განსაზღვრავს, თუ რა არის ე.წ. შესვენების ადგილამდე noswap.c, 1028 00:45:45,743 --> 00:45:51,270 line 16, რომელიც, სადაც GDB figured out my პროგრამის რეალურად 1029 00:45:51,270 --> 00:45:53,070 , ჩემი ფუნქცია რეალურად არის. 1030 00:45:53,070 --> 00:45:55,070 ეს ჩვენ იგნორირება ახლა მაგრამ ეს მისამართი 1031 00:45:55,070 --> 00:45:57,310 მეხსიერების სპეციალურად ამ ფუნქციას. 1032 00:45:57,310 --> 00:46:00,240 ისე ახლა, როდესაც მე აკრიფოთ პერსპექტივაში, შეამჩნია რა მაგარი აქ. 1033 00:46:00,240 --> 00:46:05,650 ჩემი პროგრამა არღვევს ხაზის I განუცხადა GDB პაუზის შესრულების დროს. 1034 00:46:05,650 --> 00:46:09,850 ასე რომ არ უნდა ახლა შეცვლის ჩემი კოდი, დაამატოთ ზოგიერთი printf ს, recompile ის, გამეორება 1035 00:46:09,850 --> 00:46:13,300 ის, შეცვალოს, დაამატეთ რამდენიმე printf ს, გადარჩენა მას, recompile ის, გაუშვით. 1036 00:46:13,300 --> 00:46:18,100 შემიძლია უბრალოდ გავლა ჩემი პროგრამა ნაბიჯ ნაბიჯ ნაბიჯ ადამიანის სიჩქარე, 1037 00:46:18,100 --> 00:46:20,880 არ Intel-შიგნით, ასეთი ტემპებით. 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 არსებობს line 16 ფარგლებში GDB, და კიდევ თუმცა ეს შავი და თეთრი ინტერფეისი 1043 00:46:34,610 --> 00:46:37,760 არ არის თითქმის როგორც შესახებ მეგობრული, ეს იმას ნიშნავს, 1044 00:46:37,760 --> 00:46:41,680 რომ line 16 დღემდე არ შესრულებულა არ არის, მაგრამ ეს უნდა იყოს. 1045 00:46:41,680 --> 00:46:46,220 ასე რომ, მართლაც, თუ მე აკრიფოთ ბეჭდვა x, არ printf, ამობეჭდოთ x, 1046 00:46:46,220 --> 00:46:50,730 მე რამდენიმე ყალბი ღირებულება არსებობს ნულოვანი, რადგან x არ ინიციალიზაცია ამჟამად. 1047 00:46:50,730 --> 00:46:54,760 ამიტომ, მე ვაპირებ აკრიფოთ შემდეგი, ან, თუ მინდა, რომ იყოს ლამაზი, უბრალოდ N მომავალი. 1048 00:46:54,760 --> 00:46:59,090 მაგრამ როდესაც მე აკრიფოთ შემდეგი შესვლის, ახლა შეამჩნია, რომ მოძრაობს ხაზი 17. 1049 00:46:59,090 --> 00:47:02,840 ლოგიკურად ასეა, თუ მე შესრულებული ხაზის 16 და მე ახლა აკრიფოთ ბეჭდვითი x, 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 და ახლა თუ მე აკრიფოთ შემდეგი ერთხელ და ბეჭდვითი y, მე უნდა დაინახოს 2. 1060 00:47:21,000 --> 00:47:23,870 შემიძლია ასევე ბეჭდვა x ერთხელ, და გულწრფელად, 1061 00:47:23,870 --> 00:47:27,130 თუ მე მიღების ცოტა დაბნეული, სადაც მე ვარ, მე შემიძლია აკრიფოთ სია სია 1062 00:47:27,130 --> 00:47:30,590 და უბრალოდ ნახეთ ზოგიერთი კონტექსტში გარშემო წერტილი მე რეალურად. 1063 00:47:30,590 --> 00:47:35,180 და ახლა შემიძლია აკრიფოთ შემდეგი, და x არის 1. 1064 00:47:35,180 --> 00:47:36,300 ახლა აკრიფოთ შემდეგი. 1065 00:47:36,300 --> 00:47:37,710 Oh, Y არის 2. 1066 00:47:37,710 --> 00:47:40,750 და ისევ, ეს არის დამაბნეველი, რადგან GDB ის გამომუშავება 1067 00:47:40,750 --> 00:47:43,044 მიმდინარეობს ერთობლივი საკუთარი გამომუშავება. 1068 00:47:43,044 --> 00:47:45,710 მაგრამ თუ თქვენ გაქვთ გათვალისწინებით, glancing უკან და მეოთხე თქვენი კოდი 1069 00:47:45,710 --> 00:47:47,740 ან ჩამოყალიბებულია ის ჩვენს მხარესაა გვერდით, ალბათ, თქვენ 1070 00:47:47,740 --> 00:47:51,020 , რომ ნამდვილად მე უბრალოდ სტეპინგზე მეშვეობით ჩემი პროგრამა. 1071 00:47:51,020 --> 00:47:54,620 >> მაგრამ შეამჩნია, რა ხდება შემდეგ, ფაქტიურად. 1072 00:47:54,620 --> 00:47:56,380 აქ ხაზი 22. 1073 00:47:56,380 --> 00:48:01,315 ნება მომეცით წასვლა მეტი, რითაც მოძრავი დან 23, და თუ მე ბეჭდვა x ახლა, კიდევ ერთი. 1074 00:48:01,315 --> 00:48:03,890 და თუ მე ბეჭდვა y ახლა, კიდევ ერთი. 1075 00:48:03,890 --> 00:48:05,820 ასე რომ, ეს არ არის სასარგებლო exercise. 1076 00:48:05,820 --> 00:48:07,450 ასე რომ, მოდით redo ამ. 1077 00:48:07,450 --> 00:48:10,069 ნება მომეცით დაბრუნდეს მდე ზედა და ტიპის პერსპექტივაში კვლავ. 1078 00:48:10,069 --> 00:48:12,110 და ის რომ პროგრამა რომ მიმდინარეობს debugged 1079 00:48:12,110 --> 00:48:14,109 დაიწყო უკვე, დაიწყო თავიდანვე. 1080 00:48:14,109 --> 00:48:15,420 დიახ, მოდით ეს კიდევ ერთხელ გავაკეთოთ. 1081 00:48:15,420 --> 00:48:22,000 და ამ დროს, მოდით გავაკეთოთ შემდეგი, მომდევნო, მომდევნო, 1082 00:48:22,000 --> 00:48:24,180 მაგრამ ახლა რამ საინტერესო. 1083 00:48:24,180 --> 00:48:27,760 ახლა მინდა დახევას შევიდა swap, ასე რომ მე არ აკრიფოთ შემდეგი. 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 ეს არის პირველი ფაქტობრივი ხაზი კოდი შიგნით swap. 1087 00:48:40,500 --> 00:48:44,150 რომელიც არის ლამაზი, რადგან ახლა მე არ შემიძლია სახის poke გარშემო და ცნობისმოყვარე 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 Whoa. 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 დინამიკები 1: ეს არ ინიციალიზაცია. 1096 00:48:57,150 --> 00:49:00,270 და მართლაც, როდესაც თქვენ აწარმოებს პროგრამა, თქვენ მოცემული მთელი bunch მეხსიერება 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 რაღაც უფრო ეზოთერულად ცნობილია, როგორც char *, 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 საწყისი ჩვენი მეგობარი Nick Parlante სტენფორდის 1119 00:50:06,040 --> 00:50:09,670 უნივერსიტეტის პროფესორი კომპიუტერულ მეცნიერების, რომლებიც ერთად წინასწარი გადახედვისას 1120 00:50:09,670 --> 00:50:11,075 რა მოვა ამ ოთხშაბათს. 1121 00:50:11,075 --> 00:50:12,196 1122 00:50:12,196 --> 00:50:13,400 >> [ვიდეო აღწარმოების] 1123 00:50:13,400 --> 00:50:13,900 -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 დროა მაჩვენებელი fun. 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 Oh, გუდი, 1131 00:50:22,050 --> 00:50:22,897 1132 00:50:22,897 --> 00:50:23,730 [END ვიდეო აღწარმოების] 1133 00:50:23,730 --> 00:50:25,396 დინამიკები 1: ეს გელით ოთხშაბათს. 1134 00:50:25,396 --> 00:50:26,440 ჩვენ დავინახავთ, თქვენ შემდეგ. 1135 00:50:26,440 --> 00:50:27,106 [ვიდეო აღწარმოების] 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 ვიდეო აღწარმოების]