ภาษาโปรแกรม Mojo เผชิญความท้าทายในการรับเข้าใช้งาน แม้จะอ้างถึงประสิทธิภาพที่โดดเด่น

ทีมชุมชน BigGo
ภาษาโปรแกรม Mojo เผชิญความท้าทายในการรับเข้าใช้งาน แม้จะอ้างถึงประสิทธิภาพที่โดดเด่น

Chris Lattner ผู้สร้าง LLVM และ Swift กำลังสร้างความเคลื่อนไหวด้วย Mojo ภาษาโปรแกรมใหม่ที่ออกแบบมาเพื่อเชื่อมช่องว่างระหว่างความง่ายในการใช้งานของ Python และประสิทธิภาพที่จำเป็นสำหรับการคำนวณ GPU สมัยใหม่ อย่างไรก็ตาม แม้จะมีความสามารถทางเทคนิคที่น่าสนใจและการสนับสนุนจากผู้เชี่ยวชาญในอุตสาหกรรม Mojo กำลังเผชิญกับความต้านทานอย่างมากจากชุมชนนักพัฒนา

ภาพรวมสถานะของภาษา Mojo

ด้าน สถานะปัจจุบัน
ใบอนุญาต เป็นกรรมสิทธิ์ (สัญญาว่าจะเป็น open-source ภายในปี 2026)
ความเข้ากันได้กับ Python ไวยากรณ์คล้าย Python แต่ไม่ใช่ superset เต็มรูปแบบ
การรองรับ Class เป็นเป้าหมายระยะกลาง (ยังไม่ได้ implement)
การรองรับ GPU รองรับ CUDA/NVIDIA อุปกรณ์เร่งความเร็วอื่นๆ ต้องใช้ใบอนุญาตเชิงพาณิชย์
การยอมรับ จำกัด แม้ว่าจะพร้อมใช้งานทั่วไปแล้ว

ข้อกังวลเรื่องลิขสิทธิ์สร้างอุปสรรคสำคัญ

อุปสรรคที่สำคัญที่สุดที่ Mojo เผชิญอยู่คือรูปแบบการให้สิทธิ์การใช้งานแบบกรรมสิทธิ์ ซึ่งแตกต่างจากพื้นฐานโอเพนซอร์สที่สร้างความสำเร็จให้กับผลงานก่อนหน้าของ Lattner ด้วย LLVM และ Swift โดย Mojo ปัจจุบันดำเนินการภายใต้ลิขสิทธิ์เชิงพาณิชย์ที่มีข้อจำกัด ลิขสิทธิ์นี้แยกความแตกต่างระหว่างฮาร์ดแวร์ CPU และ NVIDIA ในด้านหนึ่ง และตัวเร่งความเร็วอื่นๆ เช่น TPU หรือ AMD GPU ในอีกด้านหนึ่ง โดยต้องมีข้อตกลงเชิงพาณิชย์แยกต่างหากสำหรับหมวดหมู่หลัง

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

คำสัญญาเรื่อง Python Superset มีการพัฒนา

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

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

การแลกเปลี่ยนระหว่างประสิทธิภาพและระบบนิเวศ

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

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

คุณสมบัติทางเทคนิคหลัก

  • Syntactic sugar บน MLIR (Multi-Level Intermediate Representation)
  • มีเป้าหมายในการคอมไพล์เพื่อประสิทธิภาพแบบ native พร้อมทั้งรักษาไวยากรณ์แบب Python
  • ออกแบบมาสำหรับการเขียนโปรแกรม GPU kernel และงานด้าน ML
  • การจัดการข้อผิดพลาดถูกนำมาใช้เป็น syntax sugar สำหรับ Result types
  • การคอมไพล์ที่เร็วกว่า Swift (แก้ไขปัญหาการออกแบบภาษาในอดีต)

การแข่งขันจากโซลูชันที่มีอยู่

การอภิปรายเน้นให้เห็นว่า Mojo เผชิญการแข่งขันจากหลายด้าน Julia แก้ไขข้อกังวลด้านประสิทธิภาพเดียวกันหลายอย่างแล้ว ในขณะที่รักษาระบบนิเวศที่เป็นผู้ใหญ่กว่า ในขณะเดียวกัน โซลูชันที่ใช้ Python เช่น Triton , JAX และ PyTorch ยังคงพัฒนาต่อไป โดยบริษัทใหญ่ๆ เช่น OpenAI และ Meta ใช้ Triton สำหรับเคอร์เนล GPU ที่สำคัญ

Triton เป็น backend สำหรับ PyTorch เมื่อเร็วๆ นี้มันคือ backend ดังนั้นมันคือเปอร์เซ็นต์หลักสองหลักอย่างแน่นอน หากไม่เกิน 50%

ความกังวลของชุมชน

  • การออกใบอนุญาต: เงื่อนไขการใช้งานเชิงพาณิชย์ที่เข้มงวดสำหรับตัวเร่งที่ไม่ใช่ NVIDIA
  • ระบบนิเวศ: มีข้อจำกัดเมื่อเทียบกับ stack ของ Python ที่เป็นผู้ใหญ่ในด้าน ML/data science
  • ความสมบูรณ์: ขาดคุณสมบัติพื้นฐานของภาษาอย่าง classes
  • ความไว้วางใจ: ความสงสัยเกี่ยวกับความมุ่งมั่นต่อ open-source ในอนาคต
  • การแข่งขัน: โซลูชันที่มีอยู่แล้ว ( Triton , JAX , Julia ) ตอบโจทย์ความต้องการที่คล้ายกันได้อยู่แล้ว

การตรวจสอบความเป็นจริงของตลาด

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

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

อ้างอิง: Why ML Needs a New Programming Language with Chris Lattner