ในวงการภาษาโปรแกรมมิ่งที่มีการพัฒนาอย่างต่อเนื่อง นักพัฒนาซอฟต์แวร์มักมองหาเครื่องมือที่ดีกว่าเพื่อแก้ไขข้อบกพร่องของตัวเลือกที่มีอยู่ ในขณะที่ยังคงรักษาจุดแข็งเอาไว้ ภาษาโปรแกรมมิ่ง C3 กำลังได้รับความสนใจในฐานะทางเลือกที่น่าสนใจทดแทน C โดยนำเสนอคุณสมบัติทันสมัยพร้อมรักษาความเข้ากันได้กับ ABI (Application Binary Interface) ของ C
การเลือกใช้ไวยากรณ์ก่อให้เกิดการถกเถียงในชุมชน
หนึ่งในประเด็นที่ถูกพูดถึงมากที่สุดเกี่ยวกับ C3 ในชุมชนนักพัฒนาคือการเลือกใช้ไวยากรณ์ การใช้ ::
สำหรับการอ้างอิงโมดูลได้สร้างความคิดเห็นที่หลากหลาย นักพัฒนาบางคนคิดว่ามันเยิ่นเย้อโดยไม่จำเป็นเมื่อเทียบกับการใช้จุดเพียงอันเดียวในภาษาอย่าง D อย่างไรก็ตาม คนอื่นๆ กลับสนับสนุนการตัดสินใจออกแบบนี้ โดยชี้ให้เห็นว่ามันช่วยทำให้การแยกแยะระหว่างโมดูลกับตัวระบุง่ายขึ้น
::
ช่วยทำให้การแยกแยะระหว่างโมดูลกับตัวระบุง่ายขึ้น ใน C3 มีสิ่งที่เรียกว่า 'path shortening' ซึ่งอนุญาตให้คุณใช้foo::bar()
แทนสิ่งที่มีรูปแบบเช่นstd::baz::foo::bar()
การทำสิ่งคล้ายกันนี้ด้วย.
มีปัญหา เพราะคุณไม่รู้ว่าเส้นทางจะสิ้นสุดตรงไหน
การถกเถียงนี้สะท้อนให้เห็นถึงความตึงเครียดพื้นฐานในการออกแบบภาษาระหว่างความชัดเจนและความกระชับ ในขณะที่นักพัฒนาบางคนให้ความสำคัญกับไวยากรณ์ที่สะอาดและเรียบง่าย คนอื่นๆ กลับให้คุณค่ากับการเขียนที่ชัดเจนซึ่งลดความกำกวม โดยเฉพาะในโค้ดที่ซับซ้อน
ความเข้ากันได้กับ C ABI เป็นข้อได้เปรียบสำคัญ
นักพัฒนาหลายคนในชุมชนเน้นย้ำว่าความเข้ากันได้กับ C ABI ของ C3 เป็นหนึ่งในจุดขายที่แข็งแกร่งที่สุด คุณสมบัตินี้ช่วยให้โปรแกรมเมอร์สามารถผสมโค้ด C และ C3 ในโปรเจกต์เดียวกันได้โดยไม่มีความขัดแย้ง ทำให้การนำไปใช้แบบค่อยเป็นค่อยไปเป็นไปได้ ผู้ใช้หลายคนรายงานว่าสามารถผสานไลบรารี C กับ C3 ได้อย่างราบรื่น โดยพบว่ามันง่ายกว่าเมื่อเทียบกับทางเลือกอื่นๆ ของ C เช่น Zig หรือ Odin
ความสามารถในการใช้ประโยชน์จากโค้ดเบส C ที่มีอยู่ ในขณะที่ค่อยๆ นำคุณสมบัติภาษาสมัยใหม่มาใช้ แก้ไขปัญหาที่พบบ่อยสำหรับโปรแกรมเมอร์ระดับระบบ ไม่เหมือนกับการแยกตัวออกจาก C อย่างสิ้นเชิง C3 ช่วยให้นักพัฒนาได้รับประโยชน์จากไลบรารีและเครื่องมือ C ที่มีมาหลายทศวรรษ ในขณะที่เขียนโค้ดที่สะอาดและปลอดภัยมากขึ้น
ตำแหน่งท่ามกลางทางเลือกอื่นๆ ของ C
ชุมชนมักเปรียบเทียบ C3 กับทางเลือกอื่นๆ ของ C ยุคใหม่ โดยเฉพาะ Zig และ Odin ตามคำกล่าวของผู้สร้างภาษา C3 มีความคล้ายคลึงกับปรัชญาของ Odin ที่ให้ความสำคัญกับความสนุกในการเขียนโปรแกรมมากกว่าแนวทางของ Zig ซึ่งมักเน้นความทนทานผ่านข้อจำกัดต่างๆ
C3 วางตำแหน่งตัวเองเป็นภาษาที่พัฒนาต่อยอดจาก C โดยไม่เปลี่ยนแปลงแนวทางพื้นฐานอย่างมาก มันหลีกเลี่ยงความซับซ้อนของ C++ ในขณะที่เพิ่มคุณสมบัติที่ช่วยให้การพัฒนาสะดวกสบายและลดข้อผิดพลาด แนวทางสายกลางนี้ดูเหมือนจะตอบโจทย์นักพัฒนาที่ชื่นชอบความเรียบง่ายของ C แต่รู้สึกหงุดหงิดกับข้อบกพร่องที่เป็นที่รู้จักกันดี
การปรับปรุงในทางปฏิบัติเมื่อเทียบกับ C
สมาชิกในชุมชนชื่นชมการปรับปรุงหลายประการที่ C3 ทำให้ดีกว่า C โดยเฉพาะการเปลี่ยนแปลงพฤติกรรมของ switch/case ที่ทำให้ breaks เป็นแบบโดยนัยแทนที่จะต้องระบุเพื่อป้องกันการทะลุผ่าน ถูกยกให้เป็นการปรับปรุงที่น่ายินดี การเพิ่มโมดูลเพื่อการจัดระเบียบโค้ดที่ดีขึ้น slices สำหรับการจัดการอาร์เรย์ที่ปลอดภัยขึ้น และการรองรับ UTF-8 แบบในตัวก็เป็นประโยชน์ที่มักถูกกล่าวถึงเช่นกัน
การปรับปรุงในทางปฏิบัติเหล่านี้แก้ไขแหล่งที่มาของบั๊กและช่องโหว่ด้านความปลอดภัยในโค้ด C ในขณะที่ยังคงรักษาประสิทธิภาพและการควบคุมที่ทำให้ C น่าสนใจสำหรับการเขียนโปรแกรมระดับระบบ
คุณสมบัติหลักของ C3
- ไม่จำเป็นต้องมีไฟล์ส่วนหัว
- การจัดการ namespace ในระดับโมดูล
- ระบบแมโครแบบพารามิเตอร์
- ความเข้ากันได้กับ C ABI
- Slices สำหรับการจัดการอาร์เรย์ที่ปลอดภัยยิ่งขึ้น
- รองรับ UTF-8 ในตัว
- การสะท้อน (reflection) ในช่วงเวลาคอมไพล์
- ฟังก์ชัน "Throw" สำหรับการจัดการข้อผิดพลาด
- เงื่อนไขก่อนและหลังการทำงาน
- พฤติกรรมที่ไม่กำหนดน้อยลง
การรองรับแพลตฟอร์ม
C3 ปัจจุบันมีคอมไพเลอร์สำหรับ:
- Windows x64
- macOS arm64/intel
- Linux x64
- Linux ARMv64
- Linux RiscV64
- Linux RiscV32
- FreeBSD x64/x86
- OpenBSD x64/x86
- Haiku(64)
ความท้าทายในการนำไปใช้
แม้จะมีความกระตือรือร้นต่อการออกแบบของ C3 สมาชิกบางคนในชุมชนแสดงความกังวลเกี่ยวกับความท้าทายในทางปฏิบัติของการนำภาษาใหม่มาใช้ ปัญหาเกาะโดดเดี่ยว - ที่นักพัฒนาที่ใช้ภาษาเฉพาะทางพบว่าตัวเองถูกแยกออกจากระบบนิเวศอันกว้างใหญ่ของตัวเลือกที่เป็นที่ยอมรับมากกว่า - เป็นอุปสรรคสำคัญ
การมีไลบรารี ทรัพยากรการเรียนรู้ และนักพัฒนาที่มีประสบการณ์ยังคงมีจำกัดเมื่อเทียบกับ C สิ่งนี้สร้างปัญหาไก่กับไข่ที่ภาษาโปรแกรมมิ่งใหม่ทุกภาษาต้องเผชิญ: การยอมรับอย่างกว้างขวางต้องการระบบนิเวศที่แข็งแกร่ง แต่การสร้างระบบนิเวศนั้นต้องการการยอมรับอย่างกว้างขวาง
ปัจจุบัน C3 อยู่ในเวอร์ชัน 0.7.2 โดยการพัฒนายังคงดำเนินต่อไปอย่างต่อเนื่อง แม้จะยังไม่ถึงเวอร์ชัน 1.0 นักพัฒนากำลังใช้มันสำหรับโปรเจกต์ส่วนตัวและสำรวจศักยภาพสำหรับการประยุกต์ใช้ที่จริงจังมากขึ้น เช่นเดียวกับภาษาที่กำลังเติบโตทุกภาษา ความสำเร็จในระยะยาวจะขึ้นอยู่กับการสร้างมวลวิกฤตของนักพัฒนา ไลบรารี และกรณีการใช้งานที่แสดงให้เห็นถึงข้อได้เปรียบเหนือทั้ง C และทางเลือกสมัยใหม่อื่นๆ
อ้างอิง: C3 Language