Sự phát triển gần đây của brush (Bo(u)rn(e) RUsty SHell), một shell tương thích với POSIX và bash được triển khai bằng Rust, đã làm dấy lên một cuộc thảo luận rộng rãi trong cộng đồng lập trình viên về hướng phát triển tương lai của các shell dòng lệnh. Trong khi bản thân brush đại diện cho một thành viên mới trong lĩnh vực công cụ hệ thống dựa trên Rust đang ngày càng phát triển, cuộc thảo luận mà nó đã khơi mào cho thấy những câu hỏi sâu sắc hơn về việc cân bằng giữa khả năng tương thích với hệ thống cũ và đổi mới hiện đại.
Cuộc Tranh Luận về Khả Năng Tương Thích POSIX
Một trong những cuộc thảo luận nổi bật nhất xuất phát từ thông báo về brush tập trung vào việc liệu các shell mới có nên duy trì khả năng tương thích POSIX hay thoát khỏi những tiêu chuẩn có tuổi đời hàng thập kỷ này. Nhiều lập trình viên đang đặt câu hỏi liệu việc tuân thủ POSIX có còn giá trị trong môi trường điện toán ngày nay.
Đã đến lúc chúng ta vượt qua sự tuân thủ Posix cho các shell. Đừng hiểu sai ý tôi, đó là một điều tuyệt vời vào những năm 1980 và 1990 trong bối cảnh các cuộc chiến Unix. Nhưng trong một sự trớ trêu, Linux đã chiến thắng trong các cuộc chiến Unix, và ngày nay sự tuân thủ Posix, đối với các shell, chủ yếu cản trở sự đổi mới hoặc hiện đại hóa bằng cách gắn khái niệm về terminal vào một thứ có từ năm 1988.
Quan điểm này đã nhận được sự đồng tình từ nhiều người bình luận, họ chỉ ra quyết định của Fish shell trong việc từ bỏ khả năng tương thích POSIX để ưu tiên thiết kế ergonomic hơn. Fish, gần đây cũng đã chuyển sang sử dụng Rust, được khen ngợi vì đặt trải nghiệm người dùng lên trên việc tuân thủ nghiêm ngặt các tiêu chuẩn cũ. Cuộc trò chuyện này làm nổi bật sự phân chia ngày càng lớn giữa những người coi trọng khả năng tương thích ngược và những người tin rằng công nghệ shell cần một sự phát triển triệt để hơn.
Hai Con Đường Phát Triển: Mở Rộng vs. Đột Phá Hoàn Toàn
Cuộc thảo luận của cộng đồng đã tiết lộ hai cách tiếp cận chính cho sự phát triển của shell. Cách tiếp cận đầu tiên liên quan đến việc tạo ra các phiên bản mở rộng của tiêu chuẩn POSIX, như đã thấy với Bash, Zsh và dự án Oils (với các thành phần OSH và YSH). Những shell này duy trì khả năng tương thích ngược trong khi bổ sung các tính năng hiện đại. Cách tiếp cận thứ hai, được minh họa bởi Fish và PowerShell, liên quan đến việc tạo ra những đột phá hoàn toàn từ POSIX để cho phép thiết kế lại cơ bản hơn.
Nhiều lập trình viên lưu ý rằng những cách tiếp cận này không loại trừ lẫn nhau. Một quy trình làm việc phổ biến được nhiều người bình luận đề cập là sử dụng một shell hiện đại hơn, không tương thích POSIX như Fish cho việc sử dụng tương tác trong khi vẫn duy trì các shell tương thích POSIX cho mục đích viết script. Cách tiếp cận kết hợp này cho phép các lập trình viên tận hưởng ergonomics được cải thiện trong sử dụng hàng ngày mà không phải hy sinh khả năng tương thích cho các script có thể cần chạy trên nhiều hệ thống khác nhau.
Dữ Liệu Có Cấu Trúc: Ranh Giới Tiếp Theo của Shell
Một chủ đề lặp đi lặp lại trong các cuộc thảo luận là giá trị của việc xử lý dữ liệu có cấu trúc trong các shell hiện đại. Một số người bình luận đã nhấn mạnh Nushell và PowerShell như những ví dụ về shell vượt ra ngoài đầu vào/đầu ra dựa trên văn bản để cung cấp khả năng thao tác dữ liệu phong phú hơn.
Những người ủng hộ dữ liệu có cấu trúc trong shell nhấn mạnh rằng việc có dữ liệu có cấu trúc, có kiểu dữ liệu mang lại những lợi thế đáng kể cho các tác vụ thao tác dữ liệu phức tạp. Khả năng làm việc trực tiếp với JSON, CSV và các định dạng khác mà không cần phân tích cú pháp văn bản liên tục được mô tả là một sức mạnh phi thường bởi một người hâm mộ. Những người khác chỉ ra thành phần YSH của dự án Oils như một cách tiếp cận khác để kết hợp xử lý dữ liệu có cấu trúc trong khi vẫn duy trì con đường chuyển đổi từ bash truyền thống.
So sánh các Shell
Shell | Triển khai | Tương thích POSIX | Dữ liệu có cấu trúc | Ghi chú |
---|---|---|---|---|
brush | Rust | Có | Không | Dự án mới, hướng đến khả năng tương thích với bash |
OSH/YSH (Oils) | Python → C++ | Có | Có (trong YSH) | Tập trung vào lộ trình chuyển đổi từ bash |
Fish | Rust (gần đây) | Không | Hạn chế | Ưu tiên trải nghiệm người dùng |
Nushell | Rust | Không | Có | Được xây dựng xung quanh dữ liệu có cấu trúc |
PowerShell | .NET | Không | Có | Tiếp cận dựa trên bản ghi |
Cân Nhắc về Hiệu Suất và Kích Thước
Một số mối quan ngại kỹ thuật đã được nêu ra về những hàm ý của việc triển khai các công cụ hệ thống bằng Rust. Một người bình luận đã lưu ý sự khác biệt đáng kể về kích thước giữa tệp nhị phân bash truyền thống (1.1MB) và triển khai brush (6.9MB). Nếu không có thư viện chia sẻ, điều này đại diện cho sự gia tăng đáng kể về yêu cầu tài nguyên có thể gây vấn đề cho các hệ thống nhúng hoặc môi trường hạn chế tài nguyên khác.
Quan sát này kết nối với các cuộc thảo luận rộng lớn hơn về những đánh đổi liên quan đến việc viết lại các công cụ hệ thống bằng các ngôn ngữ an toàn bộ nhớ như Rust. Mặc dù những triển khai như vậy cung cấp bảo mật được cải thiện và thường loại bỏ hoàn toàn các lớp lỗi, chúng có thể đi kèm với chi phí về hiệu suất hoặc tài nguyên cần được cân nhắc cẩn thận.
Sự xuất hiện của brush và các dự án tương tự phản ánh sự phát triển liên tục của giao diện dòng lệnh trong điện toán hiện đại. Mặc dù shell có thể có vẻ như một vấn đề đã được giải quyết đối với người dùng thông thường, những cuộc thảo luận này tiết lộ một hệ sinh thái sôi động của sự đổi mới và các triết lý cạnh tranh về cách chúng ta nên tương tác với máy tính của mình tại dòng lệnh. Cho dù thông qua sự phát triển dần dần của các shell tương thích POSIX hay các thiết kế mới mang tính cách mạng, dòng lệnh khiêm tốn tiếp tục thích nghi với nhu cầu thay đổi của các nhà phát triển và quản trị viên hệ thống.
Tham khảo: brush