>> [เล่นเพลง]
>> ลำโพง 1: สิทธิทั้งหมดนี้เป็น CS50, และนี่คือจุดเริ่มต้นของสี่สัปดาห์
และในขณะที่คุณอาจจะเคยได้ยินหรือ อ่านโลกได้รับการสิ้นสุด
ไปทั่วอินเทอร์เน็ต ได้รับความรู้และความตระหนัก
ของข้อผิดพลาดในโปรแกรม ภาษาโปรแกรมที่เรียกว่าเตะ
นี้ได้รับการตรามหัศจรรย์ เป็นทำพิษหรือประตูตี,
แต่บทความเช่นนี้ ยังไม่ได้รับเรื่องผิดปกติ
และในความเป็นจริงมากของพวกเขานำ ความทรงจำที่ด้านหลังของ Heartbleed,
ที่คุณอาจจะสังเกตเห็นใน กดกลับมาในฤดูใบไม้ผลิที่ผ่านมาซึ่ง
เป็นกันอย่างเป็นธรรมได้อย่างน่าทึ่ง
ตอนนี้บรรดาของคุณที่นี่ วันนี้วิธีการที่หลายท่านมี
แม้ว่าคุณจะไม่เข้าใจสิ่งที่ มันคือทั้งหมดที่เกี่ยวกับการได้ยินของทำพิษ?
สิทธิทั้งหมดและวิธีการที่หลายท่าน มีเครื่องคอมพิวเตอร์ที่มีความเสี่ยง?
ตกลงควรจะมีมือที่ไกลมากขึ้น ขึ้นในขณะนี้ด้วยเหตุผลที่เราจะได้เห็น
>> ลองมาดูที่สิ่งที่ ได้เกิดขึ้นในสื่อ
แล้วอธิบายมันเล็กน้อย ที่นี่สำหรับเราในทางเทคนิค
>> ลำโพงที่ 2: ผู้เชี่ยวชาญด้านความปลอดภัยมี เตือนว่าข้อบกพร่องร้ายแรงได้
จะเกี่ยวกับการส่งผลกระทบต่อหลายร้อย ล้านของผู้ใช้เว็บในโลก
ดังนั้นสิ่งที่ว่าเป็นปัญหาที่ได้รับ ขนานนามทำพิษและสิ่งที่ไม่ได้ทำอย่างไร
ดีทำพิษเป็นที่รู้จักกัน ข้อผิดพลาดทุบตี, ซอฟแวร์ใช้ประโยชน์จากมัน
แฮกเกอร์ใช้ไวรัสในการสแกนที่มีช่องโหว่ ระบบที่ใช้ลินุกซ์และ Unix
ระบบปฏิบัติการและจากนั้นพวกเขาติดเชื้อ
bash เป็นเชลล์ที่บรรทัดคำสั่ง
นี้จะช่วยให้ผู้ใช้ออกคำสั่งที่จะเปิดตัว โปรแกรมและคุณลักษณะในซอฟแวร์
โดยการพิมพ์ข้อความ
มันมักจะใช้โดยโปรแกรมเมอร์และ ไม่ควรจะเปิดให้โลกกว้างที่
แม้ว่าการเปลี่ยนแปลงที่ทำพิษ
>> ดี worringly นักวิเคราะห์บางคน เตือนว่ามันอาจจะเป็นภัยคุกคามที่ใหญ่กว่า
เพราะทำพิษช่วยให้สมบูรณ์ การควบคุมเครื่องที่ติดเชื้อ
ในขณะที่ Heartbleed ได้รับอนุญาตเท่านั้น แฮกเกอร์สามารถสอดแนมในเครื่องคอมพิวเตอร์
มันเป็นเรื่องที่รุนแรงเพื่อให้มันเป็น รับการจัดอันดับ 10 จาก 10
สำหรับความรุนแรงโดยแห่งชาติ ฐานข้อมูลช่องโหว่
2/3 ของเว็บเซิร์ฟเวอร์ทั้งหมดอยู่ที่ ความเสี่ยงรวมทั้งบางส่วนคอมพิวเตอร์ Mac
ดีให้แน่ใจว่าคุณ แก้ไขระบบของคุณตอนนี้
ทุกคนโฮสติ้งเว็บไซต์ทำงาน ระบบปฏิบัติการที่ได้รับผลกระทบ
ควรจะดำเนินการโดยเร็วที่สุดเท่าที่เป็นไปได้
ทุกคนที่สามารถจ่ายได้ควรมีลักษณะ เพื่อการตรวจสอบและเว็บแอพลิเคชันของพวกเขา
ไฟร์วอลล์จะมองออกไปสำหรับการโจมตีใด ๆ
ลำโพงที่ 3: สิ่งที่เลวร้ายที่สุด ที่อาจเกิดขึ้นคือ
ว่าใครจะเขียนโค้ดที่ โดยอัตโนมัติจะไปและการสแกน
อินเทอร์เน็ตและจะส่งผลกระทบต่อ คอมพิวเตอร์ทุกเครื่องเหล่านี้
และเมื่อพวกเขาทำอย่างนั้นได้ดี สิ่งที่แย่ที่สุดที่พวกเขาสามารถทำ
เป็นเพียงการลบทุกอย่าง หรือปิดเว็บไซต์ที่ลง
ดังนั้นเราจะได้เห็นความเสียหาย จากมุมมองที่
ที่เราจะมีคนที่เป็นอันตราย ที่เพิ่งตัดสินใจที่จะทำให้เกิดความเสียหาย
โดยนำระบบลงหรือลบ ไฟล์และสิ่งที่ต้องการที่
ลำโพงที่ 2: บางคนบอกว่านี่คือหนึ่งใน ที่ยากที่สุดในการวัด
ข้อผิดพลาดในปีที่ผ่านมาและมัน อาจใช้เวลาหลายสัปดาห์หรือแม้กระทั่ง
เดือนเพื่อพิจารณาผลกระทบที่ดีที่สุดของ
>> ลำโพง 1: ทั้งหมดนั่นเป็นความจริง แต่สิ่งที่ตลกคือเกือบทั้งหมด
ของภาพที่คุณเพิ่งเห็น ยกเว้นอาจจะแป้นพิมพ์
มีอะไรจะทำอย่างไรกับ ข้อผิดพลาดใด ๆ
เซิร์ฟเวอร์และสายไฟและอื่น ๆ มันเกี่ยวข้องกับการเรียงลำดับของการสัมผัส,
แต่ที่หลักก็จริงสวย คุ้นเคยสิ่งที่เกิดขึ้นที่นี่
ในความเป็นจริงให้ฉันเข้าไป CS50 เครื่องของเรา
ให้ฉันไปข้างหน้าและเพิ่ม หน้าต่าง terminal ที่นี่
และพวกคุณได้ใช้นี้ หรือรุ่นที่ฝังตัวดังกล่าว
ใน Gedit เพื่อที่จะเขียนโปรแกรม พิมพ์คำสั่งและอื่น ๆ
และนี้เป็นจริงและมี รับสำหรับสัปดาห์ที่เตะ B--S-H
นี้เป็นบอร์นอีกครั้งเปลือก ซึ่งเป็นเพียงวิธีแฟนซีของบอกว่า
นี้เป็นโปรแกรมที่มี กระพริบที่รวดเร็วมีประสิทธิภาพ
ว่านั่งอยู่ที่นั่นรอ สำหรับการป้อนข้อมูลสำหรับคุณ
และมันก็เป็นคำสั่ง ผ่านอินเตอร์เฟซบรรทัดที่
พวกคุณได้รับการใช้คำสั่งและ ในท้ายที่สุดแล้วการรวบรวมและการทำงาน
โปรแกรม
>> แต่เตะยังเป็นโปรแกรม ภาษาในความหมายดังต่อไปนี้
คุณรู้ว่ามีคำสั่งเช่น cd และ LS และเสียงดังกราวและคนอื่น ๆ
แต่คุณสามารถกำหนดคำสั่งของคุณเอง ด้วยการใช้พวกเขาในการเตะ
ตอนนี้เราไม่ได้ไป เข้าไปดูรายละเอียดที่ดี
ที่จะทุบตีภาษาการเขียนโปรแกรม แต่ รู้เช่นว่าในขณะนี้
มีคำสั่งเรียกว่า "สวัสดี".
ดังนั้นจึงสามารถพบได้ใน หนึ่งในแพคเกจเหล่านี้
มันไม่ได้ติดตั้งบนคอมพิวเตอร์ของฉัน
สอบถามผู้ดูแลระบบของคุณ
แต่ถ้าผมต้องการที่จะต้องมีโปรแกรม เรียกว่า "สวัสดี" ในที่เตะหรือที่พร้อมท์ของฉัน
ที่จริงผมสามารถใช้ไวยากรณ์ที่ ค่อนข้างชอบ C. ก็ไม่เชิงเดียวกัน
แต่มันก็ดูสวยคล้ายกับ ฟังก์ชั่นที่ขาดหายไปแม้ว่ารายละเอียดบางอย่าง
ดูเหมือนจะไม่มีอะไรเกิดขึ้น แต่ตอนนี้ถ้าผมพิมพ์ "สวัสดี"
จริง ๆ แล้วคุณสามารถเขียน โปรแกรมไม่ได้อยู่ใน C ไม่ได้อยู่ในชวา
ไม่ได้อยู่ในการเขียนโปรแกรมอื่น ภาษา แต่ในที่เตะตัวเอง
>> ตอนนี้ที่สำคัญที่นี่คือที่ผมเขียน ชื่อที่ผมอยากจะให้คำสั่งใหม่นี้
และวงเล็บนอกจากนี้ยังมี สัญลักษณ์นี้เป็นฟังก์ชั่น
เช่นกันนอกจากนี้คุณยังสามารถทำสนุก สิ่งและในความเป็นจริงแม้ใน Mac OS,
นี้เป็นโปรแกรมที่เรียกว่าเทอร์
มันมาสร้างไว้ในทุกคน คอมพิวเตอร์ที่มี Mac ในห้องนี้
และคุณสามารถทำสิ่งที่คล้ายกันใน Mac OS แต่คุณสามารถไปมากขึ้นไปกว่านั้น
และนี่คือวงเล็ก ๆ น้อย ๆ แต่มันเป็นชนิดของความสนุก
ผมนึกถึงเช้านี้ เมื่อคิดนี้ผ่าน
ของเกมเล็ก ๆ น้อย ๆ ที่ผมใช้ในการเล่น กับหนึ่งใน CS50 อดีต TFS
โดยตลอดเวลาที่เขาจะเดินออกไปจาก แป้นพิมพ์ของเขากับหน้าจอของเขาปลดล็อค,
ผมจะดำเนินการคำสั่ง เหมือนเจ้านี่ "ทักทาย".
และตอนนี้เวลาที่เขากลับมาของเขา แป้นพิมพ์หลังจากที่ผมล้างหน้าจอ
และเขาจะนั่งลง พยายามที่จะทำบางอย่าง
รายการเนื้อหาของ directory-- ของเขา
>> [AUDIO เล่นภาพ]
>> -Hello
สวัสดี
>> ลำโพง 1: ดังนั้นในความเป็นธรรม มันก็ไม่จริง "สวัสดี".
มันก็มักจะมีบางสิ่งบางอย่าง คล้ายมากขึ้นเพื่อ that--
[AUDIO เล่นภาพ]
-Beep
ลำโพง 1: --that ฉัน would-- เพื่อให้คอมพิวเตอร์ของเขาจะ
สาบานที่เขามีเวลาใด ๆ ที่เขาจริง นั่งลงที่แป้นพิมพ์ของเขา
อย่างรวดเร็วและเขาก็คิดออก จะไม่ออกจากหน้าจอของเขาปลดล็อค
แต่นี้แสดงให้เห็นการจัดเรียง สนุกโง่ที่คุณ
สามารถมีกับสิ่งที่ต้องการเตะ
แต่ก็น้อยมาก อย่างจริงจังเพื่อให้แน่ใจว่ากว่าที่
และในความเป็นจริงนี้เป็นหนึ่งใน ข้อบกพร่องที่เป็นอันตรายและยาวนานที่สุด
ที่ได้ตีจริงๆโลกทั่วโลก
ข้อผิดพลาดนี้ได้รับรอบ สำหรับบางคน 20 ปีที่ผ่านมา
และคุณจะหลงในเวลาเพียง โดยช่วงเวลาที่ความเรียบง่ายของ
>> ดังนั้นนี่คือตัวแทนของ สั่งว่าถ้าคุณ
Mac เป็นเจ้าของที่แท้จริงได้ในขณะนี้ เมื่อคุณมีฝาปิดของคุณเปิด
คุณสามารถลองพิมพ์ลงที่ โปรแกรมที่เรียกว่าเทอร์
สถานีที่อยู่ภายใต้ แอปพลิเค Utilities--
สำหรับครั้งผู้ใช้ Windows จะได้ไม่ต้อง กังวลเกี่ยวกับ threat-- นี้โดยเฉพาะ
แต่บรรดาของคุณที่มีแม็คสามารถพิมพ์ นี้ในหน้าต่างว่าฉันจะทำที่นี่
และถ้าคุณพิมพ์ ที่เข้าสู่โปรแกรมนี้
ที่เรียกว่าเทอร์มิเช่นฉันจะทำตอนนี้ ถ้าคุณเห็นคำว่า "เสี่ยง"
คอมพิวเตอร์ของคุณเป็น ความเสี่ยงที่จะแสวงหาผลประโยชน์
>> ตอนนี้สิ่งที่ไม่จริงหมายถึงอะไร
และเป็นที่ยอมรับ บางไวยากรณ์บ้าสวย
แต่ขออย่างน้อยวาดออก บางส่วนของแง่มุมที่น่าสนใจ
เพื่อให้มีรูปแบบที่มีลักษณะบาง เล็ก ๆ น้อย ๆ ที่คุ้นเคยอย่างน้อยจาก C
และการเขียนโปรแกรมมากขึ้นโดยทั่วไป
ฉันเห็นวงเล็บบาง อัฒภาค, วงเล็บปีกกาและดังกล่าว
แต่มันกลับกลายเป็นว่านี้ สิ่งที่โง่ที่นี่ในสีเหลือง
ฟังก์ชั่นเป็นหลัก ที่ไม่ทำอะไรเลย
หมายถึงลำไส้ใหญ่ไม่ทำอะไรเลยและ อัฒภาคหมายถึงการหยุดการทำอะไร
ดังนั้นภายในของเหล่านี้ วงเล็บปีกกาจริง
ที่ฉันมีความเท่าเทียมกัน ลงไปทางซ้ายนี้
เป็นหลักการสร้าง คำสั่งหรือตัวแปร
เรียกว่า x, และกำหนด ที่บิตของรหัสสีเหลืองมี
ที่อาจจะมีบางอย่างเช่น "เสียงสะท้อน สวัสดี "หรือ" บอกเตือน "หรือบางสิ่งบางอย่าง
คล้ายกับว่า
แต่แจ้งให้ทราบถ้าดวงตาของคุณ เดินต่อไปทางขวา
มีมากขึ้นที่จะสายไปกว่านี้ เพียงแค่ปลายอัฒภาคที่
"ก้องเสี่ยง" และจากนั้น นอกเหนือจากที่มีมากยิ่งขึ้น
อีกอัฒภาคทุบตี -c :.
>> ดังนั้นเรื่องยาวสั้น บรรทัดของรหัสนี้
เพียงพอสำหรับการที่น่าสนใจ คอมพิวเตอร์ที่เป็น
ความเสี่ยงที่จะทำอะไรบางอย่าง ที่คุณอยากให้มันทำ
เพราะมีข้อผิดพลาดในการเตะโดย แม้ว่าเตะที่ควรจะหยุด
สายการอ่านของคำสั่งที่ถูกต้อง มีหลังข้อความสีเหลือง
สำหรับ 20 ปีบวกกับข้อผิดพลาดเก่า ทุบตีได้รับจริงอ่าน
เกินอัฒภาคที่และสวย มากทำในสิ่งที่มันจะบอก
>> ดังนั้นสิ่งที่เป็นความหมาย จากการที่ในที่สุด?
ผมแค่บอกว่า "ก้องสวัสดี" หรือ "สะท้อนความเปราะบาง"
แต่สิ่งที่ถ้าคุณทำอะไรบางอย่าง จริงที่เป็นอันตรายเช่น RM -rf *
ที่คุณอาจจะไม่ ได้เคยพิมพ์มาก่อน
และตรงไปตรงมาคุณอาจ ไม่ควรเร็วเกินไป
เพราะคุณสามารถทำ จำนวนมากของความเสียหายกับมัน
ทำไม?
RM ไม่สิ่งที่แน่นอน?
ลบ
* หมายถึงอะไร
ทั้งหมด
ดังนั้นจึงเป็นเรื่องที่เรียกว่า ป่าการ์ดดังนั้นจึงหมายความว่า
ลบทุกอย่างใน ไดเรกทอรีปัจจุบัน
-r เกิดขึ้นหมายถึงการเวียนเกิด ซึ่งหมายความว่าถ้าสิ่งที่คุณกำลังลบ
เป็นไดเรกทอรีและภายในจากที่นั่น เป็นไฟล์อื่น ๆ และไดเรกทอรีอื่น ๆ
ซ้ำดำน้ำในมี และลบทั้งหมดที่
และ -f เป็นที่เลวร้ายที่สุดของพวกเขาทั้งหมด
ทุกคนรู้ว่าสิ่งที่ -f หมายถึงที่นี่?
กองทัพ
ดังนั้นวิธีการบังคับให้แม้ ถ้าเรื่องนี้เป็นความคิดที่ไม่ดี
ทำมันได้โดยไม่ต้องแจ้งให้ฉัน สำหรับการยืนยันต่อไป
ดังนั้นคุณรู้ว่าเราหัวเราะเยาะ นี้ แต่ตรงไปตรงมาฉันอาจ
พิมพ์นี้หลายครั้ง วันเพราะความเป็นจริง
มันเป็นวิธีที่เร็วที่สุดเพื่อ ลบทั้งกลุ่มของสิ่งที่
แต่ถึงแม้ฉันได้กระทำความเสียหายบางส่วน
>> แต่ถ้าคุณจะหลอกคอมพิวเตอร์ ในการกำหนดตัวแปรบางอย่างโง่
หรือการทำงานที่เรียกว่า x แต่แล้ว หลอกล่อคอมพิวเตอร์เข้าสู่การดำเนินงาน
เกินขอบเขตของการที่ ฟังก์ชั่นเกินอัฒภาคที่
คุณแน่นอนสามารถหลอกลวงคอมพิวเตอร์ ในการดำเนินงานบางอย่างเช่น RM -rf
หรือคำสั่งที่อีเมล์ หรือคัดลอกคำสั่ง
อะไรอย่างแท้จริงที่คุณสามารถทำอะไรกับ คอมพิวเตอร์ไม่ว่าจะลบไฟล์
การสร้างไฟล์, สแปมใครสักคน การโจมตีเซิร์ฟเวอร์บางระยะไกล
ถ้าคุณสามารถแสดงมันออกมา ที่มีคำสั่งคุณ
สามารถหลอกเครื่องคอมพิวเตอร์ในการทำที่
>> ตอนนี้สิ่งที่เป็นตัวอย่างของ วิธีการที่คุณอาจจะทำเช่นนี้?
ดีมีจำนวนมากของเครื่องคอมพิวเตอร์ที่เป็น ในทุบตีอินเทอร์เน็ตทำงาน
ทั้งหมดของผู้ใช้เรา Mac เป็นในหมู่พวกเขา
จำนวนมากของเซิร์ฟเวอร์ลินุกซ์อยู่ในหมู่ พวกเขาเป็นอย่างดีและเซิร์ฟเวอร์ยูนิกซ์
หน้าต่างอีกครั้งได้รับ ค่อนข้างออกจากเบ็ด
ยกเว้นกรณีที่คุณได้ติดตั้ง ซอฟต์แวร์พิเศษ
ตอนนี้จำนวนมากของเซิร์ฟเวอร์สำหรับ เช่นเว็บเซิร์ฟเวอร์ทำงาน
และในความเป็นจริงอาจจะเป็นลินุกซ์ ระบบปฏิบัติการที่นิยมมากที่สุด
เพื่อให้ทำงานได้บนเครื่องคอมพิวเตอร์บนอินเทอร์เน็ต ที่ให้บริการขึ้นหน้าเว็บ
ตอนนี้ที่เราจะได้เห็นต่อไป ในภาคการศึกษาเมื่อ
คุณส่งการร้องขอจาก browser-- Chrome ของคุณ
Internet Explorer, อะไรก็ตาม ไปยังเซิร์ฟเวอร์ระยะไกล
ปรากฎว่าแม้ คุณเพียงแค่พิมพ์ www.example.com,
เบราว์เซอร์ของคุณจะส่งข้อความ ที่เล็ก ๆ น้อย ๆ ที่เป็นความลับมากขึ้นเช่นนี้
>> แต่สังเกตเห็นบางสิ่งบางอย่างเล็ก ๆ น้อย ๆ ที่แปลกประหลาด
สองบรรทัดแรก ฉันไม่เคยเห็นมาก่อน
แต่พวกเขาไม่ได้ดู คุกคามโดยเฉพาะอย่างยิ่ง
แต่สังเกตเห็นสิ่งที่ฉันได้ถูกขโมย สำหรับสายที่สามที่นี่
ถ้าคนเลวที่จะส่งข้อความ เช่นนี้จากคอมพิวเตอร์ของเขาหรือเธอ
ที่จะเสี่ยง Mac หรือ เซิร์ฟเวอร์ลินุกซ์ที่มีช่องโหว่
สิ่งที่ตลกคือตีว่า ที่พร้อมรับคำสั่งเพียงเล็กน้อยง่าย
เป็นอยู่ทั่วไปทุกหนทุกแห่งและมักจะเป็น ที่ใช้เป็นหลักในการดำเนินการ
เนื้อหาของ ข้อความที่ได้รับ
และตรรกะที่คุณสามารถ หลอกลวงเว็บเซิร์ฟเวอร์ดังนั้น
โดยการส่งสิ่งที่ต้องการ ตัวแทนผู้ใช้ซึ่งมักจะ
ควรจะพูดว่า ชื่อของเบราว์เซอร์ของคุณ
ตัวแทนผู้ใช้ Chrome, ตัวแทนผู้ใช้อินเทอร์เน็ต Explorer ให้ตัวแทนผู้ใช้ Firefox นี้
เป็นเพียงเบราว์เซอร์ของคุณ วิธีการในการระบุตัวเอง
แต่ถ้าคนเลวมาก ชาญฉลาดกล่าวว่ามมมมผม
จะไม่บอกคุณ สิ่งที่เบราว์เซอร์ของฉันคือ
ฉันแทนจะไปส่งคุณนี้ ความลับที่มองสิ่งที่มี -rf RM
* ในนั้นคุณอักษรสามารถหลอกลวง เว็บเซิร์ฟเวอร์ที่มีช่องโหว่บนอินเทอร์เน็ต
ในการดำเนินการตรงที่ใน มีการลบไฟล์ทั้งหมดของ
และตรงไปตรงมาที่ไม่ แม้ที่เลวร้ายที่สุดของมัน
คุณสามารถทำอะไร
คุณสามารถเริ่มต้นการกระจาย ปฏิเสธการโจมตีบริการ
ถ้าคุณส่งข้อความนี้ไปยัง ที่อัดแน่นทั้งเว็บเซิร์ฟเวอร์
แล้วมีพวกเขาทั้งหมดลงมาสำหรับ เช่นบนเซิร์ฟเวอร์ Harvard.edu,
และคุณสามารถจัดเรียงของปัง ห่าออกจากพวกเขา
จากการจราจรเครือข่ายที่เป็น เรียกเป็นอย่างอื่นโดยนี้คนเลว
>> ดังนั้นเรื่องยาวสั้นเกือบ ทุกคนในห้องที่เป็นเจ้าของ Mac นี้
มีความเสี่ยงที่จะถึงนี้
ซับเงินก็คือว่าถ้าคุณ ใช้เว็บเซิร์ฟเวอร์ของแล็ปท็อปของคุณ
และถ้าคุณได้รับการกำหนดค่าจริง มันจะช่วยให้สิ่งที่ต้องการ SSH เข้าไปในนั้น
คุณจริงปลอดภัย
มันเป็นความเสี่ยง แต่ไม่มีการ หนึ่งพยายามที่จะได้รับในแล็ปท็อปของคุณ
เพื่อให้คุณสามารถจัดเรียงของมั่นใจได้
แต่แอปเปิ้ลจะเร็ว ๆ นี้ ได้รับการปรับปรุงแก้ไขนี้
โลกของลินุกซ์ได้เปิดตัวแล้ว จำนวนของการแก้ไขสำหรับ Fedora และอูบุนตู
และรุ่นอื่น ๆ ของลินุกซ์และแน่นอน ถ้าคุณเรียกใช้โปรแกรมปรับปรุง 50 เครื่อง,
แม้ที่มากเกินไปจะเป็น ปรับปรุงและแก้ไข
แต่ที่มากเกินไปไม่ได้ ได้จริงๆที่มีช่องโหว่
เพราะถ้าคุณได้ tinkered กับเครื่องใช้ไฟฟ้า
และทำให้แล็ปท็อปของคุณต่อสาธารณชน สามารถเข้าถึงได้บนอินเทอร์เน็ตที่ไม่ได้
โดยค่าเริ่มต้นที่คุณได้ รับจริงที่ดีเพราะ
ของไฟร์วอลและเทคนิคอื่น ๆ
>> แต่มันก็เป็นตัวอย่างที่ชัดเจนของข้อผิดพลาด ที่เราได้อาศัยอยู่สำหรับตัวอักษร 20
ปีและผู้ที่รู้ถ้ามีคน ตลอดเวลานี้ได้เป็นที่รู้จักกันเกี่ยวกับมันได้หรือไม่
และในความเป็นจริงนี้เป็นหนึ่งใน ความท้าทายพื้นฐาน
ว่าเราจะได้เห็นต่อไปใน ภาคการศึกษาที่เกี่ยวกับการรักษาความปลอดภัย
คือเช่นเดียวกับในโลกแห่งความจริง คนดีเป็นเบี้ยล่าง
เพื่อให้คนเลวออกเราต้อง ให้แน่ใจว่าประตูทุกบานถูกล็อค
ที่หน้าต่างทุกบานมีความปลอดภัยที่ จุดของรายการเข้าไปในบ้านทุก
มีความปลอดภัยเพื่อให้คนเลวออก
แต่สิ่งที่ไม่เป็นคนเลวต้อง ทำอย่างไรที่จะประนีประนอมจริงที่บ้านของคุณ
และขโมยจากคุณ?
เขาหรือเธอก็จะพบคนที่ปลดล็อค ประตูหน้าต่างที่ขาดอย่างใดอย่างหนึ่งหรือสิ่งที่
ตามเส้นเหล่านั้นและมันเป็น สิ่งที่เหมือนกันในการรักษาความปลอดภัยคอมพิวเตอร์
เราสามารถเขียนล้าน บรรทัดของรหัสการเขียนโปรแกรม
และการใช้จ่ายหลายร้อยหรือหลายพัน ชั่วโมงพยายามที่จะได้รับมันถูกต้อง
แต่ถ้าคุณทำเพียงหนึ่ง ความผิดพลาดในความถูกต้อง
คุณสามารถวางระบบทั้งหมดและ แน่นอนในกรณีนี้อินเทอร์เน็ตทั้งหมด
และโลกที่มีความเสี่ยง
>> ดังนั้นถ้าคุณต้องการที่จะเรียนรู้เพิ่มเติม เกี่ยวกับเรื่องนี้ไปที่ URL นี้ที่นี่
ไม่มีความจำเป็นสำหรับการดำเนินการไม่ได้ คืนนี้ถ้าคุณ
ในหมู่ผู้ที่สะดวกสบายมากขึ้น ได้รับการใช้งานเว็บของคุณเอง
เซิร์ฟเวอร์ซึ่งในกรณีที่คุณควร ในความเป็นจริงการปรับปรุงซอฟต์แวร์ของคุณ
>> และนี้ก็คือชื่อของ คำพูดและตอนนี้กระดาษ
ที่เราได้มีการเชื่อมโยงใน เว็บไซต์ของหลักสูตรสำหรับวันนี้
มันเป็นเพื่อน ชื่อเคน ธ อมป์สันที่
ได้รับการยอมรับที่มีชื่อเสียงมาก ที่ได้รับรางวัลในสาขาวิทยาศาสตร์คอมพิวเตอร์
และเขาได้ให้คำพูดนี้มาหลายปี ที่ผ่านมาเป็นหลักในหัวข้อเดียวกันนี้
ขอให้คนที่คำถามที่ ควรคุณจริงๆ
ความไว้วางใจในที่สุด ซอฟแวร์ที่คุณได้รับ?
ยกตัวอย่างเช่นเราทุกคนมี รับการเขียนโปรแกรม
และเราได้รวบรวม พวกเขาด้วยเสียงดังกราว
และความรู้ของคุณที่คุณเขียน โปรแกรมใด ๆ สำหรับ CS50 ที่มี
ประตูด้านหลังของทุกประเภทมีวิธีคือ ที่คนเลวถ้าใช้โปรแกรมของคุณ
อาจจะใช้เวลามากกว่าคอมพิวเตอร์ของคุณ
อาจจะไม่ได้ใช่มั้ย?
มาริโอและโลภและเครดิต
เหล่านี้เป็นโปรแกรมขนาดเล็กสวยทั้งหมด
คุณจะต้องสวย ไม่ดีถ้าคุณจริง
ทำให้คอมพิวเตอร์ของคุณเสี่ยง หลังจากเขียน 10 หรือ 20 สายรหัส
หรืออย่างน้อยก็ไม่ได้ตระหนักถึงบางอย่าง ผลกระทบการรักษาความปลอดภัย
ตอนนี้ผมบอกว่าคะนอง แต่เรากำลังจะไปดูวันนี้
และในสัปดาห์นี้ก็จริง จริงๆเรื่องง่าย
จะไม่ดีและทำให้แม้แต่ โปรแกรมสั้นที่มีช่องโหว่
>> แต่ตอนนี้อย่างน้อยตระหนักถึง ว่าคำถามที่ถูกถามนี่
เป็นเรื่องเกี่ยวกับเสียงดังกราวในคอมไพเลอร์
ทำไมเราได้รับการไว้วางใจเสียงดังกราว สำหรับที่ผ่านมาสองหรือสามสัปดาห์?
ใครที่จะบอกว่าใครก็ตามที่เขียนเสียงดังกราว ไม่ได้มี "ถ้า" เงื่อนไขในการมี
ที่เป็นหลักฉีดศูนย์บาง และคนที่เข้ามาในทุกโปรแกรมจะรวบรวม
ที่จะปล่อยให้เขาหรือการเข้าถึงของเธอ คอมพิวเตอร์ของคุณเมื่อคุณกำลังนอนหลับ
และแล็ปท็อปของคุณฝาเปิด และคอมพิวเตอร์ของคุณทำงาน?
ใช่มั้ย?
เรามีการจัดเรียงของระบบเกียรติสิทธินี้ ตอนนี้ที่เราเชื่อว่าเสียงดังกราวเป็น Legit
ที่คุณไว้วางใจว่าเครื่องเป็น Legit
ที่คุณไว้วางใจที่แท้จริงทุกโปรแกรม คุณ Mac หรือ PC เป็นที่น่าเชื่อถือ
และเป็นข้อผิดพลาดง่ายๆนี้แนะนำ แม้ว่ามันจะไม่เป็นอันตราย
ที่แน่นอนไม่ได้ น่าจะเป็นกรณีที่
>> ดังนั้นคุณควรจะกลัวเป็นนรก
ตรงไปตรงมาไม่มีการง่าย วิธีการแก้อื่น ๆ
กว่าการเรียงลำดับของการรับรู้ทางสังคม จากความซับซ้อนที่เพิ่มขึ้น
ที่เรากำลังสร้างอยู่ด้านบน ของระบบคอมพิวเตอร์ของเรา
และวิธีการมากขึ้นความเสี่ยง เราเป็นอย่างดีอาจจะ
>> ตอนนี้กับที่กล่าวว่าการฝ่าวงล้อม
ดังนั้นการฝ่าวงล้อมเป็นปัญหาตั้งสามและ ฝ่าวงล้อมเป็นเกมจากปีกลาย
ที่คุณอาจจำได้ แต่ สำหรับเราในปัญหาตั้งสาม
มันช่วยให้เราสามารถใช้ สิ่งที่สำรองรอย
เพื่อที่ว่าเมื่อเรากำลังเขียนโปรแกรม แม้จะอยู่ในหน้าต่างเทอร์มิเช่นนี้
จริง ๆ แล้วเราสามารถทำงานได้ในที่สุด โปรแกรมกราฟิกไม่
ซึ่งแตกต่างจากคนที่เรามี การเข้าถึงใน Scratch
ดังนั้นนี้เป็นของพนักงาน การดำเนินการแหกคุก
ซึ่งเป็นเพียงแค่นี้อิฐทำลาย เกมที่คุณย้ายใบพัดของคุณกลับมา
มาและคุณตีลูก กับอิฐสีเหล่านั้นขึ้นด้านบน
ดังนั้นนี้จะนำเรา การจัดเรียงของกลับไปที่
เราสามารถที่จะมากได้อย่างรวดเร็ว มีรอยขีดข่วนและตอนนี้กับ C,
การดำเนินการของเราเอง อินเตอร์เฟซผู้ใช้แบบกราฟิก
>> แต่ยิ่งไปกว่านั้นนี้ ชุดแรกที่แสดงให้เห็นถึงปัญหา
ที่เรากำลังให้ คุณพวงของรหัส
และในความเป็นจริงผมนำมาอย่างชัดเจน ให้ความสนใจกับเรื่องนี้เพราะโดยเฉพาะอย่างยิ่ง
สำหรับผู้ที่สะดวกสบายน้อยกว่านี้ ปัญหาการตั้งค่าอย่างน้อยได้อย่างรวดเร็วก่อน
จะรู้สึกเหมือน เราได้นำมันขึ้นบาก
เพราะเราได้ให้คุณ สำหรับบางส่วนของการค้นหา
และการเรียงลำดับปัญหาในการ pset, พวงของรหัสที่เราเขียน,
และคู่ของการแสดงความคิดเห็น ที่ว่า "จะทำ"
ที่คุณจะต้องกรอกในช่องว่าง
ดังนั้นไม่น่ากลัวเกินไป แต่ มันเป็นครั้งแรก
เรากำลังส่งคุณรหัสที่คุณจำเป็นต้อง ครั้งแรกที่อ่านเข้าใจและเพิ่มการ
และเสร็จสมบูรณ์
>> แล้วกับแหกคุก เรากำลังจะทำเช่นเดียวกัน
ให้คุณไม่กี่โหลบรรทัดที่มากขึ้น ของรหัสที่ตรงไปตรงมาให้คุณ
จำนวนมากที่มีกรอบการทำงานสำหรับ เกม แต่หยุดสั้น
ของการใช้อิฐ และลูกและพาย,
แต่เราใช้คุณสมบัติอื่น ๆ บาง
และแม้กระทั่งการที่ได้อย่างรวดเร็วก่อนอีกครั้ง โดยเฉพาะอย่างยิ่งถ้าความสะดวกสบายน้อยลง
อาจดูเหมือนน่ากลัวโดยเฉพาะอย่างยิ่งและ คุณคิดว่ามีฟังก์ชั่นใหม่มากมาย
คุณต้องการที่จะมัดใจ ไปรอบ ๆ และที่เป็นความจริง
แต่เก็บไว้ในใจก็ ค่อนข้างชอบเกา
ราคาที่คุณไม่ได้ใช้ทั้งหมดของ ชิ้นส่วนปริศนาในรอยขีดข่วน
ราคาที่คุณไม่ได้สนใจที่จะห่อ ใจของคุณไปรอบ ๆ ทั้งหมดของพวกเขา
เพราะมันต้องใช้เวลาเป็น อย่างรวดเร็วจะเข้าใจโอ้
นั่นคือสิ่งที่ฉันจะทำ กับชิ้นส่วนปริศนาที่
และแน่นอนในปัญหาการตั้งค่า 3 สเปคที่เราจะชี้ให้คุณ
ในเอกสารที่จะ แนะนำคุณกับฟังก์ชั่นใหม่บางอย่าง
และในที่สุดการเขียนโปรแกรม สร้างคุณใช้
เงื่อนไขห่วง ตัวแปรและฟังก์ชั่น
จะเป็นเหมือนกับ สิ่งที่เราได้เห็นป่านนี้
>> ดังนั้นแน่นอนสิ่งที่เราจะให้ คุณเป็นรหัสตัวอย่างบางอย่างที่
ช่วยให้คุณสามารถสร้างหน้าต่าง ที่มีลักษณะไม่ต่างจากนี้
และในที่สุดทำให้มันกลายเป็น บางสิ่งบางอย่างมากเช่นนี้
เพื่อใช้ประโยชน์จาก CS50, หารือเกี่ยวกับเวลาทำงานและอื่น ๆ
และนำความสะดวกสบายในความเป็นจริงว่า ปริมาณของรหัสที่คุณต้องเขียน
เป็นจริงไม่ทั้งหมดที่มาก
ความท้าทายแรกเป็นเพียงการปรับตัว ตัวเองให้รหัสบางอย่างที่เราได้เขียน
>> คำถามใด ๆ เกี่ยวกับ pset3, ทำพิษหรือ?
>> ผู้ชม: มันดูเหมือนว่า จะผ่านกับการฝ่าวงล้อม
ว่ารหัสที่เกือบจะ รูปแบบเชิงวัตถุ
แต่ผมคิดว่าซีเป็น โปรแกรมเชิงวัตถุ
ลำโพง 1: คำถามที่ดี
ดังนั้นในการมองผ่าน รหัสกระจายรหัส
เราเขียน pset3, สำหรับผู้ที่คุ้นเคยมัน
ดูเหมือนว่ามัน เล็ก ๆ น้อย ๆ เชิงวัตถุ
คำตอบสั้น ๆ คือมันเป็น
มันเป็นประมาณของวิธีการที่คุณ อาจจะทำรหัสเชิงวัตถุโดยใช้
ภาษาเช่น C แต่มันเป็น ยังคงขั้นตอนในที่สุด
มีวิธีการใดที่อยู่ภายในเป็น ตัวแปรตามที่คุณจะเห็น
แต่มันเป็นเรื่องที่ชวนให้นึกถึงว่า
และเราจะเห็นคุณลักษณะที่อีกครั้ง เมื่อเราได้รับการ PHP และ JavaScript
ในช่วงปลายภาคการศึกษา
แต่ตอนนี้คิดว่ามันเป็น คำใบ้ของสิ่งที่จะมา
คำถามที่ดี
ขวาทั้งหมด
ดังนั้นผสานการจัดเรียงเป็นวิธีการที่เรา สิ่งซ้ายครั้งสุดท้าย
และผสานการจัดเรียงเป็นเย็นใน รู้สึกว่ามันเป็นมากได้เร็วขึ้น
อย่างน้อยขึ้นอยู่กับการทดสอบคร่าวๆ เราได้เมื่อสัปดาห์ที่แล้วกว่าพูดฟอง
เรียงลำดับการจัดเรียงตัวเลือกแทรกการจัดเรียง
และสิ่งที่เป็นระเบียบก็เป็นเพียงแค่ วิธีที่ชัดถ้อยชัดคำและหมดจด
คุณสามารถแสดงมันออกมา
และเราไม่สิ่งที่บอกว่ามันเป็นบน ผูกพันกับเวลาทำงานของการผสาน
ค้นหา?
ใช่?
>> ผู้ชม: n log n?
>> ลำโพงแบบ 1: n log n ขวา n log n
และเราจะกลับมากับสิ่งที่ จริงๆหมายถึงหรือในกรณีที่ว่ามาจาก
แต่เรื่องนี้เป็นเรื่องที่ดี กว่าสิ่งที่เวลาทำงาน
ที่เราเห็นฟอง การเลือกและการจัดเรียงแทรก?
ดังนั้น n กำลังสอง n กำลังสอง มีขนาดใหญ่กว่านี้
และแม้ว่ามันจะไม่ได้ค่อนข้างชัดเจน รู้บันทึก n ที่มีขนาดเล็กกว่า n,
ดังนั้นถ้าคุณทำครั้ง n สิ่งที่มีขนาดเล็กกว่า n,
มันเป็นไปได้น้อยกว่า n กำลังสอง
มันเป็นบิตของสัญชาตญาณมี
แต่เราจ่ายราคานี้
มันเป็นเร็วขึ้น แต่รูปแบบที่เริ่มต้น จะโผล่ออกมาเมื่อสัปดาห์ที่แล้วได้รับการแลกเปลี่ยนนี้
ผมได้รับประสิทธิภาพที่ดีขึ้น เวลาฉลาด แต่สิ่งที่
ฉันไม่ต้องใช้จ่ายในที่อื่น ๆ มือเพื่อให้บรรลุที่?
>> ผู้ชม: หน่วยความจำ
ลำโพง 1: พูดอีกครั้งหรือไม่
ผู้ชม: หน่วยความจำ
ลำโพง 1: หน่วยความจำหรือ พื้นที่มากขึ้นโดยทั่วไป
และมันก็ไม่ใช่ซุปเปอร์ ที่เห็นได้ชัดกับมนุษย์ของเรา
แต่จำได้ว่าอาสาสมัครของเรา ได้ก้าวไปข้างหน้าและก้าว
กลับเป็นว่ามีอาร์เรย์ ที่นี่และราวกับว่ามี
อาร์เรย์ที่สองที่นี่ พวกเขาสามารถใช้เพราะเรา
บางแห่งจำเป็นที่จะรวมคนเหล่านั้น
เราอาจจะไม่ได้เป็นเพียงสลับพวกเขาในสถานที่
เพื่อรวมอำนาจการจัดเรียง เป็นพื้นที่มากขึ้นซึ่ง
เราไม่จำเป็นต้องมี อัลกอริทึมอื่น ๆ
แต่กลับเป็นว่ามันเป็นได้เร็วขึ้นมาก
และตรงไปตรงมาในพื้นที่ของโลกที่แท้จริง RAM days-- เหล่านี้ฮาร์ดดิสก์เขียนแล้ว
ที่ค่อนข้างถูกและเพื่อให้เป็น ไม่จำเป็นต้องเป็นสิ่งที่ไม่ดี
>> ดังนั้นลองมาดูอย่างรวดเร็วเล็ก ๆ น้อย ๆ มากขึ้นมีระบบที่สิ่งที่เราทำ
และเหตุผลที่เราบอกว่ามันเป็น n log n
ดังนั้นนี่คือหมายเลขแปด แปดอาสาสมัครเรามีครั้งสุดท้าย
และสิ่งแรกที่ผสาน เรียงบอกให้เราทำคืออะไร
ผู้ชม: แบ่งเป็นสอง
ลำโพง 1: พูดอีกครั้งหรือไม่
ผู้ชม: แบ่งเป็นสอง
ลำโพง 1: แบ่งในสองขวา
นี้เป็นอย่างมากที่ชวนให้นึกถึง สมุดโทรศัพท์ของหาร
และพิชิตมากกว่าปกติ
ดังนั้นเราจึงมองไปที่ซีกซ้าย
และจากนั้นเมื่อเรากล่าวว่าการจัดเรียง ครึ่งด้านซ้ายขององค์ประกอบ
สิ่งที่พวกเราไปพูด?
เรียงครึ่งด้านซ้ายของทางด้านซ้าย ครึ่งหนึ่งซึ่งได้รับอนุญาตให้เราไป
หลังจากที่แบ่งเป็นสอง มุ่งเน้นไปที่สี่และทั้งสอง
>> คุณมีวิธีการเรียงลำดับรายการขณะนี้ใน สีเหลืองขนาดสองโดยใช้การผสานเรียง?
ดีแบ่งออกในช่วงครึ่งปี และจัดเรียงครึ่งที่เหลือ
และนี่คือสิ่งที่ ได้ในเวลาสั้น ๆ โง่ ๆ
คุณมีวิธีการเรียงลำดับรายการที่ของ ขนาดหนึ่งเช่นหมายเลขสี่ที่นี่?
มันแยก
คุณกำลังทำ
>> แต่แล้วคุณจะเรียงลำดับรายการของ หนึ่งเมื่อมันเป็นตัวเลขสองขนาด?
ดีสิ่งเดียวกัน แต่ตอนนี้สิ่งที่เป็น ที่สามและขั้นตอนสำคัญในการผสานเรียง?
คุณมีการควบรวมกิจการทางด้านซ้าย ครึ่งหนึ่งและอีกครึ่งหนึ่งทางด้านขวา
และเมื่อเราทำที่เรามอง ที่สี่เรามองที่สอง
เราตัดสินใจที่ถูกต้องทั้งหมด เห็นได้ชัดว่าทั้งสองมาก่อน
ดังนั้นเราจึงใส่สองในของ สถานที่ตามด้วยสี่
และตอนนี้คุณมีชนิดของย้อนกลับ และนี่คือการจัดเรียงของลักษณะ
ของขั้นตอนวิธีเช่นการผสาน เรียงย้อนกลับในหน่วยความจำ
สิ่งที่เป็นบรรทัดถัดไปของเรื่องหรือไม่
สิ่งที่ฉันควรจะมุ่งเน้นที่การต่อไปหรือไม่
ครึ่งขวาของด้านซ้าย ครึ่งซึ่งเป็นหกและแปด
>> เพื่อให้ฉันเพียงแค่ขั้นตอนผ่านทางนี้ โดยไม่ต้อง belaboring จุดมากเกินไป
หกสิบแปดแล้วหกเป็น เรียงลำดับแปดจะเรียง
ผสานเข้าด้วยกันเช่นนั้น และตอนนี้เป็นขั้นตอนที่ใหญ่ต่อไป
เป็นของหลักสูตรการเรียงลำดับครึ่งขวาจาก ขั้นตอนแรกของขั้นตอนวิธีนี้
ดังนั้นเราจึงมุ่งเน้นไปที่หนึ่งสามเจ็ดห้า
จากนั้นเราจะมุ่งเน้นไปที่ซีกซ้าย
ซีกซ้ายของที่ครึ่งขวาของ ที่แล้วมารวมกันในหนึ่งและสาม
จากนั้นครึ่งขวาแล้วซ้ายครึ่ง ของมันแล้วครึ่งขวาของมัน
ผสานในและตอนนี้สิ่งที่ยังคงอยู่ในขั้นตอนที่?
รวมครึ่งซ้ายขนาดใหญ่และขนาดใหญ่ ครึ่งขวาดังนั้นหนึ่งจะไปลงที่นั่น
แล้วสองแล้วสามแล้วสี่แล้ว ห้าแล้วหกแล้วเจ็ดแปดแล้ว
>> ดังนั้นตอนนี้จึงเป็นเหตุผลที่ในท้ายที่สุดนี้เปิดเผย โดยเฉพาะอย่างยิ่งถ้า n และลอการิทึมมากขึ้น
โดยทั่วไปค่อนข้างหนีคุณ อย่างน้อยในความทรงจำที่ผ่านมา?
ดีสังเกตเห็นความสูงของสิ่งนี้
เรามีแปดองค์ประกอบและเรา แบ่งออกเป็นสองโดยสองสอง
เพื่อเข้าสู่ระบบฐานสองแปดทำให้เราสาม
และความไว้วางใจผมว่าถ้า หมอกเล็ก ๆ น้อย ๆ ที่
แต่เข้าสู่ระบบฐานสองแปดสาม ดังนั้นเราจึงได้ทำสามชั้นของการรวม
และเมื่อเรารวม องค์ประกอบกี่องค์ประกอบ
พวกเรามองไปที่ในแต่ละแถวเหล่านั้นหรือไม่
รวม n ขวา?
เพราะจะรวมแถวบนสุด แม้ว่าเราทำมันทีละน้อย
ในที่สุดเราสัมผัสจำนวนทุกครั้ง
และในแถวที่สองเพื่อ รวมรายการที่สองขนาด
เราต้องสัมผัสแต่ละองค์ประกอบหนึ่งครั้ง
และจริงๆแล้วที่นี่ อย่างชัดเจนในแถวที่ผ่านมา
เรามีการสัมผัสกันของคนเหล่านั้น องค์ประกอบหนึ่งครั้ง แต่เพียงครั้งเดียว
อยู่ในที่นี้เพื่อให้แล้ว n บันทึก n ของเรา
>> และขณะนี้เป็นเพียงการทำสิ่งเล็ก ๆ น้อย ๆ มากขึ้นอย่างเป็นทางการเพียงสักครู่ถ้าคุณ
มีถึงตอนนี้วิเคราะห์นี้ ที่จัดเรียงของระดับที่สูงขึ้น
และพยายามที่จะตัดสินใจดีว่า คุณอาจจะไปเกี่ยวกับการแสดง
เวลาทำงานของอัลกอริทึมนี้ เพียงโดยดูที่มันและไม่
โดยใช้ตัวอย่างที่วางแผนไว้?
ดีเท่าใดเวลาที่คุณจะพูดว่า ขั้นตอนเช่นนี้ในสีเหลืองจะใช้เวลา
ถ้า n <2 คืน?
ที่โอใหญ่ของอะไร
ดังนั้นฉันเห็นหนึ่งดังนั้นขั้นตอนเดียว บางทีขั้นตอนที่สองเพราะถ้า
แล้วกลับ แต่ก็ เวลาคงที่ใช่มั้ย?
ดังนั้นเราจึงกล่าวว่า (1) และที่ วิธีการที่ฉันจะแสดงนี้
T, เพียง แต่จะใช้เวลา
n คือขนาดของการป้อนข้อมูลที่ ดังนั้น T (n) เพียงวิธีแฟนซี
ที่บอกทำงาน ใส่เวลาที่กำหนดของขนาด n
เป็นไปได้ในการสั่งซื้อ เวลาคงที่ใน O (1)
>> แต่อย่างอื่นสิ่งที่เกี่ยวกับการนี​​้
วิธีที่คุณจะแสดงความ เวลาการทำงานของเส้นสีเหลืองนี้
T ของอะไร
คุณสามารถชนิดของโกงที่นี่ ตอบคำถามของฉันหน
ดังนั้นถ้าเวลาทำงานใน โดยทั่วไปเราก็บอกว่าเป็น T (n)
และตอนนี้คุณกำลังชนิดของถ่อนี่และ กล่าวว่าดีเพียงค้นหาครึ่งซ้าย
แล้วเรียงครึ่งขวา
เราอาจจะเป็นตัวแทนของสัญลักษณ์ว่า เวลาทำงานของเส้นสีเหลืองนี้
T ของอะไร
สิ่งที่ขนาดของการป้อนข้อมูลหรือไม่
n กว่าสอง
ทำไมฉันจึงไม่เพียงกล่าวว่า?
และนี่คืออีก T (n / 2) และจากนั้น อีกครั้งถ้าผมรวมสองส่วนที่เรียงลำดับ
วิธีการหลายองค์ประกอบฉันจะ ที่จะมีการสัมผัสทั้งหมด?
n
ดังนั้นฉันสามารถแสดงนี้ เพียงเพื่อให้ชนิดของแฟนซี
เป็นเวลาในการทำงานโดยทั่วไป
T (n) เป็นเพียงเวลาทำงานของ T (n / 2) บวก T (n / 2), ที่เหลือครึ่งหนึ่งและอีกครึ่งหนึ่งที่ถูกต้อง
บวก O (n) ซึ่งอาจจะเป็น n ขั้นตอน แต่บางทีถ้าฉันใช้สองนิ้วมือ
มันเป็นสองเท่า ขั้นตอน แต่ก็เป็นเชิงเส้น
มันเป็นจำนวนขั้นตอนบางอย่าง นั่นคือปัจจัยของ n,
ดังนั้นเราอาจจะแสดงนี้เป็นนี้
และนี่คือที่ตอนนี้เราจะเตะกับ ด้านหลังของหนังสือเรียนคณิตศาสตร์ของโรงเรียนมัธยม
เราที่เกิดขึ้นในท้ายที่สุด ลงท้ายเท่ากับนี้ครั้ง n log n,
ถ้าคุณทำจริงออก คณิตศาสตร์มากขึ้นอย่างเป็นทางการ
>> เพื่อให้เป็นเพียงสองมุมมอง
หนึ่งที่มีตัวเลข ยากรหัสตัวอย่างที่เป็นตัวแทน
โดยใช้หมายเลขแปดและอื่น ๆ ลักษณะทั่วไปที่วิธีการที่เราไปถึงที่นั่น
แต่สิ่งที่น่าสนใจจริงๆที่นี่ เป็นอีกครั้งที่ความคิดของการขี่จักรยานนี้
ฉันไม่ได้ใช้สำหรับลูป
ฉันชนิดของการกำหนด บางสิ่งบางอย่างในแง่ของตัวเอง
ไม่เพียง แต่กับเรื่องนี้ ฟังก์ชั่นทางคณิตศาสตร์
แต่ยังอยู่ในแง่ของรหัสเทียมนี้
รหัสเทียมนี้เป็น recursive ในการที่ทั้งสองเส้น
เป็นหลักบอกมันไป ใช้ตัวเองที่จะแก้ปัญหาที่มีขนาดเล็ก
ปัญหาที่มีขนาดเล็กลง และจากนั้นอีกครั้งและอีกครั้ง
และอีกครั้งจนกว่าเราจะลดลงได้ ลงไปนี้กรณีฐานที่เรียกว่า
>> จึงขอจริงวาดน่าสนใจมากขึ้น ใช้เวลาห่างจากนี้ดังต่อไปนี้
ให้ฉันไปเป็น Gedit และใช้เวลา ดูที่บางส่วนของรหัสที่มาของวันนี้
โดยเฉพาะอย่างยิ่งตัวอย่างนี้ที่นี่
Sigma 0 ซึ่งเห็นได้ชัดเพิ่ม หมายเลขหนึ่งถึง n
ดังนั้นเรามาดูสิ่งที่คุ้นเคย และไม่คุ้นเคยที่นี่
ครั้งแรกที่เรามีคู่ของ รวมถึงเพื่อให้มีอะไรใหม่
ต้นแบบ
ฉันมีหมอกเล็กน้อยใน นี้หลังจากที่ไม่กี่วัน
แต่เราไม่บอกว่าสิ่งที่ เป็นต้นแบบของฟังก์ชั่นคืออะไร?
ผู้ชม: [ไม่ได้ยิน]
ลำโพง 1: อะไรที่?
ผู้ชม: เราประกาศ
ลำโพง 1: เราประกาศ
เพื่อให้คุณได้รับการเรียนการสอนเสียงดังกราวเดี๋ยวก่อน ไม่จริงการดำเนินการนี​​้ยัง
แต่บางแห่งในไฟล์นี้สมมุติ เป็นไปได้ฟังก์ชันที่เรียกว่าอะไร
ซิกม่า
และนี่เป็นเพียงสัญญาที่ มันจะมีลักษณะเช่นนี้
มันจะใช้เวลาเป็นจำนวนเต็ม input-- และฉันสามารถเป็นที่ชัดเจนมากขึ้น
และพูด int n --and มัน จะกลับ int,
แต่หมายถึงอัฒภาคมมผมจะได้รับรอบ ในการดำเนินการเพียงเล็กน้อยนี้ในภายหลัง
อีกครั้งเสียงดังกราวเป็นใบ้
มันเท่านั้นจะรู้ว่าสิ่งที่ คุณบอกว่าบนลงล่าง
ดังนั้นเราจึงจำเป็นที่จะต้องอย่างน้อยให้ มันคำใบ้ของสิ่งที่จะมา
>> ตอนนี้ให้ดูที่หลักที่นี่
ให้เลื่อนลงมาที่นี่และ เห็นสิ่งที่สำคัญคือการทำ
มันไม่ได้ว่านานของการทำงานและ ในความเป็นจริงสร้างที่นี่เป็นที่คุ้นเคย
ผมประกาศตัวแปร n และจากนั้น ผมรบกวนผู้ใช้อีกครั้งและอีกครั้ง
สำหรับจำนวนเต็มบวกใช้ GetInt, และทางออกเดียวที่ออกจากวงนี้
เมื่อผู้ใช้มีการปฏิบัติ
ทำในขณะที่เราได้นำมาใช้เพื่อ รบกวนผู้ใช้ในทางที่
ขณะนี้เป็นที่น่าสนใจ
ฉันประกาศ int เรียกว่า "คำตอบ".
ฉันกำหนดค่าตอบแทน ฟังก์ชั่นที่เรียกว่า "ซิกม่า".
ผมไม่ทราบว่าสิ่งที่ทำ แต่ ผมจำได้ประกาศว่าช่วงเวลาที่ผ่านมา
แล้วฉันผ่านใน ค่าที่ผู้ใช้พิมพ์ใน n,
และแล้วฉันรายงานคำตอบ
ดีขอเลื่อนกลับ เพียงสักครู่
ลองไปข้างหน้าลงในไดเรกทอรีนี้ให้ ซิก 0, และที่จริงรันโปรแกรมนี้
และดูสิ่งที่เกิดขึ้น
ดังนั้นถ้าฉันไปข้างหน้าและการทำงาน โปรแกรมนี้ ./sigma-0,
และฉันพิมพ์ในเชิงบวก จำนวนเต็มเหมือนสอง, Sigma,
เป็นสัญลักษณ์กรีกหมายถึงการเป็นเพียง จะเพิ่มขึ้นตัวเลขทั้งหมดจาก
เป็นศูนย์ได้ถึงสอง
ดังนั้น 0 บวก 1 บวก 2
ดังนั้นนี้หวังว่าจะให้ฉัน 3
นั่นคือทั้งหมดที่มันทำ
และในทำนองเดียวกันถ้าฉันทำงานนี้อีกครั้ง และฉันจะให้มันจำนวนสาม
ที่ 3 บวก 2 เพื่อให้เป็น 5 บวก 1 ควรให้ฉัน 6
แล้วถ้าฉันได้รับบ้าจริงๆและ เริ่มพิมพ์ในจำนวนที่ใหญ่กว่า
มันควรจะให้ฉัน เงินก้อนใหญ่และขนาดใหญ่
ดังนั้นนั่นคือทั้งหมดที่
>> ดังนั้นสิ่งที่จะซิกมีลักษณะอย่างไร
ดีก็ตรงไปตรงสวย
มันเป็นวิธีที่เราจะได้ดำเนินการ นี้สำหรับคู่สัปดาห์ที่ผ่านมา
"int" เป็นไปได้ชนิดกลับ
ซิกม่าเป็นชื่อและจะใช้เวลา ตัวแปรเมตรแทน n
ฉันจะเปลี่ยนที่ขึ้นด้านบน
แล้วนี้เป็นเพียงการตรวจสอบสุขภาพจิตดี
เราจะเห็นว่าทำไมในช่วงเวลา
ตอนนี้ผมประกาศตัวแปรอื่น สรุปเริ่มต้นมันให้เป็นศูนย์
แล้วฉันมีนี้สำหรับวง การทำซ้ำเห็นได้ชัดเพื่อความชัดเจน
จาก i = 1 ได้ถึง = เมตรซึ่งเป็น สิ่งที่ผู้ใช้พิมพ์ในและจากนั้นฉัน
เพิ่มทุนเช่นนี้
แล้วกลับผลรวม
>> ดังนั้นสองสามคำถาม
หนึ่งผมเรียกร้องในความคิดเห็นของฉันที่นี้ หลีกเลี่ยงความเสี่ยงของวง จำกัด
ทำไมจะผ่านในจำนวนลบ ชักจูงอาจวง จำกัด ?
>> ผู้ชม: คุณจะได้ไม่ถึงเมตร
>> ลำโพง 1: ไม่เคยถึงเมตร
แต่มถูกส่งผ่านไปในเพื่อให้เป็น พิจารณาตัวอย่างง่ายๆ
หากเมตรถูกส่งโดย ผู้เป็นหนึ่งในเชิงลบ
โดยไม่คำนึงถึงหลัก
หลักปกป้องเราจาก นี้เกินไปดังนั้นฉันแค่
เป็นจริงทางทวารหนั​​กกับ ซิกม่ายังให้แน่ใจ
ที่ใส่ไม่สามารถลบ
ดังนั้นหากเมตรเป็นลบ สิ่งที่ต้องการลบหนึ่ง
สิ่งที่จะเกิดขึ้นได้อย่างไร
ดีฉันจะไป ได้รับการเริ่มต้นได้ที่หนึ่ง
และแล้วฉันเป็นไปได้ น้อยกว่าหรือเท่ากับ M?
>> Stand by
ที่ was-- ให้ไม่ได้ ให้ระวังเรื่องนี้
ผมไม่ได้ถามคำถามว่าเพราะ ความเสี่ยงที่ฉันกำลังยิ่งทำให้
จะไม่เกิดขึ้นเพราะผมเป็น มักจะเป็นตกลง than-- มากขึ้น
ผมถอยคำถามว่า
ตกลง
ให้มุ่งเน้นเฉพาะในส่วนที่นี่
ทำไมฉันถึงได้ประกาศบางส่วน ด้านนอกของวงหรือไม่
แจ้งให้ทราบล่วงหน้าในบรรทัด 49 ฉัน ประกาศฉันภายในของวง
แต่ออนไลน์ 48 ฉัน ประกาศบางส่วนนอก
ใช่
ผู้ชม: [ไม่ได้ยิน]
ลำโพง 1: ตรวจสอบว่า
ดังนั้นแรกและสำคัญที่สุดผมก็ทำไม่ได้ ต้องการที่จะประกาศและเริ่มต้นรวม
ให้เป็นศูนย์ภายในของ วงที่ซ้ำทุก
เพราะเห็นได้ชัดว่าจะเอาชนะ วัตถุประสงค์ของการสรุปตัวเลข
ฉันอยากจะให้เปลี่ยน ค่ากลับไปที่ศูนย์
และยังมีอะไรอีกที่เป็นความลับมากขึ้น เหตุผลในการตัดสินใจการออกแบบที่เหมือนกันหรือไม่
ใช่
>> ผู้ชม: [ไม่ได้ยิน]
ลำโพง 1: แน่นอน
ผมต้องการที่จะเข้าถึงมันนอก ของวงเกินไปในสิ่งที่โฆษณาหรือไม่
53
และตามกฎของเราง่ายๆ จากคู่ของการบรรยายที่ผ่านมา
ตัวแปรที่ถูกกำหนดขอบเขตจริงๆที่จะ วงเล็บปีกกาที่ล้อมรอบพวกเขา
ดังนั้นหากผมไม่ได้ประกาศผลรวมภายใน ของวงเล็บปีกกาเหล่านี้นอก
ฉันไม่สามารถใช้งานได้ในบรรทัดที่ 53
วางวิธีอื่นถ้าผมประกาศ ผลรวมในที่นี่หรือแม้แต่ใน
สำหรับวงที่ฉันไม่สามารถเข้าถึงได้ใน 53
ตัวแปรจะมีประสิทธิภาพจะหายไป
ดังนั้นคู่ของเหตุผลมี
แต่ตอนนี้ขอกลับไป และดูสิ่งที่เกิดขึ้น
ดังนั้นซิกม่าได้รับการเรียกว่า
มันจะเพิ่มขึ้น 1 บวก 2 หรือ 1 บวก 2 บวก 3 และจากนั้นส่งกลับค่าที่
เก็บไว้ในคำตอบและ printf ที่นี่ คือเหตุผลที่ฉันเห็นบนหน้าจอ
ดังนั้นนี่คือสิ่งที่เราจะเรียกซ้ำ วิธีการที่ซ้ำเพียง
หมายถึงการใช้ห่วง
สำหรับวนลูปในขณะที่ทำในขณะที่ ห่วงเพียงแค่ทำอะไรบางอย่างอีกครั้ง
และอีกครั้งและอีกครั้ง
>> แต่ซิกเป็นชนิดของฟังก์ชั่นเรียบร้อยใน ที่ฉันสามารถใช้มันแตกต่างกัน
สิ่งที่เกี่ยวกับเรื่องนี้ที่ เพียงเพื่อให้เป็นชนิดของเย็น
ให้ฉันจริงๆกำจัด จำนวนมากของสิ่งที่ทำให้ไขว้เขว
เพราะฟังก์ชั่นนี้ เป็นจริงค่อนข้างง่าย
ให้ลดลงมันลงเพียงแค่ ถึงสี่สายหลักของ
และกำจัดของทั้งหมด ความคิดเห็นและวงเล็บปีกกา
นี้เป็นชนิดของเหลือเชื่อ การดำเนินการตามทางเลือกที่
สิทธิทั้งหมดอาจจะไม่เหลือเชื่อ แต่มันเป็นชนิดของเซ็กซี่ขวาทั้งหมด
ไปดูที่นี้มากขึ้นชัดถ้อยชัดคำ
มีเพียงสี่บรรทัดของรหัส ครั้งแรกที่ฉันมีการตรวจสอบสตินี้
ถ้า m คือน้อยกว่าหรือเท่ากับ ศูนย์ซิกทำให้รู้สึกไม่
มันควรเท่านั้นที่จะอยู่ใน กรณีสำหรับตัวเลขที่เป็นบวกนี้
ดังนั้นฉันแค่ไป กลับเป็นศูนย์โดยพล
เพื่อให้เราอย่างน้อยมี บางกรณีฐานที่เรียกว่า
>> แต่นี่คือความงาม
ความสมบูรณ์ของความคิดนี้เพิ่ม ตัวเลขจาก 1 ถึง n หรือเมตรในกรณีนี้
สามารถทำได้โดยชนิดของผ่านเจ้าชู้
ดีสิ่งที่เป็นผลรวมของ 1 เมตร?
ดีคุณรู้อะไรไหม
ก็เหมือนกันเป็นผลรวมของม บวกผลรวมของ 1 ถึงลบ 1 เมตร
ที่ดีที่คุณรู้อะไรไหม
สิ่งที่ซิกของมลบ 1 คืออะไร?
ดีถ้าคุณชนิดของตามนี้ เหตุผลก็เหมือนกับลบ 1 เมตร
บวกซิกของมลบ 2
เพื่อให้คุณสามารถชนิดของ just-- นี้เป็นเหมือนถ้าคุณเพียงแค่
พยายามที่จะรบกวนเพื่อน และพวกเขาขอให้คุณคำถาม
ชนิดที่คุณตอบสนองกับคำถาม คุณสามารถชนิดของให้ผ่านเจ้าชู้
แต่สิ่งที่สำคัญคือว่าถ้าคุณเก็บไว้ ทำให้คำถามที่มีขนาดเล็กและมีขนาดเล็ก
และมีขนาดเล็กคุณ ไม่ได้ขอให้สิ่งที่เป็นซิก
ของ n สิ่งที่ซิกของ n สิ่งที่ซิกของ n?
ที่คุณถามว่ามีอะไร ซิกของ n สิ่งที่ซิก
ของ n ลบ 1 สิ่งที่ซิกของ n ลบ 2?
ในที่สุดคำถามของคุณ กำลังจะกลายเป็นอะไร
เป็นซิกหนึ่งหรืออะไร ศูนย์บางค่าขนาดเล็กมาก
และทันทีที่คุณ ได้รับที่เพื่อนของคุณ
คุณจะไม่ได้ไปถาม คำถามเดียวกันอีกครั้ง
คุณเพียงแค่จะบอกว่าโอ้ก็เป็นศูนย์
เราเสร็จสิ้นการเล่นแบบนี้ ของเกมวงจรโง่
>> ดังนั้นการเรียกซ้ำคือการกระทำในการเขียนโปรแกรม ฟังก์ชั่นที่เรียกตนเอง
โปรแกรมนี้เมื่อรวบรวมและเรียกใช้เป็น จะไปทำงานตรงทางเดียวกัน
แต่สิ่งที่สำคัญคือภายใน ฟังก์ชั่นที่เรียกว่าซิก,
มีบรรทัดของรหัสที่นั้น เรากำลังเรียกร้องให้ตัวเอง
ซึ่งปกติจะไม่ดี
ตัวอย่างเช่นสิ่งที่ถ้าฉันเป็นครั้งแรก รวบรวมนี้เพื่อให้ sigma--
ทำให้ซิก 1 ./sigma-1
จำนวนเต็มบวกโปรด 50 1275
ดังนั้นสิ่งที่ฟังก์ชั่นที่ดูเหมือนว่าจะ จะขึ้นอยู่กับหนึ่งในการทดสอบที่ถูกต้อง
แต่ถ้าฉันจะได้รับอันตรายน้อย และลบกรณีฐานที่เรียกว่า
และเพียงแค่บอกว่าดีฉันเพียงแค่การทำ นี้ซับซ้อนมากขึ้นกว่าที่เป็นอยู่
ขอเพียงคำนวณซิก โดยการเมตรแล้วเพิ่ม
ในซิกของมลบหนึ่ง?
ดีสิ่งที่จะเกิดขึ้นที่นี่?
ลองซูมออก
ลองคอมไพล์โปรแกรม บันทึกมันคอมไพล์โปรแกรม
แล้วพร้อมที่ ./sigma-1 การซูมใน ป้อนจำนวนเต็มบวกโปรด 50
มีกี่คนที่เต็มใจ ที่จะสารภาพถึงเห็นว่า?
>> ตกลง
ดังนั้นนี้สามารถเกิดขึ้นได้สำหรับ จำนวนของเหตุผล
และตรงไปตรงมาในสัปดาห์นี้เรา เกี่ยวกับการที่จะให้ขึ้นของพวกเขา
แต่ในกรณีนี้ลอง ให้เหตุผลไปข้างหลัง
สิ่งที่อาจจะเกิดขึ้นที่นี่?
ความผิดส่วนเรากล่าวว่าที่ผ่านมา เวลาหมายถึงส่วนของหน่วยความจำ
สิ่งที่เกิดขึ้นไม่ดี
แต่สิ่งที่มันเป็น กลไกที่ไปเป๋
ที่นี่เพราะการกำจัดของฉัน ของว่ากรณีฐานที่เรียกว่า
ที่ฉันกลับมาเป็นค่าตายตัว?
คุณคิดว่าอะไรผิดพลาด?
ใช่
>> ผู้ชม: [ไม่ได้ยิน]
ลำโพง 1: อ่า
คำถามที่ดี
ดังนั้นขนาดของจำนวน ที่ผมสรุป
มีขนาดใหญ่เพื่อที่ว่ามันเกิน ขนาดของพื้นที่หน่วยความจำ
ความคิดที่ดี แต่ไม่ลึกซึ้ง จะก่อให้เกิดความผิดพลาด
ที่อาจก่อให้เกิดการล้นจำนวนเต็ม ที่บิตเพียงแค่พลิก
แล้วเราผิดพลาดใหญ่จริงๆ หมายเลขเช่นจำนวนลบ
แต่ที่ตัวเองจะไม่ทำให้เกิดความผิดพลาด
เพราะในตอนท้ายของ วัน int เป็น 32 บิต
คุณจะไม่ ตั้งใจขโมยบิต 33
แต่เป็นความคิดที่ดี
ใช่
>> ผู้ชม: [ไม่ได้ยิน]
ลำโพง 1: วิธีการ ไม่เคยหยุดทำงาน
และแน่นอนมันเรียกตัวเองอีกครั้ง และอีกครั้งและอีกครั้งและอีกครั้ง
และอีกครั้งและไม่มี ฟังก์ชั่นที่เคย
เสร็จเพราะสาย แต่เพียงผู้เดียวของพวกเขา รหัสเรียกตัวเองอีกครั้งและอีกครั้ง
และอีกครั้ง
และสิ่งที่เป็นจริง เกิดขึ้นที่นี่และตอนนี้เรา
ชนิดของสามารถวาดนี้ pictorially
ให้ฉันไปไปยัง ภาพเพียงสักครู่
นี่คือภาพที่ ในที่สุดก็จะเนื้อออก
ในรายละเอียดมากขึ้นของสิ่งที่เกิดขึ้น ภายในของหน่วยความจำของคอมพิวเตอร์ของคุณ
และปรากฎว่าเมื่อวันที่ ด้านล่างของภาพนี้
เป็นสิ่งที่เรียกว่าสแต็ค
นี้เป็นก้อน หน่วยความจำก้อน RAM,
ที่ใช้เวลาเพียงใด ฟังก์ชั่นที่เรียกว่า
ทุกครั้งที่คุณใด ๆ ที่เป็นโปรแกรมเมอร์ เรียกฟังก์ชัน
ระบบปฏิบัติการเช่น Mac OS วินโดวส์หรือลินุกซ์
คว้าพวงของไบต์อาจจะ ไม่กี่กิโลไบต์ไม่กี่อาจจะเมกะไบต์
ของหน่วยความจำมือพวกเขา กับคุณและจากนั้นช่วยให้
คุณเรียกใช้ฟังก์ชันของคุณโดยใช้ สิ่งที่ตัวแปรที่คุณต้องการ
และถ้าคุณแล้วเรียกอีก ฟังก์ชั่นและการทำงานอื่น
คุณจะได้รับชิ้นของหน่วยความจำอื่น และชิ้นอื่นของหน่วยความจำ
>> และแน่นอนถ้าถาดสีเขียวเหล่านี้ จาก Annenberg เป็นตัวแทนของหน่วยความจำที่
นี่คือสิ่งที่เกิดขึ้นเป็นครั้งแรก ครั้งที่คุณโทรซิกฟังก์ชั่น
มันก็เหมือนกับการวางถาดเช่นนี้ สิ่งที่เริ่มต้นกองที่ว่างเปล่า
แต่แล้วถ้าถาดที่ เรียกตัวเองเพื่อที่จะพูด
เรียกอีกตัวอย่าง ของซิกม่าที่
เช่นขอให้ระบบปฏิบัติการ โอต้องมีหน่วยความจำน้อยมาก
ให้ฉันที่
และจากนั้นจะได้รับการซ้อนอยู่ด้านบน
แต่สิ่งที่สำคัญที่นี่คือ ถาดแรกที่ยังคงมี
เพราะเขาเรียกถาดที่สองนี้
ตอนนี้ขณะที่ซิกเรียกซิก, ที่ชอบถามสำหรับหน่วยความจำมากขึ้น
ได้รับการซ้อนอยู่ที่นี่
ซิกซิกเรียกว่าเป็นอีก ถาดที่ได้รับการซ้อนขึ้นที่นี่
และถ้าคุณให้ทำเช่นนี้ ในที่สุดชนิดของแผนที่ภาพนี้
แผนภูมิที่สิ่งที่จะ เกิดขึ้นกับสแต็คของถาดหรือไม่
มันเป็นไปเกินกว่ามูลค่า ของหน่วยความจำคอมพิวเตอร์ของคุณมี
และทันทีที่ถาดสีเขียว เกินกว่าเส้นแนวนอน
ด้านบนสแต็คและเหนือกองคำว่า ซึ่งเราจะกลับมาในอนาคต
ว่าเป็นสิ่งที่ไม่ดี
กองที่แตกต่างกัน ส่วนของหน่วยความจำ
และถ้าคุณปล่อยให้เหล่านี้ กองถาดและกองบน
คุณกำลังจะเกิน ส่วนของตัวเองของหน่วยความจำ
และโปรแกรมที่แน่นอนจะผิดพลาด
>> ตอนนี้เป็นกันความคิดนี้ ของการเรียกซ้ำดังนั้น
ชัดเจนสามารถนำไปสู่​​ปัญหา แต่ มันไม่จำเป็นต้องเป็นสิ่งที่ไม่ดี
เพราะพิจารณาหลังจากที่ ทุก how-- และอาจจะ
นี้จะใช้เวลาบางส่วนรับใช้ เพื่อ --how สง่างามหรือวิธีการง่ายๆ
การดำเนินการของซิกม่าที่
และเราจะไม่ใช้ เรียกซ้ำสิ่งที่มากใน CS50,
แต่ใน CS51 และจริงๆชั้นใด ที่คุณจัดการกับโครงสร้างข้อมูล
เช่นต้นไม้หรือต้นไม้ครอบครัว ที่มีลำดับชั้นบาง
ก็สุดมีประโยชน์สุด
ตอนนี้เป็นกันเพื่อให้คุณ เป็นที่ต้องการนักวิทยาศาสตร์คอมพิวเตอร์
มีความคุ้นเคยกับบางส่วนของกูเกิล เรื่องตลกภายในถ้าคุณไปที่ Google
และคุณมองขึ้นสิ่งที่เป็น ความหมายของการพูดซ้ำใส่
Uh-ฮะ
เช่นกันผมดึงขึ้นไม่กี่
นี้เป็นเหมือน 10 นาทีของ ผัดวันประกันพรุ่งในเช้าวันนี้
ถ้าคุณยัง Google "ไว้วางใจ" แจ้งให้ทราบล่วงหน้า โดยการเอียงศีรษะของคุณ slightly--
แล้วคนนี้อาจจะเป็น เลวร้ายที่สุดของทั้งหมด
ตั้งแต่คนที่ใช้เช่น วันของพวกเขาดำเนินการนี​​้
บางปี ago-- มา
โอ้ wait-- ที่ข้อผิดพลาด
>> ดังนั้นที่ทำงานอยู่บนหนึ่งใน เว็บไซต์ที่ใหญ่ที่สุดในโลก
มีไข่อีสเตอร์เล็ก ๆ น้อย ๆ เหล่านี้โง่
พวกเขาอาจกิน จำนวนขับเคลื่อนบรรทัดของรหัส
เพียงเพื่อให้เราสามารถมี สิ่งที่สนุกเล็ก ๆ น้อย ๆ เช่นนั้น
แต่อย่างน้อยตอนนี้คุณจะได้รับ บางส่วนของเรื่องตลกภายในที่
>> ตอนนี้ลองมาดูที่บางส่วนของ สีขาวอยู่เราได้รับการบอกเล่าของสาย
และเริ่มที่จะกลับมาปอกเปลือก ชั้นบางในทางเทคนิค
เพื่อให้คุณเข้าใจจริงๆ สิ่งที่ได้เกิดขึ้น
และคุณสามารถเข้าใจ บางส่วนของภัยคุกคามที่
เช่นทำพิษที่ ได้เริ่มต้นตอนนี้จะกลายเป็น
ในแถวหน้าของทุกคน ให้ความสนใจอย่างน้อยในสื่อ
ดังนั้นนี่คือฟังก์ชั่นที่ง่ายมาก ที่ส่งกลับไม่มีอะไรเป็นโมฆะ
ชื่อของมันคือการแลกเปลี่ยน
ก็จะใช้เวลาในสองตัวแปร และมันกลับไม่มีอะไร
จะใช้เวลาในข
ดังนั้นการสาธิตอย่างรวดเร็ว
เราได้นำเหล่านี้ขึ้น
เราได้เป็นอย่างดีอาจจะใช้เวลาเพียงเล็กน้อย ทำลายที่นี่เพียงสักครู่
และมีบางสิ่งบางอย่างเล็ก ๆ น้อย ๆ ที่จะดื่ม
ถ้ามีคนจะไม่คิดร่วมงานกับ ฉันขึ้นที่นี่เพียงสักครู่
วิธีการเกี่ยวกับคุณในเสื้อสีแดงหรือไม่
มาขึ้น
เพียงหนึ่งวันนี้
ขอบคุณแม้ว่า
สิทธิทั้งหมดและเรามี มาถึงที่นี่?
คุณชื่ออะไร?
>> ลำโพง 4: ลอร่า
>> ลำโพง 1: ลอร่า
มาขึ้น
ดังนั้นลอร่าท้าทายง่ายมากในวันนี้
ยินดีที่ได้พบโย่
ขวาทั้งหมด
ดังนั้นเราจึงมีนมบางกว่าที่นี่และ เรามีน้ำผลไม้สีส้มบางกว่าที่นี่
และถ้วยบางอย่างที่เรา ที่ยืมมาจาก Annenberg วันนี้
>> ลำโพง 4: ยืม
ลำโพง 1: และจะไปข้างหน้า และให้คุณครึ่งแก้วนี้
ขวาทั้งหมด
และเราจะให้คุณครึ่งหนึ่ง แก้วนม
โอ้และเพียงเพื่อให้คุณสามารถ จำสิ่งนี้ก็ชอบ
ผมจำได้ที่จะนำ ขึ้นนี้และในวันนี้
เอาล่ะ
ถ้าคุณจะไม่คิดเรามาดูเรา สามารถนำพวกเขาผ่านแว่นตาของคุณเอง
ถ้าคุณต้องการ
นี้จะเป็นโลกจากสายตาของลอร่า
ขวาทั้งหมด
ดังนั้นเป้าหมายของคุณให้สองถ้วย ของเหลวที่นี่นมและน้ำผลไม้สีส้ม
จะสลับทั้งสองเพื่อให้เนื้อหา น้ำผลไม้สีส้มไปลงในถ้วยนม
และนมที่จะเข้าสู่ ถ้วยน้ำส้ม
>> ลำโพง 4: ฉันจะได้รับถ้วยอื่นได้หรือไม่
ลำโพง 1: ฉันดีใจที่คุณถามว่า มันจะเป็นภาพที่ดีกว่ามาก
ถ้าคุณไม่ได้ถาม
แต่ใช่เราสามารถนำเสนอคุณที่สาม ถ้วยที่ว่างเปล่าแน่นอน
ขวาทั้งหมด
เพื่อสลับเนื้อหามี
ที่ดีมาก
คุณกำลังทำเช่นนี้อย่างระมัดระวัง
และขั้นตอนที่สาม
ขวาทั้งหมด
ที่ดีเยี่ยม
รอบใหญ่ของเสียงปรบมือ จะดีสำหรับลอร่า
ขวาทั้งหมด
เรามีของขวัญที่พรากจากกันเล็ก ๆ น้อย ๆ สำหรับคุณ แต่ให้ฉันใช้เวลาเหล่านี้
ขอบคุณมาก
ดังนั้นตัวอย่างง่ายๆแม้ว่า แสดงให้เห็นว่าถ้าคุณทำ
ต้องการแลกเปลี่ยนเนื้อหา สองภาชนะบรรจุ
หรือขอเรียกว่าตัวแปร คุณจะต้องจัดเก็บชั่วคราวบางส่วน
เวทีหนึ่งของเนื้อหาในนั้น ที่คุณสามารถจริงทำสัญญาแลกเปลี่ยน
ดังนั้นแน่นอนนี้แหล่งที่มารหัสขึ้นที่นี่ใน C เป็นตัวแทนของว่าที่
ถ้าเป็นน้ำส้มและนม เป็นข, และเราต้องการที่จะแลกเปลี่ยนสอง
คุณอาจจะลองสิ่งที่สร้างสรรค์ ด้วยการเทหนึ่งไปยังที่อื่น ๆ
แต่ที่อาจจะไม่ จบโดยเฉพาะอย่างยิ่ง
และเพื่อให้เราใช้ที่สามถ้วยโทร มัน tmp T-M-P โดยการประชุม
และวางเนื้อหาของ OJ ในนั้นแล้วสลับหนึ่งถ้วย
แล้วใส่ลงไปใน OJ ถ้วยเดิมจึง
ประสบความสำเร็จตรงตามที่ ลอร่าได้แลกเปลี่ยน
>> ดังนั้นเรามาทำตรงที่
ให้ฉันไปข้างหน้าและเปิด ขึ้นยกตัวอย่างเช่นที่
เรียกว่าจริง "ไม่ สลับ "เพราะนี้ไม่ได้
เป็นเพียงแค่ทำตามที่คุณอาจจะคิดว่า
ดังนั้นในโปรแกรมนี้สังเกตเห็นว่า ฉันใช้ stdio.h เพื่อนเก่าของเรา
ฉันมีต้นแบบ สำหรับแลกเปลี่ยนมีขึ้นที่
หมายถึงการดำเนินงานของตน อาจจะลงมาด้านล่าง
และขอดูสิ่งนี้หลัก โปรแกรมจะทำเพื่อฉัน
ครั้งแรกที่ผมประกาศ int x ได้รับ หนึ่งและ int ปีได้รับสอง
ดังนั้นคิดของผู้ที่เป็น OJ และนมตามลำดับ
แล้วฉันเพียงแค่มี printf บอกว่า x เป็นแบบนี้
และ y เป็นแบบนี้เพียงเพื่อให้ฉันสามารถ สายตามองเห็นสิ่งที่เกิดขึ้น
จากนั้นผมได้ printf อ้าง ที่ฉันสลับสอง
และจากนั้นผมพิมพ์ออกมา อ้างว่าพวกเขากำลังเปลี่ยน,
และผมพิมพ์ออกมา x และ y อีกครั้ง
เพื่อให้ลงมาที่นี่ในการแลกเป็น ว่าสิ่งที่ลอร่าได้
และสิ่งที่เราเห็นใน หน้าจอสักครู่ที่ผ่านมา
>> จึงขอไปข้างหน้าและ ผิดหวังอย่างมาก
ทำให้ไม่มีการแลกเปลี่ยนและใช้แลกเปลี่ยนไม่มี ซูมในที่เอาท์พุทที่นี่
ใส่ x 1, y เป็น 2, การสลับเปลี่ยน
x ยังคงที่ 1 และ y ยังคง 2
ดังนั้นแม้ว่าตรงไปตรงนี้ดู ว่าชอบแม้จะมากขึ้นในทางเทคนิค
สิ่งที่ลอร่าก็ไม่ได้ดูเหมือนจะทำงาน
ดังนั้นทำไมจึงเป็นเช่นนั้น
ดีก็ปรากฎว่าเมื่อ เราเขียนโปรแกรมเช่นนี้
ที่มีทั้งหลักเน้นที่นี่ แล้วฟังก์ชั่นอื่นเช่นแลกเปลี่ยน
ไฮไลท์ที่นี่ซึ่ง ที่เรียกว่าโลก
มีลักษณะบางสิ่งบางอย่างเล็ก ๆ น้อย ๆ เช่น ถาดเหล่านี้สักครู่ที่ผ่านมา
เมื่อหลักแรกได้รับการเรียกว่า ที่ชอบถามระบบปฏิบัติการ
สำหรับบิตของหน่วยความจำสำหรับท้องถิ่นใด ๆ ตัวแปรเช่น x และ y ที่สำคัญมี
และพวกเขาจบลงที่นั่น
แต่ถ้าสายหลักสลับและหลัก ผ่านไปสลับสองขัดแย้งและ b
น้ำส้มและนมก็ไม่ชอบ แจกน้ำผลไม้สีส้มและนม
ลอร่า
สิ่งที่คอมพิวเตอร์ไม่มัน ผ่านสำเนาของน้ำผลไม้สีส้ม
และสำเนาของนมลอร่าเพื่อให้ สิ่งที่เป็นที่สุดในถาดนี้
เป็นค่าหนึ่งและสองหรือ OJ และนม แต่สำเนาดังกล่าว
เพื่อให้ที่จุดนี้ ในเรื่องที่มี
เป็นน้ำส้มและนมในแต่ละถาดเหล่านี้
มีอยู่คนหนึ่งและสองเป็น ในแต่ละถาดเหล่านี้
และฟังก์ชั่นการแลกหุ้นที่แน่นอนในการทำงาน
มันสลับพวกเขาภายใน ของถาดที่สองสูงสุดที่
แต่การแลกเปลี่ยนที่มีผลกระทบ
และขึ้นอยู่กับเพียงบางส่วน หลักการพื้นฐานที่เราได้
พูดคุยเกี่ยวกับก่อนและแน่นอน เพียงไม่กี่นาทีที่ผ่านมาสิ่งที่
อาจจะอธิบายได้ว่าทำไมการเปลี่ยนแปลง A และ B ในการแลก
มีผลกระทบต่อ x และ y ไม่มีแม้ ฉันผ่าน x และ y ฟังก์ชั่นการแลกหุ้นที่
อะไรคือคำที่สำคัญที่นี่ที่ ง่ายๆอาจอธิบาย?
ฉันคิดว่าฉันได้ยินมันนี่?
ผู้ชม: กลับมา
ลำโพง 1: ย้อนกลับไป?
ไม่กลับมา
ลองไปกับคนอื่น ๆ
มีอะไรที่?
>> ผู้ชม: [ไม่ได้ยิน]
>> ลำโพง 1: ตกลงดังนั้น return-- ที่เราจะทำได้ ทำให้การทำงานของการกลับมาในเรื่องนี้
แต่มีคำอธิบายได้ง่าย
ผู้ชม: ขอบเขต
ลำโพง 1: ขอบเขต
ฉันจะใช้ขอบเขต
ดังนั้นขอบเขตจำที่ x และ y ของเราประกาศ
พวกเขากำลังประกาศภายใน สิทธิหลักของที่นี่
a และ b ขณะที่มี ประกาศได้อย่างมีประสิทธิภาพ
ภายในของแลกเปลี่ยนไม่มากใน วงเล็บปีกกา แต่ยังคง
ในพื้นที่ทั่วไปของการแลกเปลี่ยน
และอื่น ๆ แน่นอนและข เพียง แต่อยู่ในถาดนี้
จาก Annenberg นี้ ก้อนที่สองของรหัส
ดังนั้นเราแน่นอนเปลี่ยนแปลงสำเนา แต่ ที่ไม่ได้จริงๆสิ่งที่เป็นประโยชน์ที่
>> ดังนั้นลองมาดูที่ ระดับต่ำกว่าเล็กน้อยนี้
ฉันจะกลับไปสู่ แหล่งที่มาของไดเรกทอรี
และฉันจะไปก่อน ซูมในที่นี่และเพียงแค่
เพื่อยืนยันว่าผมอยู่ในนี้ หน้าต่าง terminal ใหญ่
โปรแกรมยังคงทำตัวเหมือนว่า
สมมติว่าตอนนี้ที่นี่ ไม่ได้เจตนา
เห็นได้ชัดว่าผมต้องการที่จะแลกเปลี่ยน การทำงานเพื่อให้มันรู้สึกเหมือนข้อผิดพลาด
ตอนนี้ผมสามารถเริ่มต้นการเพิ่ม จำนวนมาก printf เพื่อรหัสของฉัน
พิมพ์ออก x กว่าที่นี่, y กว่า ที่นี่กว่าที่นี่ขกว่าที่นี่
แต่ตรงไปตรงมาว่าอาจจะเป็นสิ่งที่ คุณได้รับการทำสำหรับสองสามสัปดาห์ที่ผ่านมา
ขณะนี้ในเวลาทำการ และที่บ้านเมื่อทำงาน
ใน psets พยายามที่จะหาข้อบกพร่องบางอย่าง
แต่คุณจะเห็นถ้าคุณยังไม่ได้ ปัญหาที่สามตั้งแนะนำให้คุณ
กับคำสั่งที่เรียกว่า GDB, ที่ GDB, GNU ดีบัก
มีตัวเองทั้งกลุ่ม คุณสมบัติที่สามารถจริง
ให้เราเข้าใจสถานการณ์ เช่นนี้ แต่ร้องขอ,
แก้ปัญหาและพบข้อบกพร่อง
ดังนั้นฉันจะทำเช่นนี้
แทนที่จะ ./noswap ฉันแทน ไปทำงาน GDB ./noswap
ในคำอื่น ๆ ฉันจะทำงานของฉัน ไม่ได้อยู่ในโปรแกรมเตะเพื่อนใหม่ของเรา
วันนี้
ฉันจะทำงานของฉัน noswap โปรแกรมภายใน
ของโปรแกรมอื่น ๆ ที่เรียกว่า GDB ซึ่งเป็นบั๊กที่
เป็นโปรแกรมที่ออกแบบมาเพื่อช่วยให้ คุณมนุษย์ค้นหาและลบข้อบกพร่อง
ดังนั้นถ้าผมตีทำงานที่นี่มี จำนวนเงินที่เลวร้ายของข้อความ
ที่คุณไม่เคยได้อ่าน
มันเป็นหลักสิ่งที่ทำให้ไขว้เขว จากพรอมต์ที่
ฉันจะตีควบคุม-L ที่จะได้รับขึ้นที่ด้านบนมี
นี่คือการแจ้งให้ GDB
ถ้าผมต้องการที่จะใช้โปรแกรมนี้ในขณะนี้ เป็นแผ่นโกงเล็ก ๆ น้อย ๆ นี้ในวันนี้
สไลด์แนะนำการเรียกใช้เป็นครั้งแรก คำสั่งที่เราหมายถึงการแนะนำ
และฉันแค่ไปที่จะพิมพ์ วิ่งขึ้นที่นี่ภายในของ GDB,
และแน่นอนมันวิ่งโปรแกรมของฉัน
ตอนนี้มีบางอย่างเพิ่มเติม ผลของหน้าจอเช่นนี้
แต่นั่นเป็นเพียงการ GDB ทางทวารหนั​​ก และบอกเราว่าสิ่งที่เกิดขึ้น
คุณไม่ได้จริงๆต้องกังวล เกี่ยวกับรายละเอียดเหล่านี้ได้ในขณะนี้
แต่สิ่งที่เป็นจริงเย็นเกี่ยวกับ GDB ถ้าผมทำเช่นนี้เหมือนเดิม
ควบคุม-L ล้าง screen-- ให้ฉันไป ข้างหน้าและพิมพ์ "ทำลายหลัก" ดังนั้น
เมื่อผมกด Enter การตั้งค่าอะไร เรียกว่าจุดคุ้มทุนที่ noswap.c,
สาย 16 ซึ่งเป็นที่ที่ GDB คิดว่าโปรแกรมของฉันจริง
เป็นฟังก์ชั่นของฉันเป็นจริง
นี้เราจะไม่สนใจตอนนี้ แต่ที่อยู่
ในหน่วยความจำโดยเฉพาะฟังก์ชั่นนี้
ดังนั้นตอนนี้เมื่อฉันพิมพ์ทำงาน สังเกตเห็นสิ่งที่เย็นที่นี่
โปรแกรมของฉันที่เส้นแบ่งผม บอก GDB ที่จะหยุดการดำเนินการที่
ดังนั้นผมจึงไม่ต้องตอนนี้เปลี่ยนรหัสของฉัน เพิ่มบางของ printf, คอมไพล์มันวิ่ง
มันเปลี่ยนแปลงเพิ่มบางส่วนของ printf, บันทึก, คอมไพล์มันรัน
ผมก็สามารถเดินผ่านโปรแกรมของฉัน ทีละขั้นตอนโดยขั้นตอนที่ความเร็วของมนุษย์
ไม่ใช่ชนิดที่อินเทลภายในของความเร็ว
>> ดังนั้นตอนนี้สังเกตเห็นบรรทัดนี้ ปรากฏขึ้นที่นี่และถ้าฉันกลับไป
ในการเขียนโปรแกรมของฉันใน Gedit, สังเกตเห็นว่าที่เป็นจริง
บรรทัดแรกของรหัส
มี 16 บรรทัดใน Gedit
มี 16 บรรทัดภายใน GDB และแม้กระทั่ง แม้ว่าอินเตอร์เฟซสีดำและสีขาว
ไม่ได้เกือบเป็นผู้ใช้ มิตรที่นี้หมายถึง
16 สายที่ไม่ได้รับการดำเนินการ แต่มันเกี่ยวกับการที่จะเป็น
ดังนั้นแน่นอนว่าผมพิมพ์พิมพ์ x ไม่ printf เพียง x พิมพ์
ฉันได้รับบางค่าปลอมมีของศูนย์ เพราะ x ยังไม่ได้รับการเริ่มต้นได้ยัง
ดังนั้นฉันจะพิมพ์ต่อไปหรือถ้าคุณ ต้องการที่จะเป็นแฟนซีเพียง n ต่อไป
แต่เมื่อผมพิมพ์ต่อไปใส่ตอนนี้ แจ้งให้ทราบว่าย้ายไปสาย 17
ดังนั้นเหตุผลถ้าฉันได้ดำเนินการ สาย 16 และตอนนี้ฉันพิมพ์พิมพ์ x,
สิ่งที่ฉันควรจะเห็น?
หนึ่ง
>> และตอนนี้เป็นที่ยอมรับทำให้เกิดความสับสน
$ 2 เป็นเพียงวิธีที่จินตนาการของถ้าคุณ ต้องการการอ้างอิงถึงค่าที่ต่อมา
คุณสามารถพูดว่า "เงินดอลลาร์เข้าสู่ระบบสอง".
มันก็เหมือนกับการอ้างอิงกลับ
แต่ตอนนี้เพียงแค่ไม่สนใจมัน
มีอะไรที่น่าสนใจคืออะไร ด้านขวาของเครื่องหมายเท่ากับ
และตอนนี้ถ้าผมพิมพ์ต่อไปอีกครั้ง และการพิมพ์ Y ฉันควรจะดู 2
ฉันยังสามารถพิมพ์ตอนนี้ x อีกครั้งและตรงไปตรงมา
ถ้าฉันได้รับสับสนเล็กน้อยเป็น ที่ฉันฉันสามารถพิมพ์รายการสำหรับรายการ
และเพียงแค่เห็นบางบริบทรอบ จุดฉันจริงที่
และตอนนี้ฉันสามารถพิมพ์ ต่อไปและมี x 1
ตอนนี้ผมพิมพ์ต่อไป
โอ้, y คือ 2
และอีกครั้งมันเป็นความสับสน เพราะการส่งออกของ GDB
จะถูกผสมปนเปกับการส่งออกของตัวเอง
แต่ถ้าคุณเก็บไว้ในใจโดย glancing กลับมาที่รหัสของคุณ
หรือวางมันออกมาด้านข้าง ข้างบางทีคุณจะ
เห็นว่าจริงๆฉันแค่ ก้าวผ่านโปรแกรมของฉัน
>> แต่สังเกตเห็นสิ่งที่เกิดขึ้นต่อไปอย่างแท้จริง
นี่คือสาย 22
ผมขอไปกว่านั้นจึงจะย้าย 23 และถ้าผมพิมพ์ x ตอนนี้ยังคงเป็นหนึ่ง
และถ้าฉันพิมพ์ Y ตอนนี้ยังคงเป็นหนึ่ง
ดังนั้นนี้ไม่ได้เป็นออกกำลังกายที่มีประโยชน์
จึงขอทำซ้ำนี้
ผมขอกลับไปถึง การทำงานด้านบนและประเภทอีกครั้ง
และก็บอกว่าโปรแกรม ที่กำลังดีบั๊ก
ได้เริ่มต้นแล้ว เริ่มจากจุดเริ่มต้น
ใช่ให้ทำเช่นนี้อีกครั้ง
และในครั้งนี้เราจะทำต่อไป ต่อไปต่อไปข้างหน้าต่อไป
แต่ตอนนี้สิ่งที่ได้รับที่น่าสนใจ
ตอนนี้ผมต้องการที่จะก้าวเข้าสู่ แลกเปลี่ยนดังนั้นฉันไม่ต้องพิมพ์ต่อไป
ฉันพิมพ์ขั้นตอนและตอนนี้สังเกตเห็นมัน ได้กระโดดลงมาฉันกับสาย noswap.c 33
ถ้าผมกลับไป Gedit สิ่งที่สาย 33?
นั่นเป็นครั้งแรกที่เกิดขึ้นจริง บรรทัดของรหัสในการแลก
ซึ่งเป็นสิ่งที่ดีเพราะตอนนี้ฉันสามารถ ชนิดของกระตุ้นรอบและได้รับการอยากรู้อยากเห็น
เป็นสิ่งที่เกิดขึ้นอย่างแท้จริงในการมี
ผมขอพิมพ์ tmp
whoa
ทำไม tmp มีบาง บ้าค่าขยะปลอม?
ผู้ชม: มันไม่ได้รับการเริ่มต้น
ลำโพง 1: มันไม่ได้รับการเริ่มต้น
และแน่นอนเมื่อคุณเรียกใช้โปรแกรม คุณได้รับทั้งกลุ่มของหน่วยความจำ
โดยระบบปฏิบัติการ แต่คุณ ยังไม่ได้เริ่มต้นค่าใด ๆ
ดังนั้นสิ่งที่บิตคุณ เห็นที่นี่แม้ว่ามันจะเป็น
ลบใหญ่บ้านี้ จำนวนเพียงหมายความว่า
ว่าผู้ที่มีเศษจาก บางการใช้งานก่อนหน้านี้ของแรมที่
แม้ว่าฉันไม่ได้ ตัวเองต้องการมันยัง
ดังนั้นตอนนี้ฉันจะไปข้างหน้าและประเภท ต่อไปและถ้าตอนนี้ผมพิมพ์ tmp พิมพ์
สิ่งที่ฉันควรจะเห็น?
สิ่งที่คุณค่าของการเป็น เป็นอาร์กิวเมนต์แรกเพียง
เช่น x เป็นครั้งแรกที่ สิ่งที่ถูกส่งใน
ดังนั้น x และควรจะเหมือนกัน ดังนั้น tmp พิมพ์ควรพิมพ์ฉันหนึ่ง
>> ดังนั้นสิ่งที่คุณจะเห็นในการตั้งปัญหา สามคือการกวดวิชาของทุกประเภทใน GDB,
แต่รู้ว่านี่คือจุดเริ่มต้น ของดูที่เครื่องมือที่จะจริง
ช่วยคุณแก้ปัญหา เพื่อให้มีประสิทธิภาพมากขึ้น
สิ่งที่เรากำลังในท้ายที่สุด จะทำในวันพุธที่
คือการเริ่มต้นที่จะปอกเปลือกกลับชั้นไม่กี่ และลบบางล้อการฝึกอบรม
ว่าสิ่งที่เรียกว่าสตริงที่ ที่เราได้นำมาใช้บางครั้ง
เราจะใช้เวลาที่ช้าออกไป จากคุณและเริ่มพูดคุยเกี่ยวกับ
บางสิ่งบางอย่างมากขึ้น esoterically ที่รู้จักกันเป็นถ่าน *
แต่เรากำลังจะทำนี้ดีและ เบา ๆ ในตอนแรกแม้ว่าตัวชี้
ขณะที่พวกเขากำลังเรียกว่าสามารถทำบางอย่าง สิ่งที่ไม่ดีมากถ้าทำร้าย
โดยดูที่ claymation เล็กน้อยจาก เพื่อนของเรานิค Parlante จาก Stanford
มหาวิทยาลัยอาจารย์ในคอมพิวเตอร์ วิทยาศาสตร์ที่ใส่กันภาพนี้
ของสิ่งที่จะมาพุธ
>> [วิดีโอเล่นภาพ]
-Hey บิงกี้
ตื่นขึ้นมา
ก็ถึงเวลาสำหรับความสนุกสนานชี้
>> อะไรที่?
เรียนรู้เกี่ยวกับตัวชี้?
โอ้คนดี!
[จบการเล่นวิดีโอ]
ลำโพง 1: ที่รอคุณอยู่ในวันพุธที่
เราจะเห็นคุณแล้ว
[วิดีโอเล่นภาพ]
ในอนาคตและตอนนี้ความคิดลึก โดย Daven อัม
>> ทำไมพวกเราจะได้เรียนรู้ C?
ทำไมไม่ +?
>> [หัวเราะ]
>> [จบการเล่นวิดีโอ]