Tại sao hầu hết các chương trình Linux được viết bằng C? Tại sao chúng không được viết bằng C ++, cái mới hơn?
Tại sao hầu hết các chương trình Linux được viết bằng C? Tại sao chúng không được viết bằng C ++, cái mới hơn?
Câu trả lời:
Đã có nhiều cuộc thảo luận về điều này. Chủ yếu, lý do là một triết lý. C được phát minh như một ngôn ngữ đơn giản để phát triển hệ thống (không phát triển ứng dụng quá nhiều). Có nhiều đối số để sử dụng C ++, nhưng có nhiều như vậy cho không sử dụng C ++ và dính vào C.
Cuối cùng, đó là một vấn đề lịch sử. Hầu hết các công cụ ứng dụng được viết bằng C, bởi vì hầu hết các công cụ Kernel được viết bằng C. Và kể từ đó, hầu hết các công cụ được viết bằng C, mọi người có xu hướng sử dụng các ngôn ngữ gốc.
Tại thời điểm này, ai đó có thể hỏi "OK, vậy tại sao kernel được viết bằng C và không được chuyển sang C ++?" . Điều này đã được thảo luận trên kerneltrap một thời gian trước đây. Một lời giải thích hay có thể được trích dẫn từ chủ đề này là phản hồi của yoshi314 (trích dẫn trực tiếp):
đó là bởi vì gần như mọi ứng dụng c ++ đều cần một thư viện chuẩn c ++ riêng để hoạt động. vì vậy họ sẽ phải chuyển nó sang kernel và mong đợi thêm chi phí ở mọi nơi.
c ++ là ngôn ngữ phức tạp hơn và điều đó có nghĩa là trình biên dịch tạo mã phức tạp hơn từ nó. do đó, việc phát hiện ra rằng một vấn đề bắt nguồn từ lỗi trình biên dịch, thay vì lỗi mã dễ dàng hơn trong c.
Ngoài ra, ngôn ngữ c có nhiều barebone hơn và việc theo dõi đại diện lắp ráp của nó dễ dàng hơn, điều này thường dễ dự đoán.
c ++ linh hoạt hơn, nhưng c phù hợp hơn với các công cụ lowlevel hoặc nhúng.
Mặt khác, "hầu hết các chương trình Linux" là khá sai lệch. Hãy xem các ứng dụng đồ họa. Python ngày càng có cơ sở hơn, đặc biệt là trong môi trường GUI trên Linux. Về điều tương tự đang xảy ra với Windows và .NET.
Sau khi đọc email sau đây từ Linus Torvalds, người tạo ra linux. Tôi không thể nghĩ rằng câu trả lời ở trên là không chính xác. Ông dường như nghĩ rằng lập trình viên C ++ không phải là lập trình viên hệ thống tốt . Và rằng các tính năng bổ sung trong C ++ thường gây ra nhiều vấn đề hơn trong dài hạn so với lợi ích mà chúng mang lại trong thời gian ngắn. Mặc dù người ta có thể không đồng ý với anh ta, nhưng thật khó để nói quá tầm ảnh hưởng của anh ta đối với hệ điều hành linux.
C++
là mới hơnC
, nhưng đó là một chút không liên quan. Chúng là những ngôn ngữ khác nhau.