การเรนเดอร์th-TH

แฟบเบอร์ (Faber) — ภาษาโปรแกรมเชิงแพ็กเกจ

พร้อมสำหรับเอเจนต์

If you are an AI agent: start at /install.md, then read /agents/index.md and pick a skill from /.well-known/agent-skills/. Humans: use Install and Cheat sheet.

Faber เป็นภาษาโปรแกรมแบบมุ่งเน้นแพ็กเกจ ซึ่งใช้คำศัพท์เชิงพฤติกรรมแบบละติน ไวยากรณ์แบบ regular ขนาดเล็ก และระบบชนิดข้อมูลแบบสถิติโดยให้ชนิดข้อมูลเป็นหลัก ซอร์สโค้ดจะถูกคอมไพล์ผ่านคอมไพเลอร์ Radix ให้เป็น Rust ที่ตรวจสอบได้และไบนารีเนทีฟ คุณสมบัติทางสถาปัตยกรรมที่กำหนดเอกลักษณ์ของภาษานี้คือ ความหมายอยู่ในแกนเชิงความหมาย — HIR (การแทนค่าระดับกลางขั้นสูง) — ไม่ได้ผูกติดกับรูปแบบการแสดงผลใดรูปแบบหนึ่ง

ชื่อ Faber มาจากคำละตินที่หมายถึง ผู้สร้าง หรือ ช่างฝีมือ คอมไพเลอร์มีชื่อว่า Radix ซึ่งมาจากคำละติน ราก ภาษานี้พัฒนาโดย Ian Zepp และเผยแพร่ภายใต้สัญญาอนุญาต MIT

เพิ่งเริ่มใช่ไหม? ไปที่ เริ่มต้น: ส่งลิงก์เดียวให้โมเดลของคุณ แล้วโมเดลจะติดตั้ง Faber ให้ จากนั้นอ่าน คำสั่ง

กระบวนทัศน์มุ่งเน้นแพ็กเกจ; การจัดขั้นตอนเชิงความหมาย
ระบบชนิดข้อมูลแบบสถิติโดยให้ชนิดข้อมูลเป็นหลัก; nullable ผ่าน T ∪ นัล
อักขระสัญลักษณ์← → ∴ ≡ ∪ ⇥
ผู้ออกแบบIan Zepp
เริ่มปรากฏครั้งแรก2025
คอมไพเลอร์Radix (Rust)
เลนการคอมไพล์แอปพลิเคชัน (HIR) · ระบบ (MIR)
เป้าหมายหลักRust → ไบนารีเนทีฟ
ภาษาสำหรับผู้อ่านเปิดใช้งานแล้ว 7 ภาษา (la, ar, hi, vi, th-TH, zh-Hans, zh-Hant)
ไลบรารีมาตรฐานNorma (norma:*)
สัญญาอนุญาตMIT

เริ่มต้นที่นี่#

เส้นทางผู้ใช้เนื้อหา
เริ่มต้นมนุษย์ส่งลิงก์เดียวให้โมเดล แล้วโมเดลจะติดตั้ง Faber ให้
คำสั่งมนุษย์ + เอเจนต์วงจร CLI ประจำวัน: check, build, run, test, explain
/install.mdเอเจนต์ดัชนีสำหรับเครื่อง — หากคุณเป็นโมเดล ให้เริ่มที่นี่
คู่มือเอเจนต์เอเจนต์วิธีเรียนรู้ Faber และส่งมอบแพ็กเกจ
ทักษะเอเจนต์เอเจนต์คู่มือทักษะเฉพาะด้าน (การติดตั้ง, ภาษา, ตัวอย่าง, …)

สถานะพอร์ทัล#

หน้า / นี้คือ Speculum Porta สำหรับเว็บไซต์ภาษาอังกฤษ เป็นจุดเริ่มต้นที่ไม่มีการระบุภาษา ซึ่งนำผู้ใช้ไปยังหน้าติดตั้งและหน้าเริ่มต้น นำเอเจนต์ไปยังพื้นผิวสำหรับเครื่อง และแสดงสถานะแพ็กภาษาต่าง ๆ โดยไม่เจรจาภาษาขณะทำงานในเบราว์เซอร์ ระยะที่ 7 เป็นหลักฐานการทำงานหลายภาษาเพียงบางส่วน ไม่ใช่เว็บไซต์ที่แปลครบถ้วนแล้ว: มีเพียง th-TH, zh-Hans, zh-Hant, vi, ar และ hi ที่มีส่วนเนื้อหาพอร์ทัล/หน้าเริ่มต้นที่เขียนไว้พร้อมหน้าคอร์ปัสที่สร้างขึ้น และเนื้อหาร้อยแก้วยังย้อนกลับไปใช้ภาษาอังกฤษ

