Wedson Almeida Filho หนึ่งในผู้ดูแลโครงการย่อย Rust for Linux ประกาศถอนตัวจากโครงการหลังดูแลโครงการนี้มา 4 ปีเต็ม ระบุเหตุผลว่าเบื่อที่จะต้องมาตอบโต้เรื่องที่ไม่ใช่เรื่องเทคนิค
Filho แนบลิงก์ถึงสาเหตุที่เขาลาออกเป็นวิดีโองานสัมมนา Linux Storage Filesystem ที่ Kent Overstreet บรรยายถึงข้อเสนอของการรองรับ Rust ใน API ของ filesystem แต่ช่วงถามตอบก็มีการโต้แย้งกันว่า C/C++ ยังคงเป็นภาษาหลักแล้วทำไม Overstreet ยังคงพยายามยัดเยียด Rust เข้ามา (LWN เขียนสรุปเหตุการณ์ไว้) โดย Filho ยืนยันว่าไม่ได้ยัดเยียดให้ใครใช้ Rust
ภาษา Rust ชูประเด็นหน่วยความจำปลอดภัยมา ทำให้หลายคนมองว่าเหมาะกับการใช้งานในเคอร์เนล แต่ก็มีเสียงต้านจากนักพัฒนาจำนวนมาก ตัว Filho ก็เคยโต้เถียงกับ Linus ค่อนข้างแรง
ที่มา - linux-kernel
Comments
นี้เขาโดน C++ programmer ทัวร์ลงบางไหม
พูดแบบรู้จักแค่ C++ สมัยเมื่อ 20 ปีที่แล้ว
ผมว่าใน core linux มีแต่ C ไม่มี C++ ด้วยนะ
ไงโยงไป C++ ได้
ชาว kernel เขาเป็น C Developer กัน พอเจอ syntax ที่ไม่เข้าพวก อย่างการใช้ method การที่เค้าจะปฎิเสธมันไม่ใช่เรื่องแปลก การที่ยกเหตุผลว่า C++ method มันห่วย (ทั้ง ๆ ที่จริง ๆ แล้ว inheritance มันมีผลเฉพาะกับ virtual method มั้ย?) แต่ Rust เราเหนือกว่าเพราะเป็นแค่ syntax sugar นี่มันก็ฟังดูแปลก ๆ เหมือนกัน
เผื่อบางคนไม่ทราบ คุณจะเขียน method ให้ struct แล้วไม่ระบุเป็น virtual ก็ได้นะ แล้วมันก็จะเป็นแค่ syntax sugar เหมือนกัน (น่าจะเหมือน rust เลย ณ.จุดนี้)
ผมหมายถึงพัฒนาการของ C++ น่ะครับ มันออกไปแนว "เรา provide ไว้ให้แต่คุณจะใช้หรือไม่ก็เรื่องของคุณ"
คือผม"รู้สึก"ว่าคนออกแบบ C++ พยายามออกแบบภาษาให้รับ ความต้องการที่หลายหลายของ dev
แต่คงความเข้ากันได้กับ C ไว้
เช่น
- ไม่อยากใช้ polymorphism ที่เป็น OOP ก็ไปใช้ polymorphism แบบ structured (overload) แทนก็ได้
- ไม่อยากใช้ try catch ก็ไปใช้ std::error_code
- อยากได้ memory safety ก็มี smart pointer ให้นะ หรือจะ raw pointer ไปเลยถ้าใจพอ
ซึ่งถ้าใครรู้จัก C++ นิดหน่อยจะคิดว่า
C++ ต้องเป็น OOP, ต้อง inherit, ต้อง memory unsafety ทั้งที่ภาษาได้ provide feature ที่ไม่ต้องเจอของแบบนี้ไว้
ในคอมมู C++ เราจะมีคำพูดประมาณว่า คุณรู้เท่าที่คุณใช้พอ อะไรที่คุณไม่ได้ใช้ก็จะไม่มีผลอะไร ในความเป็นจริงมันก็ใช่ครับว่ามันก็ต้องรู้ OOP กับ Template Metaprogramming บ้าง (exception handling บ้างด้วย) เพราะมันใช้ใน STL แต่ว่าอย่างอื่นจริง ๆ ก็ไม่ได้สำคัญขนาดนั้น
ทั้งนี้ปัจจุบันนี้เราไม่น่าจะมี "คนออกแบบ C++" แต่จะเป็นคณะทำงาน 21 (ยาวๆ คือ ISO/IEC JTC1 (Joint Technical Committee 1) / SC22 (Subcommittee 22) / WG21 (Working Group 21) แต่มักจะเรียกกันว่า WG21) และคณะทำงานย่อย ๆ กับคณะศึกษา (Study Group) ที่ทำงานกับฟีเจอร์ย่อยๆ ดูแลเฉพาะเรื่องที่ตัวเองถนัดและสนใจ คือการออกแบบ C++ มันเป็นการทำงานกันเป็นสังคมขนาดใหญ่ที่เปิดให้ใครเข้ามาทำก็ได้ ดังนั้นพอมันเปิดซะขนาดนี้ปัญหานึงที่เจอแน่นอนคือต่างคนต่างมีความเห็นและสิ่งที่คาดหวังจากตัวภาษา นั่นทำให้ตัวภาษามันใหญ่มากซะจนคนบ่นว่าภาษามันไม่มีไดเรคชัน (แต่ไดเรคชันเขาคือเปิดรับไอเดียให้กว้างที่สุดตราบใดที่ยังตั้งอยู่บนหลัก
ทั้งนี้ถ้าเคยอ่าน C++ guideline ของ google เนี่ยจะเห็นว่ามีข้อห้ามสารพัดเลยครับ เรียกได้ว่าแทบจะเขียน C บน C++ แค่นั้นเลยล่ะ (แต่เค้าก็อนุญาตบางฟีเจอร์ของ C++ นะ) เอาจริง ๆ ผมว่าบางที ภาษาอย่าง Rust เนี่ยมีพื้นฐานจากการเอา C++ Guideline ของบางที่เอามาคอมไพล์รวมกันสร้างเป็นภาษาใหม่แหละ
อีกข่าวนึงที่ทีมที่ผลักดัน Rust ปะทะกับทีม C ก็เหมือนจะเป็นหัวหน้าทีมพัฒนาของ System76 ที่ออกมาประกาศไม่ใยดีกับทีมพัฒนา Linux Kernel
..: เรื่อยไป
สงสัยฮาร์ดเซลล์มากไปเลยโดน Linux Kernel Dev หมั่นไส้ 555 ล้อเล่นนะครับ
ผมถือว่า Rust คือ Drama จาวาเร็วส์ สมัย 14-15 ปีทีแล้ว ver, international ก็แล้วกันครับ
เพราะงั้นคุณจะ Java จะ Python จะ Ruby ก็ ตามถนัดดีกว่าครับ
ก็เหมือนกัน จะ C หรือ Rust เอาตามที่ถนัดครับ bug น้อย ๆ เป็น target หลักครับผม
มันไม่ได้อยู่ที่ภาษา แต่มันอยู่ที่คนที่นั่งอยู่หน้าจอ แป่ว ล้อเลียนมาจากหนัง Fast จากวลีเด็ดที่ว่า
อะไรจะอยู่ในห้องเครื่องไม่สำคัญหรอก...
สิ่งเดียวที่สำคัญที่สุดคือ "ใครอยู่หลังพวงมาลัย"
Dominic Toretto - Fast and Furious 8 (2017)
เอาฮาเป็นหลัก ไม่มีสาระใดๆ เพราะไม่ใช่ทางผมทั้ง 2 ภาษา
อะไรอยู่ในห้องเครื่องไม่สำคัญ
ประเด็นสำคัญคือ "ใครยืนขายพวงมาลัย"
เดี๋ยวๆ
ถ้ามีความปลอดภัยมากกว่าใช้ซีเขียนควรจะเป็นเรื่องดีสิทำไมนักพัฒนาที่ใช้ซีเขียนถึงไม่พอใจกันหรือมันต้องเขียนใหม่หมดเอาโค้ดเก่ามาใช้ไม่ได้เหรอเลยทำให้ลำบากแถมเรื่องนี้ฝ่ายที่ดันรัสต์เริ่มจะเป็นฝ่ายถอยละ