Tôi cũng sẽ chống lại hạt gạo ở đây và cố gắng tạo ra một trường hợp thẩm mỹ (hơi hài hước) cho C. Trong khi một số người có thể gọi nó là "xấu xí" vì những lý do khác nhau, chẳng hạn như việc thiếu các cấu trúc cấp cao hơn như các lớp học hoặc nó phụ thuộc vào con trỏ, tôi thấy rằng đó không phải là trường hợp của tôi .
TL; DR : Theo tôi, C đơn giản, C tốt có thể đọc được và có một niềm vui nhất định được tìm thấy trong các bit đập.
C đơn giản
Tiêu chuẩn C chỉ định nghĩa một vài loại và cơ chế cơ bản để tạo các hàm, con trỏ và mảng trong số chúng. Trên hết, có một số lượng nhỏ các cấu trúc thành phần để tạo ra các loại phức tạp hơn từ các nguyên thủy (như cấu trúc và công đoàn). Lưu ý cách tôi mô tả hầu hết các ngôn ngữ trong hai câu. Điều này có nghĩa là bạn không phải giữ quá nhiều quy tắc và hình thức cú pháp trong đầu khi viết mã.
Đơn giản là đẹp .
C không phức tạp
Không giống như nhiều ngôn ngữ cấp cao hơn, bạn sẽ khó tìm thấy nhiều biểu tượng kỳ lạ, khó hiểu trong C. Trong thế giới C, cơ sở chính cho cả trừu tượng hóa và "nén cú pháp" là chức năng - về mặt ngữ nghĩa rất đơn giản và xây dựng tự giải thích. Phong cách C tốt khuyến khích vẻ đẹp gần như thơ mộng, dễ đọc. Để minh họa, chúng ta hãy thử đọc đoạn mã sau từ nhân Linux. Ngay cả khi không nắm bắt được các cấu trúc dữ liệu cơ bản và chi tiết triển khai, chúng ta có thể hiểu rất nhiều về những điều sau đây:
bool kthread_freezable_should_stop(bool *was_frozen)
{
bool frozen = false;
might_sleep();
if (unlikely(freezing(current)))
frozen = __refrigerator(true);
if (was_frozen)
*was_frozen = frozen;
return kthread_should_stop();
}
Phần giữa của hàm ghi "trong trường hợp không chắc là dòng điện bị đóng băng, hãy hỏi tủ lạnh nếu việc đóng băng thực sự xảy ra". Tiến sĩ Seuss không thể viết nó tốt hơn.
Đọc được là đẹp .
C là minh bạch
Trừ khi một câu lệnh C bao gồm một lệnh gọi hàm, bạn thường có thể có được một ý tưởng rất tốt về chi phí thời gian chạy và các tác dụng phụ của nó. C cung cấp cho người lập trình điều khiển và cuối cùng tin tưởng anh ta hoặc cô ta làm điều đúng đắn. Chúng ta có thể có được một bức tranh về những gì xảy ra khi đoạn trích này (được định dạng lại một chút cho SE) ra khỏi việc triển khai strlen()
trong thư viện GNU C, bởi vì mọi toán tử đều có ngữ nghĩa được xác định rõ. Không có quá tải trong C.
for (char_ptr = str; ((unsigned long int) char_ptr & (sizeof (longword) - 1)) != 0;
++char_ptr)
if (*char_ptr == '\0')
return char_ptr - str;
Đối với mục đích "tối ưu hóa", khách sạn này là tuyệt vời. Có thể cho rằng, một số ngôn ngữ cấp cao làm cho biểu thức ngắn gọn của thuật toán cấp cao dễ dàng hơn (như C ++ với các lớp và nạp chồng), nhưng với mục đích C được thiết kế để - hoạt động như một trình biên dịch di động - C là lý tưởng. Đôi khi, khi thực hiện thành công mã cấp thấp, một lập trình viên có thể cảm thấy một cái với máy, theo một nghĩa nào đó (hoặc bằng không - đó là một chi tiết triển khai). Điều này không có nghĩa là các ngôn ngữ khác là xấu, không đủ "zen" hoặc một thứ ngớ ngẩn như thế, chỉ là IMO C có thể thú vị theo cách mà nhiều ngôn ngữ khác đã chọn không tồn tại, vì nhiều lý do hợp lệ.
Theo tôi, ba điểm được trình bày ở trên giúp quản lý việc tạo ra các hệ thống phức tạp - nhưng hiệu quả -, được thể hiện trong tâm trí của tôi bởi Linux. Tôi thấy rằng thế giới này hấp dẫn sự nhạy cảm thẩm mỹ của tôi và tôi khuyên mọi người coi C là mục tiêu tiếp theo của mình để xem xét những điểm này. Tôi cảm thấy rằng các đối số về hệ điều hành và không có gì được hỗ trợ tốt hơn bằng cách nêu rõ chúng bởi vì người ta chắc chắn không cần phải hiểu hạt nhân để trở thành một lập trình viên thành công, nhưng người ta có thể thấy các lĩnh vực này hấp dẫn một cách chủ quan.