Tất cả các ngôn ngữ không nên cố gắng kết hợp mọi tính năng của mọi ngôn ngữ khác.
C ++ về cơ bản là một trình biên dịch macro rất, rất tinh vi. Nó KHÔNG (theo nghĩa truyền thống) là một ngôn ngữ cấp cao như C #, Java, Objective-C, Smalltalk, v.v.
Thật tốt khi có các công cụ khác nhau cho các công việc khác nhau. Nếu chúng ta chỉ có búa, tất cả mọi thứ sẽ trông giống như đinh, v.v. Có ngôn ngữ kịch bản là hữu ích cho một số công việc và ngôn ngữ OO phản chiếu (Java, Obj-C, C #) hữu ích cho một loại công việc khác và siêu các ngôn ngữ gần gũi với máy móc hiệu quả rất hữu ích cho một loại công việc khác (C ++, C, Trình biên dịch).
C ++ thực hiện một công việc tuyệt vời là mở rộng công nghệ Trình biên dịch lên mức quản lý phức tạp đáng kinh ngạc và trừu tượng hóa để làm cho việc lập trình lớn hơn, các nhiệm vụ phức tạp hơn có thể thực hiện được cho con người. Nhưng nó không nhất thiết là một ngôn ngữ phù hợp nhất cho những người đang tiếp cận vấn đề của họ từ góc độ cấp cao hoàn toàn (Lisp, Smalltalk, Java, C #). Nếu bạn cần một ngôn ngữ có các tính năng đó để triển khai tốt nhất giải pháp cho các vấn đề của mình, thì xin cảm ơn những người đã tạo ra những ngôn ngữ đó cho tất cả chúng ta sử dụng!
Nhưng C ++ dành cho những người, vì bất kỳ lý do gì, cần phải có mối tương quan chặt chẽ giữa mã của họ và hoạt động của máy bên dưới. Cho dù hiệu quả của nó, hoặc trình điều khiển thiết bị lập trình, hoặc tương tác với các dịch vụ HĐH cấp thấp hơn, hoặc bất cứ điều gì, C ++ đều phù hợp hơn với các tác vụ đó.
C #, Java, Objective-C đều yêu cầu một hệ thống thời gian chạy lớn hơn, phong phú hơn nhiều để hỗ trợ thực hiện chúng. Thời gian chạy đó phải được gửi đến hệ thống được đề cập - được cài đặt sẵn để hỗ trợ hoạt động của phần mềm của bạn. Và lớp đó phải được duy trì cho các hệ thống đích khác nhau, được tùy chỉnh bởi MỘT SỐ NGÔN NGỮ KHÁC để làm cho nó hoạt động trên nền tảng đó. Và lớp giữa đó - lớp thích ứng giữa HĐH máy chủ và mã của bạn - thời gian chạy, hầu như luôn được viết bằng ngôn ngữ như C hoặc C ++, trong đó hiệu quả là số 1, trong đó có thể hiểu được sự tương tác chính xác giữa phần mềm và phần cứng hiểu và thao tác để đạt được tối đa.
Tôi yêu Smalltalk, Objective-C và có một hệ thống thời gian chạy phong phú với sự phản chiếu, siêu dữ liệu, bộ sưu tập rác, v.v. Mã tuyệt vời có thể được viết để tận dụng các tiện ích này! Nhưng đó đơn giản chỉ là một lớp cao hơn trên ngăn xếp, một lớp phải nằm trên các lớp thấp hơn, cuối cùng chính chúng phải nằm trên HĐH và phần cứng. Và chúng ta sẽ luôn cần một ngôn ngữ phù hợp nhất để xây dựng lớp đó: C ++ / C / Assembler.
Phụ lục: C ++ 11/14 đang tiếp tục mở rộng khả năng C ++ để hỗ trợ các hệ thống và trừu tượng cấp cao hơn. Luồng, đồng bộ hóa, mô hình bộ nhớ chính xác, định nghĩa máy trừu tượng chính xác hơn đang cho phép các nhà phát triển C ++ đạt được nhiều khái niệm trừu tượng cấp cao mà một số ngôn ngữ chỉ cấp cao này sử dụng để có miền độc quyền, trong khi tiếp tục cung cấp gần gũi hiệu suất kim loại và khả năng dự đoán tuyệt vời (tức là hệ thống con thời gian chạy tối thiểu). Có lẽ các phương tiện phản chiếu sẽ được kích hoạt có chọn lọc trong phiên bản C ++ trong tương lai, cho những ai muốn nó - hoặc có lẽ một thư viện sẽ cung cấp các dịch vụ thời gian chạy như vậy (có thể có ngay bây giờ hoặc bắt đầu một trong số đó?).