Tôi không nghĩ rằng lý do liên quan nhiều đến hiệu suất cũng như khả năng tương tác. Ngôn ngữ C ++ phức tạp hơn ngôn ngữ C, nhưng từ quan điểm hiệu suất sẽ không có sự khác biệt đáng chú ý theo cả hai cách. Một số cấu trúc C ++ nhanh hơn cấu trúc C tương đương ( std::sort
nhanh hơn qsort
) và có lẽ có những ví dụ điển hình về cách khác.
CHỈNH SỬA: Về mặt khả năng tương tác ...
Về cơ bản, tiêu chuẩn C ++ không xác định một số thứ có thể cần thiết để dễ dàng tương tác giữa các tệp nhị phân được tạo bằng các trình biên dịch / phiên bản khác nhau. Vấn đề đáng chú ý nhất ở đây là quy ước đặt tên cho các ký hiệu trong hệ nhị phân. Trong C, ngôn ngữ xác định một ánh xạ duy nhất từ mỗi ký hiệu trong mã sang tên ký hiệu nhị phân. Một hàm được gọi my_function
sẽ tạo ra một ký hiệu trong hệ nhị phân được gọi my_function
. Mặt khác, và do tính năng như chức năng quá tải, tên của chức năng C ++ phải được đọc sai(được dịch thành các ký hiệu hàm khác nhau trong hệ nhị phân, mã hóa kiểu đối số và kiểu trả về) và tiêu chuẩn không xác định cách thực hiện thao tác đọc. Điều đó có nghĩa là cùng một hàm trong C ++ có thể được biên dịch thành các ký hiệu khác nhau tùy thuộc vào trình biên dịch (trừ khi extern "C"
được sử dụng để buộc khả năng tương tác của C cho các hàm đó trong C ++).
Vào cuối ngày, giao diện giữa ngôn ngữ kịch bản và mã gốc dù sao cũng phải là giao diện C, ngay cả khi chi tiết về cách nó được triển khai nội bộ có thể là C / C ++ / bất kỳ ngôn ngữ mẹ đẻ nào khác.
(Tôi cố ý không muốn tham gia vào một cuộc chiến ngôn ngữ nảy lửa, C ++ thực sự mạnh mẽ, nhưng nó cũng hơi đáng sợ vì nó là một ngôn ngữ phức tạp hơn nhiều so với C và một số thứ trông đơn giản có thể ảnh hưởng đến hiệu suất)