2 คะแนน โดย GN⁺ 2023-11-02 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • บทความเกี่ยวกับกฎการเขียนโปรแกรม 5 ข้อของ Rob Pike ในปี 1989
  • กฎข้อ 1: อย่าคาดเดาว่าโปรแกรมจะใช้เวลาส่วนใหญ่อยู่ที่ไหน คอขวดอาจเกิดขึ้นอย่างไม่คาดคิด หลีกเลี่ยงการแฮ็กเพื่อความเร็วจนกว่าจะพิสูจน์ได้ว่ามีคอขวดจริง
  • กฎข้อ 2: วัดผลเสมอก่อนจะปรับแต่งเพื่อความเร็ว ทำการเพิ่มประสิทธิภาพเฉพาะเมื่อบางส่วนของโค้ดมีผลกระทบอย่างมีนัยสำคัญต่อส่วนที่เหลือ
  • กฎข้อ 3: เมื่อ n มีขนาดเล็ก อัลกอริทึมที่ซับซ้อนจะช้า ซึ่งเป็นกรณีส่วนใหญ่ ใช้อัลกอริทึมที่ซับซ้อนก็ต่อเมื่อ n มักมีขนาดใหญ่บ่อย ๆ และแม้ในกรณีนั้นก็ให้ใช้กฎข้อ 2 ก่อน
  • กฎข้อ 4: อัลกอริทึมและโครงสร้างข้อมูลที่เรียบง่ายเป็นสิ่งที่พึงปรารถนา เพราะมีแนวโน้มเกิดบั๊กน้อยกว่าสิ่งที่ซับซ้อนและนำไปใช้งานได้ง่ายกว่า
  • กฎข้อ 5: โครงสร้างข้อมูลที่ถูกต้องเป็นสิ่งชี้ขาดในการเขียนโปรแกรม หากจัดโครงสร้างข้อมูลได้ดี อัลกอริทึมก็จะปรากฏชัดขึ้นเอง
  • กฎข้อ 1 และ 2 ของ Pike สะท้อนคติพจน์ของ Tony Hoare ที่ว่า "การเพิ่มประสิทธิภาพก่อนเวลาอันควรคือรากเหง้าของความชั่วร้ายทั้งปวง"
  • Ken Thompson ได้เรียบเรียงกฎข้อ 3 และ 4 ของ Pike ใหม่เป็น "เมื่อไม่แน่ใจ จงใช้พลังดุจ brute force"
  • กฎข้อ 3 และ 4 เป็นการนำปรัชญาการออกแบบ KISS (Keep It Simple, Stupid) ไปใช้จริง
  • กฎข้อ 5 สอดคล้องกับคำกล่าวใน 'The Mythical Man-Month' ของ Fred Brooks ซึ่งมักย่อกันว่า "เขียนโค้ดที่โง่โดยใช้อ็อบเจ็กต์ที่ฉลาด"

1 ความคิดเห็น

 
GN⁺ 2023-11-02
ความคิดเห็นบน Hacker News
  • บทความเกี่ยวกับกฎการเขียนโปรแกรมของ Rob Pike ในปี 1989
  • ผู้แสดงความคิดเห็นเห็นพ้องว่าหัวใจสำคัญของการเขียนโปรแกรมคือโครงสร้างข้อมูล ไม่ใช่อัลกอริทึม
  • วิจารณ์การสัมภาษณ์แบบ LeetCode ที่ไม่ให้ความสำคัญกับโครงสร้างข้อมูลมากกว่าอัลกอริทึม
  • มีความเห็นว่าเมื่อ n มีขนาดเล็ก อัลกอริทึมที่ซับซ้อนจะช้ากว่า และในกรณีส่วนใหญ่ n มักมีขนาดเล็ก
  • ผู้แสดงความคิดเห็นเน้นความสำคัญของการเลือกโครงสร้างข้อมูลที่เหมาะสมและการจัดระเบียบให้ดี
  • มีการถกเถียงเกี่ยวกับการใช้ฐานข้อมูลอย่างผิดวิธีและผลเสียของสคีมาฐานข้อมูลที่สร้างโดย ORM
  • แนวทางนี้ดูเป็นกลยุทธ์เพื่อป้องกันการทำวิศวกรรมเกินความจำเป็นและการเพิ่มประสิทธิภาพก่อนเวลาอันควร
  • ผู้แสดงความคิดเห็นบางคนโต้แย้งว่าการสิ้นเปลืองด้านประสิทธิภาพเพียงเล็กน้อยสามารถสะสมจนทำให้โปรแกรมช้าลงได้
  • มีการถกเถียงเกี่ยวกับคำคม "การเพิ่มประสิทธิภาพก่อนเวลาอันควรคือรากเหง้าของความชั่วร้ายทั้งปวง" และบริบทของมัน
  • ผู้แสดงความคิดเห็นบางคนบอกว่าโปรแกรมเมอร์ที่เก่งสามารถคาดการณ์ได้ว่าอะไรจะช้าลง และเดิมพันเชิงการเรียนรู้ไว้ล่วงหน้าได้
  • มีข้อโต้แย้งกลับว่าอัลกอริทึมที่ซับซ้อนสำหรับข้อมูลที่เรียบง่ายอาจให้ประสิทธิภาพที่ดีขึ้นมากและยังอาจทำให้ระบบเรียบง่ายขึ้นได้
  • บทความนี้ส่งอิทธิพลระยะยาวต่อแนวทางด้านการออกแบบและความซับซ้อนของผู้อ่านบางคน
  • มีการอภิปรายเกี่ยวกับการตีความกฎข้อ 5 และมีความเห็นไม่ตรงกันบางส่วนต่อวลี "เขียนโค้ดโง่ ๆ ที่ใช้วัตถุอัจฉริยะ"