4 điểm bởi GN⁺ 2023-10-09 | 1 bình luận | Chia sẻ qua WhatsApp
  • Bài viết này giới thiệu Berry, một ngôn ngữ kịch bản nhúng siêu nhẹ, dùng kiểu động.
  • Berry được thiết kế đặc biệt cho các thiết bị nhúng có hiệu năng thấp.
  • Kích thước mã của lõi trình thông dịch Berry nhỏ hơn 40KiB và có thể chạy với heap dưới 4KiB. Điều này đã được kiểm thử trên CPU ARM Cortex M4 bằng Thumb ISA và trình biên dịch ARMCC.
  • Trình thông dịch của Berry bao gồm một trình biên dịch one-pass và một máy ảo (VM) dựa trên thanh ghi. Toàn bộ mã được viết bằng ANSI C99.
  • Trong Berry, không phải mọi kiểu đều là đối tượng lớp. Các kiểu giá trị đơn giản như int, real, boolean, string không phải là đối tượng lớp, còn list, map, range là đối tượng lớp. Điều này là do cân nhắc về hiệu năng.
  • Trong ngữ cảnh của Berry, thuật ngữ "VM dựa trên thanh ghi" có cùng ý nghĩa như trong lĩnh vực tính toán nói chung.

1 bình luận

 
GN⁺ 2023-10-09
Ý kiến Hacker News
  • Berry là một ngôn ngữ kịch bản nhúng siêu nhẹ, kiểu động, với runtime 40KB nhưng sở hữu bộ tính năng phong phú một cách đáng ngạc nhiên.
  • Ngôn ngữ này có cú pháp tương tự Python/Ruby và hỗ trợ phong cách lập trình thủ tục, hướng đối tượng hoặc hàm.
  • Berry nổi bật nhờ khả năng tạo sẵn các đối tượng hằng số và đặt phần lớn chúng trong ROM, giúp tiết kiệm RAM cho dữ liệu biến đổi theo cách mà MicroPython hay Lua không có.
  • Berry được sử dụng trong Tasmota, một nền tảng dành cho thiết bị IoT.
  • Tài liệu của ngôn ngữ này được đánh giá rất cao nhờ tính toàn diện và có cả một "sổ tay ngắn" dành cho các nhà phát triển giàu kinh nghiệm.
  • Một số người dùng bày tỏ mong muốn có một ngôn ngữ tương tự nhưng ít mô hình lập trình hơn và có kiểu tĩnh để dùng làm ngôn ngữ cấu hình.
  • Có các đề xuất về việc cung cấp binding cho những ngôn ngữ khác, cùng các câu hỏi về khả năng hỗ trợ resumable function hoặc generator.
  • Người dùng quan tâm đến việc so sánh hiệu năng và mức sử dụng bộ nhớ giữa Berry và Lua, cũng như các tính năng sandbox để chạy mã không đáng tin cậy.
  • Có câu hỏi về khả năng hiển thị stack frame bằng tên hàm script trong native stack trace.