3 คะแนน โดย GN⁺ 2024-10-25 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • Pretty C เป็นภาษาสคริปต์ใหม่ที่เข้ากันได้กับ C โดยมีฟีเจอร์อย่าง dynamic typing, การวนซ้ำแบบ generic และการติดตามทรัพยากร
  • ยังคงความเข้ากันได้ย้อนหลังกับ C และไลบรารีทั้งหมด
  • ได้แรงบันดาลใจจาก Lua, Python, JavaScript และ Lisp

เป้าหมาย

  • มอบ syntactic sugar จำนวนมากให้กับนักพัฒนา C เพื่อให้ใช้งาน C ได้ง่ายขึ้น
  • วางตำแหน่งให้เป็นภาษาสคริปต์ขั้นสุดยอดที่สามารถมาแทน Lua, Python, JavaScript, Ruby และภาษาอื่น ๆ ได้
  • ทำให้ทุกโค้ดเบสเป็นมิตรกับผู้เริ่มต้นได้ด้วยการ include ไฟล์ header เพียงไฟล์เดียว

เริ่มต้นใช้งาน

  • สามารถโคลน GitHub repository หรือคัดลอกไฟล์ pretty.h ไปใช้งานได้

ความสะดวกที่มีให้

Standard header ที่รวมมาให้

  • stdbool.h สำหรับ true, false, bool
  • stdint.h สำหรับชนิดจำนวนเต็มแบบ fixed-width
  • iso646.h สำหรับตัวดำเนินการทางเลือกที่อ่านง่ายขึ้น

มาโครแบบง่าย

  • มีมาโครอย่าง max, min, len, default, limit, between, divisible

ชนิดข้อมูลใหม่

  • มี type alias อย่าง string, byte, bytes, any
  • มีรูปย่อของจำนวนเต็มอย่าง uchar, ushort, uint, ulong

alias ใหม่

  • มี alias ของตัวดำเนินการอย่าง eq, is, bitnot, bitxor
  • มีตัวดำเนินการเปรียบเทียบอย่าง below, above, upto, downto
  • มี predicate สำหรับตัวเลข/ข้อมูลอย่าง even, odd, positive, negative, zero, empty
  • มี alias อย่าง nil, until, elif, ifnt, repeat, done~/~finish, pass

การอนุมานชนิดข้อมูล (GCC, Clang หรือ C23+)

  • สามารถใช้การอนุมานชนิดข้อมูลได้ผ่านคีย์เวิร์ด var, let, local

การแสดงผลแบบ generic (C11+)

  • ใช้ print, println เพื่อแสดงข้อมูลได้หลายชนิด

การเทียบความเท่ากันแบบ generic (C11+)

  • ใช้ equal เพื่อเปรียบเทียบข้อมูลหลายชนิดได้

ternary operator แบบอ่านง่าย

  • ใช้คีย์เวิร์ดอย่าง when, then, other, otherwise, only, otherwhen เพื่อให้ ternary operator อ่านง่ายขึ้น

มาโคร for

  • มีรูปแบบการวนซ้ำหลากหลายผ่านมาโครอย่าง foreach, forthese, fortimes, forrange, forrangeby

มาโครสำหรับการกำหนดค่า

  • ใช้มาโครอย่าง new, vector, delete เพื่อจัดสรรและคืนหน่วยความจำได้ง่าย

ยูทิลิตีสำหรับบล็อก

  • มียูทิลิตีสำหรับบล็อกอย่าง lambda, with, defer, try, catch

สรุปโดย GN⁺

Pretty C เป็นโปรเจกต์ที่เพิ่ม syntactic sugar หลากหลายรูปแบบให้กับภาษา C เพื่อช่วยให้นักพัฒนาเขียนโค้ดได้ง่ายขึ้น โดยเฉพาะการคงความเข้ากันได้ย้อนหลังกับ C เอาไว้ พร้อมทั้งนำแรงบันดาลใจจากภาษาอย่าง Lua, Python และ JavaScript มาสร้างฟีเจอร์ที่หลากหลาย ฟีเจอร์เหล่านี้ช่วยให้นักพัฒนา C เขียนโค้ดได้กระชับและอ่านง่ายขึ้น โปรเจกต์ที่มีแนวคิดคล้ายกัน ได้แก่ Zig และ Nim

1 ความคิดเห็น

 
GN⁺ 2024-10-25
ความคิดเห็นจาก Hacker News
  • มีธรรมเนียมการสร้าง DSL ภายใน C มายาวนาน Stephen Bourne เคยพยายามเขียนเชลล์ให้มีลักษณะคล้าย ALGOL โดยใช้พรีโพรเซสเซอร์ของ C
  • ไม่ชัดเจนว่านี่เป็นมุกตลกหรือผู้เขียนกำลังสับสนกันแน่ มันไม่ใช่การสคริปต์ และแม้อ้างว่าแนะนำ strong typing แต่ในความเป็นจริงไม่ได้ทำอะไรเกี่ยวกับ type เลย เพิ่ม alias ของโอเปอเรเตอร์โดยอิงจาก Lua และ Lisp แต่ทั้งสองภาษาก็ไม่มีสิ่งนั้น
  • อ้างว่าเป็นภาษาสคริปต์ แต่กลับต้องคอมไพล์โปรแกรม ถ้าเพิ่ม CINT ก็จะได้การรันทันทีและ REPL
  • มี syntax sugar มากพอจะทำให้นักพัฒนา C หัวใจวายจากเบาหวานได้เลย สนุกดี
  • ทำพลาดแบบเดียวกับ Python 2 string กับ bytes ไม่ใช่ type เดียวกัน และไม่ควรถูกปฏิบัติแบบนั้น
  • ถ้าสนใจสิ่งนี้ ก็น่าจะชอบ libcello.h ด้วย
  • จำได้ว่าเคยตรวจดูโค้ดเบส C++ ที่ดูเหมือนเขียนด้วย Java ทุกอย่างตั้งชื่อแบบ camelCase มี getter และ setter สำหรับตัวแปรคลาสทั้งหมด และมี interface อยู่เต็มไปหมด
  • มีบางอย่างที่ควรเพิ่มเข้าไปใน CNoEvil และ ogw ดูเหมือนว่าทุกครั้งที่โปรเจกต์นี้โผล่กลับมาทุก ๆ สองสามเดือน จะมีอะไรเพิ่มขึ้นมาอีกเสมอ
  • "unless" อ่านง่ายกว่า "ifnt"
  • สงสัยว่าจะ weave Readme เข้าไปเป็น pretty.h ได้ไหม รวมถึงโค้ดบล็อกใน orgfile ครอบคลุมครบถ้วนหรือไม่ ชอบวิธีที่ Readme อธิบายกระบวนความคิดไว้