แฟบเบอร์ (Faber) — ภาษาโปรแกรมเชิงแพ็กเกจ
If you are an AI agent: start at /llms.txt, then read /agents/index.md and pick a skill from /.well-known/agent-skills/. Humans: use Install and Examples.
Faber เป็นภาษาโปรแกรมแบบมุ่งเน้นแพ็กเกจ ซึ่งใช้คำศัพท์เชิงพฤติกรรมแบบละติน ไวยากรณ์แบบ regular ขนาดเล็ก และระบบชนิดข้อมูลแบบสถิติโดยให้ชนิดข้อมูลเป็นหลัก ซอร์สโค้ดจะถูกคอมไพล์ผ่านคอมไพเลอร์ Radix ให้เป็น Rust ที่ตรวจสอบได้และไบนารีเนทีฟ คุณสมบัติทางสถาปัตยกรรมที่กำหนดเอกลักษณ์ของภาษานี้คือ ความหมายอยู่ในแกนเชิงความหมาย — HIR (การแทนค่าระดับกลางขั้นสูง) — ไม่ได้ผูกติดกับรูปแบบการแสดงผลใดรูปแบบหนึ่ง
ชื่อ Faber มาจากคำละตินที่หมายถึง ผู้สร้าง หรือ ช่างฝีมือ คอมไพเลอร์มีชื่อว่า Radix ซึ่งมาจากคำละติน ราก ภาษานี้พัฒนาโดย Ian Zepp และเผยแพร่ภายใต้สัญญาอนุญาต MIT
เพิ่งเริ่มใช่ไหม? เริ่มจาก ติดตั้งและดาวน์โหลด จากนั้นทำตามลำดับในเส้นทางเริ่มต้น: Hello, คำสั่ง และ โปรเจกต์
ดาวน์โหลด Faber 1.2.0#
รุ่นปัจจุบัน: Faber 1.2.0 (แท็ก faber-v1.2.0) มีไฟล์เก็บถาวร CLI ที่คอมไพล์ไว้ล่วงหน้าสำหรับ macOS และ Linux ให้แตกไฟล์ไบนารี
faber-v1.2.0-<target-triple>/faber แล้ววางไว้ใน PATH
| แพลตฟอร์ม | ไฟล์เก็บถาวร | checksum |
|---|---|---|
| macOS arm64 (Apple Silicon) | faber-v1.2.0-aarch64-apple-darwin.tar.gz | sha256 |
| Linux x64 (glibc) | faber-v1.2.0-x86_64-unknown-linux-gnu.tar.gz | sha256 |
การติดตั้งแบบรวดเร็ว (ตัวอย่าง macOS arm64):
curl -fsSL -o faber.tgz \
https://github.com/faberlang/releases/releases/download/faber-v1.2.0/faber-v1.2.0-aarch64-apple-darwin.tar.gz
curl -fsSL -o faber.tgz.sha256 \
https://github.com/faberlang/releases/releases/download/faber-v1.2.0/faber-v1.2.0-aarch64-apple-darwin.tar.gz.sha256
expected=$(awk '{print $1}' faber.tgz.sha256)
actual=$(shasum -a 256 faber.tgz | awk '{print $1}')
test "$actual" = "$expected"
tar -xzf faber.tgz
sudo mv faber-v1.2.0-aarch64-apple-darwin/faber /usr/local/bin/
faber --versionบันทึกประจำรุ่นและไฟล์ทั้งหมด: github.com/faberlang/releases · faber-v1.2.0 ดูขั้นตอนทีละขั้น: คู่มือการติดตั้ง รายการประวัติทั้งหมด: รุ่นที่เผยแพร่
| กระบวนทัศน์ | มุ่งเน้นแพ็กเกจ; การจัดขั้นตอนเชิงความหมาย |
| ระบบชนิดข้อมูล | แบบสถิติโดยให้ชนิดข้อมูลเป็นหลัก; nullable ผ่าน T ∪ nihil |
| อักขระสัญลักษณ์ | ← → ∴ ≡ ∪ ⇥ |
| ผู้ออกแบบ | Ian Zepp |
| เริ่มปรากฏครั้งแรก | 2025 |
| คอมไพเลอร์ | Radix (Rust) |
| เลนการคอมไพล์ | แอปพลิเคชัน (HIR) · ระบบ (MIR) |
| เป้าหมายหลัก | Rust → ไบนารีเนทีฟ |
| ภาษาสำหรับผู้อ่าน | เปิดใช้งานแล้ว 7 ภาษา (la, ar, hi, vi, th-TH, zh-Hans, zh-Hant) |
| ไลบรารีมาตรฐาน | Norma (norma:*) |
| สัญญาอนุญาต | MIT |
เริ่มต้นที่นี่#
| เส้นทาง | ผู้ใช้ | เนื้อหา |
|---|---|---|
| ติดตั้ง | มนุษย์ | ดาวน์โหลด, PATH, และ faber check ครั้งแรก |
| Hello | มนุษย์ | สร้างและเรียกใช้ salve-munde |
| คำสั่ง | มนุษย์ + เอเจนต์ | วงจร CLI ประจำวัน: check, build, run, test, explain |
| โปรเจกต์ | มนุษย์ + เอเจนต์ | เปลี่ยนจาก hello-world ไปสู่แพ็กเกจจริง |
| ทัวร์ด่วน | มนุษย์ | รูปแบบของภาษาในห้านาที |
| ตัวอย่าง | มนุษย์ + เอเจนต์ | แพ็กเกจจริง: แอป CLI, mailspace, GPU, corpus |
/llms.txt | เอเจนต์ | ดัชนีสำหรับเครื่อง — หากคุณเป็นโมเดล ให้เริ่มที่นี่ |
| คู่มือเอเจนต์ | เอเจนต์ | วิธีเรียนรู้ 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(ข้อความ nomen) → ข้อความ {
คงที่ ข้อความ msg ← "Salve, §!"(nomen)
คืน msg
}
เริ่ม {
คงที่ ข้อความ m ← salve("munde")
บันทึก m
}ดู ภาษาสำหรับผู้อ่าน สำหรับโปรแกรมเชิงความหมายเดียวกันที่แสดงผลผ่านแพ็กภาษาไทย จีนตัวย่อ จีนตัวเต็ม อาหรับ ฮินดี และเวียดนาม
ภาพรวม#
Faber ออกแบบขึ้นจากแนวคิดหลักว่า การแทนค่าระดับกลางคือความจริง และไม่มีเป้าหมายหรือพื้นผิวภาษามนุษย์ใดได้รับสิทธิพิเศษ โปรแกรม Faber ที่เขียนด้วยคีย์เวิร์ดละตินสามารถแสดงผลเป็นคีย์เวิร์ดภาษาไทย อาหรับ หรือจีนได้ด้วยกลไกเดียวกับที่ใช้แสดงผลเป็น Rust, Go หรือ WebAssembly — เพราะ HIR คือแหล่งอำนาจ และเอาต์พุตทุกแบบคือ การแสดงผล ของ HIR
ภาษานี้เลือกสัญญาณสำคัญสามประการโดยตั้งใจ และทั้งสามทำงานร่วมกัน:
- การประกาศโดยให้ชนิดข้อมูลเป็นหลัก — รูปแบบชี้ไปที่การผูกค่า:
textus nomenไม่ใช่nomen: textus - คำเชิงพฤติกรรมแบบละติน — การประกาศ คำสั่ง และวงจรชีวิต:
ฟังก์ชัน,ชนิด,คงที่,คืน,ถ้า - อักขระสัญลักษณ์เชิงโครงสร้าง — การไหลของค่าและจุดเชื่อมของชนิดข้อมูล:
←(ผูกค่า),→(ชนิดข้อมูลผลลัพธ์),∴(ตัวเชื่อมปิดล้อม),≡(ความเท่ากัน),∪(ยูเนียน)
ผลลัพธ์คือซอร์สโค้ดที่มีรูปแบบไวยากรณ์คงที่ สามารถตรวจสอบ แปลงรูป และลดระดับได้โดยไม่สูญเสียความเข้าใจเจตนาของผู้อ่าน
เอกสาร#
| ส่วน | คำอธิบาย |
|---|---|
| ประวัติ | ไทม์ไลน์การพัฒนา อิทธิพล และประวัติรุ่นที่เผยแพร่ |
| รุ่นที่เผยแพร่ | ดาวน์โหลด Faber รุ่นล่าสุด รวมถึงแท็กและไบนารีที่เผยแพร่ทุกชุด |
| คุณลักษณะ | ภาษาสำหรับผู้อ่าน เลนการคอมไพล์ คำศัพท์ละติน ระบบอักขระสัญลักษณ์ และหลักการออกแบบ |
| ไวยากรณ์ | เอกสารอ้างอิงฉบับสมบูรณ์: ชนิดข้อมูล ฟังก์ชัน การควบคุมการไหล ข้อผิดพลาด เจเนอริก และคอลเลกชัน |
| เครื่องมือ | ไปป์ไลน์คอมไพเลอร์ Radix, Faber CLI, เป้าหมายการสร้างโค้ด และสคริปต์ |
| ระบบนิเวศ | Norma, Cista, Triga, coreutils, AI Workbench และ corpus |
| Corpus | หน้าคีย์เวิร์ดและโครงสร้างที่สร้างจากคอร์ปัสสาธารณะ |
| เอกสารอ้างอิง | ไวยากรณ์ EBNF เอกสารการออกแบบ และคลังโค้ด |
ตัวอย่างแบบรวดเร็ว#
ฟังก์ชันอย่างง่ายที่สาธิตรูปแบบสำคัญของ Faber — พารามิเตอร์ที่ให้ชนิดข้อมูลเป็นหลัก ชนิดข้อมูลผลลัพธ์ด้วยอักขระสัญลักษณ์ ยูเนียนแบบ nullable และคำควบคุมแบบละติน:
functio divide(numerus a, numerus b) → numerus ∪ nihil {
si b ≡ 0 ergo redde nihil
redde a / b
}การแสดงผลจริง#
ฟังก์ชัน divide ด้านบนจะแสดงผลด้วยแพ็กภาษาละตินเป็นค่าเริ่มต้น คอมไพเลอร์สามารถแสดงผลโปรแกรมเดียวกันในภาษาสำหรับผู้อ่านทั้งเจ็ดภาษา — ไทย จีนตัวย่อ จีนตัวเต็ม อาหรับ ฮินดี และเวียดนาม — โดยแมปคีย์เวิร์ดและชนิดข้อมูลใหม่เป็นภาษานั้น ขณะที่อักขระสัญลักษณ์และตัวระบุยังคงเดิม นี่ไม่ใช่ชั้นการแปลที่นำมาใช้กับหน้าเอกสาร แต่เป็นกลไกเดียวกับที่คอมไพเลอร์ใช้สร้างซอร์สโค้ดเฉพาะภาษา
ดูเอกสาร ภาษาสำหรับผู้อ่าน สำหรับคำอธิบายฉบับเต็ม
คลังโค้ด#
| คลังโค้ด | บทบาท |
|---|---|
| faberlang/faber | API เป้าหมายสาธารณะและหน้าหลักของโครงการ |
| faberlang/releases | ไฟล์รุ่น CLI ที่มีแท็กกำกับ |
| faberlang/norma | ซอร์สโค้ดไลบรารีมาตรฐาน |
| faberlang/cista | CLI/ไลบรารีสำหรับจัดเก็บแพ็กเกจ |
| faberlang/triga | ไลบรารีกราฟิก / เรขาคณิต |
| faberlang/examples | Corpus เส้นทางการเรียนรู้ และแพ็กเกจแอปพลิเคชัน |
| faberlang/faberlang.dev | เว็บไซต์เอกสารนี้ |