[FAQ] Tại sao Nhân Linux viết bằng C mà không phải là C++?

Câu hỏi và câu trả lời tại đây!

HỎI: Những lý do nào về nhân Linux (nói chung cả Unix, bao gồm Solaris) được viết bằng C mà không phải là C++. Trong khi C++ là một ngôn ngữ tốt hơn C về các khái niệm hướng đối tượng. Tại sao kernel hay hầu hết các hệ thống CSDL phổ biến được viết bằng ngôn ngữ C thay vì bằng C++. (rkalyankumar)

TRẢ LỜI:

(maniac)
Những lý do cụ thể về Linux đã được giải thích chi tiết trong Linux Kernel Mailing List (LKML) Frequently Asked Questions (FAQ) tại:
  http://www.tux.org/lkml/

Ở Section 15 (tiêu đề Programming Religion), giải thích tổng quát như sau:

  – Linus đã bắt đầu với với chiếc máy 386, hệ điều hành Minix, và trình biên dịch gcc.
  – C được dùng để thay thế Assembly bởi nhiều lý do như khả năng bảo trì mã, khả năng đọc, tính hiệu quả…
  – Cách đây nhiều năm, những nhà phát triển kernel đã cố gắng dùng g++ để biên dịch nhân Linux và thấy rằng kernel chạy chậm hơn so với khi được biên dịch bằng gcc (nhiều người đã nghĩ rằng tốc độ sẽ là như nhau); và rồi họ chẳng muốn thực hiện điều này một lần nào nữa.
  – Cuối cùng Linus đã quyết định sẽ gắn bó với C. Ngoài ra còn có một số lời giải thích khác tại:
  http://kerneltrap.org/node/2067
trong đó mô tả nỗ lực của một người trong việc xây dựng một số mã C++ thích hợp để kết hợp vào một module của kernel.

Về bối cảnh lịch sử, Thompson và Ritchie đã phát triển UNIX bằng cách sử dụng một số khái niệm từ Multics và CTSS.
  http://www.multicians.org/unix.html
bao gồm việc thực hiện hầu hết các hoạt động bằng một ngôn ngữ bậc cao hơn (Unix – C, Multics – PL/I), đặt tên các command thông thường, v.v.. Bạn hãy tham khảo:
  http://cm.bell-labs.com/cm/cs/who/dmr/hist.html
trong đó mô tả sự phát triển SỚM của UNIX bao gồm việc chuyển đổi từ Assembly trên PDP-7 thành C trên PDP-11. (gần cuối trang)

Xây dựng từ những cơ sở đó, UNIX từ AT&T đã mở rộng việc phân phối và được tiến hành bởi hàng ngàn người là một hệ điều hành dựa trên C. Trong những năm 1970 và 1980, một sự thay thế cho việc phân phối của AT&T đã được phát triển tại UC Berkeley. Xem:
  http://en.wikipedia.org/wiki/Berkeley_Software_Distribution
cho một lời giải thích ngắn liên quan tới sự phát triển của BSD. Các phiên bản cuối cùng của BSD đã không sử dụng bất kỳ cơ sở mã nguồn nào của AT&T, ngoại trừ việc thực hiện chúng bằng C. Cuối bài viết là danh sách một vài hậu duệ của BSD bao gồm cả SunOS (hiện nay là Solaris).

Điều đó không phải để nói rằng ứng dụng được thực hiện tốt hơn bằng ngôn ngữ hướng đối tượng như là C++. Nhưng có một số giao diện người dùng đồ họa (GUI) chẳng hạn như KDE thì được viết bằng C++. Tuy nhiên, có những ứng dụng thì phù hợp hơn với ngôn ngữ hướng thủ tục, về điểm này thì hệ điều hành cũng nằm trong loại đó.

Leave a Reply

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s