Il y a encore des projets passionnants en C++. Je travaille sur un gros système financier sous fortes contraintes de performance et de latence dont la plus grosse partie sort d'une base de code d'environ 2 million de lignes de C++, dont une grosse moitié est générée via une moulinette maison.
Pour nous, le C++ a vraiment très bien marché. Nous avons pu utiliser les fonctionnalités du langage pour monter un cadre orienté événements qui fait la part belle à l'héritage multiple: je m'enregistre sur toutes les sources de données qui m'intéressent, et je me fais appeler sur mon objet de manière thread-safe. Comme ces sources de données se ressemblent beaucoup, nous utilisons à fond les templates pour factoriser le code et réduire la duplication. Nous utilisons le plus possible la bibliothèque standard, qui s'est étoffée et est maintenant de très bonne qualité.
Nous pouvons nous interfacer avec des bases de données en écrivant des adapteurs RAII autour de leurs API C, avec des variadic templates pour avoir des types sûrs, nous avons un accès bas niveau sur le disque et sur le réseau, et pouvons bénéficier de tout un tas d'outils de mesure de performances, de Valgrind à gprof en passant par Intel VTune. Nous utilisons même Wt, une bibliothèque qui propose la création d'applications Web que l'on code comme en QT, pour nos interfaces utilisateurs.
Comme nous avons la main sur tout ce qui se passe, il est aisé, quand c'est nécessaire, de descendre aussi bas que voulu: éviter les allocations, faire attention au principe de localité, voire tenter de transformer les "if" pour réduire les branches.
Tout cela est également possible en Java, par exemple, mais éviter les allocations en Java présuppose de passer par des réservoirs d'objets et devient rapidement moche. Avec le C++, nous arrivons souvent à encapsuler ces constructions très bas niveau derrière de belles interfaces afin de garder un ensemble propre et bien architecturé.
# C++ mon amour
Posté par small_duck (site web personnel) . En réponse à la dépêche Faut‐il continuer à apprendre le C++ ?. Évalué à 9.
Il y a encore des projets passionnants en C++. Je travaille sur un gros système financier sous fortes contraintes de performance et de latence dont la plus grosse partie sort d'une base de code d'environ 2 million de lignes de C++, dont une grosse moitié est générée via une moulinette maison.
Pour nous, le C++ a vraiment très bien marché. Nous avons pu utiliser les fonctionnalités du langage pour monter un cadre orienté événements qui fait la part belle à l'héritage multiple: je m'enregistre sur toutes les sources de données qui m'intéressent, et je me fais appeler sur mon objet de manière thread-safe. Comme ces sources de données se ressemblent beaucoup, nous utilisons à fond les templates pour factoriser le code et réduire la duplication. Nous utilisons le plus possible la bibliothèque standard, qui s'est étoffée et est maintenant de très bonne qualité.
Nous pouvons nous interfacer avec des bases de données en écrivant des adapteurs RAII autour de leurs API C, avec des variadic templates pour avoir des types sûrs, nous avons un accès bas niveau sur le disque et sur le réseau, et pouvons bénéficier de tout un tas d'outils de mesure de performances, de Valgrind à gprof en passant par Intel VTune. Nous utilisons même Wt, une bibliothèque qui propose la création d'applications Web que l'on code comme en QT, pour nos interfaces utilisateurs.
Comme nous avons la main sur tout ce qui se passe, il est aisé, quand c'est nécessaire, de descendre aussi bas que voulu: éviter les allocations, faire attention au principe de localité, voire tenter de transformer les "if" pour réduire les branches.
Tout cela est également possible en Java, par exemple, mais éviter les allocations en Java présuppose de passer par des réservoirs d'objets et devient rapidement moche. Avec le C++, nous arrivons souvent à encapsuler ces constructions très bas niveau derrière de belles interfaces afin de garder un ensemble propre et bien architecturé.