ภาพรวมที่ดีที่สุดสำหรับกระบวนทัศน์ C ++ ที่ทันสมัย? [ปิด]


16

ฉันเคยเขียน C ++ อย่างกว้างขวางระหว่าง 8 และ 10 ปีที่แล้ว ฉันได้ย้ายไปยัง C # ด้วยเหตุผลมืออาชีพ อย่างไรก็ตามบางครั้งฉันเห็นข้อความชอบ

"หากคุณยังคงติดตามการอ้างอิงตัวชี้ด้วยตนเองคุณกำลังทำผิด"

หรือ

"C ++ มีความปลอดภัยอย่างสมบูรณ์แบบตราบใดที่คุณใช้แนวคิดสมัยใหม่เช่น RAII และไม่ได้จัดสรรหน่วยความจำด้วยตนเองเช่นนักพัฒนา C ที่กู้คืน"

ทั้งสองเป็นขั้นตอนมาตรฐานเมื่อสิบปีที่แล้ว ฉันได้เห็นว่า C ++ ได้รับการปรับปรุงอย่างมากในช่วงเวลาที่ผ่านมา; โดยเฉพาะอย่างยิ่ง C ++ 0x ดูเหมือนจะมีความสามารถใหม่ ๆ แหล่งข้อมูลที่ดีที่สุดสำหรับโปรแกรมเมอร์ "C / old C ++" เพื่อให้ทันกับรูปแบบและวิธีปฏิบัติ "สมัยใหม่" ของ C ++ คืออะไร


3
มันเป็นขั้นตอนมาตรฐานเมื่อทศวรรษที่แล้ว น่าเสียดายที่ C ++ devs ยังคงมีความสำคัญมากโดยใช้กระบวนการมาตรฐานจากสามทศวรรษที่ผ่านมา
DeadMG

7
ฉันไม่รู้แหล่งข้อมูลเดียว แต่ C ++ ที่ทันสมัยโดยทั่วไปนั้นมาลงที่: (1) การใช้ STL อย่างกว้างขวางทุกครั้งที่ทำได้แทนที่จะเป็นอัลกอริธึมที่ทำด้วยมือ (2) การใช้งานตัวชี้สมาร์ทและคอนเทนเนอร์ STL (3) การทำงานในรูปแบบสไตล์การเขียนโปรแกรมโดยใช้ functors / lambdas พร้อมกับฟังก์ชั่นขั้นสูงและ (4) การตั้งค่าสำหรับแม่แบบที่ใช้ฟังก์ชั่นแบบคงที่แตกต่างกว่าเสมือนรันไทม์เมื่อใดก็ตามที่เป็นไปได้
ชาร์ลส์ซัลเวีย

Effective C ++โดย Scott Meyers
Gyan aka Gary Buyn

คำตอบ:


5

มันอาจจะเกี่ยวข้องกับสื่อการสอนมากกว่าสิ่งอื่น ๆ ส่วนใหญ่ แต่เมื่อ 8-10 ปีที่แล้วดูเหมือนว่าสำหรับฉันแล้ววิธีการใช้ภาษานั้นแตกต่างกันมากในทุกวันนี้ โฟกัสในวันนี้มีมากขึ้นเกี่ยวกับการใช้ประโยชน์จากเทมเพลตความปลอดภัยของประเภทและการเขียนโปรแกรมทั่วไปที่ซึ่งก่อนหน้านี้มีความหวาดกลัวต่อสิ่งนั้นมากขึ้น

สื่อการสอนก็เปลี่ยนไปเช่นกัน ในขณะที่ก่อนที่หนังสือเริ่มต้น C ++ มาตรฐานจะพาคุณผ่าน printf, scanf และอื่น ๆ ... คุณแทบจะไม่เห็นสิ่งเหล่านี้ในหนังสือด้วยวิธีการที่ทันสมัย

หนังสือดี ๆ บางเล่มเป็นหนังสือสีแดง เจ๋ง C ++, เจ๋ง C ++ ที่มากขึ้น, C ++ เทมเพลต Metaprogramming, การออกแบบ C ++ ที่ทันสมัย, เร่ง C ++ ...

ฉันคิดว่าการดูว่าฉันทำงานที่ไหนในปัจจุบันอาจเป็นตัวอย่างที่ดี ฉันมาที่นี่โดยใช้ C ++ ด้วยวิธีที่ทันสมัยและดูเหมือนว่านักพัฒนาส่วนใหญ่ไม่รู้ด้วยซ้ำว่าฉันกำลังทำอะไรหรือเพราะอะไร การสร้างออบเจ็กต์ด้วยโอเปอเรเตอร์ () ในตัวอย่างเช่น ... ต้องแสดงความคิดเห็นนรกจากการเกิดขึ้นทุกครั้งของการผูก () และในที่สุดก็ถูกบอกให้ทิ้งรหัสทั้งหมด ไม่รู้ว่า initializers ทำอะไร ... มันช่างเป็นเรื่องแปลกและยากสำหรับฉันจริงๆ


5

เพื่อให้ได้รับการดูแลอย่างรวดเร็วของคุณสมบัติที่ทันสมัยนำเสนอค่อนข้างดีคุณจะไม่ผิดพลาดในการดูการนำเสนอล่าสุดของ Herb Sutter "การเขียนรหัส C ++ ที่ทันสมัย: C ++ มีการพัฒนาอย่างไรในช่วงหลายปีที่ผ่านมา" ของคุณลักษณะ C ++ ที่ // build /

เขาพูดถึงว่าทำไมภาษาที่ดีกว่า C # (แน่นอน - Microsoft เปลี่ยนกางเกงเป็นประจำและวันนี้พวกเขากำลังสวมใส่แฟชั่น C ++ ดังนั้นพวกเขาจะโฆษณาเกินจริงนี้ ที่ผ่านมา) แต่ในการทำเช่นนั้นเขาจะอธิบายทุกบิตที่ดี (เช่นการจัดการหน่วยความจำ 'อัตโนมัติ' และคลาส STL) จากนั้นก็จะพูดคุยเกี่ยวกับบิตใหม่จากมาตรฐาน C ++ 0x

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.