
Linus Benedict Torvalds è un ingegnere del software, noto per aver avviato e mantenuto lo sviluppo del kernel Linux.
poche settimane fas condividiamo qui sul blog la notizia di una proposta che è stato riproposto dopo molti anni in relazione alla viabilità di adottare il codice C++ nel kernel Linux, una proposta lanciata nel 2018 per scherzo.
La la proposta è stata lanciata nuovamente sulle mailing list del Kernel, ma in modo serio per Hans Peter Anvin, Un importante sviluppatore e sviluppatore del kernel Intel ha sollevato la fattibilità di includere C++ come terzo linguaggio di programmazione in Linux.
Con l'introduzione di Ruggine su Linux, molti sviluppatori e parte della comunità hanno visto un ottimo percorso avanti in Linux, oltre a questo Sono emerse varie "idee" per implementare altri linguaggi di programmazione, la proposta di implementare il C++ apre ancora una volta un dibattito tra molti sviluppatori del Kernel e anche Linus Torvalds spiega ancora una volta, nel modo più passivo e comprensibile possibile, perché Linux non è preparato per il C++ (sarcasmo).
Dobbiamo ricordare che Rust non è stato accettato in Linux da un momento all'altro, dal momento che il progetto Rust su Linux (Rust per Linux) ha avuto una serie di revisioni da parte dello stesso Linus Torvalds prima di essere accettato nel ramo principale del Kernel per essere incluso e vale la pena ricordare che il padre di Linux non era niente di morbido quando si apportano revisioni e si commentano le modifiche proposte.
Ora nel caso della proposta del C++ come terzo linguaggio di programmazione, nel caso in esame, e dico "ovviamente", L'implementazione dovrebbe passare attraverso una serie simile di revisioni, se non addirittura più rigoroso di quanto lo fosse per Rust. E il fatto di menzionarlo è perché C++ e Linus hanno la loro storia, piccola, ma già vecchia di tanti anni.
Il motivo per menzionare che il caso del C++ come terzo linguaggio Linux come a "Presumibilmente" è perché il padre di Linux, Linus Torvalds, non ha visto e non vedrà di buon occhio il C++., poiché in più di un'occasione e in ogni occasione ha affermato che il C++ "è un linguaggio terribile".
Per menzioner alcuni dei momenti in cui è stato considerato l'uso del C++ su Linux e Linus Torvalds non ha espresso solo il suo disaccordo, ma un "certo odio" verso il C++ che viene sovrapposto per menzionare il motivo per cui "semplicemente non è un'opzione per Linux", uno dei più recenti è stato durante le revisioni dell'implementazione Rust, da allora durante una discussione su un post di Google, l'inclusione di C++ è stata menzionata come suggerimento:
"La soluzione qui è semplice: basta usare C++ invece di Rust"
Al quale Linus Torvalds non poté fare a meno di ridere e la sua risposta fu:
"LOL". «Il C++ non risolve nessuno dei problemi del C e peggiora solo le cose, è davvero un linguaggio spazzatura.
Per le persone a cui non piace il C, scegli un linguaggio che offra effettivamente qualcosa di utile. Come i linguaggi memory-safe e "quello" possono evitare alcune delle insidie del C, o i linguaggi che hanno il supporto interno per la "raccolta dei rifiuti" GC e semplificano la gestione della memoria. "Il C++ risolve tutti i problemi sbagliati, e chiunque dica 'riscrivere il nucleo in C++' è troppo ignorante per saperlo."
Linus Torvalds ha sempre considerato il C++ “spreco” e lo ha ritenuto “inutile” Ebbene, “il C++ non può assolutamente risolvere il problema del linguaggio C, non farà altro che peggiorare le cose”. Torvald credo che chi non ama il linguaggio C possa cercare un linguaggio che possa davvero aggiungere valore. Ad esempio, i linguaggi che sono sicuri per la memoria e possono evitare i pericoli nascosti causati da C (come Rust).
Rispetto al C++, Linus ha spiegato perché C è la sua scelta standard:
"Quando le persone parlano dei pericoli causati da C, parlano anche di parte del motivo per cui C è così potente: 'Ti permette di implementare in modo efficiente tutte queste cose di basso livello'", ha detto Linus. Inoltre, sebbene GC sia utile per semplificare la programmazione nella maggior parte dei casi, generalmente non è qualcosa che può essere fatto nella programmazione di sistemi di basso livello.
In effetti, nelle mailing list è menzionato questo Ad un certo punto si tentò di utilizzare il C++ su Linux, nel 1992 (più o meno un anno dopo la nascita di Linux), ma questo rimase solo "un tentativo", dai tempi di Torvalds menzione di questo tentativo:
È orribile. Credimi: scrivere il codice del kernel in C++ è un'IDEA FOTTUTAMENTE STUPIDA.
Il fatto è che i compilatori C++ sono inaffidabili. Nel 1992 erano ancora peggiori, ma alcuni fatti fondamentali non sono cambiati:
– L’intera gestione delle eccezioni in C++ è fondamentalmente interrotta. È "particolarmente" rotto per i kernel.
– qualsiasi compilatore o linguaggio a cui piace nascondere dietro le proprie spalle cose come l’allocazione della memoria semplicemente non è una buona scelta per un kernel.
– puoi scrivere codice orientato agli oggetti (utile per file system, ecc.) in C, “senza la spazzatura che è C++”.
Considerati questi e molti altri commenti, Possiamo capire un po' perché Linus Torvalds considera il C++ un linguaggio orribile., oltre a criticare il linguaggio utilizzato da «programmatori di bassa qualità, al punto che è molto, molto più semplice generare spazzatura completa e totale con esso» Ed è quello Sembra che il C++ sia stato, ad un certo punto, l'amaro in bocca a Torvalds., poiché nelle tue critiche sembra che io stia cercando di provare il C++, beh Lo menziono in un'e-mail:
"Il C++ porta a scelte progettuali davvero pessime. Inizi invariabilmente a utilizzare le funzionalità "simpatiche" della libreria linguistica come STL e Boost e altra spazzatura completa e assoluta, che può "aiutarti" a programmare, ma causa:
infinite quantità di dolore quando non funzionano (e chiunque mi dica che STL e soprattutto Boost sono stabili e portatili è così pieno di sciocchezze che non è nemmeno divertente)
"modelli di programmazione astratti inefficienti in cui due anni dopo noti che alcune astrazione non erano molto efficienti, ma ora tutto il tuo codice dipende da tutti i graziosi modelli di oggetti che lo circondano e non puoi risolverlo senza riscrivere la tua applicazione."
Quindi, tornando al titolo della pubblicazione e avendo già colto un po’ la punta dell’iceberg dell’odio che Linus Torvalds nutre nei confronti del C++, non è necessario indagare molto poiché Per Torvalds Linux non ha bisogno di nessun altro linguaggio perché C è sufficiente e per tutto questo tempo il C è, è stato e sarà il linguaggio adatto al suo lavoro e Linus continuerà ad attaccare i linguaggi di programmazione che non gli piacciono, soprattutto il C++.
Ed è che uno dei tanti motivi per cui il C++ semplicemente non viene considerato per Linux, è che consente eccezioni, mentre a Rust non piace C, poiché nella programmazione del kernel, non può essere consentito Un'eccezione non rilevata può disabilitare il sistema operativo e non dovresti nemmeno pensare che il kernel possa mai fallire.
Y nel "presunto" dato che Torvalds arrivò a considerare il C++ su linux, questo potrebbe essere più che un vantaggio l'inclusione di un terzo o più linguaggi di programmazione, diventerebbe un problema, poiché ad esempio con l'implementazione di Ruggine attualmente alcuni problemi cominciano a venire alla luce, come quelli di cui abbiamo già parlato in una pubblicazione sull'argomento lo stato attuale di Rust su Linux.
Tra le sfide attuali menzioniamo nell'articolo che una di queste lo è «reclutare più revisori per il codice che è in fase di sviluppo" oltre a Il progresso del compilatore Rust basato su GCC è rallentato, pureCi sono pochissime possibilità che riscrivano grandi porzioni del kernel in Rust a breve termine e possibilità anche molto basse che riescano a farlo senza introdurre tutti i tipi di errori e soprattutto problemi di compatibilità.
Se questi problemi, che si riflettono in Rust li aggiungiamo in C++ o qualsiasi altro linguaggio che può essere aggiunto in Linux, Lo sviluppo del kernel ne risentirebbe notevolmente e con questo all'inizio non riceveremmo una versione ogni due mesi, bensì lo sviluppo tra versioni più lunghe, servirebbero più sviluppatori, più revisori e tutto questo si traduce in un impegno maggiore.
Senza dubbio, l’approccio di introdurre il C++ come terzo linguaggio di programmazione è lungi dall’essere preso in considerazione e, come abbiamo già accennato, uno dei principali ostacoli a questo è lo stesso Linus Torvalds.