IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Carbon, le nouveau langage de programmation lancé par Google peut-il remplacer le C++ mieux que Rust ?
Carbon est destiné aux développeurs qui disposent déjà de bases de code importantes en C++

Le , par Bruno

38PARTAGES

8  0 
Frustrés par la lenteur de l'évolution du C++, les ingénieurs de Google ont lancé un nouveau langage de programmation open source « expérimental », appelé Carbon, qui pourrait succéder au vénérable C++ qui, pour certains, serait vieillissant. « Il est difficile pour les grands projets de convertir les bases du code C++ existantes en Rust », affirment les ingénieurs de Google.

Chandler Carruth, ingénieur logiciel principal de Google, a présenté Carbon cette semaine lors de la conférence C++ CPP Northà Toronto. Selon certains observateurs, « la nouvelle version de Carbon devrait être interopérable avec le populaire code C++, mais pour les utilisateurs qui souhaitent passer à la vitesse supérieure, la migration devrait être assez facile. » Pour ceux qui ne sont pas sûrs de vouloir changer complètement, Carruth a expliqué plus en détail certaines des raisons pour lesquelles Carbon devrait être considéré comme un successeur puissant du langage C++, notamment une grammaire plus simple et des importations d'API plus fluides.

Les ingénieurs de Google construisent déjà des outils pour traduire C++ en ce nouveau langage. Bien que Carbon ait commencé comme un projet interne de Google, l'équipe de développement souhaite réduire les contributions de Google, ou de toute autre entreprise, à moins de 50 % d'ici la fin de l'année. Les concepteurs veulent publier une version de base 0.1 d'ici la fin de l'année. Carbon sera construit sur une base de principes de programmation modernes, notamment un système générique, qui supprimerait la nécessité de vérifier et revérifier le code pour chaque instanciation.

La sécurité de la mémoire est une autre fonctionnalité indispensable qui fait défaut au C++. Les bogues d'accès à la mémoire sont l'une des principales causes d'exploitation de la sécurité. Les concepteurs de Carbon chercheront des moyens de mieux suivre les états non initialisés, de concevoir des API et des idiomes qui prennent en charge les vérifications dynamiques des limites et de créer un mode de construction de débogage par défaut complet. Les concepteurs prévoient de construire un sous-ensemble sûr de Carbon. Selon la documentation, le langage supportera :

  • développement rapide et évolutif ;
  • les logiciels à performances critiques ;
  • l'évolution des logiciels et du langage ;
  • un code facile à lire, à comprendre et à écrire ;
  • des mécanismes de sécurité et de test pratiques ;
  • plateformes OS modernes, architectures matérielles et environnements ;
  • interopérabilité avec le code C++ existant et migration à partir de celui-ci.
L'équipe de développement s'attachera également à créer un gestionnaire de paquets intégré, ce qui fait cruellement défaut au C++.

Voici un code C++ traduit en Carbon. Tout d'abord, le code C++ :


Voici la même fonction écrite en carbone :


Carbon pourra mieux remplacer le C++ que Rust ?

Rust est un langage de programmation compilé multiparadigme, conçu par Graydon Hore alors employé chez Mozilla Research, avec la contribution du créateur de JavaScript Brendan Eich. Utilisé par plusieurs grandes entreprises et par de nombreux développeurs dans le monde, Rust est devenu le langage de base pour certaines des fonctionnalités fondamentales du navigateur Firefox et de son moteur Gecko, ainsi que pour le moteur Servo de Mozilla.

Microsoft

Microsoft fait partie des membres fondateurs de la fondation Rust et dit vouloir collaborer avec la communauté pour continuer à améliorer le langage. L’entreprise promet de fournir des outils, une bibliothèque pour le langage et des ressources d’apprentissage.

Selon Nell Shamrell Harrington, Ingénieur logiciel chez Microsoft et directeur du conseil d'administration de la Fondation Rust, les logiciels et les langages open source sont d'une importance capitale pour son entreprise et pour l'ensemble de l'industrie technologique.

En outre, Microsoft a récemment formé une équipe Rust pour contribuer aux efforts d'ingénierie de l'écosystème du langage. L’entreprise spécialisée dans le développement de logiciel prévoit de travailler avec la communauté Rust sur le compilateur, les outils de base, la documentation et bien plus.

Google

