Linus Torvalds potrebbe prendere in considerazione l’introduzione del C++ nel kernel Linux?
Un po’ per mancanza di notizie di un certo rilievo in questi ultimi giorni e un po’ perché la questione è degna di essere approfondita, aggiungo questo nuovo articolo come un più attento esame della questione come già proposto in un precedente articolo pubblicato poche settimane fa:
Il tutto parte nel 2018 quando fu lanciata come proposta l’adozione del linguaggio C++ nel kernel Linux da David Howells, un ingegnere di Red Hat, come scherzo per il noto pesce d’aprile del 1° di aprile 2018, giorno in cui molti ne approfittavano per creare scherzi per la comunità e all’epoca era così, rilasciando una serie di 45 patch che includevano l’utilizzo dei modelli, l’ereditarietà delle classi e l’overload delle funzioni C++.
La proposta è stata nuovamente lanciata sulle mailing list del kernel Linux, ma seriamente, da Hans Peter Anvin, uno sviluppatore chiave del kernel che lavora in Intel e lo sviluppatore ha riproposto la fattibilità di includere il linguaggio C++ come 3° linguaggio di programmazione in Linux.
Il primo linguaggio è il C e il secondo è Rust, recentemente inserito, ma Linus Torvalds, il dittatore benevolo creatore di Linux, ha espresso più volte la sua opinione negativa sul linguaggio di programmazione C++. Ha definito il C++ un linguaggio “terribile” e ha sostenuto che molti programmatori non qualificati lo utilizzano. Ha iniziato a criticare il C++ già nel 2007 e ha continuato a farlo negli anni successivi. Nella discussione avviata nel 2018, che proponeva di convertire il kernel da C a C++, Linus Torvalds ha risposto che il C++ non risolve i problemi del linguaggio C, anzi, li peggiora!
Con l’introduzione di Rust nel kernel Linux, molti sviluppatori e parte della comunità hanno visto un grande cammino da percorrere in Linux, oltre a varie “idee” per implementare altri linguaggi di programmazione. La proposta di implementare il linguaggio C++ apre nuovamente un dibattito tra molti degli sviluppatori del kernel e anche Linus Torvalds che spiegano ancora una volta nel modo più semplice e comprensibile possibile, perché Linux non è pronto per il C++ (sarcasmo).
Va ricordato che Rust non è stato accettato in Linux da un momento all’altro, poiché il progetto Rust in Linux (Rust for Linux) ha subito una serie di revisioni da parte dello stesso Linus Torvalds prima di essere accettato nel ramo principale del kernel Linux e vale la pena ricordare che il padre di Linux non era affatto morbido quando apportava le revisioni e commentava le modifiche proposte.
Ora, nel caso della riproposta del linguaggio C++ come 3° linguaggio di programmazione, l’implementazione dovrebbe passare attraverso una serie di revisioni simili, se non addirittura più rigorose di quanto previsto con il linguaggio Rust. Ma non solo perché il C++ e Linus Torvalds hanno la loro storia, piccola, ma già vecchia di tanti anni, ma anche perché Linus Torvalds non ha visto e non vedrà, forse mai, il C++ favorevolmente.
Uno dei più recenti momenti in cui è stato proposto l’uso del C++ in Linux e Linus Torvalds ha espresso, non solo il suo disaccordo ma un “certo odio” verso il C++ perché “semplicemente non è un’opzione per Linux”, è stato durante la revisione dell’implementazione di Rust durante una discussione in un post di Google dove l’inclusione del C++ è stata menzionata sotto forma di suggerimento:
La soluzione qui è semplice: basta usare C++ invece di Rust.
Al che Linus Torvalds non ha potuto fare a meno di ridere (LOL) e la sua risposta è stata:
C++ solves none of the C issues, and only makes things worse. It really is a crap language. For people who don’t like C, go to a language that actually offers you something worthwhile. Like languages with memory safety and [which] can avoid some of the dangers of C, or languages that have internal GC [garbage collection] support and make memory management easier. C++ solves all the wrong problems, and anybody who says ‘rewrite the kernel in C++’ is too ignorant to even know that.
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, scegliete un linguaggio che offra effettivamente qualcosa di utile. Come i linguaggi con sicurezza della memoria che possono evitare alcuni dei pericoli del C, o i linguaggi che hanno il supporto interno per GC [garbage collection] e semplificano la gestione della memoria. Il C++ risolve tutti i problemi sbagliati e chiunque dica “riscrivere il kernel in C++” è troppo ignorante per saperlo.
Ad esempio, un linguaggio sicuro per la memoria e che può evitare i pericoli nascosti causati dal linguaggio C è il linguaggio Rust. Inoltre, rispetto al C++, Linus Torvalds ha spiegato perché il C è la sua scelta standard. Ha detto che quando si parla dei pericoli del C, si parla anche di parte di ciò che rende il C così potente, “e che permette di implementare tutte quelle cose di basso livello in modo efficiente”. Linus Torvalds ha aggiunto che, sebbene la “garbage collection” sia una cosa molto buona nella maggior parte delle altre situazioni, generalmente non è necessariamente qualcosa che puoi considerare nella programmazione di un sistema di basso livello.
Infatti nelle mailing list si menziona che ad un certo punto fu fatto un tentativo di utilizzare il C++ in Linux, nel 1992 (più o meno un anno dopo la nascita di Linux), ma questo rimase solo “un tentativo”, poiché Linus Torvalds menzionando questo tentativo così si è espresso:
È 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 inadeguata. Lo è “particolarmente” per il 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++”.
Alla luce di questi e molti altri commenti, possiamo capire un po’ perché per Linus Torvalds il C++ è un linguaggio orribile, e ha anche criticato il linguaggio perché viene usato da “programmatori di bassa qualità, al punto che è molto, molto più facile generare con esso spazzatura totale e assoluta”. Sembra che il C++ abbia lasciato l’amaro in bocca a Linus Torvalds, visto che nelle sue critiche dà l’impressione di essersi cimentato con il C++, come ha affermato 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 totale, che può “aiutarti” a programmare, ma causano una quantità infinita di dolore quando non funzionano (e chiunque mi dica che STL e soprattutto Boost sono stabili e portabili, è così pieno di sciocchezze che non è nemmeno divertente). Modelli di programmazione astratti inefficienti in cui se 2 anni dopo noti che qualche astrazione non era molto efficiente, ma ora tutto il tuo codice dipende da tutti i graziosi modelli di oggetti che lo circondano, non puoi risolverla senza riscrivere la tua applicazione.
Quindi, tornando al titolo della pubblicazione e avendo già capito un po’ la punta dell’iceberg dell’odio che Linus Torvalds nutre nei confronti del C++, non è necessario indagare molto per scoprire perché per lui Linux non c’è bisogno di nessun altro linguaggio e il C basta per tutto. 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++.
Uno dei tanti motivi per cui il C++ non è considerato valido per Linux è che supporta le eccezioni, mentre Rust e il C no, perché nella programmazione del kernel non si può permettere che un’eccezione non rilevata metta fuori uso il sistema operativo e non si deve nemmeno pensare che il kernel possa mai fallire.
E nell’ipotesi che Linus Torvalds prenda in considerazione il C++ in Linux, questo potrebbe essere più un problema che un vantaggio, poiché l’inclusione di un 3°, o più linguaggi di programmazione, diventerebbe una ulteriore difficoltà, dato che ad esempio con l’attuale implementazione di Rust stanno già iniziando ad emergere alcuni problemi come reclutare più sviluppatori e revisori per il codice in fase di sviluppo. Aggiungere altri linguaggi di sviluppo per il kernel Linux non farebbe altro che amplificare questi problemi che si tradurrebbero in tempi più lunghi di sviluppo del codice e tempi di rilascio oltre i 2 mesi attuali a cui siamo abituati.
Quindi rispondendo alla domanda se Linus Torvalds potrebbe prendere in considerazione l’introduzione del C++ nel kernel Linux direi che il linguaggio C++ è lontano dall’essere preso in considerazione proprio perché uno dei principali ostacoli a questo è lo stesso Linus Torvalds.
Fonte: https://medium.com/nerd-for-tech/linus-torvalds-c-is-really-a-terrible-language-2248b839bee3
Fonte: https://www.linuxadictos.com/podria-linus-torvalds-considerar-la-introduccion-de-c-en-el-kernel-de-linux.html
Fonte: https://www.linuxadictos.com/c-en-linux-el-tema-se-reaviva-despues-de-6-anos.html
Se vuoi sostenerci, puoi farlo acquistando qualsiasi cosa dai diversi link di affiliazione che abbiamo nel nostro sito o partendo da qui oppure alcune di queste distribuzioni GNU/Linux che sono disponibili sul nostro negozio online, quelle mancanti possono essere comunque richieste, e su cui trovi anche PC, NAS e il ns ServerOne. Se ti senti generoso, puoi anche donarmi solo 1€ o più se vuoi con PayPal e aiutarmi a continuare a pubblicare più contenuti come questo. Grazie!
Hai dubbi o problemi? Ti aiutiamo noi!
Se vuoi rimanere sempre aggiornato, iscriviti al nostro canale Telegram.Se vuoi ricevere supporto per qualsiasi dubbio o problema, iscriviti alla nostra community Facebook o gruppo Telegram.
Cosa ne pensi? Fateci sapere i vostri pensieri nei commenti qui sotto.
Ti piace quello che leggi? Per favore condividilo con gli altri.