Note de l’auteur
The World is built on C++.
Herb Sutter
C++ est profondément riche et intense comme langage. Avec le temps, il est devenu élégant et Moderne. Malgré des milliards dépensés en marketing, il n’a pas été remplacé par les langages dits « productifs ». Les systèmes d’exploitation comme Microsoft Windows, Mac OS ou Linux sont toujours faits avec. Les suites bureautiques comme Office aussi… Les jeux vidéo…
En 2018, j’ai contacté DUNOD pour leur proposer ce projet de livre car il n’existe que peu de livre sur le C++ Moderne, c’est-à-dire le C++ post C++11, date à laquelle sont apparues tout un ensemble de fonctionnalités comme les pointeurs intelligents, la déduction de type automatique (auto) et la suprématie de la bibliothèque standard STL avec ses strings, containers et algorithmes entre autres.
Beaucoup de livres C+ en français parlent de C++03 mais ne détaillent pas les fonctionnalités des derniers standards comme C++14 et C++17. Le nouveau standard C++20 arrive en Janvier 2020. Ce livre vous permet, par une approche par l’exemple, de connaitre toutes ses fonctionnalités.
En tant que professionnel du développement C++, je suis MVP Developer Technologies et j’ai accès au code source des derniers O.S. Windows. Pour vous donner une idée rapide, Microsoft a toujours fait ses O.S. et ses logiciels en C/C++. Pour Microsoft, le C++ c’est naturel, c’est comme l’électricité. Il n’y a pas de débat. On veut développer un produit, on le fait en C++. C’est avant tout une nécessité de performance par défaut et de ce que les gens nomment « Power and Performance ».
Le C++ ne fait aucun compromis là-dessus. Sans violer le NDA qui me lie à Microsoft, je peux vous dire que le code source de Windows 10 est truffé de C++ Moderne, des templates, d’utilisation de la STL et utilise toutes les fonctionnalités possibles de C++. Le code est propre, dense, orienté objet et comme dit Marian Luparu, Principal Group Manager de Visual C++, « Microsoft is committed to C++ ». Cela veut dire que Microsoft s’engage sur C++. Il ne faut pas oublier que son équipe et son produit, Visual C++ (MSVC), le compilateur C++ de Microsoft, compile les produits phares comme Windows 10, Windows Server, Office, SQL Server entre autres donc Visual C++ est le joyau interne de Microsoft : c’est lui qui fabrique les logiciels phares de la société de Redmond. Chez Microsoft, chaque groupe produit fait du C++.
En 2011, Channel9 sortait une vidéo de Craig Symonds et Mohsen Agsen : C++ Renaissance[3]. Le C++ connaît actuellement une renaissance. Cela signifie que, par définition, le langage, les compilateurs et l’outillage de composition évoluent et on arrive à un état qui maximise l’efficacité, la productivité et la créativité des développeurs natifs dans tous les domaines matériels et logiciels (PC, appareils mobiles, systèmes d’exploitation, applications utilisateur, services, etc.). C++ est un langage de programmation « système » puissant, mais c’est plus que cela. C’est orienté objet, mais c’est plus que cela.
Dans le monde Linux, la suprématie de C/C++ est sans comparaison. Comme dans Windows, le noyau (kernel) et les pilotes de périphériques (drivers) sont écrits en C et tout le reste en C++ sauf les couches historiques. Les applications phares comme Apache, MySQL, Redis pour ne citer qu’elles sont faites en C/C++. Il existe même une distribution Linux nommée Gentoo qui propose de construire son environnement Linux à partir des sources. Le système portage télécharge un petit compilateur pour compiler GCC puis GCC compile tout : le noyau, les drivers, les couches de l’OS, Bash & Tools, X-Motif, Gnome, KDE, etc.
Je ne remercierais jamais assez Papy Jean-Marc de m’avoir fait découvrir le monde des ordinateurs quand j’étais tout jeune. Mon premier ordinateur était un Commodore C64 ou je découvrais les jeux vidéo. Puis nous avons eu un Amiga dans les années 80/90 et j’ai découvert AMOS Basic et je suis tombé dans la programmation. Je suis tombé par hasard sur les compilateurs Aztec C et Lattice C/C++ et ce fut mes débuts en C/C++. Puis, mon père a ramené de son travail un PC 286 SX25 avec Borland Turbo C et C++ pour MS-DOS. J’ai fait mes premières applications sous DOS puis pendant mes études, j’ai réalisé tous mes projets en Visual C++ sous Windows. A l’époque, nous sommes sous Windows 3.11 et Visual C++ 1.52c 16 bits.
En 1994, Je fais un stage dans une entreprise (Replay Software) à côté de Dijon qui fait un logiciel de 3D sous Windows NT. Les managers, Olivier Daguet et Jean-Claude Lavoignat me font découvrir la programmation par interruption en MS-DOS en C et surtout la programmation Windows SDK via la documentation MSDN Library July 1994, la documentation des développeurs Microsoft. Je tombe amoureux de cet environnement de Microsoft, des API Windows et du C/C++. Je découvre les CD MSDN et le Windows SDK et je suis fasciné par le système Windows. Ma première rémunération se fait en composants matériel : une tour avec un processeur DX2-66.
En 1995, je finalise mon apprentissage du C++ et de la programmation Windows avec les MFC (Microsoft Foundation Classes). J’ai la révélation : ce mode de développement des applications est l’avenir. Encapsulation de l’API Windows C en C++, canevas d’application SDI/MDI (Single/Multi Document Interface), support des applications composites et OLE2, support d’accès aux bases de données via ODBC, composants graphiques (toolbars, menu, dialog), etc.
Mon premier job en Septembre 1995 est chez Cerius Informatique à Dijon, le GIE des Banques Populaire (nommé maintenant iBP) et je suis missionné en freelance pour migrer le code OS/2 des serveurs d’agence vers Windows NT 3.51 sous la Direction de Jean-Pierre Muntz. Avec mon partenaire, Raphaël Mansuy, major de promotion du DEA Intelligence Artificielle et Base de données, nous faisons une solution C++ sous Windows qui communique avec le Mainframe IBM qui sera adoptée par toutes les agences Banques Populaire (Projet Popix Win01). En 1997, je participe au projet Int01 de site Internet de gestion des comptes, bâti sur l’architecture des serveurs d’agences en C++ ISAPI sous Windows NT 4. Ce fut l’un des premiers sites de consultation de comptes en ligne en France. Avec le règlement de ma première facture, je m’abonne à MSDN. Je reçois toutes les mises à jour du produit Visual C++ et du Windows SDK. Je m’achète aussi plein de livres Microsoft Press comme « Programming Windows », « Inside Visual C++ » et de livres sur C++. Depuis 25 ans, la passion est intacte.
En 2001, je décroche un contrat à la Société Générale pour debugger l’application principale (MAIA, projet URTA) des serveurs d’agences qui communique avec le Mainframe IBM sous la Direction de Pierre Michel et je découvre le monde des middlewares avec Tuxedo mixé avec des composants COM multithreads. Je deviens un spécialiste des boites noires de communication.
En 2003, mon ami Philippe Brand m’introduit à la Présidence de la République (Elysée) pour réaliser une application de communication de réception des dépêches d’agence en communication avec un serveur Linux avec aussi un site Web IIS ASP et des composants COM en C++ via les ATL (Active Template Library) et un service Windows sous Windows Server 2003. Ce sera une aventure formidable de 4 années sous la mandature Jacques Chirac. Le C++ mène à tout !
Ces expériences m’ont marqué car elles ont forgé le socle de ma carrière professionnelle et la passion pour C++ est intacte.
Christophe Pichaud (christophep@cpixxi.com),
Paris, France.
Vendredi 20 Décembre 2019
[1] Most Valuable Professional. Cf. https://mvp.microsoft.com/
[2] Non Disclosure Agreement ou Accord de Confidentialité.
[3] https://channel9.msdn.com/Shows/Going+Deep/Craig-Symonds-and-Mohsen-Agsen-C-Renaissance