Viết Python theo phong cách Rust
(kobzol.github.io)- Sau khi bắt đầu sử dụng Rust, tác giả đã áp dụng một số khái niệm của Rust vào cách viết mã Python
- Sử dụng
Type Hintnhiều nhất có thể - Dùng
Dataclassesthay cho tuple/từ điển - Kiểu dữ liệu đại số (
Algebraic data types, ADT) - Mẫu
newtype - Mã hóa các bất biến bằng kiểu dữ liệu
Bounding boxđược định kiểu chặt chẽ
8 bình luận
Nếu đã thế này thì còn dùng Python làm gì nữa...
(feat. Nếu đã thế này thì còn dùng Node.js làm gì nữa)
Có vẻ chỉ mới thêm kiểu dữ liệu thôi, vậy mà đem ra so với Rust thì có đáng không?
Nếu định viết Python theo kiểu Rust, chẳng phải dùng luôn Rust sẽ tốt hơn sao?..
Có thể dùng Tensorflow, PyTorch bằng Rust không? Dù có thể dùng đi nữa, cũng chưa chắc có thể dùng được cả đống thư viện đi kèm với chúng. Đó là một cách nghĩ quá một chiều.
Tôi nghĩ rằng việc sử dụng những đặc tính (khái niệm) hay của một ngôn ngữ nào đó và việc trực tiếp sử dụng chính ngôn ngữ đó là hai việc khác nhau, dù còn tùy vào từng tình huống. Dù các đặc trưng của ngôn ngữ hàm như Lisp, Haskell, v.v. có thể được áp dụng rất hiệu quả trong JavaScript, điều đó không có nghĩa là có thể dùng Lisp ở những nơi đang dùng JavaScript.
Tùy tình huống mà cần chọn lọc áp dụng, nhưng nhìn chung đây là những cách tiếp cận mà tôi muốn khuyến nghị.
Tôi không rành Python lắm....
Nếu làm theo kiểu này thì overhead có tăng lên nhiều không?
Nhìn chung nội dung nói nhiều về việc sẽ dùng type hint, nhưng thứ này không chạy ở runtime nên không liên quan đến hiệu năng. Những chỗ kiểm tra kiểu như
isinstancethì dù sao cũng sẽ tốn hơn là không có, nhưng theo tôi biết là bên trong có cache. Nếu làm trong một vòng lặp cực lớn thì đúng là sẽ tạo ra khác biệt.