Người ta thường có thể nghe rằng OOP tự nhiên tương ứng với cách mọi người nghĩ về thế giới. Nhưng tôi hoàn toàn không đồng ý với tuyên bố này: Chúng tôi (hoặc ít nhất là tôi) khái niệm hóa thế giới về mối quan hệ giữa những thứ chúng ta gặp phải, nhưng trọng tâm của OOP là thiết kế các lớp riêng lẻ và phân cấp của chúng.
Lưu ý rằng, trong cuộc sống hàng ngày, các mối quan hệ và hành động tồn tại chủ yếu giữa các đối tượng sẽ là các thể hiện của các lớp không liên quan trong OOP. Ví dụ về các mối quan hệ như vậy là: "màn hình của tôi ở trên cùng của bảng"; "Tôi (một con người) đang ngồi trên ghế"; "một chiếc xe đang trên đường"; "Tôi đang gõ trên bàn phím"; "máy pha cà phê đun sôi nước", "văn bản được hiển thị trong cửa sổ đầu cuối."
Chúng tôi nghĩ theo nghĩa hai phần tử (đôi khi là hóa trị ba, ví dụ như trong "Tôi đã tặng hoa cho bạn") động từ trong đó động từ là hành động (quan hệ) hoạt động trên hai đối tượng để tạo ra một số kết quả / hành động. Các trọng tâm là về hành động, và hai (hoặc ba) [ngữ pháp] đối tượng có tầm quan trọng như nhau.
Ngược lại với OOP nơi đầu tiên bạn phải tìm một đối tượng (danh từ) và bảo nó thực hiện một số hành động trên một đối tượng khác. Cách suy nghĩ được chuyển từ hành động / động từ hoạt động trên danh từ sang danh từ hoạt động trên danh từ - như thể mọi thứ đang được nói bằng giọng bị động hoặc phản xạ, ví dụ: "văn bản đang được hiển thị bởi cửa sổ đầu cuối". Hoặc có thể "văn bản tự vẽ trên cửa sổ terminal".
Không chỉ trọng tâm được chuyển sang danh từ, mà một trong những danh từ (hãy gọi nó là chủ đề ngữ pháp) được cho "tầm quan trọng" cao hơn so với đối tượng khác (đối tượng ngữ pháp). Do đó, người ta phải quyết định xem người ta sẽ nói terminalWindow.show (someText) hay someText.show (terminalWindow). Nhưng tại sao gánh nặng cho những người có các quyết định tầm thường như vậy mà không có hậu quả hoạt động khi một người thực sự có nghĩa là hiển thị (terminalWindow, someText)? [Hậu quả là không đáng kể về mặt vận hành - trong cả hai trường hợp, văn bản được hiển thị trên cửa sổ đầu cuối - nhưng có thể rất nghiêm trọng trong việc thiết kế hệ thống phân cấp lớp và một lựa chọn "sai" có thể dẫn đến mã bị sai lệch và khó duy trì.]
Do đó, tôi sẽ lập luận rằng cách làm chủ đạo của OOP (dựa trên lớp, gửi đơn) là khó bởi vì nó KHÔNG CHÍNH THỨC và không tương ứng với cách con người nghĩ về thế giới. Các phương pháp chung từ CLOS gần với cách suy nghĩ của tôi hơn, nhưng, than ôi, đây không phải là cách tiếp cận rộng rãi.
Với những vấn đề này, làm thế nào / tại sao nó lại xảy ra mà cách làm OOP hiện nay trở nên phổ biến? Và những gì, nếu có, có thể được thực hiện để truất ngôi nó?