16
เราต้องการภาษา OO เพื่อจัดการความซับซ้อนของซอฟต์แวร์หรือไม่?
นี่จะเป็นคำถามที่อ่อนนุ่มและไม่ใช่ด้านเทคนิคและฉันไม่แน่ใจว่านี่เป็นแพลตฟอร์มที่ถูกต้องหรือไม่ แต่ฉันเป็นนักเรียน CS คนแรกดังนั้นฉันหวังว่าพวกคุณจะทนได้ ในภาคการศึกษาแรกเราได้รับการแนะนำให้รู้จักกับแนวคิดของ OOP เช่นการห่อหุ้มการซ่อนข้อมูลการแยกส่วนการสืบทอดและอื่น ๆ ผ่านทาง Java และ UML (Java เป็นภาษาโปรแกรมแรกของฉัน) วิธีที่ฉันเข้าใจ OOP เป็นวิธีจัดการความซับซ้อนของซอฟต์แวร์ แต่หลักการของมันไม่ได้ใหม่หรือไม่เหมือนใคร แต่เป็นหลักการที่เป็นสากลสำหรับสาขาวิศวกรรมทั้งหมด ตัวอย่างเช่นรถยนต์เป็นโครงสร้างที่ซับซ้อนมากซึ่งความซับซ้อนได้รับการจัดการโดยลำดับชั้นของส่วนประกอบแบบแยกส่วนและส่วนประกอบแบบห่อหุ้มที่มีพฤติกรรมและอินเทอร์เฟซที่กำหนดชัดเจน แต่ฉันไม่เข้าใจเหตุผลเบื้องหลังการแนะนำกระบวนทัศน์การเขียนโปรแกรมใหม่ ฉันคิดว่าหลักการทั้งหมดที่ใช้ในการจัดการความซับซ้อนนั้นสามารถเกิดขึ้นได้ด้วยภาษาโปรแกรมขั้นตอน ตัวอย่างเช่นสำหรับ modularity เราสามารถแบ่งโปรแกรมออกเป็นโปรแกรมขนาดเล็กจำนวนมากที่ทำงานได้ดีซึ่งมีรหัสอยู่ในไฟล์แยกต่างหาก โปรแกรมเหล่านี้จะโต้ตอบซึ่งกันและกันผ่านอินพุตและเอาต์พุตที่กำหนดไว้อย่างดี ไฟล์อาจได้รับการปกป้อง (เข้ารหัส?) เพื่อให้ได้การห่อหุ้ม สำหรับการใช้รหัสซ้ำเราสามารถเรียกไฟล์เหล่านั้นได้ทุกเมื่อที่ต้องการในโปรแกรมใหม่ สิ่งนี้ไม่ได้จับทุกสิ่งที่เป็น OOP หรือฉันขาดสิ่งที่ชัดเจนมากไป? ฉันไม่ได้ขอหลักฐานว่า OOP จัดการความซับซ้อน ในความคิดของฉันมันแน่นอน แต่ฉันคิดว่าหลักการทั้งหมดที่ใช้ในการจัดการความซับซ้อนเช่นการแยกส่วนการห่อหุ้มการซ่อนข้อมูลและอื่น ๆ สามารถนำไปใช้อย่างง่ายดายโดยภาษาขั้นตอน ดังนั้นทำไม OOP จริง ๆ ถ้าเราสามารถจัดการความซับซ้อนโดยไม่ได้