Ngôn ngữ lập trình nào viết ra Linux kernel?

Nhân bánh ít thịt dừa

Bánh ít lá gai nhân đậu xanh

Bánh ít nếp than nhân dừa và đậu xanh

Bánh ít trần nhân tôm thịt

Ngôn ngữ lập trình C là ngôn ngữ lập trình chính để viết ra Linux kernel.

Nói cách khác Linux kernel được viết chủ yếu bằng ngôn ngữ lập trình C.

Ngoài ra Linux kernel cũng có 1 phần nhỏ nhưng rất quan trọng được viết bằng ngôn ngữ lập trình Assembly, nơi mà ngôn ngữ lập trình C khó với tới.

Ngôn ngữ lập trình assembly là ngôn ngữ cấp thấp, chạy trực tiếp trên phần cứng CPU nào đó, nó được xem là gần với các lệnh của CPU nhất.

Các ngôn ngữ lập trình Yacc (Yet Another Compiler-Compiler), FLEX (fast lexical analyzer generator), GNU Bison đi kèm chung 1 bộ để phân tích mã nguồn, cú pháp.

Các ngôn ngữ lập trình dạng script (scripting language) như Python, Perl, Bash shell… để viết các công cụ bổ sung, hỗ trợ làm 1 việc nào đó cho Linux kernel.

sloccount là công cụ dùng để đếm các file của các ngôn ngữ lập trình và đưa ra thống kê về phần trăm các ngôn ngữ lập trình được xài.

sloccount count source lines of code (SLOC).

Bài tập Linux kernel

Lập trình Bash shell liệt kê các ngôn ngữ lập trình có trong mã nguồn của Linux kernel và tỉ lệ phần trăm của chúng trong toàn bộ mã nguồn Linux kernel.

Bash script sloccount.sh bạn viết ra chính xác hơn lệnh sloccount chạy ở hình dưới.

sloccount viết tắt các ngôn ngữ lập trình như sau:

ansic là ngôn ngữ lập trình ANSI C.

asm là ngôn ngữ lập trình Aseembly.

cpp là C plus plus là ngôn ngữ lập trình C++.

sh là shell trên Linux thì Bash shell là shell mặc định trên hầu hết các bản Linux.

sloccount --filecount -- linux-6.6.9/
Creating filelist for linux-6.6.9
Categorizing files.
Finding a working MD5 command....
Found a working MD5 command.
Warning: in linux-6.6.9, number of duplicates=157
Computing results.


#Files	Directory	#Files-by-Language (Sorted)
59029   linux-6.6.9     ansic=56325,asm=1340,sh=1048,python=197,perl=68,
                        cpp=16,awk=13,yacc=10,lex=10,sed=1,ruby=1


Totals grouped by language (dominant language first):
ansic:        56325 (95.42%)
asm:           1340 (2.27%)
sh:            1048 (1.78%)
python:         197 (0.33%)
perl:            68 (0.12%)
cpp:             16 (0.03%)
awk:             13 (0.02%)
lex:             10 (0.02%)
yacc:            10 (0.02%)
sed:              1 (0.00%)
ruby:             1 (0.00%)




Total Number of Files = 59029
Total Number of Source Code Files = 59029
SLOCCount, Copyright (C) 2001-2004 David A. Wheeler
SLOCCount is Open Source Software/Free Software, licensed under the GNU GPL.
SLOCCount comes with ABSOLUTELY NO WARRANTY, and you are welcome to
redistribute it under certain conditions as specified by the GNU GPL license;
see the documentation for details.
Please credit this data as "generated using David A. Wheeler's 'SLOCCount'."