Чи міг би Лінус Торвальдс розглянути можливість впровадження C++ у ядро ​​Linux?

лінусторвальдс

Лінус Бенедикт Торвальдс — інженер-програміст, відомий тим, що ініціював і підтримував розробку ядра Linux.

кілька тижнів томуs ми ділимося тут, у блозі, новинами про пропозицію який був відроджений після багатьох років щодо життєздатності прийняття коду C++ в ядрі Linux, пропозиція, яка була запущена в 2018 році як жарт.

La пропозиція була знову запущена у списках розсилки Kernel, але серйозно для Ганс Петер Анвін, Ключовий розробник ядра Intel підняв питання про доцільність включення C++ як третьої мови програмування в Linux.

Linux C++
Пов'язана стаття:
C++ на Linux, тема відроджується через 6 років

З введенням Rust на Linux, багато розробників і частина спільноти побачили чудовий шлях вперед у Linux, плюс це також З’явилися різні «ідеї» для реалізації інших мов програмування, пропозиція впровадження C++ знову відкриває дискусію серед багатьох розробників ядра, і навіть Лінус Торвальдс знову пояснює найбільш пасивним і зрозумілим способом, чому Linux не готовий до C++ (сарказм).

Ми повинні пам’ятати, що Rust не був прийнятий у Linux від одного моменту до іншого, оскільки проект Rust для Linux (Rust для Linux) мав серію переглядів самим Лінусом Торвальдсом, перш ніж його було прийнято до основної гілки ядра для його включення, і варто згадати, що батько Linux не був м’яким. при внесенні доопрацювань та коментуванні запропонованих змін.

Перш ніж розробити статтю, я повинен зазначити, що весь вміст статті є особистою думкою, сформованою шляхом інтерпретації інформації та новин, які я прочитав в Інтернеті, тому він може відрізнятися від тлумачення, яке ви можете як читач маю, маю, і що я із задоволенням приділю час, щоб прочитати, якщо ви хочете поділитися цим тут, у коментарях.

Зараз у випадку пропозиції C++ як третьої мови програмування, у стверджуваному випадку, і я кажу "звичайно", Реалізація має пройти аналогічну серію перевірок, якщо не навіть більш суворим, ніж це було для Rust. І факт згадки про це тому, що C++ і Linus мають свою історію, невелику, але вже багаторічну.

Причина згадування що випадок для C++ як третьої мови Linux як a «Нібито», це тому, що батько Linux, Лінус Торвальдс, не ставився і не буде сприймати C++ прихильно., оскільки неодноразово при кожній нагоді він згадував, що C++ «жахлива мова».

За згадкоюr деякі моменти, в яких розглядалося використання C++ на Linux і Лінус Торвальдс висловив не лише свою незгоду, але «певна ненависть» до C++, яка накладається, щоб згадати, чому «це просто не варіант для Linux», одна з останніх була під час оглядів реалізації Rust, оскільки під час обговорення в публікації Google, включення C++ згадувалося як пропозиція:

«Рішення тут просте: просто використовуйте C++ замість Rust»

До якого Лінус Торвальдс не міг стримати сміху, і його відповідь була:

"ЛОЛ". «C++ не вирішує жодних проблем C, а лише погіршує ситуацію, це справді сміттєва мова.

Для людей, які не люблять C, вибирайте мову, яка дійсно пропонує щось варте уваги. Такі мови, як безпечні для пам’яті та «це» мови, можуть уникнути деяких пасток C або мови, які мають внутрішню підтримку «збірки сміття» GC і полегшують керування пам’яттю. «C++ вирішує всі неправильні проблеми, і будь-хто, хто каже «перепишіть ядро ​​на C++», надто необізнаний, щоб навіть знати це».

Лінус Торвальдс завжди вважав C++ «марним» і «марним» Що ж, «C++ взагалі не може вирішити проблему мови C, це лише погіршить ситуацію». Торвальдс вірю, що ті, кому не подобається мова C, можуть шукати мову, яка може дійсно додати цінності. Наприклад, мови, які безпечні для пам’яті та можуть уникнути прихованих небезпек, спричинених C (наприклад, Rust).

У порівнянні з C++, Лінус згадав, чому C є його стандартним вибором:

«Коли люди говорять про небезпеку, спричинену C, вони також говорять про часткову причину, чому C настільки потужний: «Він дозволяє вам ефективно впроваджувати всі ці речі низького рівня», — зазначив Лінус. Крім того, хоча GC хороший для спрощення програмування в більшості випадків, зазвичай це не те, що можна зробити в системному програмуванні низького рівня.

Справді, у списках розсилки це згадується У якийсь момент була зроблена спроба використовувати C++ на Linux, у 1992 році (приблизно через рік після народження Linux), але це залишилося лише «спробою», починаючи з Торвальда згадати про цю спробу:

