Linus Torvalds สามารถพิจารณาแนะนำ C ++ ให้กับ Linux Kernel ได้หรือไม่

ลินุสเทอร์วัลด์

Linus Benedict Torvalds เป็นวิศวกรซอฟต์แวร์ เป็นที่รู้จักจากการริเริ่มและดูแลการพัฒนาเคอร์เนลลินุกซ์

ไม่กี่สัปดาห์ที่ผ่านมาเราแบ่งปันข่าวสารเกี่ยวกับข้อเสนอที่นี่ในบล็อก ซึ่งได้รับการฟื้นฟูหลังจากหลายปีที่เกี่ยวข้องกับความมีชีวิต การนำโค้ด C++ มาใช้ในเคอร์เนล Linux ข้อเสนอที่เปิดตัวในปี 2018 เป็นเรื่องตลก

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

ลินุกซ์ ซี++
บทความที่เกี่ยวข้อง:
C++ บน Linux หัวข้อนี้ฟื้นขึ้นมาอีกครั้งหลังจากผ่านไป 6 ปี

ด้วยการแนะนำของ พักผ่อนและลินุกซ์, นักพัฒนาหลายคนและส่วนหนึ่งของชุมชนมองเห็นเส้นทางที่ยอดเยี่ยม ล้ำหน้าใน Linux แถมยังมีอีกด้วย มี "แนวคิด" มากมายในการใช้ภาษาการเขียนโปรแกรมอื่นๆข้อเสนอในการใช้ C++ ทำให้เกิดการอภิปรายในหมู่นักพัฒนาเคอร์เนลจำนวนมากและแม้แต่ Linus Torvalds อีกครั้งที่อธิบายด้วยวิธีที่ไม่โต้ตอบและเข้าใจง่ายที่สุดเท่าที่จะเป็นไปได้ เหตุใด Linux จึงไม่เตรียมพร้อมสำหรับ C++ (การเสียดสี)

เราต้องจำไว้ว่า Rust ไม่ได้รับการยอมรับใน Linux จากช่วงเวลาหนึ่งไปยังอีกช่วงเวลาหนึ่งเนื่องจากโครงการ Rust บน Linux (Rust สำหรับ Linux) มีชุดการแก้ไขโดย Linus Torvalds เองก่อนที่จะได้รับการยอมรับในสาขาหลักของ Kernel เพื่อรวมไว้ด้วยและเป็นมูลค่าการกล่าวขวัญว่าบิดาของ Linux นั้นไม่มีอะไรที่นุ่มนวล เมื่อทำการแก้ไขและแสดงความคิดเห็นเกี่ยวกับการเปลี่ยนแปลงที่เสนอ

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

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

เหตุผลที่กล่าวถึง กรณีของ C ++ เป็นภาษา Linux ที่สามเช่น “สมมุติว่า” อาจเป็นเพราะ Linus Torvalds บิดาแห่ง Linux ไม่เห็นและจะไม่มอง C++ ในแง่ดีเนื่องจากมีมากกว่าหนึ่งครั้งในทุกโอกาสที่เขากล่าวว่า C++ "เป็นภาษาที่แย่มาก"

โดยการกล่าวถึงช่วงเวลาหนึ่งที่มีการพิจารณาการใช้ C++ บน Linux และ Linus Torvalds ไม่เพียงแต่แสดงความเห็นที่ไม่เห็นด้วยเท่านั้นแต่เป็น "ความเกลียดชังบางอย่าง" ต่อ C ++ ซึ่งถูกซ้อนทับเพื่อกล่าวถึงว่าทำไม "มันไม่ใช่ตัวเลือกสำหรับ Linux" หนึ่งในล่าสุดคือระหว่างการทบทวน ของการดำเนินการของ Rust เนื่องจาก ระหว่างการสนทนาในโพสต์ของ Googleมีการกล่าวถึงการรวม C++ ไว้เป็นข้อเสนอแนะ:

"วิธีแก้ปัญหานี้ง่ายมาก เพียงใช้ C++ แทน Rust"

เพื่อที่ Linus Torvalds อดไม่ได้ที่จะหัวเราะ และคำตอบของเขาคือ:

"ฮ่าๆ". «C++ ไม่สามารถแก้ปัญหาใดๆ ของ C ได้ มีแต่ทำให้สิ่งต่างๆ แย่ลง มันเป็นภาษาขยะจริงๆ

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

