1 00:00:00,000 --> 00:00:12,040 >> [เล่นเพลง] 2 00:00:12,040 --> 00:00:16,460 >> ลำโพง 1: สิทธิทั้งหมดนี้เป็น CS50, และนี่คือจุดเริ่มต้นของสี่สัปดาห์ 3 00:00:16,460 --> 00:00:20,420 และในขณะที่คุณอาจจะเคยได้ยินหรือ อ่านโลกได้รับการสิ้นสุด 4 00:00:20,420 --> 00:00:23,520 ไปทั่วอินเทอร์เน็ต ได้รับความรู้และความตระหนัก 5 00:00:23,520 --> 00:00:27,100 ของข้อผิดพลาดในโปรแกรม ภาษาโปรแกรมที่เรียกว่าเตะ 6 00:00:27,100 --> 00:00:32,729 นี้ได้รับการตรามหัศจรรย์ เป็นทำพิษหรือประตูตี, 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 แม้ว่าคุณจะไม่เข้าใจสิ่งที่ มันคือทั้งหมดที่เกี่ยวกับการได้ยินของทำพิษ? 13 00:00:50,330 --> 00:00:51,370 14 00:00:51,370 --> 00:00:54,245 สิทธิทั้งหมดและวิธีการที่หลายท่าน มีเครื่องคอมพิวเตอร์ที่มีความเสี่ยง? 15 00:00:54,245 --> 00:00:55,680 16 00:00:55,680 --> 00:01:00,250 ตกลงควรจะมีมือที่ไกลมากขึ้น ขึ้นในขณะนี้ด้วยเหตุผลที่เราจะได้เห็น 17 00:01:00,250 --> 00:01:02,580 >> ลองมาดูที่สิ่งที่ ได้เกิดขึ้นในสื่อ 18 00:01:02,580 --> 00:01:05,304 แล้วอธิบายมันเล็กน้อย ที่นี่สำหรับเราในทางเทคนิค 19 00:01:05,304 --> 00:01:07,670 20 00:01:07,670 --> 00:01:11,250 >> ลำโพงที่ 2: ผู้เชี่ยวชาญด้านความปลอดภัยมี เตือนว่าข้อบกพร่องร้ายแรงได้ 21 00:01:11,250 --> 00:01:15,650 จะเกี่ยวกับการส่งผลกระทบต่อหลายร้อย ล้านของผู้ใช้เว็บในโลก 22 00:01:15,650 --> 00:01:20,600 ดังนั้นสิ่งที่ว่าเป็นปัญหาที่ได้รับ ขนานนามทำพิษและสิ่งที่ไม่ได้ทำอย่างไร 23 00:01:20,600 --> 00:01:23,720 24 00:01:23,720 --> 00:01:28,910 ดีทำพิษเป็นที่รู้จักกัน ข้อผิดพลาดทุบตี, ซอฟแวร์ใช้ประโยชน์จากมัน 25 00:01:28,910 --> 00:01:33,230 แฮกเกอร์ใช้ไวรัสในการสแกนที่มีช่องโหว่ ระบบที่ใช้ลินุกซ์และ Unix 26 00:01:33,230 --> 00:01:36,300 ระบบปฏิบัติการและจากนั้นพวกเขาติดเชื้อ 27 00:01:36,300 --> 00:01:38,730 bash เป็นเชลล์ที่บรรทัดคำสั่ง 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 แม้ว่าการเปลี่ยนแปลงที่ทำพิษ 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 เพราะทำพิษช่วยให้สมบูรณ์ การควบคุมเครื่องที่ติดเชื้อ 35 00:02:01,580 --> 00:02:06,030 ในขณะที่ Heartbleed ได้รับอนุญาตเท่านั้น แฮกเกอร์สามารถสอดแนมในเครื่องคอมพิวเตอร์ 36 00:02:06,030 --> 00:02:09,130 มันเป็นเรื่องที่รุนแรงเพื่อให้มันเป็น รับการจัดอันดับ 10 จาก 10 37 00:02:09,130 --> 00:02:11,900 สำหรับความรุนแรงโดยแห่งชาติ ฐานข้อมูลช่องโหว่ 38 00:02:11,900 --> 00:02:15,530 39 00:02:15,530 --> 00:02:20,015 2/3 ของเว็บเซิร์ฟเวอร์ทั้งหมดอยู่ที่ ความเสี่ยงรวมทั้งบางส่วนคอมพิวเตอร์ Mac 40 00:02:20,015 --> 00:02:22,760 41 00:02:22,760 --> 00:02:25,600 ดีให้แน่ใจว่าคุณ แก้ไขระบบของคุณตอนนี้ 42 00:02:25,600 --> 00:02:29,330 ทุกคนโฮสติ้งเว็บไซต์ทำงาน ระบบปฏิบัติการที่ได้รับผลกระทบ 43 00:02:29,330 --> 00:02:31,800 ควรจะดำเนินการโดยเร็วที่สุดเท่าที่เป็นไปได้ 44 00:02:31,800 --> 00:02:35,390 ทุกคนที่สามารถจ่ายได้ควรมีลักษณะ เพื่อการตรวจสอบและเว็บแอพลิเคชันของพวกเขา 45 00:02:35,390 --> 00:02:37,355 ไฟร์วอลล์จะมองออกไปสำหรับการโจมตีใด ๆ 46 00:02:37,355 --> 00:02:39,979 47 00:02:39,979 --> 00:02:41,770 ลำโพงที่ 3: สิ่งที่เลวร้ายที่สุด ที่อาจเกิดขึ้นคือ 48 00:02:41,770 --> 00:02:45,080 ว่าใครจะเขียนโค้ดที่ โดยอัตโนมัติจะไปและการสแกน 49 00:02:45,080 --> 00:02:48,280 อินเทอร์เน็ตและจะส่งผลกระทบต่อ คอมพิวเตอร์ทุกเครื่องเหล่านี้ 50 00:02:48,280 --> 00:02:50,710 และเมื่อพวกเขาทำอย่างนั้นได้ดี สิ่งที่แย่ที่สุดที่พวกเขาสามารถทำ 51 00:02:50,710 --> 00:02:53,300 เป็นเพียงการลบทุกอย่าง หรือปิดเว็บไซต์ที่ลง 52 00:02:53,300 --> 00:02:55,360 ดังนั้นเราจะได้เห็นความเสียหาย จากมุมมองที่ 53 00:02:55,360 --> 00:02:58,300 ที่เราจะมีคนที่เป็นอันตราย ที่เพิ่งตัดสินใจที่จะทำให้เกิดความเสียหาย 54 00:02:58,300 --> 00:03:02,534 โดยนำระบบลงหรือลบ ไฟล์และสิ่งที่ต้องการที่ 55 00:03:02,534 --> 00:03:05,200 ลำโพงที่ 2: บางคนบอกว่านี่คือหนึ่งใน ที่ยากที่สุดในการวัด 56 00:03:05,200 --> 00:03:08,080 ข้อผิดพลาดในปีที่ผ่านมาและมัน อาจใช้เวลาหลายสัปดาห์หรือแม้กระทั่ง 57 00:03:08,080 --> 00:03:10,820 เดือนเพื่อพิจารณาผลกระทบที่ดีที่สุดของ 58 00:03:10,820 --> 00:03:12,180 59 00:03:12,180 --> 00:03:15,560 >> ลำโพง 1: ทั้งหมดนั่นเป็นความจริง แต่สิ่งที่ตลกคือเกือบทั้งหมด 60 00:03:15,560 --> 00:03:18,330 ของภาพที่คุณเพิ่งเห็น ยกเว้นอาจจะแป้นพิมพ์ 61 00:03:18,330 --> 00:03:20,930 มีอะไรจะทำอย่างไรกับ ข้อผิดพลาดใด ๆ 62 00:03:20,930 --> 00:03:23,960 เซิร์ฟเวอร์และสายไฟและอื่น ๆ มันเกี่ยวข้องกับการเรียงลำดับของการสัมผัส, 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 ให้ฉันไปข้างหน้าและเพิ่ม หน้าต่าง terminal ที่นี่ 66 00:03:32,910 --> 00:03:36,020 และพวกคุณได้ใช้นี้ หรือรุ่นที่ฝังตัวดังกล่าว 67 00:03:36,020 --> 00:03:39,460 ใน Gedit เพื่อที่จะเขียนโปรแกรม พิมพ์คำสั่งและอื่น ๆ 68 00:03:39,460 --> 00:03:43,690 และนี้เป็นจริงและมี รับสำหรับสัปดาห์ที่เตะ B--S-H 69 00:03:43,690 --> 00:03:46,890 นี้เป็นบอร์นอีกครั้งเปลือก ซึ่งเป็นเพียงวิธีแฟนซีของบอกว่า 70 00:03:46,890 --> 00:03:50,220 นี้เป็นโปรแกรมที่มี กระพริบที่รวดเร็วมีประสิทธิภาพ 71 00:03:50,220 --> 00:03:51,970 ว่านั่งอยู่ที่นั่นรอ สำหรับการป้อนข้อมูลสำหรับคุณ 72 00:03:51,970 --> 00:03:53,920 และมันก็เป็นคำสั่ง ผ่านอินเตอร์เฟซบรรทัดที่ 73 00:03:53,920 --> 00:03:57,650 พวกคุณได้รับการใช้คำสั่งและ ในท้ายที่สุดแล้วการรวบรวมและการทำงาน 74 00:03:57,650 --> 00:03:58,400 โปรแกรม 75 00:03:58,400 --> 00:04:01,320 >> แต่เตะยังเป็นโปรแกรม ภาษาในความหมายดังต่อไปนี้ 76 00:04:01,320 --> 00:04:05,460 คุณรู้ว่ามีคำสั่งเช่น cd และ LS และเสียงดังกราวและคนอื่น ๆ 77 00:04:05,460 --> 00:04:09,580 แต่คุณสามารถกำหนดคำสั่งของคุณเอง ด้วยการใช้พวกเขาในการเตะ 78 00:04:09,580 --> 00:04:11,420 ตอนนี้เราไม่ได้ไป เข้าไปดูรายละเอียดที่ดี 79 00:04:11,420 --> 00:04:16,089 ที่จะทุบตีภาษาการเขียนโปรแกรม แต่ รู้เช่นว่าในขณะนี้ 80 00:04:16,089 --> 00:04:17,607 มีคำสั่งเรียกว่า "สวัสดี". 81 00:04:17,607 --> 00:04:19,440 ดังนั้นจึงสามารถพบได้ใน หนึ่งในแพคเกจเหล่านี้ 82 00:04:19,440 --> 00:04:20,856 มันไม่ได้ติดตั้งบนคอมพิวเตอร์ของฉัน 83 00:04:20,856 --> 00:04:21,870 สอบถามผู้ดูแลระบบของคุณ 84 00:04:21,870 --> 00:04:26,030 แต่ถ้าผมต้องการที่จะต้องมีโปรแกรม เรียกว่า "สวัสดี" ในที่เตะหรือที่พร้อมท์ของฉัน 85 00:04:26,030 --> 00:04:30,810 ที่จริงผมสามารถใช้ไวยากรณ์ที่ ค่อนข้างชอบ C. ก็ไม่เชิงเดียวกัน 86 00:04:30,810 --> 00:04:35,020 แต่มันก็ดูสวยคล้ายกับ ฟังก์ชั่นที่ขาดหายไปแม้ว่ารายละเอียดบางอย่าง 87 00:04:35,020 --> 00:04:38,090 ดูเหมือนจะไม่มีอะไรเกิดขึ้น แต่ตอนนี้ถ้าผมพิมพ์ "สวัสดี" 88 00:04:38,090 --> 00:04:40,960 จริง ๆ แล้วคุณสามารถเขียน โปรแกรมไม่ได้อยู่ใน C ไม่ได้อยู่ในชวา 89 00:04:40,960 --> 00:04:44,280 ไม่ได้อยู่ในการเขียนโปรแกรมอื่น ภาษา แต่ในที่เตะตัวเอง 90 00:04:44,280 --> 00:04:47,630 >> ตอนนี้ที่สำคัญที่นี่คือที่ผมเขียน ชื่อที่ผมอยากจะให้คำสั่งใหม่นี้ 91 00:04:47,630 --> 00:04:50,820 และวงเล็บนอกจากนี้ยังมี สัญลักษณ์นี้เป็นฟังก์ชั่น 92 00:04:50,820 --> 00:04:54,010 เช่นกันนอกจากนี้คุณยังสามารถทำสนุก สิ่งและในความเป็นจริงแม้ใน Mac OS, 93 00:04:54,010 --> 00:04:55,620 นี้เป็นโปรแกรมที่เรียกว่าเทอร์ 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 และนี่คือวงเล็ก ๆ น้อย ๆ แต่มันเป็นชนิดของความสนุก 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 และตอนนี้เวลาที่เขากลับมาของเขา แป้นพิมพ์หลังจากที่ผมล้างหน้าจอ 102 00:05:26,610 --> 00:05:27,985 และเขาจะนั่งลง พยายามที่จะทำบางอย่าง 103 00:05:27,985 --> 00:05:29,250 รายการเนื้อหาของ directory-- ของเขา 104 00:05:29,250 --> 00:05:29,510 >> [AUDIO เล่นภาพ] 105 00:05:29,510 --> 00:05:30,010 >> -Hello 106 00:05:30,010 --> 00:05:31,621 107 00:05:31,621 --> 00:05:32,120 สวัสดี 108 00:05:32,120 --> 00:05:35,030 >> ลำโพง 1: ดังนั้นในความเป็นธรรม มันก็ไม่จริง "สวัสดี". 109 00:05:35,030 --> 00:05:36,894 มันก็มักจะมีบางสิ่งบางอย่าง คล้ายมากขึ้นเพื่อ that-- 110 00:05:36,894 --> 00:05:37,560 [AUDIO เล่นภาพ] 111 00:05:37,560 --> 00:05:37,750 -Beep 112 00:05:37,750 --> 00:05:39,320 ลำโพง 1: --that ฉัน would-- เพื่อให้คอมพิวเตอร์ของเขาจะ 113 00:05:39,320 --> 00:05:42,170 สาบานที่เขามีเวลาใด ๆ ที่เขาจริง นั่งลงที่แป้นพิมพ์ของเขา 114 00:05:42,170 --> 00:05:46,265 อย่างรวดเร็วและเขาก็คิดออก จะไม่ออกจากหน้าจอของเขาปลดล็อค 115 00:05:46,265 --> 00:05:48,730 แต่นี้แสดงให้เห็นการจัดเรียง สนุกโง่ที่คุณ 116 00:05:48,730 --> 00:05:50,210 สามารถมีกับสิ่งที่ต้องการเตะ 117 00:05:50,210 --> 00:05:52,770 แต่ก็น้อยมาก อย่างจริงจังเพื่อให้แน่ใจว่ากว่าที่ 118 00:05:52,770 --> 00:05:57,235 และในความเป็นจริงนี้เป็นหนึ่งใน ข้อบกพร่องที่เป็นอันตรายและยาวนานที่สุด 119 00:05:57,235 --> 00:05:58,860 ที่ได้ตีจริงๆโลกทั่วโลก 120 00:05:58,860 --> 00:06:02,060 ข้อผิดพลาดนี้ได้รับรอบ สำหรับบางคน 20 ปีที่ผ่านมา 121 00:06:02,060 --> 00:06:05,780 และคุณจะหลงในเวลาเพียง โดยช่วงเวลาที่ความเรียบง่ายของ 122 00:06:05,780 --> 00:06:07,990 >> ดังนั้นนี่คือตัวแทนของ สั่งว่าถ้าคุณ 123 00:06:07,990 --> 00:06:10,448 Mac เป็นเจ้าของที่แท้จริงได้ในขณะนี้ เมื่อคุณมีฝาปิดของคุณเปิด 124 00:06:10,448 --> 00:06:12,940 คุณสามารถลองพิมพ์ลงที่ โปรแกรมที่เรียกว่าเทอร์ 125 00:06:12,940 --> 00:06:15,410 สถานีที่อยู่ภายใต้ แอปพลิเค Utilities-- 126 00:06:15,410 --> 00:06:18,790 สำหรับครั้งผู้ใช้ Windows จะได้ไม่ต้อง กังวลเกี่ยวกับ threat-- นี้โดยเฉพาะ 127 00:06:18,790 --> 00:06:22,310 แต่บรรดาของคุณที่มีแม็คสามารถพิมพ์ นี้ในหน้าต่างว่าฉันจะทำที่นี่ 128 00:06:22,310 --> 00:06:24,210 และถ้าคุณพิมพ์ ที่เข้าสู่โปรแกรมนี้ 129 00:06:24,210 --> 00:06:28,830 ที่เรียกว่าเทอร์มิเช่นฉันจะทำตอนนี้ ถ้าคุณเห็นคำว่า "เสี่ยง" 130 00:06:28,830 --> 00:06:32,200 คอมพิวเตอร์ของคุณเป็น ความเสี่ยงที่จะแสวงหาผลประโยชน์ 131 00:06:32,200 --> 00:06:33,850 >> ตอนนี้สิ่งที่ไม่จริงหมายถึงอะไร 132 00:06:33,850 --> 00:06:35,870 และเป็นที่ยอมรับ บางไวยากรณ์บ้าสวย 133 00:06:35,870 --> 00:06:39,050 แต่ขออย่างน้อยวาดออก บางส่วนของแง่มุมที่น่าสนใจ 134 00:06:39,050 --> 00:06:42,567 เพื่อให้มีรูปแบบที่มีลักษณะบาง เล็ก ๆ น้อย ๆ ที่คุ้นเคยอย่างน้อยจาก C 135 00:06:42,567 --> 00:06:43,950 และการเขียนโปรแกรมมากขึ้นโดยทั่วไป 136 00:06:43,950 --> 00:06:47,550 ฉันเห็นวงเล็บบาง อัฒภาค, วงเล็บปีกกาและดังกล่าว 137 00:06:47,550 --> 00:06:50,820 แต่มันกลับกลายเป็นว่านี้ สิ่งที่โง่ที่นี่ในสีเหลือง 138 00:06:50,820 --> 00:06:53,580 ฟังก์ชั่นเป็นหลัก ที่ไม่ทำอะไรเลย 139 00:06:53,580 --> 00:06:57,840 หมายถึงลำไส้ใหญ่ไม่ทำอะไรเลยและ อัฒภาคหมายถึงการหยุดการทำอะไร 140 00:06:57,840 --> 00:07:00,250 ดังนั้นภายในของเหล่านี้ วงเล็บปีกกาจริง 141 00:07:00,250 --> 00:07:02,440 ที่ฉันมีความเท่าเทียมกัน ลงไปทางซ้ายนี้ 142 00:07:02,440 --> 00:07:05,500 เป็นหลักการสร้าง คำสั่งหรือตัวแปร 143 00:07:05,500 --> 00:07:09,520 เรียกว่า x, และกำหนด ที่บิตของรหัสสีเหลืองมี 144 00:07:09,520 --> 00:07:14,040 ที่อาจจะมีบางอย่างเช่น "เสียงสะท้อน สวัสดี "หรือ" บอกเตือน "หรือบางสิ่งบางอย่าง 145 00:07:14,040 --> 00:07:15,120 คล้ายกับว่า 146 00:07:15,120 --> 00:07:17,780 แต่แจ้งให้ทราบถ้าดวงตาของคุณ เดินต่อไปทางขวา 147 00:07:17,780 --> 00:07:22,150 มีมากขึ้นที่จะสายไปกว่านี้ เพียงแค่ปลายอัฒภาคที่ 148 00:07:22,150 --> 00:07:25,160 "ก้องเสี่ยง" และจากนั้น นอกเหนือจากที่มีมากยิ่งขึ้น 149 00:07:25,160 --> 00:07:26,530 อีกอัฒภาคทุบตี -c :. 150 00:07:26,530 --> 00:07:28,120 151 00:07:28,120 --> 00:07:34,050 >> ดังนั้นเรื่องยาวสั้น บรรทัดของรหัสนี้ 152 00:07:34,050 --> 00:07:36,660 เพียงพอสำหรับการที่น่าสนใจ คอมพิวเตอร์ที่เป็น 153 00:07:36,660 --> 00:07:39,830 ความเสี่ยงที่จะทำอะไรบางอย่าง ที่คุณอยากให้มันทำ 154 00:07:39,830 --> 00:07:44,290 เพราะมีข้อผิดพลาดในการเตะโดย แม้ว่าเตะที่ควรจะหยุด 155 00:07:44,290 --> 00:07:48,980 สายการอ่านของคำสั่งที่ถูกต้อง มีหลังข้อความสีเหลือง 156 00:07:48,980 --> 00:07:52,520 สำหรับ 20 ปีบวกกับข้อผิดพลาดเก่า ทุบตีได้รับจริงอ่าน 157 00:07:52,520 --> 00:07:56,780 เกินอัฒภาคที่และสวย มากทำในสิ่งที่มันจะบอก 158 00:07:56,780 --> 00:07:59,070 >> ดังนั้นสิ่งที่เป็นความหมาย จากการที่ในที่สุด? 159 00:07:59,070 --> 00:08:01,340 ผมแค่บอกว่า "ก้องสวัสดี" หรือ "สะท้อนความเปราะบาง" 160 00:08:01,340 --> 00:08:05,449 แต่สิ่งที่ถ้าคุณทำอะไรบางอย่าง จริงที่เป็นอันตรายเช่น RM -rf * 161 00:08:05,449 --> 00:08:07,240 ที่คุณอาจจะไม่ ได้เคยพิมพ์มาก่อน 162 00:08:07,240 --> 00:08:08,920 และตรงไปตรงมาคุณอาจ ไม่ควรเร็วเกินไป 163 00:08:08,920 --> 00:08:10,700 เพราะคุณสามารถทำ จำนวนมากของความเสียหายกับมัน 164 00:08:10,700 --> 00:08:11,210 ทำไม? 165 00:08:11,210 --> 00:08:12,990 RM ไม่สิ่งที่แน่นอน? 166 00:08:12,990 --> 00:08:14,270 ลบ 167 00:08:14,270 --> 00:08:15,930 * หมายถึงอะไร 168 00:08:15,930 --> 00:08:16,430 ทั้งหมด 169 00:08:16,430 --> 00:08:18,180 ดังนั้นจึงเป็นเรื่องที่เรียกว่า ป่าการ์ดดังนั้นจึงหมายความว่า 170 00:08:18,180 --> 00:08:20,410 ลบทุกอย่างใน ไดเรกทอรีปัจจุบัน 171 00:08:20,410 --> 00:08:23,379 -r เกิดขึ้นหมายถึงการเวียนเกิด ซึ่งหมายความว่าถ้าสิ่งที่คุณกำลังลบ 172 00:08:23,379 --> 00:08:26,420 เป็นไดเรกทอรีและภายในจากที่นั่น เป็นไฟล์อื่น ๆ และไดเรกทอรีอื่น ๆ 173 00:08:26,420 --> 00:08:28,950 ซ้ำดำน้ำในมี และลบทั้งหมดที่ 174 00:08:28,950 --> 00:08:31,040 และ -f เป็นที่เลวร้ายที่สุดของพวกเขาทั้งหมด 175 00:08:31,040 --> 00:08:32,580 ทุกคนรู้ว่าสิ่งที่ -f หมายถึงที่นี่? 176 00:08:32,580 --> 00:08:33,690 177 00:08:33,690 --> 00:08:34,360 กองทัพ 178 00:08:34,360 --> 00:08:37,830 ดังนั้นวิธีการบังคับให้แม้ ถ้าเรื่องนี้เป็นความคิดที่ไม่ดี 179 00:08:37,830 --> 00:08:40,939 ทำมันได้โดยไม่ต้องแจ้งให้ฉัน สำหรับการยืนยันต่อไป 180 00:08:40,939 --> 00:08:43,230 ดังนั้นคุณรู้ว่าเราหัวเราะเยาะ นี้ แต่ตรงไปตรงมาฉันอาจ 181 00:08:43,230 --> 00:08:44,972 พิมพ์นี้หลายครั้ง วันเพราะความเป็นจริง 182 00:08:44,972 --> 00:08:47,210 มันเป็นวิธีที่เร็วที่สุดเพื่อ ลบทั้งกลุ่มของสิ่งที่ 183 00:08:47,210 --> 00:08:48,590 แต่ถึงแม้ฉันได้กระทำความเสียหายบางส่วน 184 00:08:48,590 --> 00:08:53,100 >> แต่ถ้าคุณจะหลอกคอมพิวเตอร์ ในการกำหนดตัวแปรบางอย่างโง่ 185 00:08:53,100 --> 00:08:56,810 หรือการทำงานที่เรียกว่า x แต่แล้ว หลอกล่อคอมพิวเตอร์เข้าสู่การดำเนินงาน 186 00:08:56,810 --> 00:09:00,030 เกินขอบเขตของการที่ ฟังก์ชั่นเกินอัฒภาคที่ 187 00:09:00,030 --> 00:09:04,430 คุณแน่นอนสามารถหลอกลวงคอมพิวเตอร์ ในการดำเนินงานบางอย่างเช่น RM -rf 188 00:09:04,430 --> 00:09:07,810 หรือคำสั่งที่อีเมล์ หรือคัดลอกคำสั่ง 189 00:09:07,810 --> 00:09:11,400 อะไรอย่างแท้จริงที่คุณสามารถทำอะไรกับ คอมพิวเตอร์ไม่ว่าจะลบไฟล์ 190 00:09:11,400 --> 00:09:15,350 การสร้างไฟล์, สแปมใครสักคน การโจมตีเซิร์ฟเวอร์บางระยะไกล 191 00:09:15,350 --> 00:09:17,190 ถ้าคุณสามารถแสดงมันออกมา ที่มีคำสั่งคุณ 192 00:09:17,190 --> 00:09:19,120 สามารถหลอกเครื่องคอมพิวเตอร์ในการทำที่ 193 00:09:19,120 --> 00:09:21,510 >> ตอนนี้สิ่งที่เป็นตัวอย่างของ วิธีการที่คุณอาจจะทำเช่นนี้? 194 00:09:21,510 --> 00:09:24,300 ดีมีจำนวนมากของเครื่องคอมพิวเตอร์ที่เป็น ในทุบตีอินเทอร์เน็ตทำงาน 195 00:09:24,300 --> 00:09:26,390 ทั้งหมดของผู้ใช้เรา Mac เป็นในหมู่พวกเขา 196 00:09:26,390 --> 00:09:30,390 จำนวนมากของเซิร์ฟเวอร์ลินุกซ์อยู่ในหมู่ พวกเขาเป็นอย่างดีและเซิร์ฟเวอร์ยูนิกซ์ 197 00:09:30,390 --> 00:09:32,630 หน้าต่างอีกครั้งได้รับ ค่อนข้างออกจากเบ็ด 198 00:09:32,630 --> 00:09:34,590 ยกเว้นกรณีที่คุณได้ติดตั้ง ซอฟต์แวร์พิเศษ 199 00:09:34,590 --> 00:09:37,130 ตอนนี้จำนวนมากของเซิร์ฟเวอร์สำหรับ เช่นเว็บเซิร์ฟเวอร์ทำงาน 200 00:09:37,130 --> 00:09:39,840 และในความเป็นจริงอาจจะเป็นลินุกซ์ ระบบปฏิบัติการที่นิยมมากที่สุด 201 00:09:39,840 --> 00:09:43,060 เพื่อให้ทำงานได้บนเครื่องคอมพิวเตอร์บนอินเทอร์เน็ต ที่ให้บริการขึ้นหน้าเว็บ 202 00:09:43,060 --> 00:09:44,910 ตอนนี้ที่เราจะได้เห็นต่อไป ในภาคการศึกษาเมื่อ 203 00:09:44,910 --> 00:09:48,470 คุณส่งการร้องขอจาก browser-- Chrome ของคุณ 204 00:09:48,470 --> 00:09:50,790 Internet Explorer, อะไรก็ตาม ไปยังเซิร์ฟเวอร์ระยะไกล 205 00:09:50,790 --> 00:09:53,730 ปรากฎว่าแม้ คุณเพียงแค่พิมพ์ www.example.com, 206 00:09:53,730 --> 00:09:59,590 เบราว์เซอร์ของคุณจะส่งข้อความ ที่เล็ก ๆ น้อย ๆ ที่เป็นความลับมากขึ้นเช่นนี้ 207 00:09:59,590 --> 00:10:01,239 >> แต่สังเกตเห็นบางสิ่งบางอย่างเล็ก ๆ น้อย ๆ ที่แปลกประหลาด 208 00:10:01,239 --> 00:10:03,030 สองบรรทัดแรก ฉันไม่เคยเห็นมาก่อน 209 00:10:03,030 --> 00:10:04,904 แต่พวกเขาไม่ได้ดู คุกคามโดยเฉพาะอย่างยิ่ง 210 00:10:04,904 --> 00:10:08,030 แต่สังเกตเห็นสิ่งที่ฉันได้ถูกขโมย สำหรับสายที่สามที่นี่ 211 00:10:08,030 --> 00:10:13,390 ถ้าคนเลวที่จะส่งข้อความ เช่นนี้จากคอมพิวเตอร์ของเขาหรือเธอ 212 00:10:13,390 --> 00:10:17,270 ที่จะเสี่ยง Mac หรือ เซิร์ฟเวอร์ลินุกซ์ที่มีช่องโหว่ 213 00:10:17,270 --> 00:10:21,580 สิ่งที่ตลกคือตีว่า ที่พร้อมรับคำสั่งเพียงเล็กน้อยง่าย 214 00:10:21,580 --> 00:10:27,450 เป็นอยู่ทั่วไปทุกหนทุกแห่งและมักจะเป็น ที่ใช้เป็นหลักในการดำเนินการ 215 00:10:27,450 --> 00:10:30,020 เนื้อหาของ ข้อความที่ได้รับ 216 00:10:30,020 --> 00:10:33,490 และตรรกะที่คุณสามารถ หลอกลวงเว็บเซิร์ฟเวอร์ดังนั้น 217 00:10:33,490 --> 00:10:36,370 โดยการส่งสิ่งที่ต้องการ ตัวแทนผู้ใช้ซึ่งมักจะ 218 00:10:36,370 --> 00:10:38,300 ควรจะพูดว่า ชื่อของเบราว์เซอร์ของคุณ 219 00:10:38,300 --> 00:10:42,420 ตัวแทนผู้ใช้ Chrome, ตัวแทนผู้ใช้อินเทอร์เน็ต Explorer ให้ตัวแทนผู้ใช้ Firefox นี้ 220 00:10:42,420 --> 00:10:44,590 เป็นเพียงเบราว์เซอร์ของคุณ วิธีการในการระบุตัวเอง 221 00:10:44,590 --> 00:10:46,605 แต่ถ้าคนเลวมาก ชาญฉลาดกล่าวว่ามมมมผม 222 00:10:46,605 --> 00:10:47,930 จะไม่บอกคุณ สิ่งที่เบราว์เซอร์ของฉันคือ 223 00:10:47,930 --> 00:10:50,888 ฉันแทนจะไปส่งคุณนี้ ความลับที่มองสิ่งที่มี -rf RM 224 00:10:50,888 --> 00:10:55,840 * ในนั้นคุณอักษรสามารถหลอกลวง เว็บเซิร์ฟเวอร์ที่มีช่องโหว่บนอินเทอร์เน็ต 225 00:10:55,840 --> 00:10:59,055 ในการดำเนินการตรงที่ใน มีการลบไฟล์ทั้งหมดของ 226 00:10:59,055 --> 00:11:00,930 และตรงไปตรงมาที่ไม่ แม้ที่เลวร้ายที่สุดของมัน 227 00:11:00,930 --> 00:11:01,763 คุณสามารถทำอะไร 228 00:11:01,763 --> 00:11:04,480 คุณสามารถเริ่มต้นการกระจาย ปฏิเสธการโจมตีบริการ 229 00:11:04,480 --> 00:11:07,030 ถ้าคุณส่งข้อความนี้ไปยัง ที่อัดแน่นทั้งเว็บเซิร์ฟเวอร์ 230 00:11:07,030 --> 00:11:10,256 แล้วมีพวกเขาทั้งหมดลงมาสำหรับ เช่นบนเซิร์ฟเวอร์ Harvard.edu, 231 00:11:10,256 --> 00:11:12,130 และคุณสามารถจัดเรียงของปัง ห่าออกจากพวกเขา 232 00:11:12,130 --> 00:11:15,490 จากการจราจรเครือข่ายที่เป็น เรียกเป็นอย่างอื่นโดยนี้คนเลว 233 00:11:15,490 --> 00:11:18,760 >> ดังนั้นเรื่องยาวสั้นเกือบ ทุกคนในห้องที่เป็นเจ้าของ 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 แต่แอปเปิ้ลจะเร็ว ๆ นี้ ได้รับการปรับปรุงแก้ไขนี้ 241 00:11:36,210 --> 00:11:39,660 โลกของลินุกซ์ได้เปิดตัวแล้ว จำนวนของการแก้ไขสำหรับ Fedora และอูบุนตู 242 00:11:39,660 --> 00:11:43,790 และรุ่นอื่น ๆ ของลินุกซ์และแน่นอน ถ้าคุณเรียกใช้โปรแกรมปรับปรุง 50 เครื่อง, 243 00:11:43,790 --> 00:11:45,930 แม้ที่มากเกินไปจะเป็น ปรับปรุงและแก้ไข 244 00:11:45,930 --> 00:11:47,764 แต่ที่มากเกินไปไม่ได้ ได้จริงๆที่มีช่องโหว่ 245 00:11:47,764 --> 00:11:49,804 เพราะถ้าคุณได้ tinkered กับเครื่องใช้ไฟฟ้า 246 00:11:49,804 --> 00:11:52,770 และทำให้แล็ปท็อปของคุณต่อสาธารณชน สามารถเข้าถึงได้บนอินเทอร์เน็ตที่ไม่ได้ 247 00:11:52,770 --> 00:11:54,910 โดยค่าเริ่มต้นที่คุณได้ รับจริงที่ดีเพราะ 248 00:11:54,910 --> 00:11:56,890 ของไฟร์วอลและเทคนิคอื่น ๆ 249 00:11:56,890 --> 00:12:01,000 >> แต่มันก็เป็นตัวอย่างที่ชัดเจนของข้อผิดพลาด ที่เราได้อาศัยอยู่สำหรับตัวอักษร 20 250 00:12:01,000 --> 00:12:04,050 ปีและผู้ที่รู้ถ้ามีคน ตลอดเวลานี้ได้เป็นที่รู้จักกันเกี่ยวกับมันได้หรือไม่ 251 00:12:04,050 --> 00:12:06,300 และในความเป็นจริงนี้เป็นหนึ่งใน ความท้าทายพื้นฐาน 252 00:12:06,300 --> 00:12:08,690 ว่าเราจะได้เห็นต่อไปใน ภาคการศึกษาที่เกี่ยวกับการรักษาความปลอดภัย 253 00:12:08,690 --> 00:12:13,020 คือเช่นเดียวกับในโลกแห่งความจริง คนดีเป็นเบี้ยล่าง 254 00:12:13,020 --> 00:12:16,500 เพื่อให้คนเลวออกเราต้อง ให้แน่ใจว่าประตูทุกบานถูกล็อค 255 00:12:16,500 --> 00:12:20,340 ที่หน้าต่างทุกบานมีความปลอดภัยที่ จุดของรายการเข้าไปในบ้านทุก 256 00:12:20,340 --> 00:12:21,980 มีความปลอดภัยเพื่อให้คนเลวออก 257 00:12:21,980 --> 00:12:26,870 แต่สิ่งที่ไม่เป็นคนเลวต้อง ทำอย่างไรที่จะประนีประนอมจริงที่บ้านของคุณ 258 00:12:26,870 --> 00:12:28,200 และขโมยจากคุณ? 259 00:12:28,200 --> 00:12:32,574 เขาหรือเธอก็จะพบคนที่ปลดล็อค ประตูหน้าต่างที่ขาดอย่างใดอย่างหนึ่งหรือสิ่งที่ 260 00:12:32,574 --> 00:12:35,240 ตามเส้นเหล่านั้นและมันเป็น สิ่งที่เหมือนกันในการรักษาความปลอดภัยคอมพิวเตอร์ 261 00:12:35,240 --> 00:12:37,660 เราสามารถเขียนล้าน บรรทัดของรหัสการเขียนโปรแกรม 262 00:12:37,660 --> 00:12:40,570 และการใช้จ่ายหลายร้อยหรือหลายพัน ชั่วโมงพยายามที่จะได้รับมันถูกต้อง 263 00:12:40,570 --> 00:12:43,370 แต่ถ้าคุณทำเพียงหนึ่ง ความผิดพลาดในความถูกต้อง 264 00:12:43,370 --> 00:12:47,030 คุณสามารถวางระบบทั้งหมดและ แน่นอนในกรณีนี้อินเทอร์เน็ตทั้งหมด 265 00:12:47,030 --> 00:12:48,660 และโลกที่มีความเสี่ยง 266 00:12:48,660 --> 00:12:51,950 >> ดังนั้นถ้าคุณต้องการที่จะเรียนรู้เพิ่มเติม เกี่ยวกับเรื่องนี้ไปที่ URL นี้ที่นี่ 267 00:12:51,950 --> 00:12:54,450 ไม่มีความจำเป็นสำหรับการดำเนินการไม่ได้ คืนนี้ถ้าคุณ 268 00:12:54,450 --> 00:12:57,116 ในหมู่ผู้ที่สะดวกสบายมากขึ้น ได้รับการใช้งานเว็บของคุณเอง 269 00:12:57,116 --> 00:12:59,810 เซิร์ฟเวอร์ซึ่งในกรณีที่คุณควร ในความเป็นจริงการปรับปรุงซอฟต์แวร์ของคุณ 270 00:12:59,810 --> 00:13:03,244 >> และนี้ก็คือชื่อของ คำพูดและตอนนี้กระดาษ 271 00:13:03,244 --> 00:13:05,410 ที่เราได้มีการเชื่อมโยงใน เว็บไซต์ของหลักสูตรสำหรับวันนี้ 272 00:13:05,410 --> 00:13:07,600 มันเป็นเพื่อน ชื่อเคน ธ อมป์สันที่ 273 00:13:07,600 --> 00:13:10,120 ได้รับการยอมรับที่มีชื่อเสียงมาก ที่ได้รับรางวัลในสาขาวิทยาศาสตร์คอมพิวเตอร์ 274 00:13:10,120 --> 00:13:13,495 และเขาได้ให้คำพูดนี้มาหลายปี ที่ผ่านมาเป็นหลักในหัวข้อเดียวกันนี้ 275 00:13:13,495 --> 00:13:18,250 276 00:13:18,250 --> 00:13:20,520 ขอให้คนที่คำถามที่ ควรคุณจริงๆ 277 00:13:20,520 --> 00:13:23,480 ความไว้วางใจในที่สุด ซอฟแวร์ที่คุณได้รับ? 278 00:13:23,480 --> 00:13:26,100 ยกตัวอย่างเช่นเราทุกคนมี รับการเขียนโปรแกรม 279 00:13:26,100 --> 00:13:27,820 และเราได้รวบรวม พวกเขาด้วยเสียงดังกราว 280 00:13:27,820 --> 00:13:31,830 และความรู้ของคุณที่คุณเขียน โปรแกรมใด ๆ สำหรับ CS50 ที่มี 281 00:13:31,830 --> 00:13:35,310 ประตูด้านหลังของทุกประเภทมีวิธีคือ ที่คนเลวถ้าใช้โปรแกรมของคุณ 282 00:13:35,310 --> 00:13:37,410 อาจจะใช้เวลามากกว่าคอมพิวเตอร์ของคุณ 283 00:13:37,410 --> 00:13:38,310 อาจจะไม่ได้ใช่มั้ย? 284 00:13:38,310 --> 00:13:40,180 มาริโอและโลภและเครดิต 285 00:13:40,180 --> 00:13:41,680 เหล่านี้เป็นโปรแกรมขนาดเล็กสวยทั้งหมด 286 00:13:41,680 --> 00:13:43,910 คุณจะต้องสวย ไม่ดีถ้าคุณจริง 287 00:13:43,910 --> 00:13:47,310 ทำให้คอมพิวเตอร์ของคุณเสี่ยง หลังจากเขียน 10 หรือ 20 สายรหัส 288 00:13:47,310 --> 00:13:49,690 หรืออย่างน้อยก็ไม่ได้ตระหนักถึงบางอย่าง ผลกระทบการรักษาความปลอดภัย 289 00:13:49,690 --> 00:13:52,023 ตอนนี้ผมบอกว่าคะนอง แต่เรากำลังจะไปดูวันนี้ 290 00:13:52,023 --> 00:13:54,600 และในสัปดาห์นี้ก็จริง จริงๆเรื่องง่าย 291 00:13:54,600 --> 00:13:57,980 จะไม่ดีและทำให้แม้แต่ โปรแกรมสั้นที่มีช่องโหว่ 292 00:13:57,980 --> 00:14:02,880 >> แต่ตอนนี้อย่างน้อยตระหนักถึง ว่าคำถามที่ถูกถามนี่ 293 00:14:02,880 --> 00:14:04,850 เป็นเรื่องเกี่ยวกับเสียงดังกราวในคอมไพเลอร์ 294 00:14:04,850 --> 00:14:08,360 ทำไมเราได้รับการไว้วางใจเสียงดังกราว สำหรับที่ผ่านมาสองหรือสามสัปดาห์? 295 00:14:08,360 --> 00:14:12,650 ใครที่จะบอกว่าใครก็ตามที่เขียนเสียงดังกราว ไม่ได้มี "ถ้า" เงื่อนไขในการมี 296 00:14:12,650 --> 00:14:17,680 ที่เป็นหลักฉีดศูนย์บาง และคนที่เข้ามาในทุกโปรแกรมจะรวบรวม 297 00:14:17,680 --> 00:14:21,180 ที่จะปล่อยให้เขาหรือการเข้าถึงของเธอ คอมพิวเตอร์ของคุณเมื่อคุณกำลังนอนหลับ 298 00:14:21,180 --> 00:14:23,580 และแล็ปท็อปของคุณฝาเปิด และคอมพิวเตอร์ของคุณทำงาน? 299 00:14:23,580 --> 00:14:24,080 ใช่มั้ย? 300 00:14:24,080 --> 00:14:28,350 เรามีการจัดเรียงของระบบเกียรติสิทธินี้ ตอนนี้ที่เราเชื่อว่าเสียงดังกราวเป็น 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 >> ตอนนี้กับที่กล่าวว่าการฝ่าวงล้อม 311 00:14:55,570 --> 00:14:59,889 ดังนั้นการฝ่าวงล้อมเป็นปัญหาตั้งสามและ ฝ่าวงล้อมเป็นเกมจากปีกลาย 312 00:14:59,889 --> 00:15:02,180 ที่คุณอาจจำได้ แต่ สำหรับเราในปัญหาตั้งสาม 313 00:15:02,180 --> 00:15:04,450 มันช่วยให้เราสามารถใช้ สิ่งที่สำรองรอย 314 00:15:04,450 --> 00:15:08,880 เพื่อที่ว่าเมื่อเรากำลังเขียนโปรแกรม แม้จะอยู่ในหน้าต่างเทอร์มิเช่นนี้ 315 00:15:08,880 --> 00:15:14,670 จริง ๆ แล้วเราสามารถทำงานได้ในที่สุด โปรแกรมกราฟิกไม่ 316 00:15:14,670 --> 00:15:17,800 ซึ่งแตกต่างจากคนที่เรามี การเข้าถึงใน Scratch 317 00:15:17,800 --> 00:15:20,910 ดังนั้นนี้เป็นของพนักงาน การดำเนินการแหกคุก 318 00:15:20,910 --> 00:15:23,930 ซึ่งเป็นเพียงแค่นี้อิฐทำลาย เกมที่คุณย้ายใบพัดของคุณกลับมา 319 00:15:23,930 --> 00:15:27,590 มาและคุณตีลูก กับอิฐสีเหล่านั้นขึ้นด้านบน 320 00:15:27,590 --> 00:15:30,020 ดังนั้นนี้จะนำเรา การจัดเรียงของกลับไปที่ 321 00:15:30,020 --> 00:15:33,180 เราสามารถที่จะมากได้อย่างรวดเร็ว มีรอยขีดข่วนและตอนนี้กับ C, 322 00:15:33,180 --> 00:15:35,800 การดำเนินการของเราเอง อินเตอร์เฟซผู้ใช้แบบกราฟิก 323 00:15:35,800 --> 00:15:38,960 >> แต่ยิ่งไปกว่านั้นนี้ ชุดแรกที่แสดงให้เห็นถึงปัญหา 324 00:15:38,960 --> 00:15:41,000 ที่เรากำลังให้ คุณพวงของรหัส 325 00:15:41,000 --> 00:15:43,940 และในความเป็นจริงผมนำมาอย่างชัดเจน ให้ความสนใจกับเรื่องนี้เพราะโดยเฉพาะอย่างยิ่ง 326 00:15:43,940 --> 00:15:47,090 สำหรับผู้ที่สะดวกสบายน้อยกว่านี้ ปัญหาการตั้งค่าอย่างน้อยได้อย่างรวดเร็วก่อน 327 00:15:47,090 --> 00:15:49,170 จะรู้สึกเหมือน เราได้นำมันขึ้นบาก 328 00:15:49,170 --> 00:15:51,540 เพราะเราได้ให้คุณ สำหรับบางส่วนของการค้นหา 329 00:15:51,540 --> 00:15:54,930 และการเรียงลำดับปัญหาในการ pset, พวงของรหัสที่เราเขียน, 330 00:15:54,930 --> 00:15:56,680 และคู่ของการแสดงความคิดเห็น ที่ว่า "จะทำ" 331 00:15:56,680 --> 00:15:58,221 ที่คุณจะต้องกรอกในช่องว่าง 332 00:15:58,221 --> 00:16:00,020 ดังนั้นไม่น่ากลัวเกินไป แต่ มันเป็นครั้งแรก 333 00:16:00,020 --> 00:16:03,370 เรากำลังส่งคุณรหัสที่คุณจำเป็นต้อง ครั้งแรกที่อ่านเข้าใจและเพิ่มการ 334 00:16:03,370 --> 00:16:04,290 และเสร็จสมบูรณ์ 335 00:16:04,290 --> 00:16:05,940 >> แล้วกับแหกคุก เรากำลังจะทำเช่นเดียวกัน 336 00:16:05,940 --> 00:16:08,740 ให้คุณไม่กี่โหลบรรทัดที่มากขึ้น ของรหัสที่ตรงไปตรงมาให้คุณ 337 00:16:08,740 --> 00:16:11,490 จำนวนมากที่มีกรอบการทำงานสำหรับ เกม แต่หยุดสั้น 338 00:16:11,490 --> 00:16:14,304 ของการใช้อิฐ และลูกและพาย, 339 00:16:14,304 --> 00:16:15,970 แต่เราใช้คุณสมบัติอื่น ๆ บาง 340 00:16:15,970 --> 00:16:18,280 และแม้กระทั่งการที่ได้อย่างรวดเร็วก่อนอีกครั้ง โดยเฉพาะอย่างยิ่งถ้าความสะดวกสบายน้อยลง 341 00:16:18,280 --> 00:16:21,480 อาจดูเหมือนน่ากลัวโดยเฉพาะอย่างยิ่งและ คุณคิดว่ามีฟังก์ชั่นใหม่มากมาย 342 00:16:21,480 --> 00:16:24,070 คุณต้องการที่จะมัดใจ ไปรอบ ๆ และที่เป็นความจริง 343 00:16:24,070 --> 00:16:26,281 แต่เก็บไว้ในใจก็ ค่อนข้างชอบเกา 344 00:16:26,281 --> 00:16:28,780 ราคาที่คุณไม่ได้ใช้ทั้งหมดของ ชิ้นส่วนปริศนาในรอยขีดข่วน 345 00:16:28,780 --> 00:16:31,120 ราคาที่คุณไม่ได้สนใจที่จะห่อ ใจของคุณไปรอบ ๆ ทั้งหมดของพวกเขา 346 00:16:31,120 --> 00:16:33,617 เพราะมันต้องใช้เวลาเป็น อย่างรวดเร็วจะเข้าใจโอ้ 347 00:16:33,617 --> 00:16:35,450 นั่นคือสิ่งที่ฉันจะทำ กับชิ้นส่วนปริศนาที่ 348 00:16:35,450 --> 00:16:38,260 และแน่นอนในปัญหาการตั้งค่า 3 สเปคที่เราจะชี้ให้คุณ 349 00:16:38,260 --> 00:16:41,370 ในเอกสารที่จะ แนะนำคุณกับฟังก์ชั่นใหม่บางอย่าง 350 00:16:41,370 --> 00:16:43,570 และในที่สุดการเขียนโปรแกรม สร้างคุณใช้ 351 00:16:43,570 --> 00:16:47,610 เงื่อนไขห่วง ตัวแปรและฟังก์ชั่น 352 00:16:47,610 --> 00:16:50,720 จะเป็นเหมือนกับ สิ่งที่เราได้เห็นป่านนี้ 353 00:16:50,720 --> 00:16:53,560 >> ดังนั้นแน่นอนสิ่งที่เราจะให้ คุณเป็นรหัสตัวอย่างบางอย่างที่ 354 00:16:53,560 --> 00:16:56,110 ช่วยให้คุณสามารถสร้างหน้าต่าง ที่มีลักษณะไม่ต่างจากนี้ 355 00:16:56,110 --> 00:16:59,540 และในที่สุดทำให้มันกลายเป็น บางสิ่งบางอย่างมากเช่นนี้ 356 00:16:59,540 --> 00:17:02,250 เพื่อใช้ประโยชน์จาก CS50, หารือเกี่ยวกับเวลาทำงานและอื่น ๆ 357 00:17:02,250 --> 00:17:05,290 และนำความสะดวกสบายในความเป็นจริงว่า ปริมาณของรหัสที่คุณต้องเขียน 358 00:17:05,290 --> 00:17:06,760 เป็นจริงไม่ทั้งหมดที่มาก 359 00:17:06,760 --> 00:17:10,359 ความท้าทายแรกเป็นเพียงการปรับตัว ตัวเองให้รหัสบางอย่างที่เราได้เขียน 360 00:17:10,359 --> 00:17:11,450 361 00:17:11,450 --> 00:17:15,810 >> คำถามใด ๆ เกี่ยวกับ pset3, ทำพิษหรือ? 362 00:17:15,810 --> 00:17:19,226 >> ผู้ชม: มันดูเหมือนว่า จะผ่านกับการฝ่าวงล้อม 363 00:17:19,226 --> 00:17:22,154 ว่ารหัสที่เกือบจะ รูปแบบเชิงวัตถุ 364 00:17:22,154 --> 00:17:24,675 แต่ผมคิดว่าซีเป็น โปรแกรมเชิงวัตถุ 365 00:17:24,675 --> 00:17:26,050 ลำโพง 1: คำถามที่ดี 366 00:17:26,050 --> 00:17:28,258 ดังนั้นในการมองผ่าน รหัสกระจายรหัส 367 00:17:28,258 --> 00:17:30,180 เราเขียน pset3, สำหรับผู้ที่คุ้นเคยมัน 368 00:17:30,180 --> 00:17:32,230 ดูเหมือนว่ามัน เล็ก ๆ น้อย ๆ เชิงวัตถุ 369 00:17:32,230 --> 00:17:33,800 คำตอบสั้น ๆ คือมันเป็น 370 00:17:33,800 --> 00:17:38,130 มันเป็นประมาณของวิธีการที่คุณ อาจจะทำรหัสเชิงวัตถุโดยใช้ 371 00:17:38,130 --> 00:17:41,850 ภาษาเช่น C แต่มันเป็น ยังคงขั้นตอนในที่สุด 372 00:17:41,850 --> 00:17:44,900 มีวิธีการใดที่อยู่ภายในเป็น ตัวแปรตามที่คุณจะเห็น 373 00:17:44,900 --> 00:17:46,180 แต่มันเป็นเรื่องที่ชวนให้นึกถึงว่า 374 00:17:46,180 --> 00:17:48,780 และเราจะเห็นคุณลักษณะที่อีกครั้ง เมื่อเราได้รับการ PHP และ JavaScript 375 00:17:48,780 --> 00:17:49,946 ในช่วงปลายภาคการศึกษา 376 00:17:49,946 --> 00:17:53,667 แต่ตอนนี้คิดว่ามันเป็น คำใบ้ของสิ่งที่จะมา 377 00:17:53,667 --> 00:17:54,250 คำถามที่ดี 378 00:17:54,250 --> 00:17:56,051 379 00:17:56,051 --> 00:17:56,550 ขวาทั้งหมด 380 00:17:56,550 --> 00:17:59,730 ดังนั้นผสานการจัดเรียงเป็นวิธีการที่เรา สิ่งซ้ายครั้งสุดท้าย 381 00:17:59,730 --> 00:18:03,250 และผสานการจัดเรียงเป็นเย็นใน รู้สึกว่ามันเป็นมากได้เร็วขึ้น 382 00:18:03,250 --> 00:18:07,100 อย่างน้อยขึ้นอยู่กับการทดสอบคร่าวๆ เราได้เมื่อสัปดาห์ที่แล้วกว่าพูดฟอง 383 00:18:07,100 --> 00:18:08,710 เรียงลำดับการจัดเรียงตัวเลือกแทรกการจัดเรียง 384 00:18:08,710 --> 00:18:11,780 และสิ่งที่เป็นระเบียบก็เป็นเพียงแค่ วิธีที่ชัดถ้อยชัดคำและหมดจด 385 00:18:11,780 --> 00:18:12,810 คุณสามารถแสดงมันออกมา 386 00:18:12,810 --> 00:18:15,840 และเราไม่สิ่งที่บอกว่ามันเป็นบน ผูกพันกับเวลาทำงานของการผสาน 387 00:18:15,840 --> 00:18:16,340 ค้นหา? 388 00:18:16,340 --> 00:18:17,633 389 00:18:17,633 --> 00:18:18,495 ใช่? 390 00:18:18,495 --> 00:18:19,360 >> ผู้ชม: n log n? 391 00:18:19,360 --> 00:18:20,819 >> ลำโพงแบบ 1: n log n ขวา n log n 392 00:18:20,819 --> 00:18:23,776 และเราจะกลับมากับสิ่งที่ จริงๆหมายถึงหรือในกรณีที่ว่ามาจาก 393 00:18:23,776 --> 00:18:25,570 แต่เรื่องนี้เป็นเรื่องที่ดี กว่าสิ่งที่เวลาทำงาน 394 00:18:25,570 --> 00:18:28,440 ที่เราเห็นฟอง การเลือกและการจัดเรียงแทรก? 395 00:18:28,440 --> 00:18:30,610 ดังนั้น n กำลังสอง n กำลังสอง มีขนาดใหญ่กว่านี้ 396 00:18:30,610 --> 00:18:34,650 และแม้ว่ามันจะไม่ได้ค่อนข้างชัดเจน รู้บันทึก 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 มันเป็นเร็วขึ้น แต่รูปแบบที่เริ่มต้น จะโผล่ออกมาเมื่อสัปดาห์ที่แล้วได้รับการแลกเปลี่ยนนี้ 402 00:18:47,000 --> 00:18:49,804 ผมได้รับประสิทธิภาพที่ดีขึ้น เวลาฉลาด แต่สิ่งที่ 403 00:18:49,804 --> 00:18:52,470 ฉันไม่ต้องใช้จ่ายในที่อื่น ๆ มือเพื่อให้บรรลุที่? 404 00:18:52,470 --> 00:18:53,591 >> ผู้ชม: หน่วยความจำ 405 00:18:53,591 --> 00:18:54,465 ลำโพง 1: พูดอีกครั้งหรือไม่ 406 00:18:54,465 --> 00:18:55,173 ผู้ชม: หน่วยความจำ 407 00:18:55,173 --> 00:18:57,040 ลำโพง 1: หน่วยความจำหรือ พื้นที่มากขึ้นโดยทั่วไป 408 00:18:57,040 --> 00:18:59,040 และมันก็ไม่ใช่ซุปเปอร์ ที่เห็นได้ชัดกับมนุษย์ของเรา 409 00:18:59,040 --> 00:19:02,240 แต่จำได้ว่าอาสาสมัครของเรา ได้ก้าวไปข้างหน้าและก้าว 410 00:19:02,240 --> 00:19:04,780 กลับเป็นว่ามีอาร์เรย์ ที่นี่และราวกับว่ามี 411 00:19:04,780 --> 00:19:07,130 อาร์เรย์ที่สองที่นี่ พวกเขาสามารถใช้เพราะเรา 412 00:19:07,130 --> 00:19:09,080 บางแห่งจำเป็นที่จะรวมคนเหล่านั้น 413 00:19:09,080 --> 00:19:11,480 เราอาจจะไม่ได้เป็นเพียงสลับพวกเขาในสถานที่ 414 00:19:11,480 --> 00:19:13,800 เพื่อรวมอำนาจการจัดเรียง เป็นพื้นที่มากขึ้นซึ่ง 415 00:19:13,800 --> 00:19:15,620 เราไม่จำเป็นต้องมี อัลกอริทึมอื่น ๆ 416 00:19:15,620 --> 00:19:17,410 แต่กลับเป็นว่ามันเป็นได้เร็วขึ้นมาก 417 00:19:17,410 --> 00:19:20,780 และตรงไปตรงมาในพื้นที่ของโลกที่แท้จริง RAM 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 log n 421 00:19:30,220 --> 00:19:33,260 ดังนั้นนี่คือหมายเลขแปด แปดอาสาสมัครเรามีครั้งสุดท้าย 422 00:19:33,260 --> 00:19:35,718 และสิ่งแรกที่ผสาน เรียงบอกให้เราทำคืออะไร 423 00:19:35,718 --> 00:19:37,010 424 00:19:37,010 --> 00:19:38,010 ผู้ชม: แบ่งเป็นสอง 425 00:19:38,010 --> 00:19:38,663 ลำโพง 1: พูดอีกครั้งหรือไม่ 426 00:19:38,663 --> 00:19:39,650 ผู้ชม: แบ่งเป็นสอง 427 00:19:39,650 --> 00:19:40,610 ลำโพง 1: แบ่งในสองขวา 428 00:19:40,610 --> 00:19:42,818 นี้เป็นอย่างมากที่ชวนให้นึกถึง สมุดโทรศัพท์ของหาร 429 00:19:42,818 --> 00:19:44,220 และพิชิตมากกว่าปกติ 430 00:19:44,220 --> 00:19:45,640 ดังนั้นเราจึงมองไปที่ซีกซ้าย 431 00:19:45,640 --> 00:19:48,700 และจากนั้นเมื่อเรากล่าวว่าการจัดเรียง ครึ่งด้านซ้ายขององค์ประกอบ 432 00:19:48,700 --> 00:19:49,690 สิ่งที่พวกเราไปพูด? 433 00:19:49,690 --> 00:19:51,210 434 00:19:51,210 --> 00:19:54,860 เรียงครึ่งด้านซ้ายของทางด้านซ้าย ครึ่งหนึ่งซึ่งได้รับอนุญาตให้เราไป 435 00:19:54,860 --> 00:19:57,570 หลังจากที่แบ่งเป็นสอง มุ่งเน้นไปที่สี่และทั้งสอง 436 00:19:57,570 --> 00:20:01,280 >> คุณมีวิธีการเรียงลำดับรายการขณะนี้ใน สีเหลืองขนาดสองโดยใช้การผสานเรียง? 437 00:20:01,280 --> 00:20:02,330 438 00:20:02,330 --> 00:20:04,580 ดีแบ่งออกในช่วงครึ่งปี และจัดเรียงครึ่งที่เหลือ 439 00:20:04,580 --> 00:20:07,100 และนี่คือสิ่งที่ ได้ในเวลาสั้น ๆ โง่ ๆ 440 00:20:07,100 --> 00:20:10,720 คุณมีวิธีการเรียงลำดับรายการที่ของ ขนาดหนึ่งเช่นหมายเลขสี่ที่นี่? 441 00:20:10,720 --> 00:20:12,330 442 00:20:12,330 --> 00:20:13,210 มันแยก 443 00:20:13,210 --> 00:20:14,200 คุณกำลังทำ 444 00:20:14,200 --> 00:20:17,300 >> แต่แล้วคุณจะเรียงลำดับรายการของ หนึ่งเมื่อมันเป็นตัวเลขสองขนาด? 445 00:20:17,300 --> 00:20:21,640 ดีสิ่งเดียวกัน แต่ตอนนี้สิ่งที่เป็น ที่สามและขั้นตอนสำคัญในการผสานเรียง? 446 00:20:21,640 --> 00:20:24,020 คุณมีการควบรวมกิจการทางด้านซ้าย ครึ่งหนึ่งและอีกครึ่งหนึ่งทางด้านขวา 447 00:20:24,020 --> 00:20:26,580 และเมื่อเราทำที่เรามอง ที่สี่เรามองที่สอง 448 00:20:26,580 --> 00:20:28,750 เราตัดสินใจที่ถูกต้องทั้งหมด เห็นได้ชัดว่าทั้งสองมาก่อน 449 00:20:28,750 --> 00:20:31,840 ดังนั้นเราจึงใส่สองในของ สถานที่ตามด้วยสี่ 450 00:20:31,840 --> 00:20:35,010 และตอนนี้คุณมีชนิดของย้อนกลับ และนี่คือการจัดเรียงของลักษณะ 451 00:20:35,010 --> 00:20:37,570 ของขั้นตอนวิธีเช่นการผสาน เรียงย้อนกลับในหน่วยความจำ 452 00:20:37,570 --> 00:20:40,240 สิ่งที่เป็นบรรทัดถัดไปของเรื่องหรือไม่ 453 00:20:40,240 --> 00:20:41,780 สิ่งที่ฉันควรจะมุ่งเน้นที่การต่อไปหรือไม่ 454 00:20:41,780 --> 00:20:43,110 455 00:20:43,110 --> 00:20:47,350 ครึ่งขวาของด้านซ้าย ครึ่งซึ่งเป็นหกและแปด 456 00:20:47,350 --> 00:20:50,320 >> เพื่อให้ฉันเพียงแค่ขั้นตอนผ่านทางนี้ โดยไม่ต้อง belaboring จุดมากเกินไป 457 00:20:50,320 --> 00:20:53,330 หกสิบแปดแล้วหกเป็น เรียงลำดับแปดจะเรียง 458 00:20:53,330 --> 00:20:57,190 ผสานเข้าด้วยกันเช่นนั้น และตอนนี้เป็นขั้นตอนที่ใหญ่ต่อไป 459 00:20:57,190 --> 00:21:00,990 เป็นของหลักสูตรการเรียงลำดับครึ่งขวาจาก ขั้นตอนแรกของขั้นตอนวิธีนี้ 460 00:21:00,990 --> 00:21:02,870 ดังนั้นเราจึงมุ่งเน้นไปที่หนึ่งสามเจ็ดห้า 461 00:21:02,870 --> 00:21:04,540 จากนั้นเราจะมุ่งเน้นไปที่ซีกซ้าย 462 00:21:04,540 --> 00:21:09,400 ซีกซ้ายของที่ครึ่งขวาของ ที่แล้วมารวมกันในหนึ่งและสาม 463 00:21:09,400 --> 00:21:13,100 จากนั้นครึ่งขวาแล้วซ้ายครึ่ง ของมันแล้วครึ่งขวาของมัน 464 00:21:13,100 --> 00:21:15,985 ผสานในและตอนนี้สิ่งที่ยังคงอยู่ในขั้นตอนที่? 465 00:21:15,985 --> 00:21:18,040 466 00:21:18,040 --> 00:21:22,460 รวมครึ่งซ้ายขนาดใหญ่และขนาดใหญ่ ครึ่งขวาดังนั้นหนึ่งจะไปลงที่นั่น 467 00:21:22,460 --> 00:21:27,330 แล้วสองแล้วสามแล้วสี่แล้ว ห้าแล้วหกแล้วเจ็ดแปดแล้ว 468 00:21:27,330 --> 00:21:31,990 >> ดังนั้นตอนนี้จึงเป็นเหตุผลที่ในท้ายที่สุดนี้เปิดเผย โดยเฉพาะอย่างยิ่งถ้า n และลอการิทึมมากขึ้น 469 00:21:31,990 --> 00:21:35,487 โดยทั่วไปค่อนข้างหนีคุณ อย่างน้อยในความทรงจำที่ผ่านมา? 470 00:21:35,487 --> 00:21:37,070 ดีสังเกตเห็นความสูงของสิ่งนี้ 471 00:21:37,070 --> 00:21:41,230 เรามีแปดองค์ประกอบและเรา แบ่งออกเป็นสองโดยสองสอง 472 00:21:41,230 --> 00:21:44,590 เพื่อเข้าสู่ระบบฐานสองแปดทำให้เราสาม 473 00:21:44,590 --> 00:21:45,640 474 00:21:45,640 --> 00:21:48,540 และความไว้วางใจผมว่าถ้า หมอกเล็ก ๆ น้อย ๆ ที่ 475 00:21:48,540 --> 00:21:54,710 แต่เข้าสู่ระบบฐานสองแปดสาม ดังนั้นเราจึงได้ทำสามชั้นของการรวม 476 00:21:54,710 --> 00:21:57,170 และเมื่อเรารวม องค์ประกอบกี่องค์ประกอบ 477 00:21:57,170 --> 00:21:58,950 พวกเรามองไปที่ในแต่ละแถวเหล่านั้นหรือไม่ 478 00:21:58,950 --> 00:22:00,212 479 00:22:00,212 --> 00:22:01,437 รวม 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 และจริงๆแล้วที่นี่ อย่างชัดเจนในแถวที่ผ่านมา 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 โดยใช้ตัวอย่างที่วางแผนไว้? 492 00:22:33,590 --> 00:22:36,590 ดีเท่าใดเวลาที่คุณจะพูดว่า ขั้นตอนเช่นนี้ในสีเหลืองจะใช้เวลา 493 00:22:36,590 --> 00:22:37,173 ถ้า n <2 คืน? 494 00:22:37,173 --> 00:22:38,840 495 00:22:38,840 --> 00:22:39,830 ที่โอใหญ่ของอะไร 496 00:22:39,830 --> 00:22:41,450 497 00:22:41,450 --> 00:22:44,540 ดังนั้นฉันเห็นหนึ่งดังนั้นขั้นตอนเดียว บางทีขั้นตอนที่สองเพราะถ้า 498 00:22:44,540 --> 00:22:47,110 แล้วกลับ แต่ก็ เวลาคงที่ใช่มั้ย? 499 00:22:47,110 --> 00:22:49,960 ดังนั้นเราจึงกล่าวว่า (1) และที่ วิธีการที่ฉันจะแสดงนี้ 500 00:22:49,960 --> 00:22:51,480 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 และตอนนี้คุณกำลังชนิดของถ่อนี่และ กล่าวว่าดีเพียงค้นหาครึ่งซ้าย 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) และจากนั้น อีกครั้งถ้าผมรวมสองส่วนที่เรียงลำดับ 521 00:23:36,449 --> 00:23:38,615 วิธีการหลายองค์ประกอบฉันจะ ที่จะมีการสัมผัสทั้งหมด? 522 00:23:38,615 --> 00:23:39,780 523 00:23:39,780 --> 00:23:40,320 n 524 00:23:40,320 --> 00:23:42,790 ดังนั้นฉันสามารถแสดงนี้ เพียงเพื่อให้ชนิดของแฟนซี 525 00:23:42,790 --> 00:23:44,430 เป็นเวลาในการทำงานโดยทั่วไป 526 00:23:44,430 --> 00:23:51,140 T (n) เป็นเพียงเวลาทำงานของ T (n / 2) บวก T (n / 2), ที่เหลือครึ่งหนึ่งและอีกครึ่งหนึ่งที่ถูกต้อง 527 00:23:51,140 --> 00:23:55,360 บวก O (n) ซึ่งอาจจะเป็น n ขั้นตอน แต่บางทีถ้าฉันใช้สองนิ้วมือ 528 00:23:55,360 --> 00:23:57,960 มันเป็นสองเท่า ขั้นตอน แต่ก็เป็นเชิงเส้น 529 00:23:57,960 --> 00:24:00,440 มันเป็นจำนวนขั้นตอนบางอย่าง นั่นคือปัจจัยของ n, 530 00:24:00,440 --> 00:24:02,270 ดังนั้นเราอาจจะแสดงนี้เป็นนี้ 531 00:24:02,270 --> 00:24:05,550 และนี่คือที่ตอนนี้เราจะเตะกับ ด้านหลังของหนังสือเรียนคณิตศาสตร์ของโรงเรียนมัธยม 532 00:24:05,550 --> 00:24:10,290 เราที่เกิดขึ้นในท้ายที่สุด ลงท้ายเท่ากับนี้ครั้ง n log n, 533 00:24:10,290 --> 00:24:12,530 ถ้าคุณทำจริงออก คณิตศาสตร์มากขึ้นอย่างเป็นทางการ 534 00:24:12,530 --> 00:24:13,950 >> เพื่อให้เป็นเพียงสองมุมมอง 535 00:24:13,950 --> 00:24:17,500 หนึ่งที่มีตัวเลข ยากรหัสตัวอย่างที่เป็นตัวแทน 536 00:24:17,500 --> 00:24:21,140 โดยใช้หมายเลขแปดและอื่น ๆ ลักษณะทั่วไปที่วิธีการที่เราไปถึงที่นั่น 537 00:24:21,140 --> 00:24:25,670 แต่สิ่งที่น่าสนใจจริงๆที่นี่ เป็นอีกครั้งที่ความคิดของการขี่จักรยานนี้ 538 00:24:25,670 --> 00:24:26,900 ฉันไม่ได้ใช้สำหรับลูป 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 รหัสเทียมนี้เป็น recursive ในการที่ทั้งสองเส้น 543 00:24:38,260 --> 00:24:42,310 เป็นหลักบอกมันไป ใช้ตัวเองที่จะแก้ปัญหาที่มีขนาดเล็ก 544 00:24:42,310 --> 00:24:45,400 ปัญหาที่มีขนาดเล็กลง และจากนั้นอีกครั้งและอีกครั้ง 545 00:24:45,400 --> 00:24:48,820 และอีกครั้งจนกว่าเราจะลดลงได้ ลงไปนี้กรณีฐานที่เรียกว่า 546 00:24:48,820 --> 00:24:52,810 >> จึงขอจริงวาดน่าสนใจมากขึ้น ใช้เวลาห่างจากนี้ดังต่อไปนี้ 547 00:24:52,810 --> 00:24:58,420 ให้ฉันไปเป็น Gedit และใช้เวลา ดูที่บางส่วนของรหัสที่มาของวันนี้ 548 00:24:58,420 --> 00:24:59,930 โดยเฉพาะอย่างยิ่งตัวอย่างนี้ที่นี่ 549 00:24:59,930 --> 00:25:03,709 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 ฉันมีหมอกเล็กน้อยใน นี้หลังจากที่ไม่กี่วัน 554 00:25:11,370 --> 00:25:13,790 แต่เราไม่บอกว่าสิ่งที่ เป็นต้นแบบของฟังก์ชั่นคืออะไร? 555 00:25:13,790 --> 00:25:15,099 556 00:25:15,099 --> 00:25:16,015 ผู้ชม: [ไม่ได้ยิน] 557 00:25:16,015 --> 00:25:16,905 ลำโพง 1: อะไรที่? 558 00:25:16,905 --> 00:25:17,800 ผู้ชม: เราประกาศ 559 00:25:17,800 --> 00:25:18,883 ลำโพง 1: เราประกาศ 560 00:25:18,883 --> 00:25:22,290 เพื่อให้คุณได้รับการเรียนการสอนเสียงดังกราวเดี๋ยวก่อน ไม่จริงการดำเนินการนี​​้ยัง 561 00:25:22,290 --> 00:25:25,740 แต่บางแห่งในไฟล์นี้สมมุติ เป็นไปได้ฟังก์ชันที่เรียกว่าอะไร 562 00:25:25,740 --> 00:25:26,930 563 00:25:26,930 --> 00:25:27,540 ซิกม่า 564 00:25:27,540 --> 00:25:30,540 และนี่เป็นเพียงสัญญาที่ มันจะมีลักษณะเช่นนี้ 565 00:25:30,540 --> 00:25:33,720 มันจะใช้เวลาเป็นจำนวนเต็ม input-- และฉันสามารถเป็นที่ชัดเจนมากขึ้น 566 00:25:33,720 --> 00:25:36,570 และพูด int n --and มัน จะกลับ int, 567 00:25:36,570 --> 00:25:39,900 แต่หมายถึงอัฒภาคมมผมจะได้รับรอบ ในการดำเนินการเพียงเล็กน้อยนี้ในภายหลัง 568 00:25:39,900 --> 00:25:40,989 อีกครั้งเสียงดังกราวเป็นใบ้ 569 00:25:40,989 --> 00:25:43,280 มันเท่านั้นจะรู้ว่าสิ่งที่ คุณบอกว่าบนลงล่าง 570 00:25:43,280 --> 00:25:45,765 ดังนั้นเราจึงจำเป็นที่จะต้องอย่างน้อยให้ มันคำใบ้ของสิ่งที่จะมา 571 00:25:45,765 --> 00:25:47,330 >> ตอนนี้ให้ดูที่หลักที่นี่ 572 00:25:47,330 --> 00:25:50,040 ให้เลื่อนลงมาที่นี่และ เห็นสิ่งที่สำคัญคือการทำ 573 00:25:50,040 --> 00:25:53,780 มันไม่ได้ว่านานของการทำงานและ ในความเป็นจริงสร้างที่นี่เป็นที่คุ้นเคย 574 00:25:53,780 --> 00:25:57,590 ผมประกาศตัวแปร n และจากนั้น ผมรบกวนผู้ใช้อีกครั้งและอีกครั้ง 575 00:25:57,590 --> 00:26:01,880 สำหรับจำนวนเต็มบวกใช้ GetInt, และทางออกเดียวที่ออกจากวงนี้ 576 00:26:01,880 --> 00:26:03,280 เมื่อผู้ใช้มีการปฏิบัติ 577 00:26:03,280 --> 00:26:05,670 ทำในขณะที่เราได้นำมาใช้เพื่อ รบกวนผู้ใช้ในทางที่ 578 00:26:05,670 --> 00:26:06,670 ขณะนี้เป็นที่น่าสนใจ 579 00:26:06,670 --> 00:26:08,510 ฉันประกาศ int เรียกว่า "คำตอบ". 580 00:26:08,510 --> 00:26:11,420 ฉันกำหนดค่าตอบแทน ฟังก์ชั่นที่เรียกว่า "ซิกม่า". 581 00:26:11,420 --> 00:26:15,200 ผมไม่ทราบว่าสิ่งที่ทำ แต่ ผมจำได้ประกาศว่าช่วงเวลาที่ผ่านมา 582 00:26:15,200 --> 00:26:18,310 แล้วฉันผ่านใน ค่าที่ผู้ใช้พิมพ์ใน 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 ลองไปข้างหน้าลงในไดเรกทอรีนี้ให้ ซิก 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 >> ดังนั้นสิ่งที่จะซิกมีลักษณะอย่างไร 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 ซิกม่าเป็นชื่อและจะใช้เวลา ตัวแปรเมตรแทน n 604 00:27:14,330 --> 00:27:15,940 ฉันจะเปลี่ยนที่ขึ้นด้านบน 605 00:27:15,940 --> 00:27:17,340 แล้วนี้เป็นเพียงการตรวจสอบสุขภาพจิตดี 606 00:27:17,340 --> 00:27:18,430 607 00:27:18,430 --> 00:27:19,950 เราจะเห็นว่าทำไมในช่วงเวลา 608 00:27:19,950 --> 00:27:24,220 ตอนนี้ผมประกาศตัวแปรอื่น สรุปเริ่มต้นมันให้เป็นศูนย์ 609 00:27:24,220 --> 00:27:28,140 แล้วฉันมีนี้สำหรับวง การทำซ้ำเห็นได้ชัดเพื่อความชัดเจน 610 00:27:28,140 --> 00:27:33,810 จาก 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 ทำไมจะผ่านในจำนวนลบ ชักจูงอาจวง จำกัด ? 616 00:27:45,620 --> 00:27:49,396 617 00:27:49,396 --> 00:27:51,290 >> ผู้ชม: คุณจะได้ไม่ถึงเมตร 618 00:27:51,290 --> 00:27:52,880 >> ลำโพง 1: ไม่เคยถึงเมตร 619 00:27:52,880 --> 00:27:55,880 แต่มถูกส่งผ่านไปในเพื่อให้เป็น พิจารณาตัวอย่างง่ายๆ 620 00:27:55,880 --> 00:27:58,510 หากเมตรถูกส่งโดย ผู้เป็นหนึ่งในเชิงลบ 621 00:27:58,510 --> 00:28:00,059 โดยไม่คำนึงถึงหลัก 622 00:28:00,059 --> 00:28:01,850 หลักปกป้องเราจาก นี้เกินไปดังนั้นฉันแค่ 623 00:28:01,850 --> 00:28:04,680 เป็นจริงทางทวารหนั​​กกับ ซิกม่ายังให้แน่ใจ 624 00:28:04,680 --> 00:28:06,540 ที่ใส่ไม่สามารถลบ 625 00:28:06,540 --> 00:28:10,130 ดังนั้นหากเมตรเป็นลบ สิ่งที่ต้องการลบหนึ่ง 626 00:28:10,130 --> 00:28:11,930 สิ่งที่จะเกิดขึ้นได้อย่างไร 627 00:28:11,930 --> 00:28:14,390 ดีฉันจะไป ได้รับการเริ่มต้นได้ที่หนึ่ง 628 00:28:14,390 --> 00:28:19,060 และแล้วฉันเป็นไปได้ น้อยกว่าหรือเท่ากับ M? 629 00:28:19,060 --> 00:28:24,130 630 00:28:24,130 --> 00:28:24,765 >> Stand by 631 00:28:24,765 --> 00:28:26,930 632 00:28:26,930 --> 00:28:29,370 ที่ was-- ให้ไม่ได้ ให้ระวังเรื่องนี้ 633 00:28:29,370 --> 00:28:32,780 ผมไม่ได้ถามคำถามว่าเพราะ ความเสี่ยงที่ฉันกำลังยิ่งทำให้ 634 00:28:32,780 --> 00:28:38,360 จะไม่เกิดขึ้นเพราะผมเป็น มักจะเป็นตกลง than-- มากขึ้น 635 00:28:38,360 --> 00:28:39,871 ผมถอยคำถามว่า 636 00:28:39,871 --> 00:28:40,370 ตกลง 637 00:28:40,370 --> 00:28:42,030 ให้มุ่งเน้นเฉพาะในส่วนที่นี่ 638 00:28:42,030 --> 00:28:44,210 639 00:28:44,210 --> 00:28:48,830 ทำไมฉันถึงได้ประกาศบางส่วน ด้านนอกของวงหรือไม่ 640 00:28:48,830 --> 00:28:52,010 แจ้งให้ทราบล่วงหน้าในบรรทัด 49 ฉัน ประกาศฉันภายในของวง 641 00:28:52,010 --> 00:28:54,950 แต่ออนไลน์ 48 ฉัน ประกาศบางส่วนนอก 642 00:28:54,950 --> 00:28:55,695 ใช่ 643 00:28:55,695 --> 00:28:56,611 ผู้ชม: [ไม่ได้ยิน] 644 00:28:56,611 --> 00:28:58,734 645 00:28:58,734 --> 00:28:59,400 ลำโพง 1: ตรวจสอบว่า 646 00:28:59,400 --> 00:29:03,360 ดังนั้นแรกและสำคัญที่สุดผมก็ทำไม่ได้ ต้องการที่จะประกาศและเริ่มต้นรวม 647 00:29:03,360 --> 00:29:06,130 ให้เป็นศูนย์ภายในของ วงที่ซ้ำทุก 648 00:29:06,130 --> 00:29:09,370 เพราะเห็นได้ชัดว่าจะเอาชนะ วัตถุประสงค์ของการสรุปตัวเลข 649 00:29:09,370 --> 00:29:11,770 ฉันอยากจะให้เปลี่ยน ค่ากลับไปที่ศูนย์ 650 00:29:11,770 --> 00:29:17,992 และยังมีอะไรอีกที่เป็นความลับมากขึ้น เหตุผลในการตัดสินใจการออกแบบที่เหมือนกันหรือไม่ 651 00:29:17,992 --> 00:29:18,954 ใช่ 652 00:29:18,954 --> 00:29:20,279 >> ผู้ชม: [ไม่ได้ยิน] 653 00:29:20,279 --> 00:29:21,070 ลำโพง 1: แน่นอน 654 00:29:21,070 --> 00:29:24,060 ผมต้องการที่จะเข้าถึงมันนอก ของวงเกินไปในสิ่งที่โฆษณาหรือไม่ 655 00:29:24,060 --> 00:29:25,390 656 00:29:25,390 --> 00:29:26,400 53 657 00:29:26,400 --> 00:29:29,910 และตามกฎของเราง่ายๆ จากคู่ของการบรรยายที่ผ่านมา 658 00:29:29,910 --> 00:29:33,680 ตัวแปรที่ถูกกำหนดขอบเขตจริงๆที่จะ วงเล็บปีกกาที่ล้อมรอบพวกเขา 659 00:29:33,680 --> 00:29:38,190 ดังนั้นหากผมไม่ได้ประกาศผลรวมภายใน ของวงเล็บปีกกาเหล่านี้นอก 660 00:29:38,190 --> 00:29:40,250 ฉันไม่สามารถใช้งานได้ในบรรทัดที่ 53 661 00:29:40,250 --> 00:29:43,160 วางวิธีอื่นถ้าผมประกาศ ผลรวมในที่นี่หรือแม้แต่ใน 662 00:29:43,160 --> 00:29:45,410 สำหรับวงที่ฉันไม่สามารถเข้าถึงได้ใน 53 663 00:29:45,410 --> 00:29:47,150 ตัวแปรจะมีประสิทธิภาพจะหายไป 664 00:29:47,150 --> 00:29:48,579 ดังนั้นคู่ของเหตุผลมี 665 00:29:48,579 --> 00:29:50,370 แต่ตอนนี้ขอกลับไป และดูสิ่งที่เกิดขึ้น 666 00:29:50,370 --> 00:29:51,730 ดังนั้นซิกม่าได้รับการเรียกว่า 667 00:29:51,730 --> 00:29:55,640 มันจะเพิ่มขึ้น 1 บวก 2 หรือ 1 บวก 2 บวก 3 และจากนั้นส่งกลับค่าที่ 668 00:29:55,640 --> 00:29:59,660 เก็บไว้ในคำตอบและ printf ที่นี่ คือเหตุผลที่ฉันเห็นบนหน้าจอ 669 00:29:59,660 --> 00:30:03,079 ดังนั้นนี่คือสิ่งที่เราจะเรียกซ้ำ วิธีการที่ซ้ำเพียง 670 00:30:03,079 --> 00:30:03,870 หมายถึงการใช้ห่วง 671 00:30:03,870 --> 00:30:06,900 สำหรับวนลูปในขณะที่ทำในขณะที่ ห่วงเพียงแค่ทำอะไรบางอย่างอีกครั้ง 672 00:30:06,900 --> 00:30:08,380 และอีกครั้งและอีกครั้ง 673 00:30:08,380 --> 00:30:13,505 >> แต่ซิกเป็นชนิดของฟังก์ชั่นเรียบร้อยใน ที่ฉันสามารถใช้มันแตกต่างกัน 674 00:30:13,505 --> 00:30:14,620 675 00:30:14,620 --> 00:30:19,120 สิ่งที่เกี่ยวกับเรื่องนี้ที่ เพียงเพื่อให้เป็นชนิดของเย็น 676 00:30:19,120 --> 00:30:21,880 ให้ฉันจริงๆกำจัด จำนวนมากของสิ่งที่ทำให้ไขว้เขว 677 00:30:21,880 --> 00:30:24,380 เพราะฟังก์ชั่นนี้ เป็นจริงค่อนข้างง่าย 678 00:30:24,380 --> 00:30:27,780 ให้ลดลงมันลงเพียงแค่ ถึงสี่สายหลักของ 679 00:30:27,780 --> 00:30:30,410 และกำจัดของทั้งหมด ความคิดเห็นและวงเล็บปีกกา 680 00:30:30,410 --> 00:30:34,334 นี้เป็นชนิดของเหลือเชื่อ การดำเนินการตามทางเลือกที่ 681 00:30:34,334 --> 00:30:37,250 สิทธิทั้งหมดอาจจะไม่เหลือเชื่อ แต่มันเป็นชนิดของเซ็กซี่ขวาทั้งหมด 682 00:30:37,250 --> 00:30:39,920 ไปดูที่นี้มากขึ้นชัดถ้อยชัดคำ 683 00:30:39,920 --> 00:30:43,120 มีเพียงสี่บรรทัดของรหัส ครั้งแรกที่ฉันมีการตรวจสอบสตินี้ 684 00:30:43,120 --> 00:30:45,732 ถ้า m คือน้อยกว่าหรือเท่ากับ ศูนย์ซิกทำให้รู้สึกไม่ 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 หรือเมตรในกรณีนี้ 690 00:30:59,930 --> 00:31:02,630 สามารถทำได้โดยชนิดของผ่านเจ้าชู้ 691 00:31:02,630 --> 00:31:04,947 ดีสิ่งที่เป็นผลรวมของ 1 เมตร? 692 00:31:04,947 --> 00:31:05,780 ดีคุณรู้อะไรไหม 693 00:31:05,780 --> 00:31:11,949 ก็เหมือนกันเป็นผลรวมของม บวกผลรวมของ 1 ถึงลบ 1 เมตร 694 00:31:11,949 --> 00:31:12,740 ที่ดีที่คุณรู้อะไรไหม 695 00:31:12,740 --> 00:31:13,940 สิ่งที่ซิกของมลบ 1 คืออะไร? 696 00:31:13,940 --> 00:31:17,860 ดีถ้าคุณชนิดของตามนี้ เหตุผลก็เหมือนกับลบ 1 เมตร 697 00:31:17,860 --> 00:31:21,415 บวกซิกของมลบ 2 698 00:31:21,415 --> 00:31:22,480 699 00:31:22,480 --> 00:31:26,012 เพื่อให้คุณสามารถชนิดของ just-- นี้เป็นเหมือนถ้าคุณเพียงแค่ 700 00:31:26,012 --> 00:31:28,220 พยายามที่จะรบกวนเพื่อน และพวกเขาขอให้คุณคำถาม 701 00:31:28,220 --> 00:31:31,344 ชนิดที่คุณตอบสนองกับคำถาม คุณสามารถชนิดของให้ผ่านเจ้าชู้ 702 00:31:31,344 --> 00:31:34,560 แต่สิ่งที่สำคัญคือว่าถ้าคุณเก็บไว้ ทำให้คำถามที่มีขนาดเล็กและมีขนาดเล็ก 703 00:31:34,560 --> 00:31:36,910 และมีขนาดเล็กคุณ ไม่ได้ขอให้สิ่งที่เป็นซิก 704 00:31:36,910 --> 00:31:39,116 ของ n สิ่งที่ซิกของ n สิ่งที่ซิกของ n? 705 00:31:39,116 --> 00:31:40,990 ที่คุณถามว่ามีอะไร ซิกของ n สิ่งที่ซิก 706 00:31:40,990 --> 00:31:42,839 ของ n ลบ 1 สิ่งที่ซิกของ n ลบ 2? 707 00:31:42,839 --> 00:31:44,880 ในที่สุดคำถามของคุณ กำลังจะกลายเป็นอะไร 708 00:31:44,880 --> 00:31:50,250 เป็นซิกหนึ่งหรืออะไร ศูนย์บางค่าขนาดเล็กมาก 709 00:31:50,250 --> 00:31:52,220 และทันทีที่คุณ ได้รับที่เพื่อนของคุณ 710 00:31:52,220 --> 00:31:54,350 คุณจะไม่ได้ไปถาม คำถามเดียวกันอีกครั้ง 711 00:31:54,350 --> 00:31:55,975 คุณเพียงแค่จะบอกว่าโอ้ก็เป็นศูนย์ 712 00:31:55,975 --> 00:31:58,490 เราเสร็จสิ้นการเล่นแบบนี้ ของเกมวงจรโง่ 713 00:31:58,490 --> 00:32:02,950 >> ดังนั้นการเรียกซ้ำคือการกระทำในการเขียนโปรแกรม ฟังก์ชั่นที่เรียกตนเอง 714 00:32:02,950 --> 00:32:06,630 โปรแกรมนี้เมื่อรวบรวมและเรียกใช้เป็น จะไปทำงานตรงทางเดียวกัน 715 00:32:06,630 --> 00:32:09,620 แต่สิ่งที่สำคัญคือภายใน ฟังก์ชั่นที่เรียกว่าซิก, 716 00:32:09,620 --> 00:32:13,150 มีบรรทัดของรหัสที่นั้น เรากำลังเรียกร้องให้ตัวเอง 717 00:32:13,150 --> 00:32:14,980 ซึ่งปกติจะไม่ดี 718 00:32:14,980 --> 00:32:21,160 ตัวอย่างเช่นสิ่งที่ถ้าฉันเป็นครั้งแรก รวบรวมนี้เพื่อให้ sigma-- 719 00:32:21,160 --> 00:32:22,710 ทำให้ซิก 1 ./sigma-1 720 00:32:22,710 --> 00:32:25,050 721 00:32:25,050 --> 00:32:27,690 จำนวนเต็มบวกโปรด 50 1275 722 00:32:27,690 --> 00:32:30,810 ดังนั้นสิ่งที่ฟังก์ชั่นที่ดูเหมือนว่าจะ จะขึ้นอยู่กับหนึ่งในการทดสอบที่ถูกต้อง 723 00:32:30,810 --> 00:32:34,917 แต่ถ้าฉันจะได้รับอันตรายน้อย และลบกรณีฐานที่เรียกว่า 724 00:32:34,917 --> 00:32:37,750 และเพียงแค่บอกว่าดีฉันเพียงแค่การทำ นี้ซับซ้อนมากขึ้นกว่าที่เป็นอยู่ 725 00:32:37,750 --> 00:32:42,450 ขอเพียงคำนวณซิก โดยการเมตรแล้วเพิ่ม 726 00:32:42,450 --> 00:32:44,564 ในซิกของมลบหนึ่ง? 727 00:32:44,564 --> 00:32:45,980 ดีสิ่งที่จะเกิดขึ้นที่นี่? 728 00:32:45,980 --> 00:32:47,140 ลองซูมออก 729 00:32:47,140 --> 00:32:52,920 ลองคอมไพล์โปรแกรม บันทึกมันคอมไพล์โปรแกรม 730 00:32:52,920 --> 00:33:00,450 แล้วพร้อมที่ ./sigma-1 การซูมใน ป้อนจำนวนเต็มบวกโปรด 50 731 00:33:00,450 --> 00:33:02,180 732 00:33:02,180 --> 00:33:04,430 มีกี่คนที่เต็มใจ ที่จะสารภาพถึงเห็นว่า? 733 00:33:04,430 --> 00:33:04,950 >> ตกลง 734 00:33:04,950 --> 00:33:06,690 ดังนั้นนี้สามารถเกิดขึ้นได้สำหรับ จำนวนของเหตุผล 735 00:33:06,690 --> 00:33:09,148 และตรงไปตรงมาในสัปดาห์นี้เรา เกี่ยวกับการที่จะให้ขึ้นของพวกเขา 736 00:33:09,148 --> 00:33:11,780 แต่ในกรณีนี้ลอง ให้เหตุผลไปข้างหลัง 737 00:33:11,780 --> 00:33:14,430 สิ่งที่อาจจะเกิดขึ้นที่นี่? 738 00:33:14,430 --> 00:33:17,400 ความผิดส่วนเรากล่าวว่าที่ผ่านมา เวลาหมายถึงส่วนของหน่วยความจำ 739 00:33:17,400 --> 00:33:18,690 สิ่งที่เกิดขึ้นไม่ดี 740 00:33:18,690 --> 00:33:21,550 แต่สิ่งที่มันเป็น กลไกที่ไปเป๋ 741 00:33:21,550 --> 00:33:25,000 ที่นี่เพราะการกำจัดของฉัน ของว่ากรณีฐานที่เรียกว่า 742 00:33:25,000 --> 00:33:26,870 ที่ฉันกลับมาเป็นค่าตายตัว? 743 00:33:26,870 --> 00:33:28,970 744 00:33:28,970 --> 00:33:30,460 คุณคิดว่าอะไรผิดพลาด? 745 00:33:30,460 --> 00:33:31,219 ใช่ 746 00:33:31,219 --> 00:33:32,135 >> ผู้ชม: [ไม่ได้ยิน] 747 00:33:32,135 --> 00:33:36,387 748 00:33:36,387 --> 00:33:36,970 ลำโพง 1: อ่า 749 00:33:36,970 --> 00:33:37,550 คำถามที่ดี 750 00:33:37,550 --> 00:33:39,508 ดังนั้นขนาดของจำนวน ที่ผมสรุป 751 00:33:39,508 --> 00:33:41,920 มีขนาดใหญ่เพื่อที่ว่ามันเกิน ขนาดของพื้นที่หน่วยความจำ 752 00:33:41,920 --> 00:33:44,640 ความคิดที่ดี แต่ไม่ลึกซึ้ง จะก่อให้เกิดความผิดพลาด 753 00:33:44,640 --> 00:33:48,230 ที่อาจก่อให้เกิดการล้นจำนวนเต็ม ที่บิตเพียงแค่พลิก 754 00:33:48,230 --> 00:33:51,760 แล้วเราผิดพลาดใหญ่จริงๆ หมายเลขเช่นจำนวนลบ 755 00:33:51,760 --> 00:33:53,260 แต่ที่ตัวเองจะไม่ทำให้เกิดความผิดพลาด 756 00:33:53,260 --> 00:33:55,509 เพราะในตอนท้ายของ วัน int เป็น 32 บิต 757 00:33:55,509 --> 00:33:57,640 คุณจะไม่ ตั้งใจขโมยบิต 33 758 00:33:57,640 --> 00:33:58,431 แต่เป็นความคิดที่ดี 759 00:33:58,431 --> 00:33:58,984 ใช่ 760 00:33:58,984 --> 00:33:59,900 >> ผู้ชม: [ไม่ได้ยิน] 761 00:33:59,900 --> 00:34:00,551 762 00:34:00,551 --> 00:34:02,300 ลำโพง 1: วิธีการ ไม่เคยหยุดทำงาน 763 00:34:02,300 --> 00:34:06,658 และแน่นอนมันเรียกตัวเองอีกครั้ง และอีกครั้งและอีกครั้งและอีกครั้ง 764 00:34:06,658 --> 00:34:08,449 และอีกครั้งและไม่มี ฟังก์ชั่นที่เคย 765 00:34:08,449 --> 00:34:13,310 เสร็จเพราะสาย แต่เพียงผู้เดียวของพวกเขา รหัสเรียกตัวเองอีกครั้งและอีกครั้ง 766 00:34:13,310 --> 00:34:14,219 และอีกครั้ง 767 00:34:14,219 --> 00:34:16,080 และสิ่งที่เป็นจริง เกิดขึ้นที่นี่และตอนนี้เรา 768 00:34:16,080 --> 00:34:18,100 ชนิดของสามารถวาดนี้ pictorially 769 00:34:18,100 --> 00:34:20,899 ให้ฉันไปไปยัง ภาพเพียงสักครู่ 770 00:34:20,899 --> 00:34:22,940 นี่คือภาพที่ ในที่สุดก็จะเนื้อออก 771 00:34:22,940 --> 00:34:26,336 ในรายละเอียดมากขึ้นของสิ่งที่เกิดขึ้น ภายในของหน่วยความจำของคอมพิวเตอร์ของคุณ 772 00:34:26,336 --> 00:34:28,460 และปรากฎว่าเมื่อวันที่ ด้านล่างของภาพนี้ 773 00:34:28,460 --> 00:34:29,709 เป็นสิ่งที่เรียกว่าสแต็ค 774 00:34:29,709 --> 00:34:31,920 นี้เป็นก้อน หน่วยความจำก้อน RAM, 775 00:34:31,920 --> 00:34:33,920 ที่ใช้เวลาเพียงใด ฟังก์ชั่นที่เรียกว่า 776 00:34:33,920 --> 00:34:36,239 ทุกครั้งที่คุณใด ๆ ที่เป็นโปรแกรมเมอร์ เรียกฟังก์ชัน 777 00:34:36,239 --> 00:34:38,860 ระบบปฏิบัติการเช่น Mac OS วินโดวส์หรือลินุกซ์ 778 00:34:38,860 --> 00:34:41,920 คว้าพวงของไบต์อาจจะ ไม่กี่กิโลไบต์ไม่กี่อาจจะเมกะไบต์ 779 00:34:41,920 --> 00:34:44,590 ของหน่วยความจำมือพวกเขา กับคุณและจากนั้นช่วยให้ 780 00:34:44,590 --> 00:34:47,650 คุณเรียกใช้ฟังก์ชันของคุณโดยใช้ สิ่งที่ตัวแปรที่คุณต้องการ 781 00:34:47,650 --> 00:34:50,699 และถ้าคุณแล้วเรียกอีก ฟังก์ชั่นและการทำงานอื่น 782 00:34:50,699 --> 00:34:53,590 คุณจะได้รับชิ้นของหน่วยความจำอื่น และชิ้นอื่นของหน่วยความจำ 783 00:34:53,590 --> 00:34:57,090 >> และแน่นอนถ้าถาดสีเขียวเหล่านี้ จาก Annenberg เป็นตัวแทนของหน่วยความจำที่ 784 00:34:57,090 --> 00:34:59,870 นี่คือสิ่งที่เกิดขึ้นเป็นครั้งแรก ครั้งที่คุณโทรซิกฟังก์ชั่น 785 00:34:59,870 --> 00:35:04,510 มันก็เหมือนกับการวางถาดเช่นนี้ สิ่งที่เริ่มต้นกองที่ว่างเปล่า 786 00:35:04,510 --> 00:35:07,142 แต่แล้วถ้าถาดที่ เรียกตัวเองเพื่อที่จะพูด 787 00:35:07,142 --> 00:35:08,850 เรียกอีกตัวอย่าง ของซิกม่าที่ 788 00:35:08,850 --> 00:35:11,640 เช่นขอให้ระบบปฏิบัติการ โอต้องมีหน่วยความจำน้อยมาก 789 00:35:11,640 --> 00:35:12,520 ให้ฉันที่ 790 00:35:12,520 --> 00:35:14,840 และจากนั้นจะได้รับการซ้อนอยู่ด้านบน 791 00:35:14,840 --> 00:35:18,030 แต่สิ่งที่สำคัญที่นี่คือ ถาดแรกที่ยังคงมี 792 00:35:18,030 --> 00:35:20,620 เพราะเขาเรียกถาดที่สองนี้ 793 00:35:20,620 --> 00:35:23,500 ตอนนี้ขณะที่ซิกเรียกซิก, ที่ชอบถามสำหรับหน่วยความจำมากขึ้น 794 00:35:23,500 --> 00:35:25,830 ได้รับการซ้อนอยู่ที่นี่ 795 00:35:25,830 --> 00:35:29,350 ซิกซิกเรียกว่าเป็นอีก ถาดที่ได้รับการซ้อนขึ้นที่นี่ 796 00:35:29,350 --> 00:35:32,942 และถ้าคุณให้ทำเช่นนี้ ในที่สุดชนิดของแผนที่ภาพนี้ 797 00:35:32,942 --> 00:35:35,525 แผนภูมิที่สิ่งที่จะ เกิดขึ้นกับสแต็คของถาดหรือไม่ 798 00:35:35,525 --> 00:35:37,480 799 00:35:37,480 --> 00:35:41,160 มันเป็นไปเกินกว่ามูลค่า ของหน่วยความจำคอมพิวเตอร์ของคุณมี 800 00:35:41,160 --> 00:35:45,790 และทันทีที่ถาดสีเขียว เกินกว่าเส้นแนวนอน 801 00:35:45,790 --> 00:35:49,410 ด้านบนสแต็คและเหนือกองคำว่า ซึ่งเราจะกลับมาในอนาคต 802 00:35:49,410 --> 00:35:50,410 ว่าเป็นสิ่งที่ไม่ดี 803 00:35:50,410 --> 00:35:52,810 กองที่แตกต่างกัน ส่วนของหน่วยความจำ 804 00:35:52,810 --> 00:35:55,190 และถ้าคุณปล่อยให้เหล่านี้ กองถาดและกองบน 805 00:35:55,190 --> 00:35:57,800 คุณกำลังจะเกิน ส่วนของตัวเองของหน่วยความจำ 806 00:35:57,800 --> 00:36:00,420 และโปรแกรมที่แน่นอนจะผิดพลาด 807 00:36:00,420 --> 00:36:02,930 >> ตอนนี้เป็นกันความคิดนี้ ของการเรียกซ้ำดังนั้น 808 00:36:02,930 --> 00:36:06,500 ชัดเจนสามารถนำไปสู่​​ปัญหา แต่ มันไม่จำเป็นต้องเป็นสิ่งที่ไม่ดี 809 00:36:06,500 --> 00:36:08,840 เพราะพิจารณาหลังจากที่ ทุก how-- และอาจจะ 810 00:36:08,840 --> 00:36:11,700 นี้จะใช้เวลาบางส่วนรับใช้ เพื่อ --how สง่างามหรือวิธีการง่ายๆ 811 00:36:11,700 --> 00:36:14,890 การดำเนินการของซิกม่าที่ 812 00:36:14,890 --> 00:36:17,440 และเราจะไม่ใช้ เรียกซ้ำสิ่งที่มากใน CS50, 813 00:36:17,440 --> 00:36:20,780 แต่ใน CS51 และจริงๆชั้นใด ที่คุณจัดการกับโครงสร้างข้อมูล 814 00:36:20,780 --> 00:36:23,640 เช่นต้นไม้หรือต้นไม้ครอบครัว ที่มีลำดับชั้นบาง 815 00:36:23,640 --> 00:36:26,000 ก็สุดมีประโยชน์สุด 816 00:36:26,000 --> 00:36:29,750 ตอนนี้เป็นกันเพื่อให้คุณ เป็นที่ต้องการนักวิทยาศาสตร์คอมพิวเตอร์ 817 00:36:29,750 --> 00:36:33,180 มีความคุ้นเคยกับบางส่วนของกูเกิล เรื่องตลกภายในถ้าคุณไปที่ 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 "ไว้วางใจ" แจ้งให้ทราบล่วงหน้า โดยการเอียงศีรษะของคุณ slightly-- 824 00:36:52,890 --> 00:36:55,120 แล้วคนนี้อาจจะเป็น เลวร้ายที่สุดของทั้งหมด 825 00:36:55,120 --> 00:36:57,286 ตั้งแต่คนที่ใช้เช่น วันของพวกเขาดำเนินการนี​​้ 826 00:36:57,286 --> 00:36:59,880 บางปี ago-- มา 827 00:36:59,880 --> 00:37:01,140 828 00:37:01,140 --> 00:37:04,540 โอ้ wait-- ที่ข้อผิดพลาด 829 00:37:04,540 --> 00:37:08,410 830 00:37:08,410 --> 00:37:11,410 >> ดังนั้นที่ทำงานอยู่บนหนึ่งใน เว็บไซต์ที่ใหญ่ที่สุดในโลก 831 00:37:11,410 --> 00:37:13,510 มีไข่อีสเตอร์เล็ก ๆ น้อย ๆ เหล่านี้โง่ 832 00:37:13,510 --> 00:37:16,690 พวกเขาอาจกิน จำนวนขับเคลื่อนบรรทัดของรหัส 833 00:37:16,690 --> 00:37:19,280 เพียงเพื่อให้เราสามารถมี สิ่งที่สนุกเล็ก ๆ น้อย ๆ เช่นนั้น 834 00:37:19,280 --> 00:37:22,140 แต่อย่างน้อยตอนนี้คุณจะได้รับ บางส่วนของเรื่องตลกภายในที่ 835 00:37:22,140 --> 00:37:28,330 >> ตอนนี้ลองมาดูที่บางส่วนของ สีขาวอยู่เราได้รับการบอกเล่าของสาย 836 00:37:28,330 --> 00:37:30,707 และเริ่มที่จะกลับมาปอกเปลือก ชั้นบางในทางเทคนิค 837 00:37:30,707 --> 00:37:32,790 เพื่อให้คุณเข้าใจจริงๆ สิ่งที่ได้เกิดขึ้น 838 00:37:32,790 --> 00:37:34,860 และคุณสามารถเข้าใจ บางส่วนของภัยคุกคามที่ 839 00:37:34,860 --> 00:37:38,060 เช่นทำพิษที่ ได้เริ่มต้นตอนนี้จะกลายเป็น 840 00:37:38,060 --> 00:37:41,110 ในแถวหน้าของทุกคน ให้ความสนใจอย่างน้อยในสื่อ 841 00:37:41,110 --> 00:37:45,810 ดังนั้นนี่คือฟังก์ชั่นที่ง่ายมาก ที่ส่งกลับไม่มีอะไรเป็นโมฆะ 842 00:37:45,810 --> 00:37:46,790 ชื่อของมันคือการแลกเปลี่ยน 843 00:37:46,790 --> 00:37:50,880 ก็จะใช้เวลาในสองตัวแปร และมันกลับไม่มีอะไร 844 00:37:50,880 --> 00:37:52,260 จะใช้เวลาในข 845 00:37:52,260 --> 00:37:53,337 ดังนั้นการสาธิตอย่างรวดเร็ว 846 00:37:53,337 --> 00:37:54,170 เราได้นำเหล่านี้ขึ้น 847 00:37:54,170 --> 00:37:56,100 เราได้เป็นอย่างดีอาจจะใช้เวลาเพียงเล็กน้อย ทำลายที่นี่เพียงสักครู่ 848 00:37:56,100 --> 00:37:57,250 และมีบางสิ่งบางอย่างเล็ก ๆ น้อย ๆ ที่จะดื่ม 849 00:37:57,250 --> 00:38:00,120 ถ้ามีคนจะไม่คิดร่วมงานกับ ฉันขึ้นที่นี่เพียงสักครู่ 850 00:38:00,120 --> 00:38:01,830 วิธีการเกี่ยวกับคุณในเสื้อสีแดงหรือไม่ 851 00:38:01,830 --> 00:38:02,335 มาขึ้น 852 00:38:02,335 --> 00:38:04,060 853 00:38:04,060 --> 00:38:05,260 เพียงหนึ่งวันนี้ 854 00:38:05,260 --> 00:38:06,251 ขอบคุณแม้ว่า 855 00:38:06,251 --> 00:38:08,000 สิทธิทั้งหมดและเรามี มาถึงที่นี่? 856 00:38:08,000 --> 00:38:08,660 คุณชื่ออะไร? 857 00:38:08,660 --> 00:38:09,360 >> ลำโพง 4: ลอร่า 858 00:38:09,360 --> 00:38:09,740 >> ลำโพง 1: ลอร่า 859 00:38:09,740 --> 00:38:10,370 มาขึ้น 860 00:38:10,370 --> 00:38:11,460 861 00:38:11,460 --> 00:38:13,850 ดังนั้นลอร่าท้าทายง่ายมากในวันนี้ 862 00:38:13,850 --> 00:38:14,704 863 00:38:14,704 --> 00:38:15,370 ยินดีที่ได้พบโย่ 864 00:38:15,370 --> 00:38:16,410 865 00:38:16,410 --> 00:38:16,910 ขวาทั้งหมด 866 00:38:16,910 --> 00:38:21,179 ดังนั้นเราจึงมีนมบางกว่าที่นี่และ เรามีน้ำผลไม้สีส้มบางกว่าที่นี่ 867 00:38:21,179 --> 00:38:23,345 และถ้วยบางอย่างที่เรา ที่ยืมมาจาก Annenberg วันนี้ 868 00:38:23,345 --> 00:38:24,178 >> ลำโพง 4: ยืม 869 00:38:24,178 --> 00:38:27,240 ลำโพง 1: และจะไปข้างหน้า และให้คุณครึ่งแก้วนี้ 870 00:38:27,240 --> 00:38:28,250 871 00:38:28,250 --> 00:38:28,800 ขวาทั้งหมด 872 00:38:28,800 --> 00:38:30,750 และเราจะให้คุณครึ่งหนึ่ง แก้วนม 873 00:38:30,750 --> 00:38:31,905 874 00:38:31,905 --> 00:38:35,890 โอ้และเพียงเพื่อให้คุณสามารถ จำสิ่งนี้ก็ชอบ 875 00:38:35,890 --> 00:38:38,860 ผมจำได้ที่จะนำ ขึ้นนี้และในวันนี้ 876 00:38:38,860 --> 00:38:42,030 877 00:38:42,030 --> 00:38:42,530 เอาล่ะ 878 00:38:42,530 --> 00:38:45,470 ถ้าคุณจะไม่คิดเรามาดูเรา สามารถนำพวกเขาผ่านแว่นตาของคุณเอง 879 00:38:45,470 --> 00:38:46,560 ถ้าคุณต้องการ 880 00:38:46,560 --> 00:38:48,710 นี้จะเป็นโลกจากสายตาของลอร่า 881 00:38:48,710 --> 00:38:49,210 ขวาทั้งหมด 882 00:38:49,210 --> 00:38:53,820 ดังนั้นเป้าหมายของคุณให้สองถ้วย ของเหลวที่นี่นมและน้ำผลไม้สีส้ม 883 00:38:53,820 --> 00:38:58,370 จะสลับทั้งสองเพื่อให้เนื้อหา น้ำผลไม้สีส้มไปลงในถ้วยนม 884 00:38:58,370 --> 00:39:00,710 และนมที่จะเข้าสู่ ถ้วยน้ำส้ม 885 00:39:00,710 --> 00:39:02,359 >> ลำโพง 4: ฉันจะได้รับถ้วยอื่นได้หรือไม่ 886 00:39:02,359 --> 00:39:05,650 ลำโพง 1: ฉันดีใจที่คุณถามว่า มันจะเป็นภาพที่ดีกว่ามาก 887 00:39:05,650 --> 00:39:06,710 ถ้าคุณไม่ได้ถาม 888 00:39:06,710 --> 00:39:10,620 แต่ใช่เราสามารถนำเสนอคุณที่สาม ถ้วยที่ว่างเปล่าแน่นอน 889 00:39:10,620 --> 00:39:11,120 ขวาทั้งหมด 890 00:39:11,120 --> 00:39:12,300 เพื่อสลับเนื้อหามี 891 00:39:12,300 --> 00:39:16,100 892 00:39:16,100 --> 00:39:17,050 ที่ดีมาก 893 00:39:17,050 --> 00:39:20,390 894 00:39:20,390 --> 00:39:21,305 ที่ดีมาก 895 00:39:21,305 --> 00:39:23,121 896 00:39:23,121 --> 00:39:24,745 คุณกำลังทำเช่นนี้อย่างระมัดระวัง 897 00:39:24,745 --> 00:39:26,970 898 00:39:26,970 --> 00:39:28,655 และขั้นตอนที่สาม 899 00:39:28,655 --> 00:39:30,390 900 00:39:30,390 --> 00:39:31,350 ขวาทั้งหมด 901 00:39:31,350 --> 00:39:31,930 ที่ดีเยี่ยม 902 00:39:31,930 --> 00:39:33,930 รอบใหญ่ของเสียงปรบมือ จะดีสำหรับลอร่า 903 00:39:33,930 --> 00:39:36,500 904 00:39:36,500 --> 00:39:37,000 ขวาทั้งหมด 905 00:39:37,000 --> 00:39:40,790 เรามีของขวัญที่พรากจากกันเล็ก ๆ น้อย ๆ สำหรับคุณ แต่ให้ฉันใช้เวลาเหล่านี้ 906 00:39:40,790 --> 00:39:42,620 ขอบคุณมาก 907 00:39:42,620 --> 00:39:46,170 ดังนั้นตัวอย่างง่ายๆแม้ว่า แสดงให้เห็นว่าถ้าคุณทำ 908 00:39:46,170 --> 00:39:48,300 ต้องการแลกเปลี่ยนเนื้อหา สองภาชนะบรรจุ 909 00:39:48,300 --> 00:39:52,360 หรือขอเรียกว่าตัวแปร คุณจะต้องจัดเก็บชั่วคราวบางส่วน 910 00:39:52,360 --> 00:39:56,710 เวทีหนึ่งของเนื้อหาในนั้น ที่คุณสามารถจริงทำสัญญาแลกเปลี่ยน 911 00:39:56,710 --> 00:40:01,790 ดังนั้นแน่นอนนี้แหล่งที่มารหัสขึ้นที่นี่ใน C เป็นตัวแทนของว่าที่ 912 00:40:01,790 --> 00:40:06,340 ถ้าเป็นน้ำส้มและนม เป็นข, และเราต้องการที่จะแลกเปลี่ยนสอง 913 00:40:06,340 --> 00:40:08,990 คุณอาจจะลองสิ่งที่สร้างสรรค์ ด้วยการเทหนึ่งไปยังที่อื่น ๆ 914 00:40:08,990 --> 00:40:11,031 แต่ที่อาจจะไม่ จบโดยเฉพาะอย่างยิ่ง 915 00:40:11,031 --> 00:40:15,260 และเพื่อให้เราใช้ที่สามถ้วยโทร มัน tmp T-M-P โดยการประชุม 916 00:40:15,260 --> 00:40:19,370 และวางเนื้อหาของ OJ ในนั้นแล้วสลับหนึ่งถ้วย 917 00:40:19,370 --> 00:40:22,610 แล้วใส่ลงไปใน OJ ถ้วยเดิมจึง 918 00:40:22,610 --> 00:40:25,320 ประสบความสำเร็จตรงตามที่ ลอร่าได้แลกเปลี่ยน 919 00:40:25,320 --> 00:40:26,850 >> ดังนั้นเรามาทำตรงที่ 920 00:40:26,850 --> 00:40:30,110 ให้ฉันไปข้างหน้าและเปิด ขึ้นยกตัวอย่างเช่นที่ 921 00:40:30,110 --> 00:40:32,720 เรียกว่าจริง "ไม่ สลับ "เพราะนี้ไม่ได้ 922 00:40:32,720 --> 00:40:36,180 เป็นเพียงแค่ทำตามที่คุณอาจจะคิดว่า 923 00:40:36,180 --> 00:40:41,190 ดังนั้นในโปรแกรมนี้สังเกตเห็นว่า ฉันใช้ stdio.h เพื่อนเก่าของเรา 924 00:40:41,190 --> 00:40:43,130 ฉันมีต้นแบบ สำหรับแลกเปลี่ยนมีขึ้นที่ 925 00:40:43,130 --> 00:40:45,450 หมายถึงการดำเนินงานของตน อาจจะลงมาด้านล่าง 926 00:40:45,450 --> 00:40:48,050 และขอดูสิ่งนี้หลัก โปรแกรมจะทำเพื่อฉัน 927 00:40:48,050 --> 00:40:52,020 ครั้งแรกที่ผมประกาศ int x ได้รับ หนึ่งและ int ปีได้รับสอง 928 00:40:52,020 --> 00:40:54,930 ดังนั้นคิดของผู้ที่เป็น OJ และนมตามลำดับ 929 00:40:54,930 --> 00:40:57,100 แล้วฉันเพียงแค่มี printf บอกว่า x เป็นแบบนี้ 930 00:40:57,100 --> 00:41:00,120 และ y เป็นแบบนี้เพียงเพื่อให้ฉันสามารถ สายตามองเห็นสิ่งที่เกิดขึ้น 931 00:41:00,120 --> 00:41:03,810 จากนั้นผมได้ printf อ้าง ที่ฉันสลับสอง 932 00:41:03,810 --> 00:41:07,100 และจากนั้นผมพิมพ์ออกมา อ้างว่าพวกเขากำลังเปลี่ยน, 933 00:41:07,100 --> 00:41:09,300 และผมพิมพ์ออกมา x และ y อีกครั้ง 934 00:41:09,300 --> 00:41:13,010 เพื่อให้ลงมาที่นี่ในการแลกเป็น ว่าสิ่งที่ลอร่าได้ 935 00:41:13,010 --> 00:41:16,240 และสิ่งที่เราเห็นใน หน้าจอสักครู่ที่ผ่านมา 936 00:41:16,240 --> 00:41:19,380 >> จึงขอไปข้างหน้าและ ผิดหวังอย่างมาก 937 00:41:19,380 --> 00:41:24,690 ทำให้ไม่มีการแลกเปลี่ยนและใช้แลกเปลี่ยนไม่มี ซูมในที่เอาท์พุทที่นี่ 938 00:41:24,690 --> 00:41:28,320 ใส่ x 1, 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 สิ่งที่ลอร่าก็ไม่ได้ดูเหมือนจะทำงาน 942 00:41:40,730 --> 00:41:42,130 ดังนั้นทำไมจึงเป็นเช่นนั้น 943 00:41:42,130 --> 00:41:46,630 ดีก็ปรากฎว่าเมื่อ เราเขียนโปรแกรมเช่นนี้ 944 00:41:46,630 --> 00:41:51,590 ที่มีทั้งหลักเน้นที่นี่ แล้วฟังก์ชั่นอื่นเช่นแลกเปลี่ยน 945 00:41:51,590 --> 00:41:54,230 ไฮไลท์ที่นี่ซึ่ง ที่เรียกว่าโลก 946 00:41:54,230 --> 00:41:57,030 มีลักษณะบางสิ่งบางอย่างเล็ก ๆ น้อย ๆ เช่น ถาดเหล่านี้สักครู่ที่ผ่านมา 947 00:41:57,030 --> 00:42:00,440 เมื่อหลักแรกได้รับการเรียกว่า ที่ชอบถามระบบปฏิบัติการ 948 00:42:00,440 --> 00:42:04,030 สำหรับบิตของหน่วยความจำสำหรับท้องถิ่นใด ๆ ตัวแปรเช่น x และ y ที่สำคัญมี 949 00:42:04,030 --> 00:42:05,660 และพวกเขาจบลงที่นั่น 950 00:42:05,660 --> 00:42:10,920 แต่ถ้าสายหลักสลับและหลัก ผ่านไปสลับสองขัดแย้งและ b 951 00:42:10,920 --> 00:42:16,410 น้ำส้มและนมก็ไม่ชอบ แจกน้ำผลไม้สีส้มและนม 952 00:42:16,410 --> 00:42:17,500 ลอร่า 953 00:42:17,500 --> 00:42:21,300 สิ่งที่คอมพิวเตอร์ไม่มัน ผ่านสำเนาของน้ำผลไม้สีส้ม 954 00:42:21,300 --> 00:42:27,110 และสำเนาของนมลอร่าเพื่อให้ สิ่งที่เป็นที่สุดในถาดนี้ 955 00:42:27,110 --> 00:42:32,510 เป็นค่าหนึ่งและสองหรือ OJ และนม แต่สำเนาดังกล่าว 956 00:42:32,510 --> 00:42:34,790 เพื่อให้ที่จุดนี้ ในเรื่องที่มี 957 00:42:34,790 --> 00:42:36,930 เป็นน้ำส้มและนมในแต่ละถาดเหล่านี้ 958 00:42:36,930 --> 00:42:39,260 มีอยู่คนหนึ่งและสองเป็น ในแต่ละถาดเหล่านี้ 959 00:42:39,260 --> 00:42:41,720 และฟังก์ชั่นการแลกหุ้นที่แน่นอนในการทำงาน 960 00:42:41,720 --> 00:42:46,090 มันสลับพวกเขาภายใน ของถาดที่สองสูงสุดที่ 961 00:42:46,090 --> 00:42:48,147 แต่การแลกเปลี่ยนที่มีผลกระทบ 962 00:42:48,147 --> 00:42:49,980 และขึ้นอยู่กับเพียงบางส่วน หลักการพื้นฐานที่เราได้ 963 00:42:49,980 --> 00:42:52,970 พูดคุยเกี่ยวกับก่อนและแน่นอน เพียงไม่กี่นาทีที่ผ่านมาสิ่งที่ 964 00:42:52,970 --> 00:42:58,770 อาจจะอธิบายได้ว่าทำไมการเปลี่ยนแปลง A และ B ในการแลก 965 00:42:58,770 --> 00:43:05,560 มีผลกระทบต่อ x และ y ไม่มีแม้ ฉันผ่าน x และ y ฟังก์ชั่นการแลกหุ้นที่ 966 00:43:05,560 --> 00:43:08,750 อะไรคือคำที่สำคัญที่นี่ที่ ง่ายๆอาจอธิบาย? 967 00:43:08,750 --> 00:43:11,250 968 00:43:11,250 --> 00:43:12,627 ฉันคิดว่าฉันได้ยินมันนี่? 969 00:43:12,627 --> 00:43:13,335 ผู้ชม: กลับมา 970 00:43:13,335 --> 00:43:14,085 ลำโพง 1: ย้อนกลับไป? 971 00:43:14,085 --> 00:43:14,590 ไม่กลับมา 972 00:43:14,590 --> 00:43:15,895 ลองไปกับคนอื่น ๆ 973 00:43:15,895 --> 00:43:16,395 มีอะไรที่? 974 00:43:16,395 --> 00:43:17,080 >> ผู้ชม: [ไม่ได้ยิน] 975 00:43:17,080 --> 00:43:20,000 >> ลำโพง 1: ตกลงดังนั้น return-- ที่เราจะทำได้ ทำให้การทำงานของการกลับมาในเรื่องนี้ 976 00:43:20,000 --> 00:43:21,914 แต่มีคำอธิบายได้ง่าย 977 00:43:21,914 --> 00:43:22,580 ผู้ชม: ขอบเขต 978 00:43:22,580 --> 00:43:23,288 ลำโพง 1: ขอบเขต 979 00:43:23,288 --> 00:43:24,300 ฉันจะใช้ขอบเขต 980 00:43:24,300 --> 00:43:27,290 ดังนั้นขอบเขตจำที่ x และ y ของเราประกาศ 981 00:43:27,290 --> 00:43:30,840 พวกเขากำลังประกาศภายใน สิทธิหลักของที่นี่ 982 00:43:30,840 --> 00:43:33,200 a และ b ขณะที่มี ประกาศได้อย่างมีประสิทธิภาพ 983 00:43:33,200 --> 00:43:35,930 ภายในของแลกเปลี่ยนไม่มากใน วงเล็บปีกกา แต่ยังคง 984 00:43:35,930 --> 00:43:37,690 ในพื้นที่ทั่วไปของการแลกเปลี่ยน 985 00:43:37,690 --> 00:43:40,560 และอื่น ๆ แน่นอนและข เพียง แต่อยู่ในถาดนี้ 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 เพื่อยืนยันว่าผมอยู่ในนี้ หน้าต่าง terminal ใหญ่ 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 กว่า ที่นี่กว่าที่นี่ขกว่าที่นี่ 997 00:44:16,010 --> 00:44:18,220 แต่ตรงไปตรงมาว่าอาจจะเป็นสิ่งที่ คุณได้รับการทำสำหรับสองสามสัปดาห์ที่ผ่านมา 998 00:44:18,220 --> 00:44:20,190 ขณะนี้ในเวลาทำการ และที่บ้านเมื่อทำงาน 999 00:44:20,190 --> 00:44:22,150 ใน psets พยายามที่จะหาข้อบกพร่องบางอย่าง 1000 00:44:22,150 --> 00:44:25,560 แต่คุณจะเห็นถ้าคุณยังไม่ได้ ปัญหาที่สามตั้งแนะนำให้คุณ 1001 00:44:25,560 --> 00:44:31,630 กับคำสั่งที่เรียกว่า GDB, ที่ GDB, GNU ดีบัก 1002 00:44:31,630 --> 00:44:34,040 มีตัวเองทั้งกลุ่ม คุณสมบัติที่สามารถจริง 1003 00:44:34,040 --> 00:44:38,160 ให้เราเข้าใจสถานการณ์ เช่นนี้ แต่ร้องขอ, 1004 00:44:38,160 --> 00:44:39,940 แก้ปัญหาและพบข้อบกพร่อง 1005 00:44:39,940 --> 00:44:40,940 ดังนั้นฉันจะทำเช่นนี้ 1006 00:44:40,940 --> 00:44:44,770 แทนที่จะ ./noswap ฉันแทน ไปทำงาน GDB ./noswap 1007 00:44:44,770 --> 00:44:47,410 1008 00:44:47,410 --> 00:44:51,200 ในคำอื่น ๆ ฉันจะทำงานของฉัน ไม่ได้อยู่ในโปรแกรมเตะเพื่อนใหม่ของเรา 1009 00:44:51,200 --> 00:44:51,850 วันนี้ 1010 00:44:51,850 --> 00:44:53,970 ฉันจะทำงานของฉัน noswap โปรแกรมภายใน 1011 00:44:53,970 --> 00:44:56,900 ของโปรแกรมอื่น ๆ ที่เรียกว่า GDB ซึ่งเป็นบั๊กที่ 1012 00:44:56,900 --> 00:45:01,035 เป็นโปรแกรมที่ออกแบบมาเพื่อช่วยให้ คุณมนุษย์ค้นหาและลบข้อบกพร่อง 1013 00:45:01,035 --> 00:45:03,410 ดังนั้นถ้าผมตีทำงานที่นี่มี จำนวนเงินที่เลวร้ายของข้อความ 1014 00:45:03,410 --> 00:45:04,868 ที่คุณไม่เคยได้อ่าน 1015 00:45:04,868 --> 00:45:07,290 มันเป็นหลักสิ่งที่ทำให้ไขว้เขว จากพรอมต์ที่ 1016 00:45:07,290 --> 00:45:10,030 ฉันจะตีควบคุม-L ที่จะได้รับขึ้นที่ด้านบนมี 1017 00:45:10,030 --> 00:45:11,800 นี่คือการแจ้งให้ GDB 1018 00:45:11,800 --> 00:45:15,550 ถ้าผมต้องการที่จะใช้โปรแกรมนี้ในขณะนี้ เป็นแผ่นโกงเล็ก ๆ น้อย ๆ นี้ในวันนี้ 1019 00:45:15,550 --> 00:45:21,860 สไลด์แนะนำการเรียกใช้เป็นครั้งแรก คำสั่งที่เราหมายถึงการแนะนำ 1020 00:45:21,860 --> 00:45:25,150 และฉันแค่ไปที่จะพิมพ์ วิ่งขึ้นที่นี่ภายในของ GDB, 1021 00:45:25,150 --> 00:45:26,811 และแน่นอนมันวิ่งโปรแกรมของฉัน 1022 00:45:26,811 --> 00:45:29,310 ตอนนี้มีบางอย่างเพิ่มเติม ผลของหน้าจอเช่นนี้ 1023 00:45:29,310 --> 00:45:31,910 แต่นั่นเป็นเพียงการ GDB ทางทวารหนั​​ก และบอกเราว่าสิ่งที่เกิดขึ้น 1024 00:45:31,910 --> 00:45:34,451 คุณไม่ได้จริงๆต้องกังวล เกี่ยวกับรายละเอียดเหล่านี้ได้ในขณะนี้ 1025 00:45:34,451 --> 00:45:36,890 แต่สิ่งที่เป็นจริงเย็นเกี่ยวกับ GDB ถ้าผมทำเช่นนี้เหมือนเดิม 1026 00:45:36,890 --> 00:45:42,100 ควบคุม-L ล้าง screen-- ให้ฉันไป ข้างหน้าและพิมพ์ "ทำลายหลัก" ดังนั้น 1027 00:45:42,100 --> 00:45:45,743 เมื่อผมกด Enter การตั้งค่าอะไร เรียกว่าจุดคุ้มทุนที่ noswap.c, 1028 00:45:45,743 --> 00:45:51,270 สาย 16 ซึ่งเป็นที่ที่ GDB คิดว่าโปรแกรมของฉันจริง 1029 00:45:51,270 --> 00:45:53,070 เป็นฟังก์ชั่นของฉันเป็นจริง 1030 00:45:53,070 --> 00:45:55,070 นี้เราจะไม่สนใจตอนนี้ แต่ที่อยู่ 1031 00:45:55,070 --> 00:45:57,310 ในหน่วยความจำโดยเฉพาะฟังก์ชั่นนี้ 1032 00:45:57,310 --> 00:46:00,240 ดังนั้นตอนนี้เมื่อฉันพิมพ์ทำงาน สังเกตเห็นสิ่งที่เย็นที่นี่ 1033 00:46:00,240 --> 00:46:05,650 โปรแกรมของฉันที่เส้นแบ่งผม บอก GDB ที่จะหยุดการดำเนินการที่ 1034 00:46:05,650 --> 00:46:09,850 ดังนั้นผมจึงไม่ต้องตอนนี้เปลี่ยนรหัสของฉัน เพิ่มบางของ printf, คอมไพล์มันวิ่ง 1035 00:46:09,850 --> 00:46:13,300 มันเปลี่ยนแปลงเพิ่มบางส่วนของ printf, บันทึก, คอมไพล์มันรัน 1036 00:46:13,300 --> 00:46:18,100 ผมก็สามารถเดินผ่านโปรแกรมของฉัน ทีละขั้นตอนโดยขั้นตอนที่ความเร็วของมนุษย์ 1037 00:46:18,100 --> 00:46:20,880 ไม่ใช่ชนิดที่อินเทลภายในของความเร็ว 1038 00:46:20,880 --> 00:46:24,580 >> ดังนั้นตอนนี้สังเกตเห็นบรรทัดนี้ ปรากฏขึ้นที่นี่และถ้าฉันกลับไป 1039 00:46:24,580 --> 00:46:27,800 ในการเขียนโปรแกรมของฉันใน Gedit, สังเกตเห็นว่าที่เป็นจริง 1040 00:46:27,800 --> 00:46:29,280 บรรทัดแรกของรหัส 1041 00:46:29,280 --> 00:46:31,240 มี 16 บรรทัดใน Gedit 1042 00:46:31,240 --> 00:46:34,610 มี 16 บรรทัดภายใน GDB และแม้กระทั่ง แม้ว่าอินเตอร์เฟซสีดำและสีขาว 1043 00:46:34,610 --> 00:46:37,760 ไม่ได้เกือบเป็นผู้ใช้ มิตรที่นี้หมายถึง 1044 00:46:37,760 --> 00:46:41,680 16 สายที่ไม่ได้รับการดำเนินการ แต่มันเกี่ยวกับการที่จะเป็น 1045 00:46:41,680 --> 00:46:46,220 ดังนั้นแน่นอนว่าผมพิมพ์พิมพ์ 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 โอ้, 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 ดังนั้นนี้ไม่ได้เป็นออกกำลังกายที่มีประโยชน์ 1076 00:48:05,820 --> 00:48:07,450 จึงขอทำซ้ำนี้ 1077 00:48:07,450 --> 00:48:10,069 ผมขอกลับไปถึง การทำงานด้านบนและประเภทอีกครั้ง 1078 00:48:10,069 --> 00:48:12,110 และก็บอกว่าโปรแกรม ที่กำลังดีบั๊ก 1079 00:48:12,110 --> 00:48:14,109 ได้เริ่มต้นแล้ว เริ่มจากจุดเริ่มต้น 1080 00:48:14,109 --> 00:48:15,420 ใช่ให้ทำเช่นนี้อีกครั้ง 1081 00:48:15,420 --> 00:48:22,000 และในครั้งนี้เราจะทำต่อไป ต่อไปต่อไปข้างหน้าต่อไป 1082 00:48:22,000 --> 00:48:24,180 แต่ตอนนี้สิ่งที่ได้รับที่น่าสนใจ 1083 00:48:24,180 --> 00:48:27,760 ตอนนี้ผมต้องการที่จะก้าวเข้าสู่ แลกเปลี่ยนดังนั้นฉันไม่ต้องพิมพ์ต่อไป 1084 00:48:27,760 --> 00:48:34,380 ฉันพิมพ์ขั้นตอนและตอนนี้สังเกตเห็นมัน ได้กระโดดลงมาฉันกับสาย noswap.c 33 1085 00:48:34,380 --> 00:48:37,240 ถ้าผมกลับไป Gedit สิ่งที่สาย 33? 1086 00:48:37,240 --> 00:48:40,500 นั่นเป็นครั้งแรกที่เกิดขึ้นจริง บรรทัดของรหัสในการแลก 1087 00:48:40,500 --> 00:48:44,150 ซึ่งเป็นสิ่งที่ดีเพราะตอนนี้ฉันสามารถ ชนิดของกระตุ้นรอบและได้รับการอยากรู้อยากเห็น 1088 00:48:44,150 --> 00:48:46,052 เป็นสิ่งที่เกิดขึ้นอย่างแท้จริงในการมี 1089 00:48:46,052 --> 00:48:46,760 ผมขอพิมพ์ tmp 1090 00:48:46,760 --> 00:48:47,770 1091 00:48:47,770 --> 00:48:48,800 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 และแน่นอนเมื่อคุณเรียกใช้โปรแกรม คุณได้รับทั้งกลุ่มของหน่วยความจำ 1097 00:49:00,270 --> 00:49:03,392 โดยระบบปฏิบัติการ แต่คุณ ยังไม่ได้เริ่มต้นค่าใด ๆ 1098 00:49:03,392 --> 00:49:05,600 ดังนั้นสิ่งที่บิตคุณ เห็นที่นี่แม้ว่ามันจะเป็น 1099 00:49:05,600 --> 00:49:07,770 ลบใหญ่บ้านี้ จำนวนเพียงหมายความว่า 1100 00:49:07,770 --> 00:49:10,750 ว่าผู้ที่มีเศษจาก บางการใช้งานก่อนหน้านี้ของแรมที่ 1101 00:49:10,750 --> 00:49:13,050 แม้ว่าฉันไม่ได้ ตัวเองต้องการมันยัง 1102 00:49:13,050 --> 00:49:17,086 ดังนั้นตอนนี้ฉันจะไปข้างหน้าและประเภท ต่อไปและถ้าตอนนี้ผมพิมพ์ tmp พิมพ์ 1103 00:49:17,086 --> 00:49:17,835 สิ่งที่ฉันควรจะเห็น? 1104 00:49:17,835 --> 00:49:19,570 1105 00:49:19,570 --> 00:49:23,360 สิ่งที่คุณค่าของการเป็น เป็นอาร์กิวเมนต์แรกเพียง 1106 00:49:23,360 --> 00:49:25,550 เช่น x เป็นครั้งแรกที่ สิ่งที่ถูกส่งใน 1107 00:49:25,550 --> 00:49:30,450 ดังนั้น x และควรจะเหมือนกัน ดังนั้น tmp พิมพ์ควรพิมพ์ฉันหนึ่ง 1108 00:49:30,450 --> 00:49:36,360 >> ดังนั้นสิ่งที่คุณจะเห็นในการตั้งปัญหา สามคือการกวดวิชาของทุกประเภทใน GDB, 1109 00:49:36,360 --> 00:49:40,020 แต่รู้ว่านี่คือจุดเริ่มต้น ของดูที่เครื่องมือที่จะจริง 1110 00:49:40,020 --> 00:49:42,774 ช่วยคุณแก้ปัญหา เพื่อให้มีประสิทธิภาพมากขึ้น 1111 00:49:42,774 --> 00:49:44,690 สิ่งที่เรากำลังในท้ายที่สุด จะทำในวันพุธที่ 1112 00:49:44,690 --> 00:49:48,180 คือการเริ่มต้นที่จะปอกเปลือกกลับชั้นไม่กี่ และลบบางล้อการฝึกอบรม 1113 00:49:48,180 --> 00:49:50,496 ว่าสิ่งที่เรียกว่าสตริงที่ ที่เราได้นำมาใช้บางครั้ง 1114 00:49:50,496 --> 00:49:53,370 เราจะใช้เวลาที่ช้าออกไป จากคุณและเริ่มพูดคุยเกี่ยวกับ 1115 00:49:53,370 --> 00:49:55,725 บางสิ่งบางอย่างมากขึ้น esoterically ที่รู้จักกันเป็นถ่าน * 1116 00:49:55,725 --> 00:49:59,550 แต่เรากำลังจะทำนี้ดีและ เบา ๆ ในตอนแรกแม้ว่าตัวชี้ 1117 00:49:59,550 --> 00:50:02,730 ขณะที่พวกเขากำลังเรียกว่าสามารถทำบางอย่าง สิ่งที่ไม่ดีมากถ้าทำร้าย 1118 00:50:02,730 --> 00:50:06,040 โดยดูที่ claymation เล็กน้อยจาก เพื่อนของเรานิค Parlante จาก Stanford 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 บิงกี้ 1124 00:50:13,900 --> 00:50:14,930 1125 00:50:14,930 --> 00:50:15,780 ตื่นขึ้นมา 1126 00:50:15,780 --> 00:50:17,240 ก็ถึงเวลาสำหรับความสนุกสนานชี้ 1127 00:50:17,240 --> 00:50:18,260 1128 00:50:18,260 --> 00:50:19,350 >> อะไรที่? 1129 00:50:19,350 --> 00:50:21,150 เรียนรู้เกี่ยวกับตัวชี้? 1130 00:50:21,150 --> 00:50:22,050 โอ้คนดี! 1131 00:50:22,050 --> 00:50:22,897 1132 00:50:22,897 --> 00:50:23,730 [จบการเล่นวิดีโอ] 1133 00:50:23,730 --> 00:50:25,396 ลำโพง 1: ที่รอคุณอยู่ในวันพุธที่ 1134 00:50:25,396 --> 00:50:26,440 เราจะเห็นคุณแล้ว 1135 00:50:26,440 --> 00:50:27,106 [วิดีโอเล่นภาพ] 1136 00:50:27,106 --> 00:50:30,420 ในอนาคตและตอนนี้ความคิดลึก โดย Daven อัม 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 >> [จบการเล่นวิดีโอ]