Dans une annonce faite sur son blog ce 8 février, Google dit être ravie d’avoir rejoint la fondation Rust et se dispose pour travailler sur des questions comme l'interopérabilité avec C++. « S'appuyant sur les investissements de longue date de Google dans le C/C++ et les compilateurs et chaînes d'outils, nous sommes ravis d'annoncer notre adhésion à la fondation Rust », a annoncé Google sur son blog. « Nous sommes impatients de participer davantage à la communauté Rust, en particulier de travailler dans l'ensemble sur des questions importantes, notamment l'interopérabilité avec C++, la coordination des examens de sécurité, la réduction des coûts des mises à jour et de continuer à accroître nos investissements dans les projets Rust existants », a ajouté l'entreprise.

Selon Google, les défauts de sécurité de la mémoire menacent fréquemment la sécurité des appareils, en particulier pour les applications et les systèmes d'exploitation. Par exemple, sur le système d'exploitation mobile Android, Google dit avoir constaté que plus de la moitié des vulnérabilités de sécurité traitées en 2019 résultaient de bogues de sécurité de la mémoire. Et ce, malgré les efforts considérables déployés par l'entreprise et d'autres contributeurs au projet Open Source Android, pour investir ou inventer diverses technologies, notamment l'AddressSanitizer, des allocateurs de mémoire améliorés et de nombreux fuzzers et autres outils de vérification du code.

Amazon Web Service (AWS)

Amazon a pour sa part clairement reconnu qu’elle est principale bénéficiaire du langage Rust et des travaux de sa communauté. L'entreprise se dit heureuse de pouvoir participer aux futurs succès de Rust. Selon Shane Miller, responsable de l'équipe Rust chez AWS et également professeur d'université, la raison pour laquelle les ingénieurs choisissent Rust pour créer des services est que cela leur permet d'offrir aux clients des expériences qui répondent à leurs exigences de qualité et de sécurité beaucoup plus rapidement et à moindre coût.

AWS utilise Rust pour fournir des services tels qu'Amazon Simple Storage Service (Amazon S3), Amazon Elastic Compute Cloud (Amazon EC2), Amazon CloudFront, et plus encore. Récemment, l’entreprise a lancé Bottlerocket, un système d'exploitation basé sur Linux et écrit en Rust. L’équipe Amazon EC2 utilise le langage Rust pour développer les nouveaux composants du système Nitro d'AWS, y compris les applications sensibles, telles que les enclaves Nitro. Pour Shane Mille, en tant que membre fondateur de la Fondation Rust, l’entreprise se consacrera à l’un des objectifs de la fondation Rust qui consiste à donner aux responsables de Rust les moyens de faire joyeusement leur travail.

Pourquoi ne pas utiliser Rust ?

Longtemps, le langage de prédilection pour la création d'applications critiques en termes de performances, le C++ souffre d'un certain nombre de problèmes qui gênent les développeurs modernes, a expliqué Carruth. Il a accumulé des décennies de dettes techniques, entraînant avec lui de nombreuses pratiques dépassées qui faisaient partie du prédécesseur du langage, le C. Les gardiens du C++ donnent la priorité à la rétrocompatibilité, afin de continuer à soutenir des projets largement utilisés tels que Linux et son écosystème de gestion des paquets, explique Carruth.

L'évolution du langage est également entravée par un processus de comité bureaucratique, orienté vers la normalisation plutôt que la conception. Ce qui peut rendre difficile l'ajout de nouvelles fonctionnalités. Le C++ a largement un processus de développement séquestré, dans lequel un comité restreint prend les décisions importantes, dans un processus en cascade qui peut prendre des années.

La comparaison entre Rust et C++ reste un sujet d'actualité, car ces langages de programmation sont en concurrence dans des domaines comme le développement système et l'embarqué. Du point de vue technique, les deux langages partagent de nombreuses similitudes dans leur syntaxe. Cependant, Rust et C++ présentent des différences significatives.

C++ est un langage de programmation compilé permettant la programmation sous de multiples paradigmes, dont la programmation procédurale, la programmation orientée objet et la programmation générique. Ses bonnes performances, et sa compatibilité avec le C en font un des langages de programmation les plus utilisés dans les applications où la performance est critique.

En outre, c'est un langage polyvalent, ce qui signifie qu'il peut être utilisé dans presque tous les cas. Cependant, en raison de ses règles syntaxiques complexes et de son utilisation globalement difficile, il est principalement dominant dans les applications qui nécessitent une grande vitesse, la simultanéité et un examen plus approfondi du fonctionnement du matériel.