Це жахливо. Повірте мені: писати код ядра на C++ - це ДО БЯСА ДУРНА ІДЕЯ.

Справа в тому, що компілятори C++ ненадійні. У 1992 році вони були ще гірші, але деякі фундаментальні факти не змінилися:

– вся обробка винятків у C++ принципово зламана. Він "особливо" зламаний для ядер.
– будь-який компілятор або мова, які люблять приховувати за своєю спиною такі речі, як розподіл пам’яті, просто не є гарним вибором для ядра.
– ви можете писати об’єктно-орієнтований код (корисний для файлових систем тощо) на C, «без сміття, яке є C++».

Враховуючи ці та багато інших коментарів, Ми можемо трохи зрозуміти, чому Лінус Торвальдс вважає C++ жахливою мовою., окрім критики мови за використання «програмістів низької якості, до того моменту, коли з ним набагато, набагато легше генерувати повне та повне сміття.» І це так Схоже, C++ був у якийсь момент гірким смаком у роті Торвальда., оскільки у вашій критиці здається, що я намагаюся спробувати C++, добре Я згадую про це в електронному листі:

«C++ призводить до дійсно поганого вибору дизайну. Ви незмінно починаєте використовувати «гарні» функції мовної бібліотеки, такі як STL і Boost, а також інше цілковите й повне сміття, яке може «допомогти» вам у програмуванні, але спричинить:

нескінченна кількість болю, коли вони не працюють (і будь-хто, хто каже мені, що STL і особливо Boost є стабільними та портативними, повний нісенітниці, що навіть не смішно)
«неефективні абстрактні моделі програмування, де через два роки ви помічаєте, що деякі абстракції були не дуже ефективними, але тепер увесь ваш код залежить від усіх гарних об’єктних моделей навколо нього, і ви не можете це виправити, не переписавши програму».

Отже, повертаючись до назви публікації та вже трохи зрозумівши верхівку айсберга ненависті Лінуса Торвальдса до C++, немає потреби багато досліджувати, оскільки Для Торвальдса Linux не потребує іншої мови, тому що C достатньо і протягом цього часу C є, був і буде мовою, яка підходить для його роботи, а Лінус продовжуватиме атакувати мови програмування, які йому не подобаються, особливо C++.

І це одна з багатьох причин, чому C++ просто не розглядається для Linux, полягає в тому, що він допускає винятки, тоді як Rust не любить C, оскільки у програмуванні ядра це не можна дозволити Неперехоплений виняток може вивести з ладу операційну систему, і вам навіть не варто думати про те, що ядро ​​коли-небудь вийде з ладу.

Y у «передбачуваному», враховуючи, що Торвальдс почав розглядати C++ на Linux, це може бути більше, ніж користь включення третьої або більше мов програмування, стане проблемою, оскільки наприклад із реалізацією Іржа наразі починає виявляти деякі проблеми, таких як ті, про які ми вже згадували в публікації поточний стан Rust на Linux.

Драйвери Rust на Linux
Пов'язана стаття:
Rust на Linux: досягнення, виклики та поточний стан

Серед актуальних викликів ми згадуємо у статті, що один із них «найміть більше рецензентів для коду що розробляється» на додаток до Розвиток компілятора Rust на основі GCC сповільнився, тежДуже мало шансів, що вони перепишуть великі частини ядра в Rust короткий термін і навіть дуже низькі шанси, що вони зможуть зробити це без введення всіляких помилок і особливо проблем із сумісністю.

Якщо ці проблеми, які відображаються в Rust ми додаємо їх на C++ або будь-якій іншій мові які можна додати в Linux, Це сильно вплине на розвиток ядра і з цим на початку ми не отримуватимемо версію кожні два місяці, а скоріше це буде розробка між довшими версіями, буде потрібно більше розробників, більше рецензентів, і все це означає більше зусиль.

Без сумніву, підхід до введення C++ як третьої мови програмування далекий від розгляду, і, як ми вже згадували, однією з головних перешкод для цього є сам Лінус Торвальдс.


Залиште свій коментар

Ваша електронна адреса не буде опублікований. Обов'язкові для заповнення поля позначені *

*

*

  1. Відповідальний за дані: AB Internet Networks 2008 SL
  2. Призначення даних: Контроль спаму, управління коментарями.
  3. Легітимація: Ваша згода
  4. Передача даних: Дані не передаватимуться третім особам, за винятком юридичних зобов’язань.
  5. Зберігання даних: База даних, розміщена в мережі Occentus Networks (ЄС)
  6. Права: Ви можете будь-коли обмежити, відновити та видалити свою інформацію.