9 คะแนน โดย GN⁺ 2025-04-15 | 2 ความคิดเห็น | แชร์ทาง WhatsApp
  • Fennel เป็นภาษาโปรแกรมที่ทำงานบนรันไทม์ของ Lua
  • Lua เป็นภาษาโปรแกรมที่เรียบง่ายแต่ทรงพลัง สามารถผสานเข้ากับโปรแกรมอื่นได้ง่ายและเปิดโอกาสให้ผู้ใช้เขียนโปรแกรมใหม่ได้
  • Fennel เข้ามาแก้ข้อด้อยของ Lua โดยมอบทางเลือกที่ชัดเจนกว่าและช่วยลดข้อผิดพลาด
  • Fennel ใช้ไวยากรณ์ตระกูล Lisp เพื่อลดความซับซ้อนของไวยากรณ์และเพิ่มความอ่านง่ายของโค้ด
  • Fennel มอบความสามารถที่ดีกว่า Lua ในด้านการกำหนดค่าตัวแปรซ้ำ รูปแบบการเขียนตาราง และการตรวจสอบอาร์กิวเมนต์ของฟังก์ชัน

Fennel คืออะไร?

  • Fennel เป็นภาษาโปรแกรมที่ทำงานบนรันไทม์ของ Lua
  • Lua เป็นภาษาที่เรียบง่ายแต่ทรงพลัง สามารถผสานเข้ากับโปรแกรมอื่นได้ง่ายและเปิดโอกาสให้ผู้ใช้เขียนโปรแกรมใหม่ได้
  • Fennel เข้ามาแก้ข้อด้อยของ Lua โดยมอบทางเลือกที่ชัดเจนกว่าและช่วยลดข้อผิดพลาด

ข้อดีของ Lua

  • Lua เป็นภาษาที่ เล็กและเร็ว ประกอบด้วยโค้ด C ราว 19,000 บรรทัด และคอมไพล์แล้วมีขนาด 278kb
  • ยังคงรักษา ความเรียบง่ายในเชิงแนวคิด ไว้ พร้อมกับมอบความสามารถที่ทรงพลัง
  • สามารถผสานเข้ากับโปรแกรมอื่นได้ง่าย ทำให้ ผู้ใช้สามารถเขียนโปรแกรมใหม่ให้กับโปรแกรมนั้นได้

คุณสมบัติหลักของ Fennel

  • Fennel ใช้ไวยากรณ์ ตระกูล Lisp เพื่อลดความซับซ้อนของไวยากรณ์และเพิ่มความอ่านง่ายของโค้ด
  • ทุกอย่างถูกจัดการเป็น expression และไม่มีความกำกวมเรื่องลำดับความสำคัญของตัวดำเนินการหรือการคืนค่าก่อนกำหนด
  • ตัวแปร: ทำให้การใช้ตัวแปรโกลบอลทำได้ยากขึ้นเพื่อลดความผิดพลาด และใช้ var เมื่อต้องกำหนดค่าตัวแปรซ้ำเพื่อเพิ่มความชัดเจน

ตารางและลูป

  • Fennel ปรับปรุง รูปแบบการเขียนตาราง โดยแยกระหว่างอาร์เรย์กับตารางแบบคีย์/ค่า
  • ในลูปใช้ for และ each เพื่อให้ได้ ไวยากรณ์ที่ชัดเจน

ฟังก์ชันและความสามารถอื่น ๆ

  • Fennel รองรับ การตรวจสอบอาร์กิวเมนต์ ของฟังก์ชัน และจะเกิดข้อผิดพลาดเมื่อส่งอาร์กิวเมนต์มาไม่ครบ
  • รองรับ destructuring และ pattern matching ทำให้เขียนเงื่อนไขในลักษณะประกาศเจตนาได้มากขึ้น
  • มี ระบบแมโคร รวมอยู่ด้วย ทำให้ขยายรูปแบบไวยากรณ์ใหม่ ๆ ได้ง่าย

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

 
GN⁺ 2025-04-15
ความคิดเห็นบน Hacker News
  • รู้สึกยินดีที่ได้เห็นภาษาใหม่ ๆ มุ่งเป้าไปที่รันไทม์ Lua

    • เมื่อไม่นานมานี้ได้ทำให้ SSE server สามารถเขียนโปรแกรมได้ด้วย Lua
    • ขอแนะนำ Lua และ Rust binding mlua-rs อย่างมาก
  • Fennel ดีมาก

    • หลังจากแปลงการตั้งค่า neovim เป็น Fennel ก็ไม่เคยเสียใจเลย
  • นอกจาก Forth, Lisp และ Lua แล้ว Tcl ก็สมควรถูกกล่าวถึงในฐานะภาษาแบบฝังตัวขนาดเล็ก

    • ตั้งแต่เวอร์ชัน v8 เป็นต้นมาก็ซับซ้อนขึ้น แต่เวอร์ชันแรก ๆ นั้นเรียบง่ายมาก
    • เคยอ่านหนังสือของ Ousterhout แล้วประทับใจจนลองลงมือทำเอง
  • ไม่เข้าใจเสน่ห์ของภาษาแนว LISPy

    • ตัวแยกวิเคราะห์นั้นเรียบง่ายและสง่างาม แต่คิดว่านักพัฒนาควรให้ความสำคัญกับความสะดวกของผู้ใช้ก่อน
    • การเขียนโค้ดยุ่งยากและมีสัญลักษณ์มากเกินความจำเป็น
    • การพาร์สไวยากรณ์ที่คล้าย C ก็ไม่ได้ยากขนาดนั้น
  • แนวทางของ Fennel ที่คอมไพล์เป็น Lua พร้อมคงความสามารถด้านเมตาโปรแกรมมิงไว้นั้นดูสง่างาม

    • ไวยากรณ์ชวนให้นึกถึง Clojure แต่ไม่มีโอเวอร์เฮดของ JVM
    • เป็นชุดผสมที่เหมาะกับระบบฝังตัวหรือการพัฒนาเกม
  • Fennel ค่อนข้างดี

    • อยากให้รองรับ gradual typing หรืออนุญาต type annotation เพื่อเครื่องมือแบบ static
    • dynamic typing ก็เป็นตัวเลือกที่ใช้ได้ แต่พอมีภาษาที่รองรับ gradual typing มากขึ้น ก็กลับไปใช้แบบเดิมได้ยาก
  • ข้อมูลสำหรับคนที่กำลังมองหาภาษาอื่นที่สร้างบน Lua

  • คนที่บ่นเรื่องวงเล็บน่าจะยังเขียน Lisp ไม่มากพอ

    • พอผ่านด่านเรื่องวงเล็บไปได้ ความเป็นเนื้อเดียวกันของภาษาจะโดดเด่นขึ้น และจะเข้าใจว่าทำไมหลายคนถึงชอบ Lisp
  • เหมาะกับการพัฒนาเกมแบบสบาย ๆ และสนุก

    • TIC-80 รองรับโดยตรง และย้ายจาก Fennel ไป PICO-8 ได้ง่าย
 
nemorize 2025-04-15

ลิงก์ของ MoonScript ใส่ผิดไว้นะ~
https://moonscript.org/