ไลนัส Torvalds ถือว่า C++ เป็น "ขยะ" มาโดยตลอดและคิดว่ามัน "ไร้ประโยชน์" สำหรับ “C++ ไม่สามารถแก้ปัญหาภาษา C ได้เลย มันมีแต่จะทำให้สิ่งต่างๆ แย่ลงเท่านั้น” ทอร์วัลด์ เชื่อว่าผู้ที่ไม่ชอบภาษา C สามารถมองหาภาษาที่สามารถเพิ่มมูลค่าได้อย่างแท้จริง ตัวอย่างเช่น ภาษาที่ปลอดภัยต่อหน่วยความจำและสามารถหลีกเลี่ยงอันตรายที่ซ่อนอยู่ที่เกิดจาก C (เช่น Rust)

เมื่อเทียบกับ C++ Linus ได้กล่าวถึงว่าทำไม C จึงเป็นตัวเลือกมาตรฐานของเขา:

“เมื่อผู้คนพูดถึงอันตรายที่เกิดจาก C พวกเขายังพูดถึงเหตุผลส่วนหนึ่งว่าทำไม C ถึงทรงพลังมาก: 'มันช่วยให้คุณใช้สิ่งระดับต่ำทั้งหมดนี้ได้อย่างมีประสิทธิภาพ'” Linus กล่าว นอกจากนี้ แม้ว่า GC จะดีในการลดความซับซ้อนของการเขียนโปรแกรมในกรณีส่วนใหญ่ แต่โดยทั่วไปแล้วไม่ใช่สิ่งที่สามารถทำได้ในการเขียนโปรแกรมระบบระดับต่ำ

จริงๆแล้วในรายชื่อผู้รับจดหมายมีการกล่าวถึงเช่นนั้น ในบางจุดมีการพยายามใช้ C++ บน Linux ในปี 1992 (ไม่มากก็น้อยหนึ่งปีหลังจากการกำเนิดของ Linux) แต่นี่เป็นเพียง "ความพยายาม" นับตั้งแต่ Torvalds พูดถึงความพยายามครั้งนี้:

มันแย่มาก. เชื่อฉันเถอะว่าการเขียนโค้ดเคอร์เนลใน C ++ เป็นความคิดที่โง่เขลา

ความจริงก็คือคอมไพเลอร์ C++ ไม่น่าเชื่อถือ สถานการณ์เลวร้ายยิ่งขึ้นในปี 1992 แต่ข้อเท็จจริงพื้นฐานบางประการไม่มีการเปลี่ยนแปลง:

– การจัดการข้อยกเว้นทั้งหมดใน C++ นั้นใช้งานไม่ได้โดยพื้นฐาน เมล็ดแตก "โดยเฉพาะ"
– คอมไพเลอร์หรือภาษาใด ๆ ที่ชอบซ่อนสิ่งต่าง ๆ เช่นการจัดสรรหน่วยความจำไว้ด้านหลังนั้นไม่ใช่ตัวเลือกที่ดีสำหรับเคอร์เนล
– คุณสามารถเขียนโค้ดเชิงวัตถุ (มีประโยชน์สำหรับระบบไฟล์ ฯลฯ) ในภาษา C “โดยไม่ต้องมีขยะที่เป็น C++”

จากความคิดเห็นเหล่านี้และความคิดเห็นอื่นๆ อีกมากมาย เราสามารถเข้าใจได้เล็กน้อยว่าทำไม Linus Torvalds จึงถือว่า C++ เป็นภาษาที่น่ากลัวนอกเหนือจากการวิพากษ์วิจารณ์ภาษาที่ใช้โดย «โปรแกรมเมอร์คุณภาพต่ำ จนถึงจุดที่ง่ายกว่ามากในการสร้างขยะที่สมบูรณ์และไร้ประโยชน์.» และมันก็เป็นเช่นนั้น ดูเหมือนว่า C++ จะมีรสขมในปากของ Torvaldsเนื่องจากในการวิพากษ์วิจารณ์ของคุณดูเหมือนว่าฉันกำลังพยายามลองใช้ C ++ อยู่ ฉันพูดถึงในอีเมลว่า:

“C++ นำไปสู่ตัวเลือกการออกแบบที่แย่มาก คุณมักจะเริ่มใช้ฟีเจอร์ไลบรารีภาษาที่ "ดี" เช่น STL และ Boost และขยะที่สมบูรณ์และสมบูรณ์อื่น ๆ ซึ่งอาจ "ช่วย" คุณเขียนโปรแกรม แต่ทำให้เกิด:

ความเจ็บปวดอย่างไม่มีที่สิ้นสุดเมื่อมันไม่ทำงาน (และใครก็ตามที่บอกฉันว่า STL และโดยเฉพาะ Boost นั้นเสถียรและพกพาได้นั้นเต็มไปด้วยเรื่องไร้สาระมันไม่ตลกเลยด้วยซ้ำ)
"โมเดลการเขียนโปรแกรมเชิงนามธรรมที่ไม่มีประสิทธิภาพ ซึ่งสองปีต่อมาคุณสังเกตเห็นว่านามธรรมบางอย่างไม่ได้มีประสิทธิภาพมากนัก แต่ตอนนี้โค้ดทั้งหมดของคุณขึ้นอยู่กับโมเดลออบเจ็กต์ที่สวยงามทั้งหมดที่อยู่รอบๆ และคุณจะไม่สามารถแก้ไขได้โดยไม่ต้องเขียนแอปพลิเคชันของคุณใหม่"

ดังนั้น เมื่อกลับมาที่ชื่อสิ่งพิมพ์และเมื่อเข้าใจส่วนปลายของภูเขาน้ำแข็งแห่งความเกลียดชังที่ Linus Torvalds มีต่อ C++ แล้ว ก็ไม่จำเป็นต้องตรวจสอบอะไรมากนักเนื่องจาก สำหรับ Torvalds Linux ไม่ต้องการภาษาอื่นเพราะ C ก็เพียงพอแล้ว และตลอดเวลานี้ C เคยเป็นและจะเป็นภาษาที่เหมาะกับงานของเขา และ Linus จะยังคงโจมตีภาษาโปรแกรมที่เขาไม่ชอบต่อไป โดยเฉพาะ C++

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

Y ใน "สมมุติ" เนื่องจาก Torvalds พิจารณา C++ บน linuxนี่อาจเป็นมากกว่าผลประโยชน์ การรวมภาษาการเขียนโปรแกรมที่สามขึ้นไป ก็จะกลายเป็นปัญหาเนื่องจากตัวอย่างเช่นกับการดำเนินการของ ปัจจุบันสนิมมีปัญหาบางอย่างเริ่มปรากฏให้เห็นเช่นที่เรากล่าวถึงแล้วในสิ่งพิมพ์เกี่ยวกับ สถานะปัจจุบันของ Rust บน Linux

ไดรเวอร์สนิมบน Linux
บทความที่เกี่ยวข้อง:
Rust บน Linux: ความก้าวหน้า ความท้าทาย และสถานะปัจจุบัน

ท่ามกลางความท้าทายในปัจจุบันที่เรากล่าวถึงในบทความว่าหนึ่งในนั้นคือ «รับสมัครผู้ตรวจสอบโค้ดเพิ่มเติม ที่กำลังพัฒนา" นอกจากนี้ ความคืบหน้าของคอมไพเลอร์ Rust ที่ใช้ GCC นั้นช้าลง ด้วยมีโอกาสน้อยมากที่พวกเขาจะเขียนเคอร์เนลส่วนใหญ่ใน Rust ใหม่ ในระยะสั้นและมีโอกาสน้อยมากที่จะสามารถทำได้โดยไม่ต้องมีข้อผิดพลาดทุกประเภท และโดยเฉพาะอย่างยิ่งปัญหาความเข้ากันได้

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

ไม่ต้องสงสัยเลยว่าแนวทางการนำ C++ มาเป็นภาษาโปรแกรมที่สามนั้นยังห่างไกลจากการพิจารณา และดังที่เราได้กล่าวไปแล้ว หนึ่งในอุปสรรคหลักของเรื่องนี้ก็คือ Linus Torvalds นั่นเอง


แสดงความคิดเห็นของคุณ

อีเมล์ของคุณจะไม่ถูกเผยแพร่ ช่องที่ต้องการถูกทำเครื่องหมายด้วย *

*

*

  1. รับผิดชอบข้อมูล: AB Internet Networks 2008 SL
  2. วัตถุประสงค์ของข้อมูล: ควบคุมสแปมการจัดการความคิดเห็น
  3. ถูกต้องตามกฎหมาย: ความยินยอมของคุณ
  4. การสื่อสารข้อมูล: ข้อมูลจะไม่ถูกสื่อสารไปยังบุคคลที่สามยกเว้นตามข้อผูกพันทางกฎหมาย
  5. การจัดเก็บข้อมูล: ฐานข้อมูลที่โฮสต์โดย Occentus Networks (EU)
  6. สิทธิ์: คุณสามารถ จำกัด กู้คืนและลบข้อมูลของคุณได้ตลอดเวลา