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

Hurl, ngôn ngữ của ngoại lệ

Tổng quan

  • Hurl là một ngôn ngữ được tạo ra để khám phá ý tưởng về một ngôn ngữ sử dụng xử lý ngoại lệ như luồng điều khiển duy nhất.
  • Ngôn ngữ này bắt đầu từ các cuộc trò chuyện giữa Nicole Tietz-Sokolskaya và những người bạn tại Recurse Center.
  • Trang web này cung cấp tài liệu, ví dụ, hướng dẫn gỡ lỗi và FAQ về cách sử dụng Hurl.

Cài đặt và cách sử dụng

  • Mã nguồn của Hurl được cung cấp trong kho lưu trữ của Hurl.
  • Nếu bạn phát hiện bug hay lỗi, các bản vá qua email đều được hoan nghênh, nhưng bạn phải chuyển nhượng mọi quyền đối với bản vá đó.
  • Điều này nhằm duy trì khả năng tái cấp phép và cấp phép thương mại.

Cú pháp và triết lý của Hurl

  • Hurl là một ngôn ngữ xoay quanh xử lý ngoại lệ.
  • Luồng điều khiển chỉ được triển khai bằng xử lý ngoại lệ.

Các mẫu phổ biến

  • Luồng điều khiển được quản lý thông qua xử lý ngoại lệ.
  • Không sử dụng các cấu trúc điều khiển truyền thống (ví dụ: if, for).

Thư viện chuẩn

  • Hurl cung cấp thư viện chuẩn.
  • Bao gồm nhiều tính năng khác nhau dựa trên xử lý ngoại lệ.

Ví dụ

  • Có nhiều đoạn mã ví dụ được cung cấp.
  • Thông qua mã ví dụ, người dùng có thể dễ dàng hiểu cách sử dụng Hurl.

Gỡ lỗi và lỗi

  • Có hướng dẫn gỡ lỗi.
  • Giải thích cách xử lý lỗi một cách hiệu quả.

FAQ

  • Cung cấp câu trả lời cho các câu hỏi thường gặp.
  • Đề cập đến những vấn đề phổ biến có thể phát sinh khi sử dụng Hurl.

Những lời tán dương dành cho Hurl

  • Erika Rowland: "Con quái vật này thật đẹp, và tôi tuyệt đối không muốn đụng vào nó. Tôi không muốn tên mình bị gắn với thứ này."
  • Nicole Tietz-Sokolskaya: "Tôi đã quyết định biến ngôn ngữ này thành hiện thực. Xin lỗi."
  • Mary McGrath: "🤮" (đây có phải là một câu trích dẫn dùng được không?)
  • nate (@nmoo@mas.to): "Được chứng nhận là bất thường™!"

Mã nguồn

  • Mã nguồn của Hurl và của trang web này được cung cấp trong kho lưu trữ của Hurl.
  • Các bản vá qua email đều được hoan nghênh, nhưng bạn phải chuyển nhượng mọi quyền.

Giấy phép

  • Dự án này có thể được sử dụng theo một trong ba giấy phép sau:
    • AGPL-3.0
    • GAL-1.0 (Gay Agenda License)
    • giấy phép thương mại
  • Bạn có thể chọn một trong ba giấy phép để sử dụng.

Ý kiến của GN⁺

  • Ngôn ngữ lấy ngoại lệ làm trung tâm: Hurl áp dụng một cách tiếp cận độc đáo khi đặt xử lý ngoại lệ vào trung tâm của luồng điều khiển, thay thế các cấu trúc điều khiển truyền thống. Điều này đòi hỏi các lập trình viên phải có một cách tư duy mới.
  • Giá trị giáo dục: Hurl có thể giúp hiểu sâu hơn về tầm quan trọng của xử lý ngoại lệ và cách vận dụng nó. Đặc biệt, nó cho thấy rõ những vấn đề có thể xảy ra khi xử lý ngoại lệ bị sử dụng sai cách.
  • Vấn đề về tính thực dụng: Việc sử dụng Hurl trong công việc thực tế có thể là một thử thách. Với các nhà phát triển đã quen với cấu trúc điều khiển truyền thống, đây có thể là một rào cản lớn.
  • Hợp tác với cộng đồng: Mã nguồn của Hurl được cung cấp dưới dạng mã nguồn mở và khuyến khích sự tham gia của cộng đồng. Điều này có thể tạo tác động tích cực đến sự phát triển của dự án và việc sửa lỗi.
  • Lựa chọn giấy phép: Việc cung cấp nhiều giấy phép mang lại nhiều lựa chọn hơn cho người dùng. Điều này góp phần tăng tính linh hoạt của dự án.

1 bình luận

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

Tóm tắt các bình luận trên Hacker News

  • Khi thiết kế ngôn ngữ lập trình, việc bắt buộc namespace và import là rất quan trọng

    • Việc bắt buộc namespace và import giúp mã dễ hiểu hơn.
    • Tốt hơn là không cho phép hiệu ứng phụ ở cấp cao nhất.
  • Ý kiến về xử lý ngoại lệ

    • Xử lý ngoại lệ làm cho hợp đồng giữa bên gọi và bên được gọi trở nên khó khăn hơn.
    • Xử lý ngoại lệ thông qua giá trị trả về như Go hay Rust sẽ tốt hơn.
    • Sẽ rất hay nếu IDE có thể phát hiện động mọi ngoại lệ chưa được xử lý và giúp dễ dàng tìm ra nơi ngoại lệ phát sinh.
  • Ví dụ sử dụng toss

    • toss chủ yếu được dùng khi hàm trả về nhiều giá trị.
    • Ngoài những trường hợp không tiếp tục lại ngay lập tức thì nó không mấy hữu ích.
  • Ngôn ngữ Hurl và hệ thống condition

    • Hurl tương tự hệ thống condition của Smalltalk/CL.
    • Hệ thống condition cung cấp nhiều tùy chọn restart.
  • Sử dụng tên miền .wtf

    • Có cảm giác thế giới sẽ tốt đẹp hơn nếu nhiều thứ hơn dùng phần mở rộng tên miền .wtf.
  • Ngôn ngữ tương tự hiệu ứng đại số

    • Nó giống một dạng yếu của hiệu ứng đại số, nhưng vẫn thú vị.
  • Cảm xúc lẫn lộn về ngôn ngữ Hurl

    • Không thích ngôn ngữ Hurl, nhưng nó cũng có phần nào đó thanh nhã.
    • Giá như có cú pháp để phân biệt ngoại lệ có thể tiếp tục và ngoại lệ không thể tiếp tục.
    • Thư viện chuẩn lẽ ra không nên bị thay thế bằng các hàm trả về giá trị thông thường.
  • Sự khác biệt giữa tosshurl

    • hurl có thể bị bắt, còn toss thì không thể.
    • Lo rằng nếu dùng Hurl quá nhiều, mọi người sẽ gọi tôi là tosser.
  • Cấu trúc ngôn ngữ toss

    • toss duyệt ngăn xếp để tìm trình xử lý ngoại lệ rồi tiếp tục thực thi như thể chưa từng có gì xảy ra.
    • Có thể chèn hành vi bổ sung vào lúc chạy.
    • Trong mã hướng đối tượng, người ta tiêm phụ thuộc qua service constructor, còn toss thì dùng toss handler.