Toutefois, la sécurité de la mémoire est une autre fonctionnalité indispensable qui fait défaut au C++. Les bogues d'accès à la mémoire sont l'une des principales causes d'exploitation de la sécurité. Les concepteurs de Carbon chercheront des moyens de mieux suivre les états non initialisés, de concevoir des API et des idiomes qui prennent en charge les vérifications dynamiques des limites et de créer un mode de construction de débogage par défaut complet.

Pour certains analystes, le C++ possède des bases plus solides en ce qui concerne la communauté et les informations générales sur ses principes. En outre, par rapport au C++, Rust est un nouveau venu dans le monde de la programmation, et de nombreux développeurs hésitent à s'y intéresser.

La fin du C++ ?

De même que Microsoft a créé Typescript pour mettre à jour JavaScript et que Kotlin a été créé pour pallier les faiblesses de Java, Carbon pourrait servir de langage successeur à C++, un langage qui offre aux développeurs un point de départ facile vers un langage plus récent qui prend en compte les concepts de développement modernes tels que la sécurité de la mémoire et les génériques.

« La structure du comité est conçue pour assurer la représentation des nations et des entreprises, plutôt que de construire une équipe et une communauté inclusive et accueillante d'experts et de personnes contribuant activement au langage », écrit Carruth. « L'accès au comité et à la norme est restreint et coûteux, la présence est nécessaire pour avoir une voix, et les décisions sont prises par des votes des personnes présentes. »


Carruth veut construire Carbon par un environnement plus ouvert et dirigé par la communauté. Le projet sera maintenu sur GitHub, et discuté sur Discord. Bien que Carbon ait commencé comme un projet interne de Google, l'équipe de développement souhaite réduire les contributions de Google, ou de toute autre entreprise, à moins de 50 % d'ici la fin de l'année. Elle souhaite finalement confier le projet à une fondation logicielle indépendante, où son développement sera dirigé par des bénévoles.

Dans sa présentation à CPP North, Carruth a conseillé à ceux qui utilisent Rust de continuer à l'utiliser. Carbon est destiné aux développeurs qui disposent déjà de bases de code importantes en C++, difficiles à convertir en Rust. Carbon est spécifiquement ce que Carruth appelle un « langage successeur », qui est construit au-dessus d'un écosystème déjà existant, C++ dans ce cas.

« Il est conçu autour de l'interopérabilité avec C++ ainsi que de l'adoption et de la migration à grande échelle pour les bases de code et les développeurs C++ existants », expliquent les concepteurs. Cela signifie que le langage doit être aussi performant que C++, qu'il doit offrir une interopérabilité transparente et bidirectionnelle avec C++.

Source : Google

Et vous ?

Quel est votre avis sur le sujet ?

Google essaie-t-il de tuer le C++ ?

Pourquoi Carbon plutôt que le Rust pour améliorer les problèmes de sécurité et de mémoire en C++ ?

Selon vous, la fin du C++ est-elle envisageable ?

Voir aussi :

Microsoft, Google, AWS, Huawei et Mozilla s'associent pour créer la Fondation Rust, une organisation à but non lucratif chargée de gérer le langage de programmation

Le projet Carbon, un successeur expérimental du C++, explore une direction future possible pour le C++ étant donné les difficultés à l'améliorer et mise sur l'interopérabilité comme base de travail

C3 : un langage de programmation système basé sur le C, permet un accès sécurisé aux tableaux, les conteneurs de haut niveau et manipulation des chaînes de caractères

Une erreur dans cette actualité ? Signalez-nous-la !

Avatar de grunk
Modérateur https://www.developpez.com
Le 27/07/2022 à 11:35
Citation Envoyé par Madmac Voir le message

Moi ce qui me dérange le plus est qu'ils me semble pas avoir une idée très clair de la direction de l'évolution. Plutôt que de tenter de modifier le language, il devrait développer un surchose pour rendre le langage plus accessible et moins sujet aux fuites. J'ai jamais compris la raison pour laquelle, personne n'a développer une librairie pour faire du pure objet en C++..
Depuis C++11 tu as les smartpointer qui permettent dans la grande majorité des cas de ne pas faire de fuite mémoire puisqu'on à plus gérer la désallocation
Et au contraire je trouve que la direction de C++ est très claire => faciliter son utilisation et se rapprocher des langages de plus haut niveau dans l'utilisation tout en gardant les performances qui font le succès de C++.

