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

Ngôn ngữ lập trình Racket

  • Racket là một ngôn ngữ lập trình trưởng thành, thực tiễn, có khả năng mở rộng, vững chắc và tinh tế
  • Racket là một ngôn ngữ lập trình hướng ngôn ngữ (Language-Oriented Programming), với các đặc điểm như sau:
    • Hỗ trợ higher-order occurrence typing
    • Tích hợp sẵn ngôn ngữ Scribble để tạo tài liệu
    • Hỗ trợ lập trình logic như Datalog
    • Hệ thống macro rất mạnh, từ macro nhỏ đến macro lớn, dễ viết DSL, hỗ trợ mọi cú pháp, v.v.
  • Hệ sinh thái Racket bao gồm phần mềm, hướng dẫn và tài liệu, cộng đồng, sách, giáo dục, swag, v.v.
  • Racket đã nhận được tài trợ từ nhiều tổ chức và cá nhân như NSF, DARPA, FIPSE, Quỹ Exxon, Microsoft, Mozilla, Google, v.v.

Ý kiến của GN⁺

  • Một trong những ưu điểm lớn nhất của Racket là hỗ trợ lập trình hướng ngôn ngữ. Nhờ đó có thể dễ dàng tạo ra các ngôn ngữ đặc thù miền (DSL), giúp nâng cao năng suất
  • Tuy nhiên, do đặc trưng của họ ngôn ngữ Lisp là dùng rất nhiều dấu ngoặc, nên với người mới tiếp cận thì khả năng đọc có thể kém hơn. Sẽ hay hơn nếu đưa vào cú pháp khác thay cho dấu ngoặc như Clojure
  • Hướng dẫn và tài liệu được xây dựng rất tốt nên việc học khá dễ dàng. Nó cũng được sử dụng nhiều trong giáo dục
  • Có thể dùng như một ngôn ngữ lập trình đa dụng, nhưng có vẻ nó vẫn thiên về việc tạo DSL hoặc dùng cho giáo dục như SICP. Để dùng trong môi trường production thực tế thì có vẻ hệ sinh thái thư viện vẫn còn thiếu
  • Khuyến nghị cho những ai muốn bắt đầu học ngôn ngữ hàm. Tuy nhiên, trong công việc thực tế nên cân nhắc Haskell, OCaml, F#,...

1 bình luận

 
GN⁺ 2024-04-22
Ý kiến trên Hacker News

Tóm tắt:

  • Racket có các tính năng cốt lõi hấp dẫn như trình biên dịch, hệ thống quản lý gói, GUI IDE, liên kết Emacs, nhưng phần nghiên cứu ngôn ngữ lập trình do một số giáo sư khoa học máy tính dẫn dắt lại không mấy thu hút.
  • Không giống Python, nơi bạn viết mã trong trình soạn thảo rồi chạy trong shell, Racket yêu cầu tương tác với VM chạy lâu dài và REPL, nên khó thích nghi với quy trình làm việc.
  • Chưa rõ cách tích hợp các ngôn ngữ như typed/racket, racket/gui, scribble/base vào cùng một ứng dụng. Các chương hướng dẫn giải thích từng ngôn ngữ lại được trình bày rời rạc, không liên hệ với nhau, gây bối rối.
  • Racket nhanh, thực dụng, có nền tảng vững chắc và mô hình đồng thời rất tốt. Hệ sinh thái gói tích hợp và hệ thống tài liệu xuất sắc cũng là ưu điểm. Khả năng tương thích ngược tốt hơn Python.
  • Đã có các trường hợp dùng Racket để phát triển những dự án thực tế như trang thương mại điện tử, ứng dụng cho iOS/macOS, desktop client cho Apache Kafka, và #lang cho Lua.
  • Hacker News cũng được viết bằng Arc và chạy trên Racket.
  • Racket phù hợp để phát triển binary có GUI và để phân tích cú pháp JSON, XML.
  • Hệ thống macro khác với Common Lisp nên cần thời gian làm quen, nhưng rất thuận tiện cho metaprogramming.
  • Góc nhìn lập trình mang tính học thuật và thuần khiết mà các ngôn ngữ họ LISP đưa ra có vẻ xa rời việc phát triển ứng dụng thực tế.