Mohol by Linus Torvalds zvážiť zavedenie C++ do linuxového jadra?

linustorvalds

Linus Benedict Torvalds je softvérový inžinier, známy tým, že inicioval a udržiaval vývoj linuxového jadra.

Pred pár týždnamis zdieľame tu na blogu novinky o návrhu ktorý bol po mnohých rokoch oživený vo vzťahu k životaschopnosti o prevzatí kódu C++ v jadre Linuxu, návrh, ktorý bol spustený v roku 2018 ako vtip.

La návrh bol znovu spustený na mailing listy jadra, ale vážnym spôsobom pre Hans Peter Anvin, Kľúčový vývojár a vývojár jadra Intel zvýšil možnosť zahrnutia C++ ako tretieho programovacieho jazyka v Linuxe.

Linux C++
Súvisiaci článok:
C++ na Linuxe, téma je znovu oživená po 6 rokoch

So zavedením Hrdza na Linuxe, veľa vývojárov a časť komunity videli skvelú cestu vpred v Linuxe, plus to tiež Objavili sa rôzne „nápady“ na implementáciu iných programovacích jazykov, návrh na implementáciu C++ opäť otvára diskusiu medzi mnohými vývojármi jadra a dokonca aj Linus Torvalds opäť tým najpasívnejším a najzrozumiteľnejším možným spôsobom vysvetľuje, prečo Linux nie je pripravený na C++ (sarkazmus).

Musíme si uvedomiť, že Rust nebol v Linuxe akceptovaný z jedného okamihu na druhý, keďže projekt Rust na Linuxe (Rust for Linux) mal sériu revízií samotným Linusom Torvaldsom predtým, ako bol prijatý do hlavnej vetvy jadra, aby mohol byť zahrnutý, a stojí za zmienku, že otcom Linuxu nebolo nič mäkké. pri vykonávaní revízií a pripomienkovaní navrhovaných zmien.

Pred vypracovaním článku musím spomenúť, že celý obsah článku je osobný názor generovaný interpretáciou informácií a správ, ktoré som sa dočítal na internete, takže sa môže líšiť od výkladu, ktorý ako čitateľ môžete have. have a že si rád nájdem čas na prečítanie, ak sa o to chcete podeliť tu v komentároch.

Teraz v prípade návrhu C++ ako tretieho programovacieho jazyka v údajnom prípade, a ja hovorím "samozrejme", Implementácia by mala prejsť podobnou sériou kontrol, ak nie ešte prísnejšie, ako to bolo v prípade Rusta. A skutočnosť, že sa to spomína, je preto, že C++ a Linus majú svoju históriu, malú, ale už veľa rokov starú.

Dôvod spomínania že prípad C++ ako tretieho jazyka Linux ako a „Údajne“ je to preto, že otec Linuxu Linus Torvalds nemal a nebude vnímať C++ priaznivo., pretože pri viac ako jednej príležitosti pri každej príležitosti spomenul, že C++ "je hrozný jazyk."

Spomenutímr niektoré momenty, v ktorých sa uvažovalo o použití C++ v systéme Linux a Linus Torvalds vyjadril nielen svoj nesúhlas, ale "určitá nenávisť" voči C++, ktorá je prekrytá spomenutím, prečo "to jednoducho nie je možnosť pre Linux", jeden z najnovších bol počas recenzií implementácie Rust, od r počas diskusie o príspevku Googlezahrnutie C++ bolo uvedené ako návrh:

"Riešenie je jednoduché: namiesto Rustu použite C++"

Do ktorého Linus Torvalds sa neubránil smiechu a jeho odpoveď bola:

"LOL". «C++ nerieši žiaden z problémov C a len veci zhoršuje, je to naozaj odpadkový jazyk.

Pre ľudí, ktorí nemajú radi C, choďte na jazyk, ktorý vám skutočne ponúka niečo, čo stojí za to. Jazyky, ako sú pamäťovo bezpečné a „ten“ jazyky, sa môžu vyhnúť niektorým nástrahám C alebo jazykov, ktoré majú internú podporu GC „zberu odpadu“ a zjednodušiť správu pamäte. "C++ rieši všetky nesprávne problémy a každý, kto hovorí 'prepíš jadro v C++', je príliš ignorant, aby to vôbec vedel."

Linus Torvalds vždy považoval C++ za „odpad“ a považoval ho za „zbytočný“ Pretože „C++ nedokáže vyriešiť problém jazyka C vôbec, všetko to len zhorší“. Torvalds verte, že tí, ktorí nemajú radi jazyk C, môžu hľadať jazyk, ktorý môže skutočne pridať hodnotu. Napríklad jazyky, ktoré sú bezpečné pre pamäť a môžu sa vyhnúť skrytým nebezpečenstvám spôsobeným jazykom C (napríklad Rust).

V porovnaní s C++, Linus uviedol, prečo je C jeho štandardnou voľbou:

„Keď ľudia hovoria o nebezpečenstvách spôsobených C, hovoria aj o časti dôvodu, prečo je C také silné: 'Umožňuje vám efektívne implementovať všetky tieto veci na nízkej úrovni',“ spomenul Linus. Aj keď je GC vo väčšine prípadov dobré na zjednodušenie programovania, vo všeobecnosti to nie je niečo, čo sa dá urobiť v programovaní systémov na nízkej úrovni.

V zoznamoch adries sa to v skutočnosti uvádza V určitom bode sa v roku 1992 pokúsil použiť C++ na Linuxe (viac-menej rok po zrode Linuxu), ale toto zostalo len "pokusom", od Torvaldsa zmienka o tomto pokuse:

To je hrozné. Verte mi: písať kód jadra v C++ je ZAHRNUTÝ Hlúpy NÁPAD.

Faktom je, že kompilátory C++ sú nespoľahlivé. V roku 1992 boli ešte horšie, ale niektoré základné fakty sa nezmenili:

– celá vec spracovania výnimiek v C++ je zásadne rozbitá. Je "špeciálne" zlomený pre jadrá.
– akýkoľvek kompilátor alebo jazyk, ktorý rád skrýva veci ako pridelenie pamäte za chrbát, jednoducho nie je pre jadro dobrou voľbou.
– môžete písať objektovo orientovaný kód (užitočný pre súborové systémy atď.) v C, „bez odpadu, ktorý je C++“.

Vzhľadom na tieto a mnohé ďalšie pripomienky, Môžeme trochu pochopiť, prečo Linus Torvalds považuje C++ za hrozný jazyk., okrem kritiky jazyka za to, že ho používa «nekvalitných programátorov, do tej miery, že je oveľa, oveľa jednoduchšie s nimi generovať úplný a úplný odpad.» A je to tak Zdá sa, že C++ bolo v určitom okamihu v Torvaldsových ústach horkú pachuť., keďže vo vašich kritikách sa zdá, že sa snažím vyskúšať C++, no Spomínam to v e-maile:

„C++ vedie k skutočne zlým návrhovým rozhodnutiam. Vždy začnete používať „pekné“ funkcie jazykovej knižnice ako STL a Boost a ďalšie úplné a úplné odpadky, ktoré vám môžu „pomôcť“ pri programovaní, ale spôsobujú:

nekonečné množstvo bolesti, keď nefungujú (a každý, kto mi hovorí, že STL a najmä Boost sú stabilné a prenosné, je tak plný nezmyslov, že to ani nie je vtipné)
"neefektívne abstraktné programovacie modely, pri ktorých si o dva roky neskôr všimnete, že určitá abstrakcia nebola veľmi efektívna, ale teraz všetok váš kód závisí od všetkých pekných objektových modelov okolo neho a nemôžete to opraviť bez prepísania aplikácie."

Keď sa teda vrátim k názvu publikácie a už som trochu pochopil špičku ľadovca nenávisti Linusa Torvaldsa voči C++, nie je potrebné veľa skúmať, pretože Pre Torvaldsa Linux nepotrebuje žiadny ďalší jazyk, pretože C stačí a počas tejto doby C je, bol a bude jazyk, ktorý vyhovuje jeho práci a Linus bude naďalej útočiť na programovacie jazyky, ktoré sa mu nepáčia, najmä na C++.

A jeden z mnohých dôvodov, prečo C++ jednoducho neprichádza do úvahy pre Linux, že povoľuje výnimky, zatiaľ čo Rust nemá rád C, keďže v programovaní jadra to nemôže byť povolené Nezachytená výnimka môže deaktivovať operačný systém a nemali by ste ani myslieť na to, že jadro niekedy zlyhá.

Y v "predpokladanom" vzhľadom na to, že Torvalds uvažoval o C++ na linuxe, to by mohlo byť viac ako prínosom zahrnutie tretieho alebo viacerých programovacích jazykov, by sa stal problémom, keďže napríklad s realizáciou Rust v súčasnosti začínajú vychádzať na povrch niektoré problémy, ako sú tie, o ktorých sme sa už zmienili v publikácii aktuálny stav Rustu na Linuxe.

Rust ovládače na Linuxe
Súvisiaci článok:
Rust na Linuxe: pokroky, výzvy a aktuálny stav

Medzi aktuálnymi výzvami v článku spomíname, že jednou z nich je «získajte viac recenzentov pre kód ktorý sa vyvíja“ okrem toho Pokrok kompilátora Rust založeného na GCC sa spomalil, tiežJe veľmi malá šanca, že prepíšu veľké časti jadra v Ruste krátkodobé a dokonca veľmi nízke šance, že to dokážu bez zavedenia všetkých druhov chýb a najmä problémov s kompatibilitou.

Ak tieto problémy, ktoré sa odrážajú v Rust pridávame ich v C++ alebo inom jazyku ktoré je možné pridať v Linuxe, Vývoj jadra by bol značne ovplyvnený a na začiatku by sme nedostali verziu každé dva mesiace, ale skôr by to bol vývoj medzi dlhšími verziami, bolo by potrebných viac vývojárov, viac recenzentov a to všetko sa premieta do väčšieho úsilia.

O prístupe zavedenia C++ ako tretieho programovacieho jazyka sa nepochybne ani zďaleka neuvažuje a ako sme už spomenuli, jednou z hlavných prekážok je sám Linus Torvalds.


Zanechajte svoj komentár

Vaša e-mailová adresa nebude zverejnená. Povinné položky sú označené *

*

*

  1. Za údaje zodpovedá: AB Internet Networks 2008 SL
  2. Účel údajov: Kontrolný SPAM, správa komentárov.
  3. Legitimácia: Váš súhlas
  4. Oznamovanie údajov: Údaje nebudú poskytnuté tretím stranám, iba ak to vyplýva zo zákona.
  5. Ukladanie dát: Databáza hostená spoločnosťou Occentus Networks (EU)
  6. Práva: Svoje údaje môžete kedykoľvek obmedziť, obnoviť a vymazať.