Entre du C++98 et du C++20 c'est le jour et la nuit.

Pour moi le gros défaut de C++ c'est qu'il y'a des dizaines de façon différentes de faire la même chose en fonction du niveau d'optimisation qu'on veux atteindre. Ca rend les choses extrêmement compliqué et la courbe d'apprentissage plutôt raide.
Je me débrouille en C++ et parfois je me mets à lire le code de certaines lib (genre boost) et je me rend compte que je suis une sous merde parce que je ne comprend pas la moindre ligne de ce que je lis
12  0 
Avatar de AoCannaille
Expert confirmé https://www.developpez.com
Le 27/07/2022 à 11:55
Citation Envoyé par grunk Voir le message
Je me débrouille en C++ et parfois je me mets à lire le code de certaines lib (genre boost) et je me rend compte que je suis une sous merde parce que je ne comprend pas la moindre ligne de ce que je lis
ça me fait plaisir de lire ça, je suis exactement dans le même cas ^^' ça soulage un peu mon syndrome de l'imposteur
10  0 
Avatar de OuftiBoy
Membre éprouvé https://www.developpez.com
Le 12/09/2024 à 18:34
Bjarne Stroustup, le créateur original de C++, a dénoncé lui-même la dérive qu'a prit le comité qui dirigent les évolutions de C++.
Ils leurs reproche d'ajouter des micro-fonctionnalités, qui ne sont utilent qu'à 0,01% des projets ou des développeurs, et qui pourrait être déjà fait avec l'existant. En fait, le C++ est maintenant piloté par un comité de gens certes très compétants, mais qui font de la masturbation intellectuel pour pondre des concepts qui sont très éloignés de ce dont ont besoin les développeurs dans le monde réel.

C'est malheureux, car voilà un langage qui avaient du succès, qui répondait à un besoin, mais qui va crouler sous sont propre poids.

BàV et Peace & Love.
7  0 
Avatar de OuftiBoy
Membre éprouvé https://www.developpez.com
Le 15/09/2024 à 10:42


Citation Envoyé par Brunoo  Voir le message
Pour remplacer le C++ n'y a-t-il pas déjà le langage D ? C'est en tout cas son ambition affichée.

D aurait pu être ce "nouveau C++", mais il n'a pas décollé, parce qu'au moment où il est sorti:

  • il n'était pas rétrocompatible avec le C
  • C++ n'était pas encore devenu le monstre qu'il est aujourd'hui, et a prit naturellement la relève.
  • Grâce à sa compatibilité avec le C, il avait déjà tout un éco-système, et une communauté autours de lui.


Quitte a repenser le C++, ce serait judicieux d'éviter de créer un langage a la syntaxe moche.
Car, selon moi, ce qui a fait le succès des langages comme Java et C# c'est aussi la lisibilité de leurs syntaxes.

La syntaxe, c'est une affaire de goût, d'habitude, mais surtout de lisibilité. Je dis souvent qu'on lit plus souvent son code qu'on ne l'écrit. Java, possédait (et possède toujours) des atouts, mais:

  • Il est très verbeux, rendant le code "surchargé" et difficile à lire.
  • Il tourne via une "machine virtuelle", qui même si elle possèce un JIT maintenant, ce n'était pas le cas à ses débuts.
  • Et à cause du fait qu'il tourne en s'appuyant sur une "machine virtuelle", il ne pouvait et ne peut pas être comparé au C/C++ qui peuvent compiler du code natif, pour plusieurs architecture. Il y a toujours un compilateur 'C' pour chaque architecture, de la plus petite à la plus grande.
  • Puis Python est arrivé est s'est fortement implenté. On dit qu'il est lent (parce que lui aussi tourne sur une machine virtuelle), mais il sait très facilemment utiliser du code 'C', ce qui fait que tout traitent "lourd" est souvent exécuté à la vitesse du 'C'.


Pour C#, c'est un peu le "java" de microsoft. La puissance de microsoft est derrière ce langage, mais lui aussi tourne sur une "machine virtuelle", même s'il a maintenant aussi un JIT, il ne peut en rien être comparé (tout comme Java), question vitesse, à C/C++. Il a prit de l'importance et est très utilisé, car il y'a microsoft derrière, est ça "rassure" les entreprises quant à sa pérénité.

Le Go, je ne connais pas, donc j'évite de faire des commentaires sur une technologie qui m'est inconnue.

