Giới thiệu ngôn ngữ lập trình Borgo
- Mong muốn có một ngôn ngữ để viết ứng dụng giàu khả năng biểu đạt hơn Go nhưng không phức tạp như Rust
- Go đơn giản và trực quan, nhưng đôi khi người dùng mong nó cung cấp độ an toàn kiểu tốt hơn
- Rust rất tốt để làm việc cùng (ít nhất là với mã đơn luồng), nhưng quá đồ sộ và phức tạp, đôi khi còn gây mệt mỏi
- Borgo là một ngôn ngữ mới được transpile sang Go và hoàn toàn tương thích với các package Go hiện có
- Cú pháp Borgo giống Rust, trong đó dấu chấm phẩy là tùy chọn
Tính năng chính
- Kiểu dữ liệu đại số và pattern matching
- Dùng Option thay cho nil
- Dùng Result thay cho nhiều giá trị trả về
- Xử lý lỗi bằng toán tử ?
Chạy trên máy cục bộ
- Borgo được viết bằng Rust nên cần cargo
- Để biên dịch tất cả các tệp
.brg trong thư mục hiện tại:
- Trình biên dịch sẽ tạo ra các tệp
.go và có thể chạy chúng bình thường
Ý kiến của GN⁺
- Rust là một ngôn ngữ mạnh, nhưng đường cong học tập khá dốc và rào cản tiếp cận cao; Borgo có vẻ là một nỗ lực thú vị để tận dụng ưu điểm của Rust trong hệ sinh thái Go. Tuy vậy, vì vẫn đang ở giai đoạn đầu nên có lẽ hệ sinh thái còn thiếu thốn
- Việc cải thiện xử lý
nil và lỗi bằng Option và Result, cũng như đơn giản hóa việc xử lý lỗi bằng toán tử ?, có vẻ sẽ giải quyết những điểm mà các lập trình viên Go thường thấy bất tiện
- Việc có thể dùng nguyên trạng các thư viện Go hiện có là một lợi thế lớn. Tuy nhiên, do vay mượn cú pháp Rust, các lập trình viên Go có thể sẽ cần thời gian để thích nghi
- Vì dùng cách tiếp cận transpile, có khả năng sẽ bất lợi hơn so với mã Go thuần về mặt debug hay hiệu năng runtime. Có cảm giác vẫn còn hơi sớm để áp dụng cho mã production quy mô lớn
- Giống như Kotlin đang dần tăng thị phần trong hệ sinh thái JVM, để trở thành một giải pháp cho Go, Borgo dường như vẫn cần được cải thiện liên tục ở nhiều khía cạnh như chất lượng mã, năng suất phát triển và đường cong học tập. Nếu tiếp tục phát triển, có thể đây sẽ trở thành một lựa chọn thay thế hấp dẫn trong thế giới Go
1 bình luận
Ý kiến trên Hacker News
Tóm tắt:
impl, cú pháp channel và goroutine, hàm dựng sẵnzeroValue()pub/privatethay cho cách của Go là phân biệt khả năng truy cập field của struct bằng chữ hoa/chữ thường cũng được đánh giá tích cực