ภาษาโปรแกรมมิ่ง Odin: ทางเลือกสมัยใหม่แทน C ที่สร้างความแตกแยกในหมู่นักพัฒนา

ทีมชุมชน BigGo
ภาษาโปรแกรมมิ่ง Odin: ทางเลือกสมัยใหม่แทน C ที่สร้างความแตกแยกในหมู่นักพัฒนา

ในโลกแห่งภาษาการเขียนโปรแกรมระบบที่พัฒนาอย่างไม่หยุดยั้ง มีผู้ท้าชิงใหม่ปรากฏตัวขึ้นและกำลังก่อให้เกิดการถกเถียงอย่างร้อนแรงในหมู่นักพัฒนา Odin ที่สร้างโดย Ginger Bill นำเสนอตัวเองเป็นทางเลือกสมัยใหม่แทนภาษา C ด้วยไวยากรณ์ที่ได้รับแรงบันดาลใจจาก Pascal และการจัดการหน่วยความจำแบบ Manual ระหว่างที่นักพัฒนากำลังสำรวจภาษาใหม่นี้ การอภิปรายก็ปะทุขึ้นรอบๆ ตัวเลือกการออกแบบ การประยุกต์ใช้ในทางปฏิบัติ และว่ามันเสนอสิ่งที่มีคุณค่าจริงๆ นอกเหนือจากภาษาที่มีอยู่แล้วอย่าง C, Zig และ Rust หรือไม่

การถกเถียงเรื่องความเรียบง่าย: น่าเบื่อหรือสุดเจ๋ง?

หนึ่งในการอภิปรายที่โดดเด่นที่สุดมุ่งเน้นไปที่ความเรียบง่ายโดยเจตนาของ Odin สมาชิกในชุมชนหลายคนมองว่านี่เป็นจุดแข็งที่ยิ่งใหญ่ที่สุดของภาษา แทนที่จะเป็นจุดอ่อน แนวทางที่ตรงไปตรงมาของภาษาต่อการจัดการหน่วยความจำและไวยากรณ์ที่สะอาดตาได้รับคำชมจากนักพัฒนาที่เหนื่อยล้ากับการต่อสู้กับคุณสมบัติภาษาที่ซับซ้อน

ข้อเสียเปรียบที่ใหญ่ที่สุดของ C คือความประหลาดใจมากมายของมัน ความน่าเบื่อบ้างคงจะดีต่อมัน

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

ปัญหาเลย์เอาต์คีย์บอร์ดและตัวเลือกไวยากรณ์

การถกเถียงที่เต็มไปด้วยอารมณ์อย่างน่าประหลาดใจได้เกิดขึ้นรอบๆ การใช้สัญลักษณ์ caret (^) ของ Odin สำหรับไวยากรณ์พอยน์เตอร์ ซึ่งสืบทอดมาจาก Pascal ในขณะที่นักพัฒนาบางคนที่มีพื้นหลัง Pascal หรือ Delphi พบว่าสิ่งนี้คุ้นเคยและสะดวกสบาย คนอื่นๆ ชี้ให้เห็นปัญหาด้านการเข้าถึงคีย์บอร์ดในทางปฏิบัติ

ปัญหานี้เกี่ยวข้องกับ dead keys - อักขระที่ต้องกดปุ่มหลายครั้งบนเลย์เอาต์คีย์บอร์ดสากลหลายแบบ นักพัฒนาที่ใช้เลย์เอาต์เช่น UK International หรือการกำหนดค่าต่างๆ ของยุโรปรายงานว่าการพิมพ์ ^, ~ และ ` ต้องใช้ความพยายามเพิ่มเติม บางครั้งต้องกดสองหรือสามครั้งต่ออักขระ สิ่งนี้นำไปสู่คำแนะนำที่ว่าภาษาการเขียนโปรแกรมใหม่ๆ ควรหลีกเลี่ยงอักขระเหล่านี้สำหรับการดำเนินการทั่วไป

วงเล็บ แม้ว่าจะต้องใช้ปุ่มหลายปู่ในเลย์เอาต์ส่วนใหญ่ แต่โดยทั่วไปแล้วพิมพ์ได้ง่ายกว่าเพราะมักเกี่ยวข้องกับการกดปุ่มพร้อมกันแทนที่จะกดตามลำดับ การอภิปรายยังแตกแขนงออกไปเป็นคำแนะนำสำหรับเลย์เอาต์คีย์บอร์ดทางเลือก เช่น Programmer Dvorak และการกำหนดค่า modifier แบบกำหนดเองเพื่อบรรเทาความท้าทายในการพิมพ์เหล่านี้

ผลกระทบของรูปแบบแป้นพิมพ์ต่อการเขียนโปรแกรม

  • อักขระ Dead Key: ^, ~, ` ต้องกดแป้นพิมพ์หลายครั้งบนแป้นพิมพ์แบบนานาชาติ
  • วิธีแก้ปัญหาทั่วไป: รูปแบบแป้นพิมพ์ US International, Programmer Dvorak, การกำหนดแป้นพิมพ์แบบกำหนดเอง
  • ได้รับผลกระทบน้อยที่สุด: วงเล็บ (กดแป้นพิมพ์พร้อมกันเทียบกับกดตามลำดับสำหรับ dead keys)
  • ข้อพิจารณาในการออกแบบภาษา: ภาษาใหม่มักหลีกเลี่ยงอักขระ dead key สำหรับตัวดำเนินการที่ใช้บ่อย

