Je pense que de plus en plus, C++ va devenir un langage comme FORTRAN ou COBOL: utilisé quand on a besoin de plus de vitesse ou pour de la maintenance de vieux logiciels. C++ a été bon pendant un temps, mais il vient le temps de changer.
- Sécurité: du C++ "unmanaged", c'est pas ce qu'il y a de plus sécure. Il y a plein de monde qui disent "Ah, si tu sais ce que tu fais, t'auras pas de problèmes!" Ben, j'ai des nouvelles pour vous: la gang de OpenBSD, des gars obsédés par la sécurité et qui codent en C et C++ trouvent des trous de sécurité à tout bout de champ! Venez pas me dire que parce que vous savez comment les pointers ou la gestion de la mémoire fonctionnent que vous allez jamais vous tromper. Les langages de haut niveau qui automatisent ces tâches, les cachent derrière une couche d'abstraction sont vos amis.
- Rapidité de développement: la vitesse d'exécution d'un programme, bien qu'encore importante, n'a plus l'importance qu'elle avait dans les années 70, 80 et 90. Les CPU sont rendus très rapides, les compilateurs optimisent le code comme ça se peut pas, donc tant qu'on fait pas de conneries dans son code, la performance du programme va être acceptable (surtout dans une application graphique, où elle passe 90% de son temps à rien faire: peut-on optimiser le rien-faisage?) La performance d'un programmeur par contre n'a pas vraiment changé, un programmeur peut encore n'écrire que n lignes de codes par jour. Si les lignes de codes qu'il écrit accomplissent plus d'opérations, s'il n'a pas besoin d'écrire certaines fonctions, s'il peut réutiliser facilement du code qu'il a déja écrit, s'il n'a pas à effectuer lui-même certaines opérations fastidieuses (telle que la gestion de la mémoire) etc. cela lui permet d'accomplir plus en moins de temps. Dans un monde où on veut tout immédiatement, recourir à un langage de haut niveau n'est pas un luxe: c'est un "must".
- Fonctionnalités qui n'existent pas: plus l'utilisation de logiciels devient courante, plus les usagers sont exigeants. Viendra-t-il un temps où C++ ne pourra pas fournir certaines fonctionnalités? Je le pense. Par exemple, pour mettre une application à jour, pourquoi est-ce que ça ne pourrait pas être comme dans le monde Smalltalk: on change l'image et *pouf* le programme s'adapte (s'il a été conçu avec ce genre de changements en tête, bien sûr). Cela permet à un système d'être fonctionnel 100% du temps, sans empêcher les mises à jour.
Le plus grand obstacle selon moi à l'adoption d'autres langages pour la programmation d'applications (je ne parle pas de programmation système, car c'est un domaine où je n'y connais rien) c'est la mentalité du programmeur. Il y a un gars sur la première ou deuxième page qui dit qu'il ne peut pas imaginer une grosse application sans pointeur. Le monde va t'il finir par accepter du byte-code JITé à l'exécution, ou voudra-t-il toujours du code natif? Est-ce que seulement les langages impératifs et OO dérivés d'un langage impératif (C++, Java, C#) vont être vus comme étant sérieux, ou si des langages fonctionnels (Haskell, O'Caml, SML, Erlan) ou des langages OO purs (Smalltalk, Eiffel, Ruby) vont pouvoir devenir de sérieuses alternatives? Est-ce que le typage statique de type Hindley-Milner va faire son apparition dans Java ou C#? Est-ce que le typage dynamique va continuer à effrayer les programmeurs habitués au typage statique? Est-ce que des langages n'étant pas uniquement ASCII (langages avec des images, avec lesquels on pourrait faire des liens en tirant des lignes, etc.) pourront attirer les programmeurs?
Mais, oui je crois que l'utilisation de C++ pour de nouveaux projets va diminuer. On le voit déja ici: les utilisateurs du langage Delphi sont très nombreux, idem pour les développeurs Java et .NET.
Vincent.
P.S: Soit dit en passant, en terme de performances dans le domaine du 3D, il semblerait que la version C#/.NET de l'engin Ogre (C++), Axiom, soit plus rapide que la version C++
http://www.gamedev.net/community/forums/topic.asp?topic_id=200089&whichpage=5
Partager