1 คะแนน โดย GN⁺ 2024-02-13 | 1 ความคิดเห็น | แชร์ทาง WhatsApp

เรื่องราวการพัฒนาระบบปฏิบัติการ Multics

  • André Bensoussan ผู้พัฒนาระบบปฏิบัติการ Multics รับผิดชอบงานเปลี่ยนแปลงสำคัญของระบบไฟล์
  • ตัวจัดการ VTOC เป็นซับซิสเต็มที่ทำหน้าที่ย้ายข้อมูลไฟล์ระหว่างดิสก์กับหน่วยความจำ จัดการ shared memory buffer pool และจัดการพื้นที่ข้อมูลบนดิสก์
  • André รับหน้าที่ออกแบบ พัฒนา และทดสอบตัวจัดการ VTOC โดยวาดไดอะแกรมจำนวนมากระหว่างการออกแบบ

กระบวนการพัฒนาและความสำเร็จ

  • Tom Van Vleck ผู้ประสานงานโครงการกังวลเรื่องกำหนดการ แต่เมื่อ André เริ่มเขียนโค้ด เขาก็สบายใจขึ้น
  • André เขียนโค้ดด้วยดินสอแทนการใช้คอมพิวเตอร์เทอร์มินัล และยังปฏิเสธความช่วยเหลือด้านการพิมพ์ โดยทำทุกอย่างด้วยตนเอง
  • ในที่สุดเขาก็นำโค้ดที่เขียนด้วยดินสออย่างเป็นระเบียบไปพิมพ์ลงเทอร์มินัลเพื่อคอมไพล์ และหลังจากแก้คำผิดเล็กน้อยไม่กี่จุดก็สามารถคอมไพล์ได้สำเร็จ
  • เมื่อนำไปรวมเข้ากับระบบและทดสอบ ตัวจัดการ VTOC ก็ทำงานได้อย่างสมบูรณ์แบบตั้งแต่ครั้งแรก

เคล็ดลับความสำเร็จของ André

  • André เขียนโปรแกรมที่สมบูรณ์แบบโดยใช้เพียงดินสอเป็นเครื่องมือ
  • บั๊กเพียงจุดเดียวที่พบในตัวจัดการ VTOC เกิดจากความผิดพลาดของ Tom Van Vleck ที่แจ้งลำดับการเรียกใช้ขั้นตอนจัดการข้อผิดพลาดผิด
  • วิธีการทำงานของ André ถูกนำเสนอเป็นเรื่องเล่าเกี่ยวกับซอฟต์แวร์เอนจิเนียริงใน IEEE Computer ฉบับเดือนเมษายน 1994 และอัปเดตอีกครั้งในเดือนพฤศจิกายน 2003

