3 điểm bởi GN⁺ 2024-10-25 | 1 bình luận | Chia sẻ qua WhatsApp
  • Pretty C là một ngôn ngữ kịch bản mới tương thích với C, cung cấp các tính năng như định kiểu động, lặp tổng quát và theo dõi tài nguyên
  • Giữ khả năng tương thích ngược với C và mọi thư viện của C
  • Lấy cảm hứng từ Lua, Python, JavaScript và Lisp.

Mục tiêu

  • Cung cấp nhiều cú pháp đường mật (syntactic sugar) cho lập trình viên C để giúp C dễ dùng hơn.
  • Định vị mình như ngôn ngữ kịch bản tối thượng có thể thay thế nhiều ngôn ngữ như Lua, Python, JavaScript, Ruby.
  • Biến mọi codebase trở nên thân thiện với người mới bắt đầu chỉ bằng cách thêm một file header duy nhất.

Bắt đầu

  • Có thể dùng bằng cách clone kho GitHub hoặc sao chép file pretty.h.

Các tiện ích được cung cấp

Các header chuẩn đi kèm

  • stdbool.h cung cấp true, false, bool
  • stdint.h cung cấp các kiểu số nguyên có độ rộng cố định
  • iso646.h cung cấp các toán tử thay thế dễ đọc hơn

Macro đơn giản

  • Cung cấp các macro như max, min, len, default, limit, between, divisible

Kiểu mới

  • Cung cấp bí danh kiểu như string, byte, bytes, any
  • Cung cấp dạng viết tắt số nguyên như uchar, ushort, uint, ulong

Bí danh mới

  • Cung cấp bí danh toán tử như eq, is, bitnot, bitxor
  • Cung cấp các toán tử so sánh như below, above, upto, downto
  • Cung cấp các predicate số/dữ liệu như even, odd, positive, negative, zero, empty
  • Cung cấp các bí danh như nil, until, elif, ifnt, repeat, done~/~finish, pass

Suy luận kiểu (GCC, Clang hoặc C23+)

  • Có thể suy luận kiểu bằng các từ khóa var, let, local

Xuất tổng quát (C11+)

  • Có thể in dữ liệu của nhiều kiểu bằng print, println

So sánh bằng tổng quát (C11+)

  • Có thể so sánh dữ liệu của nhiều kiểu bằng equal

Toán tử ba ngôi đẹp mắt

  • Có thể dùng toán tử ba ngôi dễ đọc hơn với các từ khóa when, then, other, otherwise, only, otherwhen

Macro for

  • Cung cấp nhiều mẫu lặp khác nhau với các macro foreach, forthese, fortimes, forrange, forrangeby

Macro gán phát

  • Có thể cấp phát và giải phóng bộ nhớ đơn giản bằng các macro new, vector, delete

Tiện ích khối lệnh

  • Cung cấp các tiện ích khối như lambda, with, defer, try, catch

Tóm tắt của GN⁺

Pretty C là một dự án bổ sung nhiều cú pháp đường mật cho ngôn ngữ C để giúp lập trình viên viết mã dễ dàng hơn. Đặc biệt, dự án vẫn giữ khả năng tương thích ngược với C, đồng thời cung cấp nhiều tính năng lấy cảm hứng từ các ngôn ngữ như Lua, Python và JavaScript. Những tính năng này có thể giúp lập trình viên C viết mã ngắn gọn và dễ đọc hơn. Các dự án cung cấp tính năng tương tự có thể kể đến Zig và Nim.

1 bình luận

 
GN⁺ 2024-10-25
Ý kiến trên Hacker News
  • Truyền thống tạo DSL bên trong C đã có từ lâu. Stephen Bourne từng muốn viết shell theo kiểu giống ALGOL bằng cách dùng bộ tiền xử lý của C
  • Không rõ đây là một trò đùa hay tác giả đang bị nhầm lẫn. Đây không phải scripting, và dù tuyên bố đưa vào kiểu mạnh thì thực tế lại không làm gì với kiểu cả. Nó giới thiệu các bí danh toán tử được cho là lấy cảm hứng từ Lua và Lisp, nhưng cả hai ngôn ngữ đó đều không có chúng
  • Tự nhận là ngôn ngữ scripting nhưng lại phải biên dịch chương trình. Nếu thêm CINT thì có thể chạy ngay lập tức và dùng REPL
  • Cung cấp lượng cú pháp đường đủ để khiến một lập trình viên C bị đau tim vì tiểu đường. Vui đấy
  • Mắc cùng sai lầm như Python 2. Chuỗi và byte không phải cùng một kiểu và không nên bị đối xử như vậy
  • Nếu thấy nội dung này thú vị thì có lẽ bạn cũng sẽ thích libcello.h
  • Tôi vẫn nhớ đã từng xem qua một codebase C++ trông như được viết bằng Java. Mọi thứ đều được đặt tên theo camelCase, có getter và setter cho mọi biến lớp, và interface thì ở khắp nơi
  • Có vài thứ cần thêm vào CNoEvil và ogw. Mỗi lần dự án này xuất hiện lại sau vài tháng thì dường như lúc nào cũng có thêm thứ mới
  • unless dễ đọc hơn ifnt
  • Tò mò không biết có thể đan Readme thành pretty.h được không. Không rõ các khối mã trong orgfile có đầy đủ hay không. Tôi thích cách họ giải thích quá trình suy nghĩ trong Readme