ภาษาสถานะหมายเหตุ
laเว็บไซต์หลักที่ใช้งานจริงเว็บไซต์ภาษาอังกฤษ/ละตินที่สร้างขึ้นครบถ้วน
th-THหลักฐานบางส่วนของระยะที่ 7ส่วนเนื้อหาพอร์ทัล/หน้าเริ่มต้นพร้อมคอร์ปัสที่สร้างขึ้น; เนื้อหาร้อยแก้วยังใช้ภาษาอังกฤษสำรอง; เอกสารที่เขียนครบถ้วนยังรอดำเนินการ
zh-Hansหลักฐานบางส่วนของระยะที่ 7ส่วนเนื้อหาพอร์ทัล/หน้าเริ่มต้นพร้อมคอร์ปัสที่สร้างขึ้น; เนื้อหาร้อยแก้วยังใช้ภาษาอังกฤษสำรอง; เอกสารที่เขียนครบถ้วนยังรอดำเนินการ
viหลักฐานบางส่วนของระยะที่ 7ส่วนเนื้อหาพอร์ทัล/หน้าเริ่มต้นพร้อมคอร์ปัสที่สร้างขึ้น; เนื้อหาร้อยแก้วยังใช้ภาษาอังกฤษสำรอง; เอกสารที่เขียนครบถ้วนยังรอดำเนินการ
zh-Hantหลักฐานบางส่วนของระยะที่ 7ส่วนเนื้อหาพอร์ทัล/หน้าเริ่มต้นพร้อมคอร์ปัสที่สร้างขึ้น; เนื้อหาร้อยแก้วยังใช้ภาษาอังกฤษสำรอง; เอกสารที่เขียนครบถ้วนยังรอดำเนินการ
arหลักฐานบางส่วนของระยะที่ 7ส่วนเนื้อหาพอร์ทัล/หน้าเริ่มต้นพร้อมคอร์ปัสที่สร้างขึ้น; เนื้อหาร้อยแก้วยังใช้ภาษาอังกฤษสำรอง; เอกสารที่เขียนครบถ้วนยังรอดำเนินการ
hiหลักฐานบางส่วนของระยะที่ 7ส่วนเนื้อหาพอร์ทัล/หน้าเริ่มต้นพร้อมคอร์ปัสที่สร้างขึ้น; เนื้อหาร้อยแก้วยังใช้ภาษาอังกฤษสำรอง; เอกสารที่เขียนครบถ้วนยังรอดำเนินการ

ตัวอย่างที่ใช้งานได้ในภาษาละตินหลัก:

ฟังก์ชัน salve(ข้อความ ชื่อ) → ข้อความ {
    คงที่ ข้อความ msg ← "Salve, §!"(ชื่อ)
    คืน msg
}

เริ่ม {
    คงที่ ข้อความ m ← salve("munde")
    บันทึก m
}

ดู ภาษาสำหรับผู้อ่าน สำหรับโปรแกรมเชิงความหมายเดียวกันที่แสดงผลผ่านแพ็กภาษาไทย จีนตัวย่อ จีนตัวเต็ม อาหรับ ฮินดี และเวียดนาม

ภาพรวม#

Faber ออกแบบขึ้นจากแนวคิดหลักว่า การแทนค่าระดับกลางคือความจริง และไม่มีเป้าหมายหรือพื้นผิวภาษามนุษย์ใดได้รับสิทธิพิเศษ โปรแกรม Faber ที่เขียนด้วยคีย์เวิร์ดละตินสามารถแสดงผลเป็นคีย์เวิร์ดภาษาไทย อาหรับ หรือจีนได้ด้วยกลไกเดียวกับที่ใช้แสดงผลเป็น Rust, Go หรือ WebAssembly — เพราะ HIR คือแหล่งอำนาจ และเอาต์พุตทุกแบบคือ การแสดงผล ของ HIR

