ภาษาโปรแกรม Q ใหม่เผชิญปัญหาชื่อซ้ำและระบบล่ม

ทีมชุมชน BigGo
ภาษาโปรแกรม Q ใหม่เผชิญปัญหาชื่อซ้ำและระบบล่ม

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

ภาษา Q ที่พัฒนาโดย Eduard Urbach มีเป้าหมายในการคอมไพล์โปรแกรมง่ายๆ ในเวลาต่ำกว่า 1 มิลลิวินาทีและสร้างไฟล์ปฏิบัติการที่มีขนาดเล็กเพียง 600 ไบต์สำหรับโปรแกรม Hello World โดยสร้างขึ้นโดยไม่ต้องพึ่งพา LLVM หรือ libc และรองรับทั้งสถาปัตยกรรม x86-64 และ arm64 บนแพลตฟอร์ม Linux , Mac และ Windows

คุณสมบัติหลัก:

  • ความเร็วในการคอมไพล์: น้อยกว่า 1 มิลลิวินาทีสำหรับโปรแกรมง่ายๆ
  • ไม่มีการพึ่งพาภายนอก (ไม่ต้องใช้ LLVM หรือ libc)
  • การปรับปรุงประสิทธิภาพแบบ SSA
  • ไฟล์ปฏิบัติการแบบ Position Independent Executables ( PIE )
  • การป้องกันหน่วยความจำแบบ W+X
  • รองรับการพัฒนาข้ามแพลตฟอร์ม

ชื่อซ้ำกันสร้างความสับสน

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

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

ปัญหาทางเทคนิคและความไม่เสถียรของแพลตฟอร์ม

นอกเหนือจากปัญหาเรื่องชื่อแล้ว ภาษานี้ยังเผชิญกับความท้าทายในการนำไปใช้งานจริง ผู้ใช้ที่ทดสอบคอมไพเลอร์บน macOS 15.6 รายงานว่าเกิดการล่มทันทีเมื่อพยายามรันโปรแกรมตัวอย่าง คอมไพเลอร์สร้างได้สำเร็จแต่ล้มเหลวระหว่างการปฏิบัติการด้วยข้อผิดพลาด signal: killed ปัญหาเหล่านี้ได้รับการบันทึกไว้ในระบบติดตามปัญหาของโปรเจกต์แล้ว ซึ่งบ่งชี้ถึงปัญหาความเสถียรที่ยังคงอยู่

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

ตารางการรองรับแพลตฟอร์ม:

แพลตฟอร์ม arm64 x86-64
Linux ✓* ✓*
Mac - ✓*
Windows - ✓*

*แพลตฟอร์มที่มีเครื่องหมายดอกจันต้องการการทดสอบ

ข้อเสนอแนะจากชุมชนเกี่ยวกับเอกสารและไวยากรณ์

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

มันน่าทึ่งมากที่พวกเขาถูกฝังลึกลงไปหลายครั้ง เหมือนกับว่าพวกเขาต้องการให้ผู้ใช้ที่มีศักยภาพยอมแพ้ก่อนที่จะคิดออกว่ามันเป็นสิ่งที่มีประโยชน์หรือไม่

ภาษานี้ดูเหมือนจะใช้ไวยากรณ์ที่ได้แรงบันดาลใจจาก Go พร้อมกับการพิมพ์แบบเข้มงวด ซึ่งได้รับข้อเสนอแนะเชิงบวกจากสมาชิกในชุมชนบางคน อย่างไรก็ตาม ยังคงมีคำถามเกี่ยวกับการตัดสินใจออกแบบพื้นฐาน เช่น การรวบรวมขยะ รายละเอียดเฉพาะของระบบประเภท และความสามารถของ foreign function interface

ขนาดไฟล์ปฏิบัติการ Hello World แยกตามแพลตฟอร์ม:

แพลตฟอร์ม arm64 x86-64
Linux 646 ไบต์ 582 ไบต์
Mac 33 KiB 8.2 KiB
Windows 1.7 KiB 1.7 KiB

บทสรุป

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

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

อ้างอิง: The Q Programming Language