นักพัฒนาสร้างคอมไพเลอร์ภาษา B Programming Language โดยใช้ "Crust" - ภาษา Rust ที่ถูกลดความซับซ้อน

ทีมชุมชน BigGo
นักพัฒนาสร้างคอมไพเลอร์ภาษา B Programming Language โดยใช้ "Crust" - ภาษา Rust ที่ถูกลดความซับซ้อน

คอมไพเลอร์ใหม่สำหรับภาษา B programming language ได้เกิดขึ้นจากชุมชนนักพัฒนา แต่สิ่งที่ดึงดูดความสนใจไม่ได้เป็นเพียงการฟื้นคืนชีพของภาษาประวัติศาสตร์นี้เท่านั้น แต่เป็นแนวทางที่ผิดปกติในการสร้างมันขึ้นมา โปรเจกต์นี้ใช้ Crust ซึ่งเป็นภาษาย่อยของ Rust ที่ถูกลดความซับซ้อนโดยเจตนา โดยตัดฟีเจอร์ความปลอดภัยสมัยใหม่หลายอย่างของภาษาออกไป เพื่อให้ได้ประสบการณ์การเขียนโปรแกรมที่เหมือนกับ C มากขึ้น

ตัวอักษร "B" แทนภาษาโปรแกรมที่กล่าวถึงในบทความ เป็นสัญลักษณ์ของการฟื้นฟูและความสำคัญในประวัติศาสตร์คอมพิวเตอร์
ตัวอักษร "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