Torvalds กำลังพูดถึงลาของเขาที่นี่
ตกลงทำไมเขาพูดถึงลาของเขา:
ก่อนอื่นเลยการพูดจาโผงผางของเขานั้นไม่มีอะไรเกิดขึ้น มีเนื้อหาจริงน้อยมากที่นี่ เหตุผลเดียวที่มีชื่อเสียงหรือได้รับการเคารพอย่างอ่อนโยนก็คือเพราะมันทำโดยพระเจ้า Linux เหตุผลหลักของเขาคือ C ++ เป็นเรื่องไร้สาระและเขาชอบที่จะฉี่คน C ++ ออกไป แน่นอนว่าไม่มีเหตุผลเลยที่จะตอบคำถามนั้นและใครก็ตามที่คิดว่ามันเป็นเหตุผลที่สมเหตุสมผล
สำหรับสิ่งที่อาจเป็นแพรวพราวเป็นจุดมุ่งหมายมากที่สุดของเขา:
- STL และ Boost เป็นอึมากที่สุด <- อะไรก็ตาม คุณเป็นคนงี่เง่า
- STL และ Boost ทำให้เกิดอาการปวดจำนวนไม่ จำกัด <- ไร้สาระ เห็นได้ชัดว่าเขาจงใจมากเกินไป แต่แล้วอะไรคือคำพูดที่แท้จริงของเขาที่นี่? ฉันไม่รู้ มีบางอย่างที่ยากเกินกว่าจะคิดออกปัญหาเมื่อคุณทำให้คอมไพเลอร์อาเจียนด้วยจิตวิญญาณหรือบางสิ่งบางอย่าง แต่ก็ไม่ยากที่จะคิดออกมากกว่าการดีบั๊ก UB ที่เกิดจากการใช้โครงสร้าง C ในทางที่ผิด *
- ตัวแบบนามธรรมสนับสนุนโดย C ++ นั้นไม่มีประสิทธิภาพ <- ชอบอะไรนะ? เขาไม่เคยขยายตัวไม่เคยให้ตัวอย่างใด ๆ กับสิ่งที่เขาหมายถึงเขาแค่บอกว่า BFD เนื่องจากฉันไม่สามารถบอกได้ว่าเขาหมายถึงอะไรมีความพยายามเล็กน้อยในการ "โต้แย้ง" ข้อความ มันเป็นมนต์ทั่วไปของ C bigots แต่นั่นไม่ได้ทำให้มันเป็นที่เข้าใจหรือเข้าใจได้มากขึ้น
- การใช้ C ++ อย่างถูกต้องหมายความว่าคุณ จำกัด ตัวเองในด้าน C <- จริง ๆ แล้ว WORSE C ++ มีรหัสนี้อยู่ที่นั่นดังนั้นฉันจึงยังไม่รู้ WTF ที่เขาพูดถึง
โดยทั่วไป Torvalds กำลังพูดถึงลาของเขา ไม่มีข้อโต้แย้งใด ๆ ที่เข้าใจได้ การคาดหวังว่าการคัดค้านเรื่องไร้สาระอย่างรุนแรงเป็นเพียงเรื่องไร้สาระ ฉันได้รับคำสั่งให้ "ขยาย" จากการโต้แย้งในบางสิ่งที่ฉันคาดว่าจะขยายตัวต่อไปหากเป็นสิ่งที่ฉันพูดไป ถ้าคุณจริง ๆ ลองดูสิ่งที่ Torvalds พูดคุณจะเห็นว่าเขาไม่ได้พูดอะไรเลย
เพียงเพราะพระเจ้าบอกว่ามันไม่ได้หมายความว่ามันสมเหตุสมผลหรือควรจะจริงจังมากไปกว่าการที่ bozo สุ่มพูดไป ความจริงจะได้รับการบอกว่าพระเจ้าเป็นเพียงสุ่มอีก bozo
ตอบคำถามจริง:
อาจเป็นสิ่งที่เลวร้ายที่สุดและที่พบบ่อยที่สุดคือการปฏิบัติ C ++ ที่ไม่ดีคือการปฏิบัติต่อ C เช่นการใช้ฟังก์ชั่น C API อย่างต่อเนื่องเช่น printf, รับ (ยังถือว่าไม่ดีใน C), strtok ฯลฯ ... ไม่เพียง แต่ล้มเหลว โดยระบบประเภทที่เข้มงวดมากขึ้นพวกเขานำไปสู่ภาวะแทรกซ้อนเพิ่มเติมอย่างต่อเนื่องเมื่อพยายามที่จะโต้ตอบกับรหัส "ของจริง" C ++ โดยทั่วไปให้ทำตรงข้ามกับสิ่งที่ Torvalds กำลังให้คำแนะนำ
เรียนรู้ที่จะใช้ประโยชน์จาก STL และ Boost เพื่อให้ได้การตรวจจับข้อผิดพลาดในเวลาต่อไปและเพื่อทำให้ชีวิตของคุณง่ายขึ้นในวิธีอื่น ๆ โดยทั่วไป (ตัวอย่างเช่นการเพิ่ม tokenizer เป็นประเภทที่ปลอดภัยและอินเทอร์เฟซที่ดีกว่า) มันเป็นความจริงที่คุณจะต้องเรียนรู้วิธีการอ่านข้อผิดพลาดแม่แบบซึ่งเป็นที่น่ากลัวในตอนแรก แต่ (จากประสบการณ์ของฉันต่อไป) มันง่ายกว่าการพยายามดีบักสิ่งที่สร้างพฤติกรรมที่ไม่ได้กำหนดในระหว่างรันไทม์ซึ่ง C api ค่อนข้างง่ายที่จะทำ
ไม่ต้องบอกว่า C ไม่ค่อยดีเท่าไหร่ แน่นอนว่าฉันชอบ C ++ ที่ดีกว่า โปรแกรมเมอร์ C ชอบ C ดีกว่า มีการแข่งขันและชอบเล่นตามอัตวิสัย นอกจากนี้ยังมีข้อมูลที่ผิดมากมายและ FUD ลอยอยู่รอบ ๆ ฉันจะบอกว่ามี FUD และข้อมูลที่ผิดมากขึ้นประมาณ C ++ แต่ฉันลำเอียงในเรื่องนี้ ตัวอย่างเช่นปัญหา "bloat" และ "performance" C ++ ที่คาดการณ์ไว้นั้นไม่ได้เป็นประเด็นหลักที่แท้จริงโดยส่วนใหญ่แล้วจะถูกเป่าออกจากสัดส่วนของความเป็นจริง
สำหรับประเด็นที่อาจารย์ของคุณอ้างถึงสิ่งเหล่านี้ไม่ได้เป็นเอกลักษณ์ของ C ++ ใน OOP (และในการเขียนโปรแกรมทั่วไป) คุณต้องการที่จะแต่งเพลงมากกว่าการสืบทอด การสืบทอดคือความสัมพันธ์ที่คึกคักที่สุดที่มีในภาษา OO ทั้งหมด C ++ เพิ่มอีกหนึ่งที่แข็งแกร่งมิตรภาพ ควรใช้การสืบทอดหลายรูปแบบเพื่อแทนนามธรรมและความสัมพันธ์ "is-a" ไม่ควรนำมาใช้ซ้ำ นี่เป็นข้อผิดพลาดที่ใหญ่เป็นอันดับสองที่คุณสามารถทำได้ใน C ++ และมันค่อนข้างใหญ่ แต่ก็ยังห่างไกลจากความเป็นเอกลักษณ์ของภาษา คุณสามารถสร้างความสัมพันธ์การสืบทอดที่ซับซ้อนมากเกินไปใน C # หรือ Java เช่นกันและพวกเขาจะมีปัญหาเดียวกัน
virtual
ฟังก์ชั่นใช่มั้ย