Après avoir lu ça, il me semble que le principal problème c'est que les équipes de Google ne peuvent pas convertir tout leur code C++ dans un nouveau langage. Il faut que le nouveau langage puisse s'interfacer avec le C++. Il y a plein de langages qui s'interfacent assez bien avec le C et les struct, mais pour le C++, c'est plus compliqué.
Par exemple, si carbon appel une méthode du C++ qui prends en paramètre un vecteur d'une classe en C++. il va falloir créer les objets du C++ dans Carbon, puis créer un vector de la librairie C++ dans carbon, et après faire l'appel à la méthode. Et je ne parle même pas des problèmes de méthode template, du Name mangling, et autres joyeuseté du C++.
D’ailleurs, on dirait qu'ils vont migrer tout leur code C++ sur Carbon, et apres au revoir C++. Ils seront plus ou moins compatible jusqu’à C++17, et pour C++20, ils vont faire au cas par cas :
Interoperability will target C++17. Any interoperability support for future versions of C++, including features such as C++20 modules, will be based on a cost-benefit analysis. Exhaustive support should not be assumed.
[^] # Re: https://killedbygoogle.com/
Posté par vitanix . En réponse au journal Google forke C++. Évalué à 6.
Après avoir lu ça, il me semble que le principal problème c'est que les équipes de Google ne peuvent pas convertir tout leur code C++ dans un nouveau langage. Il faut que le nouveau langage puisse s'interfacer avec le C++. Il y a plein de langages qui s'interfacent assez bien avec le C et les struct, mais pour le C++, c'est plus compliqué.
Par exemple, si carbon appel une méthode du C++ qui prends en paramètre un vecteur d'une classe en C++. il va falloir créer les objets du C++ dans Carbon, puis créer un vector de la librairie C++ dans carbon, et après faire l'appel à la méthode. Et je ne parle même pas des problèmes de méthode template, du Name mangling, et autres joyeuseté du C++.
D’ailleurs, on dirait qu'ils vont migrer tout leur code C++ sur Carbon, et apres au revoir C++. Ils seront plus ou moins compatible jusqu’à C++17, et pour C++20, ils vont faire au cas par cas :
Interoperability will target C++17. Any interoperability support for future versions of C++, including features such as C++20 modules, will be based on a cost-benefit analysis. Exhaustive support should not be assumed.