Mình cũng có một thời gian tầm 2 năm, tự học Rust rồi tham gia vào vài open source project trên mạng (công ty không có dự án dùng Rust, cũng chẳng ai quan tâm đến Rust, mãi về sau thì mình là người viết một tool đầu tiên, nằm trong gói sản phẩm của công ty, bằng Rust). Quả thật là viết Rust, nếu người nào từ C/C++ chuyển sang (đã từng vật lộn với những cái vụn vặt của C++), thì rất sướng.
Nhân đây nói về C++, là một ngôn ngữ quá phổ biến, mạnh mẽ, hiệu năng cao. Nhưng đáng buồn, là một ngôn ngữ được thiết kế cực tồi, bản tiêu chuẩn của C++ thay đổi liên tục, và giờ đến trên 1000 trang (và còn tiếp tục tăng), có câu nói đùa là không ai dám nói là biết C++. Một khai báo khởi tạo biến mà có vài chục cách, và không ai có thể nhớ nổi cách nào là UB, cách nào không. Điều hài hước ở chỗ là thậm chí trong C++ Standard có những chỗ tự mâu thuẫn với nhau.
Mình trước đây chỉ hỏi một câu cực đơn giản trên StackOverflow về tính toán offset của một thành phần trong struct mà mọi người trên đó tranh cãi cả hai ngày (moderator phải chuyển các comments sang chế độ chat), để xem có phải là UB hay không, cuối cùng mới kết luận không thể biết được vì standard có mẫu thuẫn (vài người phát hiện ra và trỏ đến các chi tiết rất nhỏ trong hơn 1000 trang của standard).
Để so sánh thì Scheme (một kế thừa của Lisp) có standard trong sáng, chỉ vài chục trang, hay như ML chỉ hơn 100 trang (người thiết kế Lisp và ML đều có giải Turing, và là những tượng đài thực sự trong computer science).
Lý do thì rất nhiều, nhưng lý do chính, là xuất phát điểm thiết kế. Ngôn ngữ này được thiết kế bởi Bjarne Stroustrup, nhằm đưa OOP vào C; đáng tiếc thay BS lại là người không có chuyên môn về oop và type theory (nhìn vào các công bố academic là rõ). Nhiều cái trong C++, ví dụ template, đúng thực sự là trò cười: cố gắng bắt chước parametric polymorphism nhưng lại không có HM type checking. Người nào đọc những cuốn như là Effective C++ thì thấy ngay sự vụn vặt của ngôn ngữ, đủ các trick vặt vãnh (học đến hết đời cũng không xong).
Bài học tương tự là Python, khi Dropbox đã cố gắng tuyển dụng Guido van Rossum về, với hi vọng có thể đưa gradual typing vào Python 3, nhưng rồi thất bại vì Guido chỉ đưa ra được một thứ giả cầy là type annotation. Lý do chính, vì lịch sự, không được nói thẳng ra, nhưng mọi người đều biết là vì Guido cũng là người không có chuyên môn về type theory. Nói ra điều này để thấy rằng, có những tượng đài, nhưng tượng đài không phải siêu nhân, vẫn có điểm yếu không khắc phục nổi.
Quay lại Rust, xuất phát điểm của Rust là dựa trên Cyclone, một dự án academic nhằm tạo ra một ngôn ngữ dựa trên C, nhưng thêm vào các đặc điểm để đảm bảo memory safety. Rust kế thừa phần lớn các ý tưởng của Cyclone (strong type system, fat pointer, region-based memory management), và phát triển thêm (từ tracked pointer trong Cyclone đến borrow checker trong Rust), kết hơp với RAII của C++, nhưng sử dụng trait thay vì inheritance.
Rust làm cho người lập trình cảm tưởng vừa có sự mạnh mẽ về mặt biểu đạt (expressiveness) của các ngôn ngữ lập trình hàm, vừa có hiệu năng cực tốt như các ngôn ngữ procedural bậc thấp như C/C++. Và hội đồng thiết kế Rust cũng rất "khôn ngoan" khi không cố gắng đưa vào ngôn ngữ những đặc điểm quá trừu tượng của các ngôn ngữ lập trình hàm (trong Rust, function không phải là first-class data type).
Một phần vì không thể, Rust không sử dụng GC, nên closure không thể là function, explicit data type representation nên cấu trúc dữ liệu không thể là cấu trúc đệ qui. Một phần khác là do bài học của các ngôn ngữ như SML/Haskell/OCaml vẫn còn sờ sờ ra đó, rất mạnh về mặt biểu đạt, nhưng trừu tượng nên phần lớn lập trình viên không muốn nắm bắt.
Hơn 2 năm nay mình không còn đụng đến Rust nữa (vì vài lý do cá nhân), thỉnh thoảng có theo dõi tình hình. Có cảm tưởng như Rust lặp lại vấn đề của C++, khi người ta cố gắng đưa mọi thứ vào ngôn ngữ, ví dụ effect system (nhiều người, vì cuồng Rust, cho rằng ngôn ngữ có thể làm được tất cả). Hay do Rust có sử dụng một đặc điểm rất nhỏ của linear logic là destroyed copy (còn gọi là move semantics), nên ảo tưởng cho rằng Rust có thể hỗ trợ hoàn toàn linear type như là Idris. Bản thân mình thì cho rằng đó là một dạng cargo-cult science.
Về chính trị thì gần đây biết Ashley Williams vừa ra khỏi nhóm core, điều này mình đã cảm giác từ rất lâu, khi mới học Rust và theo dõi vài video của bà này (hàm lượng trí tuệ/kỹ thuật cực thấp, được cái có vẻ lạc quan dễ hiểu, một trong những trò cười là
video này), và tính cách toxic.