ความเสถียรของภาษา เทียบกับ การพัฒนาที่ต่อเนื่อง

จุดเปรียบเทียบสำคัญอีกประการระหว่าง Odin กับภาษาระบบสมัยใหม่อื่นๆ คือปรัชญาการพัฒนา สมาชิกในชุมชนระบุว่าผู้สร้าง Odin ได้ประกาศว่าข้อกำหนดภาษานั้นเสร็จสมบูรณ์แล้ว โดยมุ่งความพยายามในปัจจุบันไปที่การปรับปรุงไลบรารีมาตรฐานและเครื่องมือ แทนที่จะเปลี่ยนแปลงคุณสมบัติหลักของภาษา

สิ่งนี้แตกต่างจากภาษาอย่าง Zig ซึ่งยังคงอยู่ในช่วงก่อนเวอร์ชัน 1.0 พร้อมคำเตือนที่ชัดเจนเกี่ยวกับการเปลี่ยนแปลงที่ทำลายความเข้ากันได้อย่างต่อเนื่อง สำหรับนักพัฒนาที่แสวงหาความเสถียรในชุดเครื่องมือของพวกเขา ข้อกำหนดที่ถูกแช่แข็งของ Odin เป็นข้อได้เปรียบที่สำคัญ ทีมสามารถนำภาษาไปใช้ได้โดยไม่ต้องกังวลว่าการเปลี่ยนแปลงไวยากรณ์หรือความหมายบ่อยๆ จะรบกวนฐานโค้ดของพวกเขา

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

ความขัดแย้งเรื่องตัวจัดการแพ็กเกจ

บางทีแง่มุมที่สร้างความแตกแยกมากที่สุดของระบบนิเวศ Odin คือการขาดตัวจัดการแพ็กเกจอย่างเป็นทางการโดยเจตนา ความรังเกียจที่รู้จักกันดีของ Ginger Bill ต่อตัวจัดการแพ็กเกจได้หล่อหลอมปรัชญาการพัฒนาของ Odin ส่งผลให้เกิดปฏิกิริยาที่หลากหลายจากชุมชน

ผู้สนับสนุนโต้แย้งว่าตัวจัดการแพ็กเกจส่งเสริมการพึ่งพาที่มากเกินไปและสร้างต้นไม้การพึ่งพาที่เปราะบางซึ่งพังบ่อย พวกเขาชี้ไปที่ระบบนิเวศอย่าง PyPI ของ Python ซึ่งการรักษาความเข้ากันได้ทั่วแพ็กเกจหลายพันรายการกลายเป็นความท้าทายที่เพิ่มขึ้นเรื่อยๆ โดยไม่มีตัวจัดการการพึ่งพาที่ง่าย นักพัฒนา Odin ถูกส่งเสริมให้เขียนโค้ดที่ยืนหยัดได้ด้วยตัวเองมากขึ้นและพิจารณาการพึ่งพาภายนอกอย่างรอบคอบ

นักวิจารณ์โต้กลับว่าการพัฒนาซอฟต์แวร์สมัยใหม่พึ่งพาการใช้โค้ดซ้ำและแพ็กเกจชุมชนอย่างมาก พวกเขาระบุว่าแม้ไม่มีการสนับสนุนอย่างเป็นทางการ ในที่สุดนักพัฒนาก็จะสร้างตัวจัดการแพ็กเกจของบุคคลที่สาม โดยอ้างการวิวัฒนาการของระบบนิเวศ JavaScript เป็นตัวอย่าง การขาดการจัดการการพึ่งพาที่ได้มาตรฐานอาจขัดขวางการนำไปใช้โดยทีมที่คุ้นเคยกับเวิร์กโฟลว์การพัฒนาสมัยใหม่