ภาษานี้เลือกสัญญาณสำคัญสามประการโดยตั้งใจ และทั้งสามทำงานร่วมกัน:

  • การประกาศโดยให้ชนิดข้อมูลเป็นหลัก — รูปแบบชี้ไปที่การผูกค่า: ข้อความ ชื่อ ไม่ใช่ ชื่อ: ข้อความ
  • คำเชิงพฤติกรรมแบบละติน — การประกาศ คำสั่ง และวงจรชีวิต: ฟังก์ชัน, ชนิด, คงที่, คืน, ถ้า
  • อักขระสัญลักษณ์เชิงโครงสร้าง — การไหลของค่าและจุดเชื่อมของชนิดข้อมูล: ← (ผูกค่า), → (ชนิดข้อมูลผลลัพธ์), ∴ (ตัวเชื่อมปิดล้อม), ≡ (ความเท่ากัน), ∪ (ยูเนียน)

ผลลัพธ์คือซอร์สโค้ดที่มีรูปแบบไวยากรณ์คงที่ สามารถตรวจสอบ แปลงรูป และลดระดับได้โดยไม่สูญเสียความเข้าใจเจตนาของผู้อ่าน

เอกสาร#

ส่วนคำอธิบาย
ประวัติไทม์ไลน์การพัฒนา อิทธิพล และประวัติรุ่นที่เผยแพร่
รุ่นที่เผยแพร่ดาวน์โหลด Faber รุ่นล่าสุด รวมถึงแท็กและไบนารีที่เผยแพร่ทุกชุด
คุณลักษณะภาษาสำหรับผู้อ่าน เลนการคอมไพล์ คำศัพท์ละติน ระบบอักขระสัญลักษณ์ และหลักการออกแบบ
ไวยากรณ์เอกสารอ้างอิงฉบับสมบูรณ์: ชนิดข้อมูล ฟังก์ชัน การควบคุมการไหล ข้อผิดพลาด เจเนอริก และคอลเลกชัน
เครื่องมือไปป์ไลน์คอมไพเลอร์ Radix, Faber CLI, เป้าหมายการสร้างโค้ด และสคริปต์
ระบบนิเวศNorma, Cista, Triga, coreutils, AI Workbench และ corpus
Corpusหน้าคีย์เวิร์ดและโครงสร้างที่สร้างจากคอร์ปัสสาธารณะ
เอกสารอ้างอิงไวยากรณ์ EBNF เอกสารการออกแบบ และคลังโค้ด

ตัวอย่างแบบรวดเร็ว#

ฟังก์ชันอย่างง่ายที่สาธิตรูปแบบสำคัญของ Faber — พารามิเตอร์ที่ให้ชนิดข้อมูลเป็นหลัก ชนิดข้อมูลผลลัพธ์ด้วยอักขระสัญลักษณ์ ยูเนียนแบบ nullable และคำควบคุมแบบละติน:

ฟังก์ชัน divide(จํานวน a, จํานวน b) → จํานวน ∪ นัล {
    ถ้า b ≡ 0 ดังนั้น คืน นัล
    คืน a / b
}

การแสดงผลจริง#

ฟังก์ชัน divide ด้านบนจะแสดงผลด้วยแพ็กภาษาละตินเป็นค่าเริ่มต้น คอมไพเลอร์สามารถแสดงผลโปรแกรมเดียวกันในภาษาสำหรับผู้อ่านทั้งเจ็ดภาษา — ไทย จีนตัวย่อ จีนตัวเต็ม อาหรับ ฮินดี และเวียดนาม — โดยแมปคีย์เวิร์ดและชนิดข้อมูลใหม่เป็นภาษานั้น ขณะที่อักขระสัญลักษณ์และตัวระบุยังคงเดิม นี่ไม่ใช่ชั้นการแปลที่นำมาใช้กับหน้าเอกสาร แต่เป็นกลไกเดียวกับที่คอมไพเลอร์ใช้สร้างซอร์สโค้ดเฉพาะภาษา

ดูเอกสาร ภาษาสำหรับผู้อ่าน สำหรับคำอธิบายฉบับเต็ม

คลังโค้ด#

คลังโค้ดบทบาท
faberlang/faberAPI เป้าหมายสาธารณะและหน้าหลักของโครงการ
faberlang/releasesไฟล์รุ่น CLI ที่มีแท็กกำกับ
faberlang/normaซอร์สโค้ดไลบรารีมาตรฐาน
faberlang/cistaCLI/ไลบรารีสำหรับจัดเก็บแพ็กเกจ
faberlang/trigaไลบรารีกราฟิก / เรขาคณิต
faberlang/examplesCorpus เส้นทางการเรียนรู้ และแพ็กเกจแอปพลิเคชัน
faberlang/faberlang.devเว็บไซต์เอกสารนี้