Bạn có thể muốn xem blog video nhanh này . Kết quả cuối cùng là sự khác biệt giữa lập trình có cấu trúc và lập trình OO là vấn đề họ lấy đi từ lập trình, chứ không phải về những gì họ thêm vào. Các ngành phần mềm như Lập trình có cấu trúc và Lập trình hướng đối tượng bị hạn chế, không cho phép. Dưới đây là một số định nghĩa. Cảnh báo: bạn sẽ không thích chúng.
Lập trình có cấu trúc là kỷ luật áp đặt khi goto (chuyển giao quyền kiểm soát trực tiếp)
Lập trình OO là kỷ luật áp đặt cho con trỏ đến các chức năng (chuyển giao quyền kiểm soát gián tiếp)
Lập trình chức năng là kỷ luật áp đặt khi giao.
Điều đầu tiên không quá khó hiểu. Dijkstra nhận thấy rằng không thể tạo ra bằng chứng chung về tính đúng đắn khi goto được cho phép trong các thuật toán. Tuy nhiên, nếu các cấu trúc điều khiển bị giới hạn theo trình tự, lựa chọn và lặp lại, thì bằng chứng về tính chính xác là có thể. Tất nhiên ngày nay chúng ta thậm chí không cố gắng chứng minh mọi thứ chính xác, nhưng chúng ta thích sự đơn giản và thanh lịch của lập trình có cấu trúc.
Khó hiểu hơn một chút về OO. Chúng ta thường định nghĩa OO là đóng gói, kế thừa và đa hình. Thế nào là ít biết là tất cả ba trong số những thuộc tính này là có thể đạt được, và thường xuyên được đạt được trong C. Thật vậy, C ++ bắt đầu như chỉ là một Preprocessor rằng biên soạn xuống C. Nó không thực sự khó khăn để đóng gói trong C. Cũng rất khó để xây dựng cấu trúc dữ liệu là tập hợp con của nhau, mô phỏng sự kế thừa. Đa hình, tuy nhiên, là một chút khó khăn hơn. Nó đòi hỏi con trỏ đến các chức năng, trong C, khó quản lý tốt. Những ngôn ngữ như C ++ đã cho chúng tôi là kỷ luật áp đặt cho những con trỏ đó vào các chức năng. Trình biên dịch C ++ đã xây dựng các vtables cho chúng ta và khởi tạo các con trỏ bên trong chúng theo một hình thức nghiêm ngặt. Vì vậy, theo một nghĩa rất thực, OO chỉ đơn giản là kỷ luật áp đặtchuyển gián tiếp điều khiển tức là con trỏ đến các chức năng.
Lập trình cấu trúc là về cách không sử dụng goto. OO là về cách không sử dụng con trỏ đến các chức năng. Và lập trình chức năng cũng là tất cả về những gì không nên làm. Trong lập trình chức năng, chúng tôi không gán các biến trừ trong các trường hợp được kiểm soát chặt chẽ nhất.
Vì vậy, cuối cùng, tất cả các "công nghệ" lập trình này thực sự đang hạn chế các quy tắc hơn là cho phép các công nghệ. Họ nói với chúng tôi những gì không nên làm nhiều hơn họ nói chúng tôi phải làm gì. Và điều đó có nghĩa là sự phát triển phần mềm đã không phát triển trong 40 năm qua. Thay vào đó, nó đã bị thu hẹp. Nó trở nên hạn chế hơn bao giờ hết khi chúng ta đã học được tất cả những điều chúng ta không nên làm.
Học những gì không nên làm là tốt; nhưng đây là câu hỏi làm phiền: Những tác vụ mới có chúng tôi đã học để làm gì?