Tôi đã suy nghĩ rất nhiều về thiết kế ngôn ngữ và những yếu tố nào cần thiết cho một ngôn ngữ lập trình "lý tưởng" và việc nghiên cứu Google Go đã khiến tôi đặt câu hỏi về nhiều kiến thức phổ biến khác.
Cụ thể, Go dường như có tất cả những lợi ích thú vị từ lập trình hướng đối tượng mà không thực sự có bất kỳ cấu trúc nào của ngôn ngữ hướng đối tượng. Không có lớp học, chỉ có cấu trúc; không có sự kế thừa lớp / cấu trúc - chỉ nhúng cấu trúc. Không có bất kỳ hệ thống phân cấp, không có lớp cha, không có triển khai giao diện rõ ràng. Thay vào đó, quy tắc truyền kiểu dựa trên một hệ thống lỏng lẻo tương tự như gõ vịt, sao cho nếu một cấu trúc thực hiện các yếu tố cần thiết của "Trình đọc" hoặc "Yêu cầu" hoặc "Mã hóa", thì bạn có thể truyền và sử dụng nó như một.
Có điều gì đó về OOP được triển khai trong C ++ và Java và C # vốn có khả năng cao hơn, dễ bảo trì hơn, bằng cách nào đó mạnh mẽ hơn mà bạn phải từ bỏ khi chuyển sang ngôn ngữ như Go? Bạn có lợi ích gì khi từ bỏ để đạt được sự đơn giản mà mô hình mới này đại diện?
EDIT đã
xóa câu hỏi "lỗi thời" mà độc giả dường như bị treo quá mức và tức giận.
Câu hỏi đặt ra là, mô hình hướng đối tượng truyền thống (với hệ thống phân cấp và như vậy) như thường thấy trong các triển khai ngôn ngữ thông thường phải đưa ra điều gì mà không thể thực hiện dễ dàng trong mô hình đơn giản này? Hay nói cách khác, nếu bạn định thiết kế một ngôn ngữ ngày nay, có lý do gì bạn muốn đưa vào khái niệm phân cấp lớp không?