Cảnh báo: đây không phải là một câu trả lời gần như là một bài phê bình về cuộc nói chuyện mà "người dùng không biết" liên quan đến câu trả lời của anh ta.
Điểm chính đầu tiên của anh là "được cho là" tiêu chuẩn luôn thay đổi ". Trong thực tế, các ví dụ anh đưa ra liên quan đến những thay đổi trong C ++ trước khi có một tiêu chuẩn. Kể từ năm 1998 (khi tiêu chuẩn C ++ đầu tiên được hoàn thiện) các thay đổi về ngôn ngữ là khá tối thiểu - trên thực tế, nhiều người sẽ cho rằng vấn đề thực sự là cần phải thực hiện nhiều thay đổi hơn . Tôi khá chắc chắn rằng tất cả các mã phù hợp với tiêu chuẩn C ++ ban đầu vẫn phù hợp với tiêu chuẩn hiện tại. Mặc dù nó phần nào ít chắc chắn hơn, trừ khi có gì đó thay đổi nhanh chóng (và khá bất ngờ), điều tương tự cũng sẽ khá đúng với tiêu chuẩn C ++ sắp tới (về lý thuyết, tất cả các mã được sử dụngexport
sẽ phá vỡ, nhưng hầu như không tồn tại; từ quan điểm thực tế, nó không phải là một vấn đề). Tôi có thể nghĩ ra một vài ngôn ngữ khác, HĐH (hoặc nhiều thứ khác liên quan đến máy tính) có thể đưa ra bất kỳ khiếu nại nào như vậy.
Sau đó, ông đi vào "phong cách luôn thay đổi". Một lần nữa, hầu hết các điểm của anh ấy khá gần với vô nghĩa. Anh ta cố gắng mô tả đặc điểm for (int i=0; i<n;i++)
là "cũ và chán" và for (int i(0); i!=n;++i)
"độ nóng mới". Thực tế là trong khi có những loại mà những thay đổi như vậy có thể có ý nghĩa, thì int
, nó không có gì khác biệt - và ngay cả khi bạn có thể đạt được một cái gì đó, hiếm khi cần thiết để viết mã tốt hoặc đúng. Thậm chí là tốt nhất, anh ta đang tạo ra một ngọn núi từ một nốt ruồi.
Yêu cầu tiếp theo của ông là C ++ đang "tối ưu hóa sai hướng" - cụ thể, trong khi ông thừa nhận rằng việc sử dụng các thư viện tốt là dễ dàng, ông tuyên bố rằng C ++ "làm cho việc viết thư viện tốt gần như không thể." Ở đây, tôi tin là một trong những sai lầm cơ bản nhất của anh ấy. Trong thực tế, viết thư viện tốt cho hầu hết mọi ngôn ngữ là vô cùng khó khăn. Ở mức tối thiểu, viết một thư viện tốt đòi hỏi phải hiểu rõ một số miền có vấn đề để mã của bạn hoạt động cho vô số ứng dụng có thể có trong (hoặc liên quan đến) tên miền đó. Hầu hết những gì C ++ thực sự làm là "nâng tầm" - sau khi thấy một thư viện có thể tốt hơn bao nhiêu , mọi người hiếm khi sẵn sàng quay lại để viết loại trò chơi mà họ sẽ có.các lập trình viên thực sự giỏi viết khá nhiều thư viện, sau đó có thể được sử dụng (một cách dễ dàng, như anh ta thừa nhận) bởi "phần còn lại của chúng tôi". Đây thực sự là một trường hợp "đó không phải là một lỗi, đó là một tính năng."
Tôi sẽ không cố gắng đạt được mọi điểm theo thứ tự (sẽ mất các trang), nhưng bỏ qua trực tiếp đến điểm kết thúc của anh ấy. Ông trích dẫn Bjarne: "tối ưu hóa toàn bộ chương trình có thể được sử dụng để loại bỏ các bảng chức năng ảo và dữ liệu RTTI không sử dụng. Phân tích như vậy đặc biệt phù hợp với các chương trình tương đối nhỏ không sử dụng liên kết động."
Ông phê phán điều này bằng cách đưa ra một tuyên bố không được hỗ trợ rằng "Đây là một vấn đề thực sự khó khăn", thậm chí còn đi xa hơn khi so sánh nó với vấn đề tạm dừng. Trên thực tế, không có gì thuộc loại này - trên thực tế, trình liên kết đi kèm với Zortech C ++ (khá nhiều trình biên dịch C ++ đầu tiên cho MS-DOS, vào những năm 1980) đã làm điều này. Đúng là khó có thể chắc chắn rằng mọi bit dữ liệu ngoại lai có thể đã bị loại bỏ, nhưng vẫn hoàn toàn hợp lý để thực hiện một công việc khá công bằng.
Tuy nhiên, bất kể điều đó, điểm quan trọng hơn nhiều là điều này hoàn toàn không liên quan đến hầu hết các lập trình viên trong mọi trường hợp. Như những người trong chúng ta đã phân tách khá nhiều mã biết, trừ khi bạn viết ngôn ngữ hợp ngữ hoàn toàn không có thư viện, các tệp thực thi của bạn gần như chắc chắn chứa một lượng "công cụ" (cả mã và dữ liệu, trong trường hợp điển hình) mà bạn thậm chí có thể không biết về, không đề cập đến bao giờ thực sự sử dụng. Đối với hầu hết mọi người, hầu hết thời gian, điều đó không thành vấn đề - trừ khi bạn đang phát triển cho các hệ thống nhúng nhỏ nhất, việc tiêu thụ thêm dung lượng chỉ đơn giản là không liên quan.
Cuối cùng, sự thật là lời ca tụng này có nhiều chất hơn một chút so với sự ngốc nghếch của Linus - nhưng điều đó mang lại cho nó chính xác sự nguyền rủa với lời khen ngợi mờ nhạt mà nó xứng đáng.
virtual
hàm, phải không?