Et je ne parle même pas du fait que l'adoption d'un nouveau langage tien aussi au fait que chaque instruction soit non seulement documentée mais surtout accompagnée d'un exemple pratique et utile (codes snippets), afin de faciliter la mise en pratique.

Il n'y a pas que ça, il faut tout un écosystème autours d'un langage. De la doc, oui, mais aussi des librairies, des éditeurs, bref, toute une floppée d'outils.
Il faut aussi créer tout une communauté, qui perdure et sait acceuillir les développeurs qui se pencheront sur un langage.

Et un petit dernier pour la route Il n'y a pas langage qui soit adapté à toutes les situations. Il ne me viendrait pas à l'idée de faire une grosse application en 'C'. C'est plutôt le C++ qui serait utilisé dans ce cas. Dans le domaine de l'embarqué, le seul langage que tu es certains d'avoir, c'est le 'C'. Dans le domaine banquaire, c'est toujours du COBOL qui est utilisé. Certains ont bien tenté de ré-écrire les vielles application COBOL en java ou en C++, mais tout les essais ont échoués, car c'est très difficile de reconstruire un système qui fonctionne à l'identique.

Et il y a une grosse masse de code 'C' dans la nature, et on ne remplacera pas celui-ci du jour au lendemain.

Actuellement, quelques langages se démarquent des autres:

  • Python chez les "data scientist", et les "ingénieurs", car il est trés simple à écrire et à relire, et à tout ce qu'il faut pour les satisfaire question librairires (numPy par exemple) pour s'affranchir sa "relative" lenteur.
  • lua, est lui aussi un langage "dynamique" comme Python, et est simple à utiliser. Sa machine virtuelle est aussi plus rapide que celle de Python, car c'est une "register based VM", là ou Python/Javan reposent sur des "stack based VM".
  • C# pour ceux qui ne veulent être "rassuré" par le fait que Microsift soit derrière.
  • Le 'C' reste indispensable grâce à sa vitesse, son éco-système, et qu'il reste le plus rapide, car très proche de ma machine. Son désavantage, c'est que si on ne fait pas très attention, on peut vite introduire des vulnérabilités. Mais dans l'embarqué, c'est toujours 'LA' référence, et avec la base de code installée, il est encore là pour très longtemps.
  • C++, car (tout comme le C), il il peut produire du code natif et est de ce fait très utilisé. Et il a profité de la vague POO à ses début. Il est également très installé.
  • COBOL reste utilisé dans le domaine bancaire.


Et puis, il y'a maintenant le petit nouveau (enfin, a quand même 10 ans) Rust qui peut pratiquement égaler C/C++ niveau vitesse, mais qui est nettement plus sécurisé niveau gestion mémoire et évite pas mal d'erreurs qu'on peut faire en C/C++, car le langage (et son compilateur) fournira des erreurs et ne compilera pas un code dangereux.

C'est je pense le seul langage (qui produit du code machine) qui peut/pourra rivaliser avec le C/C++. Je suis en train de me pencher dessus, et pour un vieux développeur 'C' comme moi, sa "syntaxe" me déroute énormément (mais avec le temps, ça viendra), et il faut parfois se battre avec le compilateur pour qu'il accepte de compiler un code, car les différents verrous qu'il possèdent pour être "sécure" sont parfois "lourds" a digérer pour les vieux développeurs 'C', qui savent ce qu'il font. Mais on fait tous des erreurs, et si le langage permet d'en éviter, ça ne peut être d'une bonne chose.

[B]Rust[B] est déroutant, et il faut s'accrocher et persévérer, car oui, les concepts qu'il aborde sont traités différement que d'autres language, mais rend le code plus "sécure".

Mais, je le répête, il n'y a pas de langage meilleurs qu'un autres. Il faut choisir son outils par rapport à ses besoins. On utilise un marteau pour enfoncer un clou, et un tournevis pour viser une vise. L'inverse n'aurait pas de sens.

BàV et Peace & Love.
6  0 
Avatar de walfrat
Membre émérite https://www.developpez.com
Le 25/07/2022 à 8:56
Ma pensée sur le sujet :