ความเห็นของ GN⁺

  • เรื่องราวการพัฒนาระบบปฏิบัติการ Multics ของ André Bensoussan แสดงให้เห็นว่าการออกแบบอย่างรอบคอบและสมาธิที่แน่วแน่สามารถสร้างผลงานที่สมบูรณ์แบบได้อย่างไร
  • วิธีการแบบดั้งเดิมที่ใช้เพียงดินสอและกระดาษ เมื่อเทียบกับเครื่องมือพัฒนาซอฟต์แวร์สมัยใหม่ที่ซับซ้อน ตอกย้ำความสำคัญของแนวทางที่ยึดพื้นฐานให้มั่นคง
  • เรื่องนี้เป็นตัวอย่างที่ดีที่เตือนให้เห็นความสำคัญของการเตรียมงานล่วงหน้าอย่างละเอียดและการทดสอบในงานด้านซอฟต์แวร์เอนจิเนียริง และยังมอบบทเรียนสำคัญต่อการศึกษาด้านวิศวกรรมด้วย

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

 
GN⁺ 2024-02-13
ความเห็นจาก Hacker News
  • สรุปความเห็นแรก:

    • ข้อกำหนดที่ชัดเจน: เหตุผลที่ซอฟต์แวร์มีบั๊กน้อยและทำงานได้เร็ว เป็นเพราะมีข้อกำหนดที่นิยามไว้อย่างชัดเจน ปัจจุบันซอฟต์แวร์มักคลุมเครือว่าควรสร้างอะไร และเปลี่ยนแปลงต่อเนื่องจากแนวทางแบบ "Agile" หากให้นักพัฒนามี API ที่ชัดเจนและเกณฑ์ที่กำหนดไว้อย่างดี ส่วนใหญ่ก็สามารถเขียนโค้ดที่มีประสิทธิภาพได้
  • สรุปความเห็นที่สอง:

    • ความสามารถของโปรแกรมเมอร์โซเวียต: จากประสบการณ์ที่เคยทำงานร่วมกับผู้ลี้ภัยจากสหภาพโซเวียต โปรแกรมเมอร์โซเวียตโดดเด่นเพราะการเข้าถึงคอมพิวเตอร์มีอยู่อย่างจำกัดมาก พวกเขาจึงต้องเขียนโปรแกรมด้วยกระดาษและดินสอ ทำให้พยายามสร้างให้มันทำงานได้ถูกต้องตั้งแต่แรก
  • สรุปความเห็นที่สาม:

    • ความสำคัญของพื้นที่ทำงานส่วนตัว: อ้างอิงความเห็นของบัญชี jrd259 จากเธรด Hacker News ก่อนหน้า เพื่อเน้นย้ำความสำคัญของโต๊ะทำงานขนาดใหญ่และพื้นที่ทำงานส่วนตัวที่ไม่มีการแจ้งเตือนรบกวน
  • สรุปความเห็นที่สี่:

    • ประสบการณ์การเขียนโปรแกรมบนกระดาษ: ตอนเด็กเคยพิมพ์โปรแกรม Turbo Pascal ด้วยเครื่องพิมพ์ดีดที่บ้านคุณปู่โดยไม่มีคอมพิวเตอร์ แล้วค่อยนำไปรันบนพีซีในภายหลัง อีกทั้งยังเคยย้ายฟังก์ชันบวกเลขฐานสองของภาษาโปรแกรมแปลกใหม่ที่ตัวเองสร้างชื่อ Ziim ลงบนกระดาษ เพื่อหาบั๊กและแก้ไข ประเด็นคือ เมื่อจำกัด "วิธีที่ง่าย" ลง ก็จะเขียนโค้ดที่ผ่านการคิดมาดีกว่าเดิมได้
  • สรุปความเห็นที่ห้า:

    • การเขียนโปรแกรมในอดีต: ช่วงปลายยุค "big iron" โปรแกรมเมอร์แทบไม่ต่างจากพนักงานป้อนข้อมูล โปรแกรมถูกเขียนลงบนกระดาษ และเวลาในการประมวลผลมีราคาแพงและมีค่ามาก หากเกิดบั๊ก ก็ไม่สามารถแก้ได้จนกว่าจะถึงรอบจองการใช้งาน CPU ครั้งถัดไป สิ่งนี้กระตุ้นให้เกิดแนวทางการทำงานที่รอบคอบ ปัจจุบันเราดีบักใน IDE และพัฒนาซอฟต์แวร์แบบวนซ้ำได้
  • สรุปความเห็นที่หก:

    • โค้ดที่เขียนโดย André Bensoussan: มีการแชร์ลิงก์ไปยังโค้ดที่ André Bensoussan เขียน
  • สรุปความเห็นที่เจ็ด:

    • ขนาดของซอฟต์แวร์ในอดีต: ซอฟต์แวร์ในยุคนั้นมีขนาดเล็กกว่าปัจจุบันมาก โดยโครงการส่วนใหญ่อยู่ในระดับเมกะไบต์ และใหญ่เกินกว่าจะ "จด" ไว้ในไฟล์เดียวได้
  • สรุปความเห็นที่แปด:

    • การบ้านเขียนโปรแกรมที่โรงเรียน: จากประสบการณ์ของเพื่อนคนหนึ่ง งานเขียนโปรแกรมที่โรงเรียนต้องส่งบนกระดาษ และจะได้รับผลลัพธ์กลับมาในอีกหนึ่งสัปดาห์ต่อมา "เวลาคอมไพล์" หนึ่งสัปดาห์เป็นประสบการณ์ทางการศึกษาที่ทำให้ต้องตรวจงานซ้ำอย่างรอบคอบ
  • สรุปความเห็นที่เก้า:

    • การไม่มี Agile/Scrum: คำตอบต่อคำถามว่า André ทำงานลักษณะนั้นได้อย่างไร คือ ในเวลานั้นยังไม่มีการคิดค้นระเบียบวิธีพัฒนาแบบ Agile/Scrum ขึ้นมา
  • สรุปความเห็นที่สิบ:

    • ประสบการณ์การเขียนโค้ดบนกระดาษ: ตอนอายุ 14 ในวิชาเขียนโปรแกรมระดับมัธยมปลาย เขียนโค้ดส่วนใหญ่ลงบนกระดาษ ในฐานะเด็กยากจนจากประเทศยากจน เขาไม่มีพีซีที่บ้าน และเครื่อง ZX Spectrum โคลนในห้องคอมพิวเตอร์ของโรงเรียนก็ไม่สามารถรัน Turbo Pascal ที่เขาใช้อยู่ได้