9 điểm bởi GN⁺ 2025-04-15 | 2 bình luận | Chia sẻ qua WhatsApp
  • Fennel là một ngôn ngữ lập trình chạy trên runtime Lua
  • Lua là một ngôn ngữ lập trình đơn giản nhưng mạnh mẽ, dễ tích hợp vào các chương trình khác để cung cấp khả năng tái lập trình cho người dùng
  • Fennel khắc phục những nhược điểm của Lua, mang lại một lựa chọn thay thế rõ ràng hơn và giảm lỗi hơn
  • Fennel sử dụng cú pháp họ Lisp để giảm độ phức tạp cú pháp và tăng khả năng đọc mã
  • Fennel cung cấp các tính năng được cải thiện so với Lua ở các khía cạnh như gán lại biến, ký pháp bảng và kiểm tra đối số của hàm

Fennel là gì?

  • Fennel là một ngôn ngữ lập trình chạy trên runtime Lua
  • Lua là một ngôn ngữ đơn giản nhưng mạnh mẽ, dễ tích hợp vào các chương trình khác để cho phép người dùng tái lập trình chương trình
  • Fennel khắc phục những nhược điểm của Lua, mang lại một lựa chọn thay thế rõ ràng hơn và giảm lỗi hơn

Ưu điểm của Lua

  • Lua là một ngôn ngữ nhỏ gọn và nhanh, gồm khoảng 19.000 dòng mã C và được biên dịch thành 278kb
  • Vẫn cung cấp các tính năng mạnh mẽ trong khi duy trì sự đơn giản về mặt khái niệm
  • Dễ tích hợp vào các chương trình khác, cho phép người dùng tái lập trình chương trình

Các đặc điểm chính của Fennel

  • Fennel sử dụng cú pháp họ Lisp để giảm độ phức tạp cú pháp và tăng khả năng đọc mã
  • Mọi thứ đều được xử lý như biểu thức, không có sự mơ hồ về độ ưu tiên toán tử hay việc trả về sớm
  • Biến: khiến việc dùng biến toàn cục trở nên khó hơn để giảm sai sót, và dùng var khi gán lại biến để tăng tính rõ ràng

Bảng và vòng lặp

  • Fennel cải thiện ký pháp bảng để phân biệt giữa mảng và bảng khóa/giá trị
  • Trong vòng lặp, sử dụng foreach để cung cấp cú pháp rõ ràng

Hàm và các tính năng khác

  • Fennel hỗ trợ kiểm tra đối số của hàm, tạo lỗi khi thiếu đối số
  • Hỗ trợ destructuringpattern matching, cho phép viết câu lệnh điều kiện theo hướng khai báo hơn
  • Bao gồm hệ thống macro, giúp dễ dàng mở rộng các dạng cú pháp mới

2 bình luận

 
GN⁺ 2025-04-15
Ý kiến trên Hacker News
  • Thật vui khi thấy các ngôn ngữ mới nhắm đến runtime Lua

    • Gần đây tôi đã làm cho máy chủ SSE có thể lập trình bằng Lua
    • Rất khuyến nghị Lua và binding Rust mlua-rs
  • Fennel rất tốt

    • Sau khi chuyển cấu hình neovim sang Fennel, tôi không hề hối hận
  • Ngoài Forth, Lisp và Lua, Tcl cũng xứng đáng được nhắc đến như một ngôn ngữ nhúng nhỏ gọn

    • Từ phiên bản v8 trở đi nó trở nên phức tạp hơn, nhưng các phiên bản đầu rất đơn giản
    • Tôi đã đọc sách của Ousterhout, thấy rất ấn tượng nên tự triển khai thử
  • Tôi không hiểu được sức hấp dẫn của các ngôn ngữ kiểu LISPy

    • Trình phân tích cú pháp thì đơn giản và thanh lịch, nhưng tôi nghĩ nhà phát triển nên ưu tiên sự tiện lợi cho người dùng
    • Viết mã khá phiền và có quá nhiều ký hiệu không cần thiết
    • Việc phân tích cú pháp kiểu giống C cũng đâu có khó đến thế
  • Cách tiếp cận của Fennel khi biên dịch sang Lua nhưng vẫn giữ được khả năng metaprogramming thật thanh lịch

    • Cú pháp gợi nhớ đến Clojure nhưng không có overhead của JVM
    • Đây là một sự kết hợp phù hợp cho hệ thống nhúng hoặc phát triển game
  • Fennel khá tốt

    • Tôi ước gì nó cho phép hỗ trợ kiểu dần dần hoặc annotation kiểu cho các công cụ tĩnh
    • Dynamic typing là một lựa chọn hợp lý, nhưng sau khi đã quen với nhiều ngôn ngữ có hỗ trợ kiểu dần dần thì rất khó quay lại
  • Thông tin dành cho những ai đang tìm các ngôn ngữ khác được xây dựng trên Lua

  • Những người phàn nàn về dấu ngoặc có lẽ là chưa viết Lisp đủ nhiều

    • Một khi vượt qua được dấu ngoặc, tính đồng nhất của ngôn ngữ sẽ tỏa sáng và bạn sẽ hiểu vì sao người ta thích Lisp
  • Rất hợp cho phát triển game kiểu casual và vui vẻ

    • TIC-80 hỗ trợ trực tiếp, và có thể dễ dàng chuyển từ Fennel sang PICO-8
 
nemorize 2025-04-15

Có vẻ link MoonScript đang được gắn sai~
https://moonscript.org/