4 điểm bởi GN⁺ 2024-05-01 | 1 bình luận | Chia sẻ qua WhatsApp

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:
    • $ cargo run -- build
  • 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

 
GN⁺ 2024-05-01
Ý kiến trên Hacker News

Tóm tắt:

  • Có nhiều phản hồi tích cực về ngôn ngữ Borgo, vốn bổ sung những điểm còn thiếu của Go
    • Các tính năng từng khiến người dùng thấy tiếc ở Go như Enum, kiểu Optional, v.v. đã được thêm vào
    • Hầu hết các tính năng mà lập trình viên Go mong muốn đều có mặt
  • Một số quyết định thiết kế của Borgo mang cảm giác giống Rust hơn là giữ đặc trưng của Go
    • Định nghĩa phương thức bằng impl, cú pháp channel và goroutine, hàm dựng sẵn zeroValue()
    • Dù vậy, có vẻ nhiều người vẫn sẽ thích phát triển bằng Borgo hơn là Go
  • Giới thiệu một số dự án khác từng thử hướng đi tương tự
    • Đã từng có các nỗ lực tạo ngôn ngữ transpile sang Go như braid, have, oden
  • Có vẻ Borgo mang sang các ưu điểm của Rust như hệ thống kiểu và xử lý lỗi, ngoại trừ Borrow Checker
  • Có ý kiến mong muốn một ngôn ngữ có được cả ưu và nhược điểm của dynamic typing lẫn static typing
    • Ở giai đoạn đầu phát triển có thể tận dụng ưu thế của dynamic typing như Python, rồi sau đó dần chuyển sang static typing thì sẽ rất tốt
  • Cảm giác như ưu điểm của runtime và hệ sinh thái công cụ của Go được kết hợp với độ an toàn kiểu như Enum của Rust
  • Việc đưa vào các từ khóa pub/private thay 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
  • Có vẻ ngôn ngữ này tìm được một điểm cân bằng giữa độ an toàn kiểu và độ phức tạp, tương tự Gleam, nhưng việc biên dịch sang Go thay vì Erlang hay JS là một lợi thế về hiệu năng
    • Tuy nhiên, vẫn còn nghi ngờ liệu thông báo lỗi khi biên dịch có thân thiện như Rust hay Gleam hay không