Može li Linus Torvalds razmisliti o uvođenju C++ u Linux kernel?

linustorvalds

Linus Benedict Torvalds je softverski inženjer, poznat po pokretanju i održavanju razvoja Linux kernela.

prije nekoliko sedmicaOvdje na blogu dijelimo vijesti o prijedlogu koji je oživljen nakon mnogo godina u odnosu na održivost usvajanja C++ koda u Linux kernelu, prijedlog koji je lansiran 2018. kao šala.

La predlog je ponovo pokrenut na Kernel mailing listama, ali na ozbiljan način za Hans Peter Anvin, Ključni Intelov programer kernela i programer je ukazao na izvodljivost uključivanja C++ kao trećeg programskog jezika u Linux.

Linux C++
Vezani članak:
C++ na Linuxu, tema je oživljena nakon 6 godina

Sa uvođenjem Rust na Linuxu, mnogi programeri i dio zajednice vidjeli su odličan put naprijed u Linuxu, plus to također Pojavile su se razne "ideje" za implementaciju drugih programskih jezika, prijedlog za implementaciju C++ još jednom otvara debatu među mnogim programerima kernela, pa čak i Linus Torvalds još jednom objašnjava na najpasivniji i najrazumljiviji mogući način, zašto Linux nije spreman za C++ (sarkazam).

Moramo zapamtiti da Rust nije bio prihvaćen u Linuxu iz jednog trenutka u drugi, budući da je projekat Rust na Linuxu (Rust za Linux) imao seriju revizija od strane samog Linusa Torvaldsa prije nego što je prihvaćen u glavnu granu kernela da bi bio uključen i vrijedno je napomenuti da otac Linuxa nije bio ništa mekano prilikom revizija i komentarisanja predloženih izmjena.

Prije razvoja članka, moram napomenuti da je sav sadržaj članka lično mišljenje nastalo kroz interpretaciju informacija i vijesti koje sam pročitao na internetu, tako da može biti drugačije od tumačenja koje vi kao čitatelj možete imam.imam i rado ću odvojiti vrijeme da pročitam ako to želite podijeliti ovdje u komentarima.

Sada u slučaju predloga C++ kao trećeg programskog jezika, u navodnom slučaju, a ja kažem "naravno", Implementacija bi trebala proći kroz sličnu seriju pregleda, ako ne i rigorozniji nego što je bio za Rust. A činjenica da se ovo spominje je zato što C++ i Linus imaju svoju istoriju, malu, ali staru već mnogo godina.

Razlog za spominjanje da je slučaj za C++ kao treći Linux jezik kao a „Navodno“, to je zato što otac Linuxa, Linus Torvalds, nije i neće blagonaklono gledati na C++., pošto je u više navrata u svakoj prilici spomenuo da je C++ "užasan jezik."

Pomenutir neki od trenutaka u kojima se razmatra upotreba C++-a na Linuxu i Linus Torvalds je izrazio ne samo svoje neslaganje, ali "izvjesna mržnja" prema C++-u koja je prekrivena da se spomene zašto "to jednostavno nije opcija za Linux", jedan od najnovijih bio je tokom pregleda implementacije Rusta, pošto tokom diskusije na Google postu, uključivanje C++ je spomenuto kao prijedlog:

"Rješenje je jednostavno: samo koristite C++ umjesto Rust"

U Koji Linus Torvalds nije mogao a da se ne nasmije i njegov odgovor je bio:

"LOL". «C++ ne rješava nijedan od problema C-a i samo pogoršava stvari, to je zaista jezik smeća.

Za ljude koji ne vole C, idite na jezik koji vam zapravo nudi nešto vrijedno. Kao što su memorijski sigurni i "taj" jezici mogu izbjeći neke od zamki C-a ili jezika koji imaju internu GC podršku za "prikupljanje smeća" i olakšavaju upravljanje memorijom. "C++ rješava sve pogrešne probleme, a svako ko kaže 'prepiši jezgro u C++' previše je neznalica da bi to uopće znao."

Linus Torvalds je oduvijek smatrao C++ “otpadom” i smatrao ga je “beskorisnim” Pa za "C++ uopšte ne može da reši problem jezika C, samo će pogoršati stvari." Torvalds vjeruju da oni koji ne vole C jezik mogu potražiti jezik koji zaista može dodati vrijednost. Na primjer, jezici koji su memorijski sigurni i mogu izbjeći skrivene opasnosti uzrokovane C (kao što je Rust).

U poređenju sa C++, Linus je spomenuo zašto je C njegov standardni izbor:

“Kada ljudi govore o opasnostima koje uzrokuje C, oni također govore o dijelu razloga zašto je C tako moćan: 'Omogućava vam da efikasno implementirate sve ove stvari niskog nivoa',” spomenuo je Linus. Takođe, iako je GC dobar za pojednostavljenje programiranja u većini slučajeva, generalno nije nešto što se može uraditi u sistemskom programiranju niskog nivoa.

Naime, na mailing listama se to spominje U nekom trenutku je učinjen pokušaj da se koristi C++ na Linuxu, 1992. godine (manje-više godinu dana nakon rođenja Linuxa), ali je to ostao samo "pokušaj", još od Torvaldsa pomenuti ovaj pokušaj:

