C++ aujourd�hui est-il comme Fortran ? Aurait-il a atteint ses limites ?
Un ing�nieur explique pourquoi il ne s'adonne plus beaucoup au C++ moderne
C++ est l'un des langages de programmation les plus largement utilis�s dans le monde d�apr�s de nombreux barom�tres, mais �galement notre sondage lanc� en 2015 o� le langage conservait une place dans le peloton de t�te des langages pr�f�r�s des d�veloppeurs. Gr�ce � la flexibilit� du langage, il est possible de l�utiliser pour cr�er une large gamme d�applications, mais �galement des jeux. Depuis, C++ a �volu� via plusieurs it�rations.
Henrique Bucher est un ing�nieur sp�cialis� dans la conception de logiciels scientifiques qui travaille dans le secteur des services financiers. Partageant son exp�rience dans un billet blog, il a expliqu� les raisons pour lesquelles il ne s�adonne plus beaucoup au C++ moderne.
Une perte de performance : selon lui, le C++ moderne int�gre une potentielle perte de performance � cause des structures qui deviennent de plus en plus complexes et qui sont pass�es au compilateur. � C�est ici que Fortran excelle �, affirme-t-il en expliquant que � gr�ce � un langage plus simple, les compilateurs sont en mesure de l�optimiser plus efficacement que s�il s�agissait d�un code C/C++ �quivalent �. Se basant sur son exp�rience sur les transactions � haute fr�quence (qui d�signent l�ex�cution � grande vitesse de transactions financi�res faites par des algorithmes), mais aussi dans l�industrie du jeu, il estime que c�est une utopie de croire que les templates vont �tre plus rapides parce que le code C++ va s��vanouir comme par magie durant la compilation. � C�est m�me l�oppos� : de plus petits octets de code peuvent �tre compil�s, d�bogu�s et optimis�s en observant l�assemblage g�n�r� de fa�on bien plus efficace que les templates �.
Les temps de compilation : Il affirme que les templates augmentent de fa�on significative le temps de compilation � cause de la recompilation d�un plus grand nombre de fichiers impliqu�s. � Tandis qu�une simple classe traditionnelle C++ sera recompil�e si les fichiers en-t�te directement inclus sont modifi�s, dans un param�trage en moderne C++, un simple changement va souvent provoqu� une recompilation globale. Il n�est pas rare de voir des applications d�velopp�es en C++ moderne qui prennent 10 minutes pour �tre compil�es, tandis qu�avec le C++ traditionnel cette dur�e se compte en secondes pour un changement simple �.
La maintenance : citant Edger Djikstra, un math�maticien et informaticien n�erlandais du XXᵉ si�cle, qui a d�clar� que � la simplicit� est une condition pr�alable � la fiabilit� �, il estime que ce mantra peut �tre appliqu� directement aux templates : � ce n�est pas que la fonctionnalit� en elle-m�me est mauvaise, mais sa structure inh�rente conduit � un code complexe qui pourrait �ventuellement faire perdre la caract�ristique la plus d�sir�e d'un code source: la facilit� de compr�hension �. � Lorsque vous programmez des syst�mes de transactions qui peuvent envoyer 100 000 commandes par seconde depuis des plateformes avec des strat�gies qui sont impl�ment�es en production sur un cycle de production de deux jours, vous VOULEZ la simplicit�, vous avez BESOIN de la simplicit�. Ce qui me conduit � la r�gle suivante : �si vous �tes incapables de d�terminer en une minute ce que fait un fichier C++, supposez que le code est incorrect� �.
Il continue en disant que la v�ritable raison pour laquelle il ne s�adonne plus au C++ moderne, bien qu�il reconnait qu�il est plut�t efficace dans certains cas de figure, est � qu�il y a tellement de choses d�velopp�es en industrie sur lesquelles je dois porter mon attention �. � C++ aujourd�hui est comme Fortran : il a atteint ses limites. De nos jours, il y a des interfaces si rapides que la notion de �cycle ferm� cesse d�exister dans certaines parties du syst�me. La vitesse est telle que si deux octets sont envoy�s au m�me moment depuis deux canaux adjacents, ils vont probablement se d�synchroniser apr�s avoir parcouru moins d�un m�tre. Pour g�rer ce type de vitesse qui est livr� en masse par les entreprises technologiques, C++ ne peut plus �tre utilis� parce qu�il est intrins�quement en s�rie, m�me dans des syst�mes massivement multithread comme les GPU �.
� Aujourd�hui, le �technologue moderne� doit se fier � un nouvel ensemble de langages : Verilog, VHDL. Les nouveaux technologues doivent �tre en mesure de concevoir leurs propres CPU, cr�er leur propre carte m�re virtuelle, autrement ils vont �tre emport�s par l�avalanche d�avancements technologiques qui arrive dans les prochaines ann�es �.
� Ce n'est pas pour dire qu'il est impossible de cr�er des plateformes bas�es sur le C++ moderne avec une faible latence et rapides, mais cela cr�e de nombreux obstacles qui peuvent paralyser une �quipe ou g�n�rer des graphiques extr�mement difficiles � optimiser avec lesquels les compilateurs C++ auront des difficult�s �.
Il conclut en disant que, de son point de vue, C++ est un langage comme Fortran : il montre des signes de vieillesse. Pour lui C++ est g�nial, mais n�est juste � plus suffisant � : un nouveau technologue ne saurait donc plus �tre restreint � un tel environnement s�rialis� et garder son esprit ouvert pour pouvoir profiter de nouveaux outils et nouvelles techniques afin de g�rer la nouvelle g�n�ration de technologies qui seront livr�es durant les prochaines d�cennies.
Source : blog Henrique Bucher
Et vous ?
Partagez-vous son point de vue ?
Voir aussi :
Quel est votre langage de programmation pr�f�r� en 2015 ? Partagez votre exp�rience sur le langage de votre choix
Forum C++
Rubrique C++
Partager