ภาษาโปรแกรมมิ่ง Jaql: ผู้ท้าชิงรายใหม่ในการเขียนโปรแกรมระบบที่ปลอดภัยด้านหน่วยความจำ

BigGo Editorial Team
ภาษาโปรแกรมมิ่ง Jaql: ผู้ท้าชิงรายใหม่ในการเขียนโปรแกรมระบบที่ปลอดภัยด้านหน่วยความจำ

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

ความสับสนระหว่าง Jaql และ Jakt

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

สถานะปัจจุบันของการพัฒนา Jakt

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

ผมได้ดูวิดีโอของ Andreas ที่กำลังทำงานกับ Jakt เมื่อไม่กี่ปีที่แล้ว แต่ตอนนี้ดูเหมือนจะตายไปแล้วเมื่อดูจากประวัติการคอมมิต

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

Swift เป็นเส้นทางที่เลือกสำหรับ Ladybird

ส่วนสำคัญของการสนทนาเกี่ยวข้องกับการตัดสินใจของทีม Ladybird browser (โครงการที่แยกมาจากเบราว์เซอร์ของ SerenityOS) ที่จะใช้ Swift แทนที่จะเป็น Jakt หรือตัวเลือกอื่นๆ การตัดสินใจนี้ดูเหมือนจะเกิดขึ้นผ่านกระบวนการที่ผู้แสดงความคิดเห็นรายหนึ่งอธิบายว่าเป็นกระบวนการที่ปฏิบัติได้จริง ซึ่งสมาชิกในทีมได้ทดลองใช้ภาษาต่างๆ ที่เป็นตัวเลือกและในที่สุดพบว่า Swift เป็นภาษาที่สนุกที่สุดในการทำงานด้วย รูปแบบการเขียนโปรแกรมเชิงวัตถุของ Swift ตรงกับความต้องการด้านสถาปัตยกรรมของเว็บเบราว์เซอร์

อย่างไรก็ตาม สมาชิกบางคนในชุมชนแสดงความประหลาดใจกับตัวเลือกนี้ โดยเฉพาะอย่างยิ่งความกังวลเกี่ยวกับความท้าทายในการทำงานร่วมกันระหว่าง Swift และ C++ ผู้แสดงความคิดเห็นรายหนึ่งชี้ให้เห็นว่า Swift ต้องใช้ fork ของ LLVM จาก Apple ซึ่งอาจจำกัดความเข้ากันได้กับสภาพแวดล้อม GNU หรือ Clang กระแสหลัก

ความปลอดภัยด้านหน่วยความจำและปรัชญาการออกแบบภาษา

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

บทความอธิบายรายละเอียดเกี่ยวกับแนวทางของ Jaql ในด้านความปลอดภัยของหน่วยความจำ รวมถึงการป้องกันการล้นของจำนวนเต็ม ลูปไม่สิ้นสุด การล้นของสแตก การแข่งขันของข้อมูล และการรั่วไหลของหน่วยความจำในโหมด Safe-Jaql การมุ่งเน้นที่ความปลอดภัยในขณะที่ยังคงรักษาความสามารถในการเขียนโปรแกรมระบบสะท้อนถึงการเปลี่ยนแปลงอย่างต่อเนื่องของอุตสาหกรรมไปสู่ทางเลือกที่ปลอดภัยกว่าภาษาดั้งเดิมเช่น C และ C++

คุณสมบัติหลักของ Jaql

  • คุณสมบัติด้านความปลอดภัยของหน่วยความจำ:

    • การตรวจสอบในขณะคอมไพล์
    • การยืม (การติดตาม)
    • การติดตามช่วงอายุการใช้งาน
    • ไม่มีการอ้างอิงตัวชี้ที่เป็นค่าว่าง
    • การป้องกันการล้นของจำนวนเต็ม
    • ไม่มีลูปไม่สิ้นสุดใน Safe-Jaql
    • การป้องกันสแตกล้น
    • ไม่มีการแข่งขันของข้อมูล
    • ไม่มีการรั่วไหลของหน่วยความจำ (เว้นแต่จะตั้งใจให้รั่วไหล)
  • การออกแบบภาษา:

    • การแยกความแตกต่างระหว่างประเภท "class" ที่เปลี่ยนแปลงได้และประเภท "data" ที่เปลี่ยนแปลงไม่ได้
    • สนับสนุนให้มีฟังก์ชันขนาดเล็ก (สูงสุด 2-3 บรรทัดต่อเมธอด)
    • ไม่มีผลข้างเคียง
    • รองรับเจเนริกและฟังก์ชันลำดับสูง
    • ระบบคุณลักษณะประเภท
    • การโอเวอร์โหลดตัวดำเนินการผ่านคุณลักษณะ
  • การนำไปใช้:

    • เริ่มต้นด้วยการพัฒนาใน Java เพื่อความสะดวกในการเข้าถึง
    • มีเป้าหมายเป็นคอมไพเลอร์ที่สามารถคอมไพล์ตัวเองได้
    • สามารถทำงานร่วมกับ C/C++ ได้

คุณสมบัติภาษาและตัวเลือกการออกแบบ

การออกแบบของ Jaql รวมถึงคุณสมบัติที่น่าสนใจเช่นความแตกต่างระหว่างประเภทคลาสที่เปลี่ยนแปลงได้และประเภทข้อมูลที่เปลี่ยนแปลงไม่ได้ คล้ายกับการแบ่งแยกระหว่าง class/struct ของ Swift ภาษานี้สนับสนุนฟังก์ชันขนาดเล็กที่มีผลข้างเคียงน้อยและให้ไลบรารีฟังก์ชันมาตรฐานสำหรับการจัดการข้อมูล

บทความยังเน้นถึงการสนับสนุนของ Jaql สำหรับ generics, higher-order functions และ type traits ซึ่งช่วยให้มีรูปแบบการเขียนโปรแกรมที่ยืดหยุ่นและปลอดภัยด้านประเภทข้อมูล คุณสมบัติเหล่านี้ทำให้ Jaql เป็นภาษาสมัยใหม่ที่มุ่งสร้างความสมดุลระหว่างความปลอดภัย การแสดงออก และประสิทธิภาพ

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

อ้างอิง: ภาษาโปรแกรมมิ่ง Jaql