https://xkcd.com/927/
7  2 
Avatar de smarties
Expert confirmé https://www.developpez.com
Le 12/09/2024 à 11:07
Quels autres aspects du langage C++ aimeriez-vous voir améliorés dans les futures versions ?
Un gestionnaire de dépendances, je n'ai fais plus de C++ depuis 2006 mais j'ai parfois cherché à compiler certains programmes et c'est une galère à chaque fois car la bibliothèque manquante n'était pas clairement notée : il faut se baser sur le nom du fichier ou chercher dans le makefile et ça demande du temps à chaque fois.
5  0 
Avatar de smarties
Expert confirmé https://www.developpez.com
Le 26/07/2022 à 12:43
Citation Envoyé par progz_du_dimanche Voir le message
Kotlin à vraiement remplacer Java ?
Sur Android en partie
En Web, je dirais que c'est plutôt Go

Mais JAVA est encore énormément utilisé

Il aurait peut été été plus judicieux d'enrichir RUST (langage, bibliothèques, documentation, best practices, exemples) plutôt que de créer un autre langage
4  0 
Avatar de d_d_v
Membre éprouvé https://www.developpez.com
Le 12/09/2024 à 11:03
il faudrait surtout "nettoyer" les fonctions existantes, peu utilisées/utilisables, mais ils ne peuvent s'empêcher de rajouter de nouvelles variantes de fonctions existantes. Je me demande qui les utilisent réellement. Par exemple, il existe maintenant 14 variantes de la fonction replace de std::basic_string !!
Et pourtant, on n'a toujours pas une fonction simple pour remplacer une ou plusieurs occurrences d'une sous-chaîne par une autre (case sensitive/insenstive) dans une chaîne. On n'a toujours pas accès non plus à des fonctions de trim. Pour chaque nouveau poste en entreprise, chaque projet utilise soit boost ou a sa propre librairie pour manipuler les string !
Pendant ce temps, le comité c++ invente des nouveaux concepts ou des nouvelles variantes de fonctions que je n'ai personnellement jamais croisées dans aucun projet. J'ai pourtant plus de 20 ans d'expérience !
4  0 
Avatar de smarties
Expert confirmé https://www.developpez.com
Le 26/07/2022 à 22:04
Citation Envoyé par jpouly Voir le message
Je ne comprend pas cette obstination à vouloir remplacer le C/C++ par un autre langage.
Pour avoir fait un peu de C et de C++ il y a eu des problèmes très agaçants :
- les bibliothèques non portées sur différents OS et une compilation pas toujours facile, sur RUST c'est beaucoup moins le cas
- une syntaxe pas toujours lisible, avec RUST il faut plutôt comprendre certains concepts
- des fuites mémoires pas toujours facile à trouver
- un manque d'industrialisation, quand je vois Cargo et la facilité d'écrire des tests unitaires en RUST, je me demande si les autres langages ont pensé à mettre ça dans leur feuille de route (OK pour les dépendances, JAVA a Maven, Go a quelque chose de similaire, Python a pip, ...)

PS : je suis développeur python
3  0 
Avatar de Fagus
Membre expert https://www.developpez.com
Le 27/07/2022 à 19:03
Citation Envoyé par grunk Voir le message

Pour moi le gros défaut de C++ c'est qu'il y'a des dizaines de façon différentes de faire la même chose en fonction du niveau d'optimisation qu'on veux atteindre. Ca rend les choses extrêmement compliqué
C'est peut être justement pour ça que google a lancé des langages neufs simplifiés comme go. Justement pour que les gens arrêtent d'être créatifs en écrivant un code génial que personne d'autre n'arrive à comprendre, ce qui arrive assez vite grâce à 50 ans d'héritage, sans compter les concepts qui cachent du code comme la surcharge...

Plus haut quelqu'un a dit que c'est dommage d'avoir retiré l'héritage multiple. Ben oui, ça sert, mais quand on se retrouve avec un objet qui hérite de 25 autres classes avec des schémas tordus, ça augmente les chances d'avoir un comportement différent de ce qu'on avait imaginé.
J'imagine que c'est dans ce but qu'ils l'ont enlevé.

There should be one– and preferably only one –obvious way to do it.
ça, c'était dans le zen de python. Je ne suis pas sûr que c'était vrai un jour, mais avec le temps et l'accumulation d'améliorations, c'est forcément de moins en moins vrai (juste pour dire que c'est sans doute une sorte de cycle. Devant un vieux langage complexe plein d'héritage, des gens créent un nouveau langage plus simple, mais finalement empilent des améliorations et tout recommence. C'est pour ça qu'il ne faut écrire qu'avec deux instructions : if et goto )
3  0