To je grozno. Vjerujte mi: pisanje kernel koda u C++ je JEBENO GLUPA IDEJA.

Činjenica je da su C++ prevodioci nepouzdani. Bili su još gori 1992. godine, ali neke fundamentalne činjenice se nisu promijenile:

– cijela stvar rukovanja izuzecima u C++ je u osnovi pokvarena. To je "posebno" slomljeno za kernele.
– bilo koji kompajler ili jezik koji voli da sakrije stvari poput alokacije memorije iza svojih leđa jednostavno nije dobar izbor za kernel.
– možete napisati objektno orijentisani kod (koristan za sisteme datoteka itd.) u C, „bez smeća koje je C++“.

S obzirom na ove i mnoge druge komentare, Možemo malo razumjeti zašto Linus Torvalds smatra da je C++ užasan jezik., pored kritikovanja jezika zbog toga što ga koriste «nekvalitetni programeri, do te mjere da je mnogo, mnogo lakše generirati potpuno i potpuno smeće s njim.» I to je to Čini se da je C++ u nekom trenutku bio gorak ukus u Torvaldsovim ustima., pošto se u vašim kritikama čini da pokušavam isprobati C++, dobro To spominjem u mejlu:

„C++ dovodi do zaista loših dizajnerskih izbora. Uvek počinjete da koristite „lepe“ funkcije biblioteke jezika kao što su STL i Boost i ostalo potpuno i potpuno smeće, koje vam može „pomoći“ u programiranju, ali uzrokuje:

beskrajne količine bola kada ne rade (a svako ko mi kaže da su STL i posebno Boost stabilni i prenosivi je toliko pun gluposti da nije ni smiješno)
"neefikasni modeli apstraktnog programiranja gdje dvije godine kasnije primijetite da neka apstrakcija nije bila vrlo efikasna, ali sada sav vaš kod ovisi o svim lijepim objektnim modelima oko njega i ne možete to popraviti bez ponovnog pisanja aplikacije."

Dakle, vraćajući se naslovu publikacije i pošto smo već malo shvatili vrh ledenog brega mržnje koju Linus Torvalds gaji prema C++, nije potrebno mnogo istraživati ​​jer Za Torvaldsa, Linuxu nije potreban nijedan drugi jezik jer je C dovoljan i kroz to vrijeme C je, bio je i biće jezik koji odgovara njegovom radu i Linus će nastaviti da napada programske jezike koji mu se ne sviđaju, posebno C++.

I to je to jedan od mnogih razloga zašto se C++ jednostavno ne razmatra za Linux, je da dozvoljava izuzetke, dok Rust ne voli C, pošto u programiranju kernela, to se ne može dozvoliti Neuhvaćeni izuzetak može onemogućiti operativni sistem, a ne biste trebali ni razmišljati o tome da će kernel ikada otkazati.

Y u "pretpostavljenom" s obzirom da je Torvalds počeo da razmatra C++ na linuxu, ovo bi moglo biti više od koristi uključivanje trećeg ili više programskih jezika, bi postao problem, budući da na primjer sa implementacijom Rust trenutno neki problemi počinju izlaziti na vidjelo, poput onih koje smo već spomenuli u jednoj publikaciji o trenutno stanje Rusta na Linuxu.

Rust drajveri na Linuxu
Vezani članak:
Rust na Linuxu: napredak, izazovi i trenutni status

Među aktuelnim izazovima u članku spominjemo jedan od njih «zaposliti više recenzenata za kod koji se razvija" pored Napredak Rust kompajlera zasnovanog na GCC-u je usporen, takođerVrlo su male šanse da će prepisati velike dijelove kernela u Rust kratkoročne i čak vrlo male šanse da to mogu učiniti bez unošenja svih vrsta grešaka, a posebno problema s kompatibilnošću.

Ako ovi problemi, koji se odražavaju u Rustu dodajemo ih u C++ ili bilo kom drugom jeziku koji se može dodati u Linux, Razvoj kernela bi bio jako pogođen i sa ovim na početku ne bismo dobijali verziju svaka dva mjeseca, već bi to bio razvoj između dužih verzija, više programera, više recenzenata bi bilo potrebno i sve ovo se pretvara u veći napor.

Bez sumnje, pristup uvođenju C++-a kao trećeg programskog jezika je daleko od razmatranja, a kao što smo već spomenuli, jedna od glavnih prepreka tome je sam Linus Torvalds.


Ostavite komentar

Vaša e-mail adresa neće biti objavljena. Obavezna polja su označena sa *

*

*

  1. Odgovoran za podatke: AB Internet Networks 2008 SL
  2. Svrha podataka: Kontrola neželjene pošte, upravljanje komentarima.
  3. Legitimacija: Vaš pristanak
  4. Komunikacija podataka: Podaci se neće dostavljati trećim stranama, osim po zakonskoj obavezi.
  5. Pohrana podataka: Baza podataka koju hostuje Occentus Networks (EU)
  6. Prava: U bilo kojem trenutku možete ograničiti, oporaviti i izbrisati svoje podatke.