คอมไพเลอร์ใหม่สำหรับภาษา B programming language ได้เกิดขึ้นจากชุมชนนักพัฒนา แต่สิ่งที่ดึงดูดความสนใจไม่ได้เป็นเพียงการฟื้นคืนชีพของภาษาประวัติศาสตร์นี้เท่านั้น แต่เป็นแนวทางที่ผิดปกติในการสร้างมันขึ้นมา โปรเจกต์นี้ใช้ Crust ซึ่งเป็นภาษาย่อยของ Rust ที่ถูกลดความซับซ้อนโดยเจตนา โดยตัดฟีเจอร์ความปลอดภัยสมัยใหม่หลายอย่างของภาษาออกไป เพื่อให้ได้ประสบการณ์การเขียนโปรแกรมที่เหมือนกับ C มากขึ้น
![]() |
---|
ตัวอักษร "B" แทนภาษาโปรแกรมที่กล่าวถึงในบทความ เป็นสัญลักษณ์ของการฟื้นฟูและความสำคัญในประวัติศาสตร์คอมพิวเตอร์ |
การทดลอง Crust ก่อให้เกิดการถกเถียง
แง่มุมที่น่าสนใจที่สุดของโปรเจกต์นี้คือการใช้ Crust ซึ่งปฏิบัติตามกฎเกณฑ์ที่ไม่เป็นไปตามแบบแผนและขัดแย้งกับแนวทางปฏิบัติการเขียนโปรแกรม Rust ทั่วไป ทุกฟังก์ชันถูกทำเครื่องหมายว่า unsafe การอ้างอิงถูกหลีกเลี่ยงโดยสิ้นเชิงเพื่อใช้ raw pointers แทน และห้ามใช้ standard library กระบวนการ build ก็ข้าม Cargo ไปโดยสิ้นเชิง โดยใช้ rustc โดยตรงแทน
แนวทางนี้ทำให้ชุมชนโปรแกรมเมอร์แบ่งออกเป็นสองฝ่าย นักพัฒนาบางคนตั้งคำถามว่าทำไมใครจะต้องตั้งใจลบการรับประกันความปลอดภัยของ Rust ออกไป ในขณะที่ภาษาอย่าง Zig ก็มีทางเลือกที่ปลอดภัยกว่าการเขียนโปรแกรมแบบ C อยู่แล้ว คนอื่นๆ มองว่าเป็นการทดลองที่น่าสนใจในการเขียนโปรแกรมเพื่อความบันเทิง โดยเน้นความเรียบง่ายมากกว่าความซับซ้อน
Crust: ภาษาย่อยของ Rust ที่ลบฟีเจอร์ความปลอดภัยอย่าง borrow checker และการใช้ standard library ออกไป
กฎของภาษา Crust :
- ทุกฟังก์ชันเป็น unsafe
- ไม่มี references มีเพียง pointers เท่านั้น
- ไม่มี cargo ให้ build ด้วย rustc โดยตรง
- ไม่มี std แต่อนุญาตให้ใช้ libc ได้
- ใช้เฉพาะ Edition 2021
- struct และ enum ของผู้ใช้ทั้งหมดต้อง [derive(Clone, Copy)]
- ทุกอย่างเป็น pub โดยค่าเริ่มต้น
การใช้งานภาษา B หลายรูปแบบเริ่มปรากฏขึ้น
การอภิปรายเผยให้เห็นว่านักพัฒนาหลายคนได้ทำงานกับคอมไพเลอร์ภาษา B อย่างอิสระกัน สมาชิกในชุมชนได้แบ่งปันลิงก์ไปยังการใช้งานของตนเอง ซึ่งบ่งบอกถึงความสนใจที่เพิ่มขึ้นในการฟื้นคืนชีพภาษาต้นแบบของภาษา C programming language แนวโน้มนี้สะท้อนถึงความหลงใหลในประวัติศาสตร์คอมพิวเตอร์อย่างกว้างขวาง และความปรารถนาที่จะเข้าใจว่าภาษาโปรแกรมมิ่งยุคแรกๆ ทำงานอย่างไร
สิ่งที่ทำให้การใช้งานนี้โดดเด่นคือการรองรับแพลตฟอร์มเป้าหมายหลายแบบ รวมถึง Uxn virtual machine ที่ผิดปกติ ซึ่งเป็นแพลตฟอร์มคอมพิวติ้งแบบมินิมอลที่ได้รับความนิยมอย่างมากจากนักพัฒนาที่สนใจในสภาพแวดล้อมคอมพิวติ้งที่มีข้อจำกัด
การพึ่งพาของโปรเจกต์:
- Rust - ภาษาสำหรับการพัฒนาคอมไพเลอร์
- fasm (Flat Assembler) - แบ็กเอนด์ของคอมไพเลอร์
- เป้าหมายที่รองรับรวมถึง fasm-x86_64-linux และเครื่องเสมือน Uxn
ปรัชญาการเขียนโปรแกรมเพื่อความบันเทิง
โปรเจกต์นี้รวบรวมปรัชญาที่ให้ความสำคัญกับการเรียนรู้และการทดลองมากกว่าความพร้อมสำหรับการใช้งานจริง คอมไพเลอร์มาพร้อมกับเฟรมเวิร์กการทดสอบที่ครอบคลุมชื่อ btest
ที่สร้างรายงานแบบเมทริกซ์ข้ามแพลตฟอร์มต่างๆ ทำให้นักพัฒนาสามารถเห็นว่าภาษานี้ทำงานอย่างไรในสภาพแวดล้อมต่างๆ
บทเรียนหลักของ Tsoding คือความเรียบง่ายของระบบและความต้องการระบบ build ที่ซับซ้อนเป็นเรื่องไร้สาระ
แนวทางนี้โดนใจนักพัฒนาที่รู้สึกหนักใจกับ toolchain การพัฒนาสมัยใหม่ และคิดถึงยุคที่เรียบง่ายกว่า เมื่อการสร้างซอฟต์แวร์ไม่จำเป็นต้องเชี่ยวชาญระบบจัดการ dependency ที่ซับซ้อน
คอมไพเลอร์ภาษา B programming language ทำหน้าที่เป็นทั้งความสำเร็จทางเทคนิคและการแสดงจุดยืนเกี่ยวกับปรัชญาการพัฒนา แม้ว่าอาจจะยังไม่พร้อมสำหรับการใช้งานจริง แต่ก็แสดงให้เห็นว่าภาษาโปรแกรมมิ่งในอดีตสามารถฟื้นคืนชีพได้โดยใช้เครื่องมือสมัยใหม่ แม้ว่าเครื่องมือเหล่านั้นจะถูกจำกัดโดยเจตนาให้รู้สึกเหมือนบรรพบุรุษของพวกมัน
อ้างอิง: B Programming Language