Podria Linus Torvalds considerar la introducció de C++ al Kernel de Linux?

linustorvalds

Linus Benedict Torvalds és un enginyer de programari, conegut per iniciar i mantenir el desenvolupament del nucli Linux

Fa unes poques setmanas compartim aquí al bloc la notícia sobre una proposta que s'ha revifat després de molts anys en relació amb la viabilitat d'adoptar el codi C++ al nucli de Linux, una proposta que va ser llançada el 2018 a manera de broma.

La proposta va ser novament llançada a les llistes de correu del Kernel, però ja de manera seriosa per Hans Peter Anvin, un desenvolupador clau del nucli d'Intel i el desenvolupador plantejava la viabilitat de la inclusió de C++ com un tercer llenguatge de programació a Linux.

Linux C++
Article relacionat:
C++ a Linux, el tema es revifa després de 6 anys

Amb la introducció de Rust a Linux, molts desenvolupadors i part de la comunitat van veure un gran camí per davant a Linux, a més que també han sorgit diverses «idees» d'implementar altres llenguatges de programació, la proposta d'implementar C++ obre novament un debat entre molts dels desenvolupadors del Kernel i fins i tot que Linus Torvalds novament expliqui de la manera més passiva i comprensiblement possible, perquè Linux no està preparat per a C++ (sarcasme).

Cal recordar que Rust no va ser acceptat a Linux d'un moment a un altre, doncs el projecte de Rust a Linux (Rust for Linux) va tenir una sèrie de revisions per part del mateix Linus Torvalds abans que fos acceptat a la branca principal del Kernel perquè fos inclòs i cal esmentar que el pare de Linux no va ser res tou al moment de realitzar les revisions i comentar sobre els canvis proposats.

Abans de desenvolupar l'article, he d'esmentar que tot el contingut de l'article és una opinió personal generada a través de la interpretació de la informació i notícies que he llegit a la xarxa, per la qual cosa pot ser diferent de la interpretació que tu com a lector puguis tenir i que amb gust em prendré el temps de llegir si vols compartir-la aquí als comentaris.

Ara en el cas de la proposta de C++ com a tercer llenguatge de programació, en el supòsit cas, i dic “supòsit”, la implementació hauria de passar per una sèrie de revisions similar, si no fins i tot més rigorosa del que va ser per a Rust. I és que el fet d'esmentar això és perquè C++ i Linus tenen la seva història, petita, però que ja té molts anys.

La raó d'esmentar que el cas de C++ com un tercer llenguatge de Linux com un “suposat”, és perquè el pare de Linux, Linus Torvalds, no ha vist ni veurà amb bons ulls C++, ja que més d'una vegada en cada oportunitat que té ha esmentat que C++ «és un llenguatge terrible».

Per esmentar alguns dels moments en què s'ha plantejat l'ús de C++ a Linux i Linus Torvalds ha expressat no només el seu desacord, sinó un «cert odi» cap a C++ el qual sobreposa per esmentar el perquè «simplement no és una opció per a Linux», un dels més recents va ser durant les revisions de la implementació de Rust, ja que durant una discussió en una la publicació de Google, es va esmentar la inclusió de C++ en forma de suggeriment:

«La solució aquí és simple: simplement useu C++ en lloc de Rust»

A la qual cosa Linus Torvalds no va poder evitar riure's i la seva resposta va ser:

«LOL». «C++ no resol cap dels problemes de C i només empitjora les coses, realment és un llenguatge fem.

Per a les persones a qui no els agrada C, optin per un llenguatge que realment els ofereixi alguna cosa que valgui la pena. Com a llenguatges amb seguretat de memòria i "que" poden evitar alguns dels perills de C, o llenguatges que tenen suport intern de GC "recol·lecció d'escombraries" i faciliten l'administració de la memòria. C++ resol tots els problemes equivocats, i qualsevol que digui 'reescriure el nucli a C++' és massa ignorant per ni tan sols saber-ho.»

Linus Torvalds sempre ha considerat C++ com un “malbaratament” i ho ha considerat “inútil” perquè per al “C++ no pot resoldre el problema del llenguatge C en absolut, només empitjorarà les coses”. Torvalds creu als que no els agrada el llenguatge C poden cercar un llenguatge que realment pugui aportar valor. Per exemple, llenguatges que tenen seguretat de memòria i poden evitar perills ocults causats per C (com ara Rust).

En comparació amb C++, Linus ha esmentat el perquè C, és la seva elecció estàndard:

"Quan la gent parla dels perills causats per C, també parla d'una part de la raó per la qual C és tan poderós: 'Et permet implementar eficientment totes aquestes coses de baix nivell'", va esmentar Linus. A més, encara que GC és bo per simplificar la programació en la majoria dels casos, generalment no és una cosa que es pugui fer a la programació de sistemes de baix nivell.

