Voici la couverture finale:
Titre: Adie-Mémoire C++ – Editeur: DUNOD – ISBN: 978-2-10-080712-3
Auteur: Christophe Pichaud
Blog de Christophe Pichaud [Expert sur les Technologies Microsoft]
Christophe Pichaud sur les Technologies Microsoft – MVP Developer Technologies 2017 -2021
Voici la couverture finale:
Titre: Adie-Mémoire C++ – Editeur: DUNOD – ISBN: 978-2-10-080712-3
Auteur: Christophe Pichaud
Ce livre a été relu et corrigé par de nombreux amis et relations de travail. Parmi eux, merci plus particulièrement à Eric Mittelette (Microsoft Corp.), Alain Zanchetta (Microsoft Corp.) et Jean-Christophe Godefroy (ALTRAN) pour leurs instants de vérité et leur justesse.
Merci aussi à Eric Vernié (Microsoft France), Raphael Mansuy (CALIATIS), Daniel Begue (Orano), Fréderic Steczycki, Jean-Pierre Gervasoni (SYDEV), Michel Foucault (freelance) et Sylvain Pontoreau.
Je tiens aussi à remercier mes anciens collègues de Sogeti que sont François Merand, Keelan Clech, Jean-Baptiste Bron, Cédric Georgot.
Mes meilleurs amis sont aussi à remercier car je ne les ai pas ménagés durant ces trois mois d’écriture : Philippe Rogie (Johnbry), Philippe Brand (freelance), Emeric Blumberger (SocGen).
Je tiens aussi à remercier Simon Brand (Microsoft Corp.) et Stephan T. Lavavej (Microsoft Corp.), membres de l’équipe Visual C++ pour leur patience et leurs réponses à mes questions sur le forum MVP.
Je tiens aussi à remercier le meilleur d’entre nous sur C++, à savoir mon ami Olivier Favre-Simon qui m’a fait découvrir Gentoo, Ubuntu, GCC, Boost et avec qui je suis impatient de refaire des soirées Cigare & Whisky.
Enfin, Merci à Jean-Luc BLANC de chez DUNOD qui a cru dans ce projet. Il a de suite été convaincu de l’utilité d’avoir un ouvrage en français sur le C++ Moderne. Il a quelques ouvrages français sur C++ mais si peu sur le C++ Moderne.
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 peformance par défaut et de ce que les gens nomment « Power and Performance ». Le C++ ne fait aucun compromis la-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 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[1]. 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. Chez Microsoft, la plupart des produits phares sont écrits en C++ (et C, comme le noyau Windows…).
Dans le monde Linux, la suprémacie de C/C++ est sans comparaison. Comme dans Windows, le kernel et les 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 envrionnement Linux à partir des sources. Le système portage download 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 1993, Je fais un stage dans une entreprise qui fait un logiciel de 3D sous Windows NT et je découvre MSDN Library July 1994, la documentation des dévelopeurs Microsoft. Je tombe amoureux de cet environnement de Microsoft, des API Windows et du C++. Avec ma première paie je m’achète plein de livres Microsoft Press comme « Programming Windows », « Inside Visual C++ » et de livres sur C++. Le virus est implanté.
Christophe Pichaud,
Paris, France.
Samedi 23 novembre 2019 – 06:00 AM
[1] https://channel9.msdn.com/Shows/Going+Deep/Craig-Symonds-and-Mohsen-Agsen-C-Renaissance
La programmation Windows se fait souvent en COM. Pour ce faire on déclare des interfaces COM, des pointeurs IUnknown et on fait des QueryInterfacen AddRef, Release, etc.
Il existe un moyen plus cool de faire cela: les templates C++ ATL.
Voici deux fonctions: Remarquez la différence de style entre la première version COM et la version ATL COM :
Et voici la version ATL:
L’avenir de monde graphique (UI) chez Microsoft se nomme WinUI. WinUI ce sont les contrôles XAML de Windows 10. Ils sont faits en C++.
Windows 10 en fait une utilisation intensive et les propose (enfin) en accès complet à tout le monde: NET, C++, Win32.
Microsoft is committed to C++. Windows aussi. Microsoft fait ses logiciels en C++ car C++ est rapide et performant. Vous saisissez mon sous-entendu ? Sur le site Microsoft, si vous cherchez à faire du développement logiciel, on vous oriente sur .NET par défaut. Je pose la question : mais pourquoi ?
Microsoft ne le fait pas. Pourquoi le ferais-je ? Microsoft n’est plus dans le dog-fooding comme avant. Il y a un discours interne et un discours externe.
En interne, il n’y a aucun débat, on fait tout ou presque (à 90%) en C/C++. Windows, Office, Edge, etc.
En externe, on ne fait que la promotion de .NET, du web, de JS/TS, de Angular et de python !
Là ou je rigole, c’est que les évangélistes de Microsoft qui passent leur temps à prendre en photo leur repas de hamburgers sur twitter ne connaissent en rien le monde natif et là ça pose un problème par exemple, sur WinUI. Il n’y a plus personne pour expliquer le vrai Microsoft, celui de l’intérieur.
Sur WinUI, il faut faire la promotion de XAML Islands, des controles en C++ et savoir expliquer comment le mixer avec MFC et les contrôles Win32 par exemple. Résultat: rien. Y a personne qui sait faire.
En tant que MVP, je vais m’y consacrer. mais c’est pas normal que Microsoft ne remplisse pas sa part de Learning.
Des fois, j’ai des discussions avec des développeurs qui pensent que Windows est fait en C# ???? WTF! Le niveau de connaissance de l’entreprise Microsoft est nivelé par le bas. Les architectes .NET pensent que les interfaces graphiques desktop doivent être faites en WPF. Ah oui ? Pourquoi Microsoft ne le fait pas alors ?
L’avenir c’est C++ et .NET Core. Ce n’est pas que .NET et C#. NET et son CLR c’est powered by C++.
Je suis en train d’écrire mon livre sur le langage ISO C++ 20 pendant Octobre , Novembre et Décembre 2019. Sortie début 2020.
Je me suis amusé à faire la future couverture !
Visual Studio 2019 propose de nombreuses améliorations pour C++.
A suivre.
Comme l’anée dernière je donne des cours de C++ ISO à l’ESGI à Nation pour des étudants en 4ème Génie Logiciel et 5ème année de MASTER Jeux Vidéos. C’est bien cool.
Retrouvez-moi au salon DEVOXX France sur le stand Microsoft en tant que « Ask the Expert » sur le cloud Mixrosoft Azure et l’open-source.
Le magazine Programmez de Mai 2019 contient mon article sur Wndows Service C++ sous Docker et Azure. Il s’agit d’une vitrine technique pour Microsoft. A lire dans quelques jours…