การจัดการข้อผิดพลาดและการจัดการหน่วยความจำ

การอภิปรายทางเทคนิคยังมุ่งเน้นไปที่แนวทางของ Odin ต่อการจัดการข้อผิดพลาดและการจัดการหน่วยความจำ ภาษาใช้ค่าการส่งคืนหลายค่าสำหรับการจัดการข้อผิดพลาด ทำให้ฟังก์ชันอย่าง make สามารถส่งคืนค่าข้อผิดพลาดทางเลือกที่นักพัฒนาสามารถเลือกที่จะตรวจสอบหรือเพิกเฉยได้

แนวทางนี้ให้ความยืดหยุ่นแต่ก็ทำให้เกิดคำถามเกี่ยวกับความปลอดภัย ไม่เหมือนกับการบังคับใช้การจัดการข้อผิดพลาดขณะคอมไพล์ของ Rust, Odin ปล่อยให้การตรวจสอบข้อผิดพลาดเป็นแนวปฏิบัติทางเลือก ในทำนองเดียวกัน ในขณะที่ Odin รองรับการจัดการหน่วยความจำแบบ Manual คล้ายกับ C และ Zig มันเสนอตัวจัดสรรมาตรฐานที่ทำให้รูปแบบทั่วไปง่ายขึ้นโดยไม่มีความซับซ้อนของระบบความเป็นเจ้าของของ Rust

ชุมชนรับรู้ว่าสิ่งเหล่านี้เป็นการแลกเปลี่ยนการออกแบบโดยเจตนา แทนที่จะเป็นการละเว้น Odin ให้ความสำคัญกับอิสระและความเรียบง่ายของนักพัฒนาเหนือความปลอดภัยที่ถูกบังคับ ทำให้ตัวเองอยู่ในตำแหน่งที่เป็นทางเลือกที่เน้นปฏิบัติการสำหรับโปรแกรมเมอร์ระบบที่มีประสบการณ์ซึ่งต้องการความปลอดภัยมากกว่า C แต่มีความซับซ้อนน้อยกว่า Rust

ภาพรวมการเปรียบเทียบภาษา

คุณสมบัติ Odin C Zig Rust
การจัดการหน่วยความจำ แบบแมนนวลพร้อมตัวช่วย แบบแมนนวลทั้งหมด แบบแมนนวลพร้อมฟีเจอร์ความปลอดภัย ระบบ Ownership
การจัดการข้อผิดพลาด ส่งคืนค่าหลายค่า รหัสส่งคืน Error unions Result type
อิทธิพลของไวยากรณ์ ได้รับแรงบันดาลใจจาก Pascal ดั้งเดิม ได้รับแรงบันดาลใจจาก C ได้รับแรงบันดาลใจจาก ML
Package Manager ไม่มี (โดยการออกแบบ) หลากหลาย อยู่ระหว่างพัฒนา Cargo
ความเสถียรของภาษา สเปกที่ตายตัว เสถียร ก่อน 1.0 มีการเปลี่ยนแปลงที่ทำลายความเข้ากันได้ เสถียร
กรณีการใช้งานหลัก เกม ระบบ ระบบ ฝังตัว ระบบ คอมไพเลอร์ ระบบ เว็บ
ความยากในการเรียนรู้ ปานกลาง สูง ปานกลาง สูง

สรุป: กลุ่มเฉพาะที่คุ้มค่าต่อการสำรวจ

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

ดังที่สมาชิกชุมชนหนึ่งสรุปไว้ Odin เป็นตัวแทนของ C ที่ทันสมัยกว่า บางhow น่าเบื่อกว่าเดิมอีก แต่ในทางที่ดีที่สุด สำหรับนักพัฒนาที่ทำงานในโครงการระยะยาวซึ่งความเสถียรและความอ่านง่ายสำคัญกว่าคุณสมบัติที่ล้ำสมัย Odin เสนอเส้นทางที่ตรงไปตรงมาอย่างสดชื่นสู่การเขียนโปรแกรมระบบ

อ้างอิง: Is Odin Just A More Boring C?