De fet, a les llistes de correu s'esmenta que en algun moment es va intentar utilitzar C++ a Linux, el 1992 (més o menys un any després del naixement de Linux), però això es va quedar només així com «un intent», ja que Torvalds esmenta sobre aquest intent:

És terrible. Creu-me: escriure codi de kernel a C++ és una IDEA ESTÚPIDA DE MERDA.

El fet és que els compiladors de C++ no són fiables. Eren encara pitjors el 1992, però alguns fets fonamentals no han canviat:

– Tot l'assumpte del maneig d'excepcions a C++ és fonamentalment trencat. Està «especialment» trencat per als nuclis.
– qualsevol compilador o llenguatge que li agradi ocultar coses com assignacions de memòria a l'esquena simplement no és una bona elecció per a un nucli.
– pots escriure codi orientat a objectes (útil per a sistemes de fitxers, etc.) a C, «sense les escombraries que són C++.»

Davant d'aquests i altres comentaris, podem entendre una mica sobre el perquè per a Linus Torvalds C++ és un llenguatge horrible, a més que ha criticat el llenguatge per ser utilitzat per «programadors de baixa qualitat, fins al punt en què és molt, molt més fàcil generar escombraries totals i absolutes amb ell.» I és que sembla que C++ va ser en algun moment, un amarg sabor de boca per a Torvalds, ja que en les seves crítiques fa pensar que intento provar amb C++, doncs esmento en un correu que:

«C++ condueix a eleccions de disseny realment dolentes. Invariablement comences a fer servir les característiques «agradables» de la biblioteca del llenguatge com STL i Boost i altres escombraries totals i absolutes, que poden «ajudar-te» a programar, però causen:

quantitats infinites de dolor quan no funcionen (i qualsevol que em digui que STL i especialment Boost són estables i portables està tan ple de ximpleries que ni tan sols és divertit)
models de programació abstractes ineficients on dos anys més tard notes que alguna abstracció no va ser gaire eficient, però ara tot el teu codi depèn de tots els bonics models d'objectes al seu voltant, i no el pots arreglar sense reescriure la teva aplicació.»

Aleshores, reprenent el títol de la publicació i ja havent entès una mica la punta de l'iceberg de l'odi que té Linus Torvalds cap a C++, no cal indagar gaire ja que per a Torvalds, Linux no necessita cap altre llenguatge perquè C en té prou i durant tot aquest temps C és, ha estat i serà el llenguatge que s'adapta al seu treball i Linus seguirà atacant els llenguatges de programació que no li agraden, especialment C++.

I és que una dentre les tantes raons per la qual C++ simplement no és considerat per a Linux, és que admet excepcions, mentre que Rust no igual que C, ja que a la programació del nucli, no es pot permetre que una excepció no detectada pugui desactivar el sistema operatiu, a més que ni tan sols cal pensar que el kernel falli alguna vegada.

Y en el dau «supòsit» que Torvalds arribés a considerar C++ a Linux, això podria suposar més que un benefici la inclusió d'un tercer o més llenguatges de programació, es convertirien en un problema, ja que per exemple amb la implementació de Rust actualment ja estan començant a sortir a la llum alguns problemes, tals com els que ja esmentem en una publicació sobre l'estat actual de Rust a Linux.

Controladors Rust a Linux
Article relacionat:
Rust a Linux: avenços, desafiaments i estat actual

Dins dels desafiaments actuals esmentem a l'article que un d'ells és el «reclutar més revisors per al codi que s'està desenvolupant» a més que el progrés del compilador Rust basat en GCC s'ha alentit, tambén hi ha molt poques possibilitats que reescriguin grans porcions del kernel a Rust curt termini i fins i tot molt baixes possibilitats que puguin fer-ho sense introduir tota mena d'errors i sobretot els problemes de compatibilitat.

Si aquests problemes, que s'estan veient reflectits a Rust els sumem a C++ o qualsevol altre llenguatge que s'arribi a sumar a Linux, el desenvolupament del Kernel es veuria afectat en gran mesura i amb això d'inici no estaríem rebent una versió cada dos mesos, sinó que seria el desenvolupament entre versions de més temps, es requeririen més desenvolupadors, més revisors i tot això es tradueix en un major esforç.

Sens dubte el plantejament de la introducció de C++ com un tercer llenguatge de programació, està lluny de ser considerat i com ja esmentem, un dels impediments principals per això és el mateix Linus Torvalds.


Deixa el teu comentari

La seva adreça de correu electrònic no es publicarà. Els camps obligatoris estan marcats amb *

*

*

  1. Responsable de les dades: AB Internet Networks 2008 SL
  2. Finalitat de les dades: Controlar l'SPAM, gestió de comentaris.
  3. Legitimació: El teu consentiment
  4. Comunicació de les dades: No es comunicaran les dades a tercers excepte per obligació legal.
  5. Emmagatzematge de les dades: Base de dades allotjada en Occentus Networks (UE)
  6. Drets: En qualsevol moment pots limitar, recuperar i esborrar la teva informació.