UltraFluid Modeler BETA2, le logiciel de modélisation Open-Source.

UltraFluid Modeler (UFM) est cours de développement mais il est disponible en daily build au téléchargement ent BETA 2 sur www.buildonthemetal.com.

Le code est disponible comme en Open-Source mais non compilable pour des raisons commerciales suite à sa finalisation. Les fichiers volontairement manquants sont les ressources graphiques (forms, icons, bitmap, menu, etc). L’accès au code source est sur Github.

Le logiciel permet de faire des diagrammes et de la visualisation. Par défaut, il est possible de faire des diagrammes simples avec des gabarits simples ou bien des diagrammes d’Infrastructure ou bien des diagrammes de Développement.

Le logiciel est le compagnon idéal des Architectes IT. Dans sa version BETA2, le logiciel est limité à 50 gabarits par application. Cela vous permet de tester et vous enregistrer pour la future date de lancement. Le produit sera disponible en plusieurs versions.

Exemple de modélisation de classes comme en UML

Le logiciel est un mix de Visio et PowerPoint et aussi simple à utiliser.

Exemple de diagramme plus visuel avec des gabarits

Si vous voulez faire partie du programme BETA User et Insider, inscrivez vous sur www.buildonthemetal.com.

UltraFluid Modeler BETA 2

UltraFluid Modeler est en BETA 2. Le soft est fait en C++ 64 bit Release et utilise le C++ Rest SDK de Microsoft pour le support JSON.

Vous pouvez le downloader ici: www.buildonthemetal.com

Rappel des diverses fonctionnalités:

  • Copy, Cut, Paste
  • Sélection simple, intuitive, de la première ligne, que les lignes, que des éléments
  • Ajout d’une image
  • Ajout d’un shape générique (rectangle, ellipse, étoire, flèche diverse, etc)
  • Ajout d’une zone de texte
  • Ajout d’un gabarit de Infrastructure (server AD, server Database, server Web, desktop, etc)
  • Ajout d’un gabarit de Dev (class, interface, enum, component, comment, package, etc)
  • Ajout d’un gabarit Diagram
  • Ajout d’un élément PLnning Task, Month ou Text
  • Modification des propriétés texte (police, taille, taille +, taille -, bold, italic, underline, strikethrough, fill, color)
  • Affichage des panneaux Solution, Class, Properties
  • Suppression d’un élément
  • Import de code C++ est dessin d’un gabarit par fichier
  • Dump des objets dans le panneau Debug
  • Module File Explorer : liste les fichiers et répertoires sous forme de gabarits
  • Ajoute un connecteur (flèche) entre deux gabarits
  • Déconnect un connecteur
  • Sélectionne un élément à partir d’une combo (nom de l’élément)
  • Augmente/Diminue la taille d’un élément par deux
  • Modifie la couleur de remplissage
  • Modifie la couleur de ligne
  • Modifie la largeur de ligne
  • Modifie la couleur de page
  • Zoom In/out
  • Sélection d’un zoom custom
  • Alignement du text gauche, centré, droite
  • Alignement des gabarits à gauche, à droie, au dessus, en dessous en fonction du premier sélectionné
  • Déplacement devant top, derrière -, devant +, derrière au fond
  • Sélection d’un élement pour le déplacer
  • Redimentionnement d’un élément
  • Group/Ungroup des éléments
  • Modification des propriétés dans la Property Grid
  • Load/Save de documents
  • Import/Export des documents au format JSON
  • Export des documents au format PNG

UltraFluid Modeler – Introduction

En 2011, j’étais en mission à la Banque de France dans un service d’Architecture Technique nommé SATIS. Nous faisions des dossiers d’Architecture pour les nouvelles applications pour qu’elles passent en commission pour obtenir ou ou non une ligne budgétaire dans la banque.

Nous faisons des diagrammes dans Visio et c’était moche. Il y avait des carrés, des gabarits serveurs, des images, des traits partout et c’était horrible. Chacun faisiat à sa sauce. Moi j’ai opté pour PowerPoint des fois pour faire, via les Office Shared Components, du dessin de carrés (items) avec du texte reliés à d’autre éléments. Il y avait du texte pour les flux, les numéros de port et les protocoles. Mes diagrammes n’étaient pas les plus moche.

En 2012, le service se donne l’ambition d’être pilote sur un logiciel d’Architecture d’Entreprise : ARIS IT Designer. Ce logiciel propose de faire de la modélisation et de stocker les diagrammes en base de données et possède un module de requétage pour savoir quels sont les diagrammes qui possèdent tel ou tel gabarit avec des propriétés. Exemple: je veux connaitre toutes les application qui ont de l’Oracle 8 ou du Windows Server 2003 R2 pour les mettre à jour. Je suis moteur pour faire pilote du programme. Je rencontre les gens du projet (code interne MATUR – modèle d’architecture technique et d’urbanisation de mémoire…). On me donne accès à l’outil. C’est visuellement dégueulasse : du Java… Par contre, il y a des modèles de gabarit, des modèles et des processus précablés, de la méthodologie. cela se sent et se voit. Tout est customsable et finalement en l’analysant, c’est un logiciel graphique sur lequel chaque élément peut se voir affecté des propriétés customs.

Mon collègue de l’époque, Jean-Nöel me dit: “Pic, tu me ferais ça en C++, fast & Fluid et on le propose à la BdF ?”

J’ai commencé par dessiner des gabarits simples (ligne, carré, ellipse, flèche, etc) puis des images. Ensuite, j’y ai introduit descgabarits images prédéfinies comme ceux des documents Microsoft Visio avec leur gabarits serveurs, database, web server, desktop, laptop, etc. Pui j’ai ajouté des gabarits comme en UML comme les classes, interfaces, enumérations, components, packages, comments… La, ça prend forme. J’ai ensuite ajouté la possibilité de modifier la couleurs de remplissage ou non, la couleur de contour ou non. Ensuite, j’ai ajouté la possibilité de modifier le texte des éléments (taille, police, bold, italic, underline, align left, center, right). Tout cela, ce sont des propriétés par défaut d’un gabarit. Un gabarit peut être déssiné, retaillé, déplacé, groupé, supprimé et connecté via une flèche avec un autre gabarit. Il peut passer devant, derrière, ou un cran en avant, un cran en arrière. Tout est accessible depuis un Ribbon au look Office 2020.

Une fonctionnalité est aussi utile. Elle permet de stocker du texte (comme dans Notepad) derrière un gabarit (Propriété Code) via l’onglet (Excel like en bas de la page). C’est une propriété d’un gabarit. J’ai un module qui importe des fichiers sur disk qet qui dump le contenu des fichiers dans la propriété Code. C’est bien pour aspirer les fichiers de code et faire un audit.

Une autre fonctionnalité et la posibilité de visualiser les fichiers et répertoires sur dique et de les explorer. C’est la fonctionnalité Folders.

Voilà, je suis prêt. Ou presque. OK, on est en 2020.

http://www.netazurerangers-fr.com/

Le produit est disponible en version limitée sur le site.

Retour sur 2019, articles et posts

Le post “Comment Devenir un Expert Microsoft” est certainement celui qui a eu le plus de succès. Je vous joint le dossier complet paru dans Programmez n°234 de Novembre 2019. Download sur : http://netazurerangers.com/Articles/Article234.pdf

Le post “Comment devenir un Expert Windows” a aussi eu sont petit succès. Il est prévu d’en faire un article pour Programmez. A suivre.

Le post “Code review le diable se cache dans le détail” aussi a des visiteurs.

Le poste “C++ unsafe et unsecure ?” a aussi eu de l’impact…

Liste de mes derniers articles dans le magazine Programmez :

  • N°234: Comment devenir un expert Microsoft ? – PDF
  • N°233: Windows Subsystem for Linux 2 (WSL 2) – PDF
  • N°232: Docker et Containers : Introduction et Concepts – PDF
  • N°231: Reverse Engineering et analyse de virus – PDF
  • N°230_1: XAML Islands : incorporez les contrôles XAML Windows 10 dans vos Apps WinForms et WPF – PDF
  • N°230_2: Introduction à ASP.Net Core 3.0 – PDF
  • N°229: C++ et Containers Docker sur Azure – PDF
  • N°228: LMDB : la base NoSQL la plus rapide du monde – PDF
  • N°227: Détection et reconnaissance faciale avec OpenCV4 en C++– PDF
  • N°226: Rootkit Partie II : Module Command & Control – PDF
  • N°225: Rookit key Logger – PDF
  • N°224: Space Invaders 1978 en C/C++ avec SFML – PDF
  • N°223: Windows Le Multithreading en C/C++ – PDF
  • N°222: Linux Le Multithreading en C++ – PDF
  • N°221: Au coeur d’un Service Windows NoSQL – PDF
  • N°220: Créer un service Windows – PDF
  • N°218: Migrer son code C/C++ en 64 bits – PDF
  • N°217: Les Tests en C++ – PDF
  • N°216: La Programmation Orientée Objet en C++ – PDF
  • N°215: Utiliser shared_ptr<T> en C++ pour la gestion des ressources – PDF
  • N°214: Développez un IDE en C++ Partie II – PDF
  • N°213: Développez un IDE en C++ Partie I – PDF
  • N°212: Un serveur REST Web API en C++ – PDF
  • N°211: Pourquoi C++ en 2017 ? – PDF

Comment devenir un Expert Windows ?

Cet article est la suite de Comment devenir un Expert Microsoft ?(http://netazurerangers.com/blog/comment-devenir-un-expert-microsoft/)

Windows est le fleuron technologique de Microsoft depuis 25 ans. Vous allez me dire, oui mais maintenant il y a Azure. OK mais Azure c’est quoi ? C’est ; si je fais abstraction de la partie Linux; Windows Server et Service Fabric… et ça, c’est Windows. C’est du C/C++. Et oui, encore ! Y a pas de secret. ça doit marcher vite et bien. Cela doit être fiable, robuste rapide et sécurisé.

Dans un de mes derniers post “C++ unsafe et unsecure ?” (http://netazurerangers.com/blog/c-unsafe-et-unsecure/), j’explique pourquoi C/C++ est le meilleur et pourquoi Microsoft fait 95% de ses produits avec. Microsoft est la société n°1 de l’industrie logicielle. Ce n’est pas une régie publicitaire comme Google ou Facebook, c’est de la Tech pure jus. Microsoft vend des produits et du Services. Bref passons…

Comment devenir un expert Windows ? La question est posée. Premièrement, on se renseigne sur les principes du système d’exploitation via Microsoft Docs (ex: MSDN LIbrary) sur https://docs.microsoft.com/en-us/windows-hardware/drivers/kernel/overview-of-windows-components

Ensuite, on lit le passage sur le mode User et le mode Kernel via https://docs.microsoft.com/en-us/windows-hardware/drivers/gettingstarted/user-mode-and-kernel-mode

A partir de là, on connait l’architecture de base de Windows. maintenant, on attaque les éléments sur système d’exploitation à savoir le kernel et le Scheduler de threads. Windows ordonnance des threads, Linux ordonnace des processus. Ces deux systèmes ne fonctionnent pas de la même façon. La doc sur les Processes & Threads est ici : https://docs.microsoft.com/en-us/windows/win32/procthread/about-processes-and-threads

Ensuite on passe à la pratique, comment créer un thread, un processus, atteindre la fin, etc. la doc des API appelée aussi doc de référence est ici: https://docs.microsoft.com/en-us/windows/win32/procthread/process-and-thread-reference

Les exemples les plus faciles sont visualisables via https://docs.microsoft.com/en-us/windows/win32/procthread/process-and-thread-functions#process-and-thread-functions et plus particulièrement la fonction CreateThread: https://docs.microsoft.com/en-us/windows/win32/api/processthreadsapi/nf-processthreadsapi-createthread?redirectedfrom=MSDN et son exemple: https://docs.microsoft.com/en-us/windows/win32/procthread/creating-threads

Pour tester cela, il faut installer Visual C++ disponible dans Visual Studio 2019 par exemple, Community Edition ou Pro 30 day trial. Si vous avez touché de l’argent de Papa Noël, achetez les livres suivants:

  • Windows via C/C++ de Jeffrey Richter et Christophe Nasarre

Moi j’ai acheté Inside Windows NT en 1992 et j’ai eu le virus.

Windows c’est énorme. C’est puissant. Vous lisez le livre Windows Internals et vous aurez la vision ; vous comprendrez comment marche l’OS. C’est très intéressant et vous n’aurez aucun mal à comprendre les nouvelles technologies Microsoft avec ça. Microsoft NET, le CLR, la BCL, c’est fait avec un peu de C++ et du C#/PInvoke sur l’API Windows alias Win32. Regardez le code sur GitHub du CoreCLR (https://github.com/dotnet/runtime) et du CoreFX.

Il y a des légendes urbaines selon lesquelles Microsoft réécrit Windows from scratch; ça c’est pour les managers et le 01 Informatique. Pour les techniciens, la vérité c’est que Windows est assis sur le même code et évolue depuis 25 ans. Le code est amélioré et régulièrement remanié en C++ Moderne. Je peux vous le certifier car j’ai le code source de Windows NT 4, Windows 2000 et accès au dernier code source de Windows 190x. Le code est fait en :

  • C pour le kernel et les drivers
  • en C/C++ pour le reste.

Le C++ Moderne c’est quoi ?

  • de la libération automatique de la mémoire avec les points intelligents (smart pointers)
  • utilisation de la bibliothèque standard STL (Standard Template Library)
  • utilisation du C++11/14/17 avec auto, les lambdas, etc.

Windows utilise beaucoup la technologie COM. Un composant COM est enregistré dans la base de registres et est invoqué via des API ( https://docs.microsoft.com/en-us/windows/win32/api/_com/)

Un composant COM est une classe avec AddRef, Release, QueryInterface et des méthodes:

La création du composant COM est faite via CoCreateObject et la factory COM:

Pour plus d’informations sur les composants COM, j’ai réalisé en 200x une traduction de certains éléments de “Inside COM+ Base Services”: Apartments | Threads | Apartments types | Threading for In-Proc components | Apartment and languages

Pour plus d’informations sur COM, mettre la main sur Inside COM+ Base Services ( http://www.windowscpp.com/Books/MSPress-InsideCOMBaseServices.zip ) ou sur docs mais sur docs, la doc est spartiate.

Les années 201x ont vu Microsoft se tourner vers l’open-source donc vous pouvez trouver des composants Windows en open-source:

Faites comme moi, étudiez ces deux modules et essayez de contribuer dans GitHub. Et qui sait, un jour, vous travaillerez peut-être pour Microsoft !

Chiche !

Christophe | www.christophepichaud.com

Mes résolutions Microsoft pour 2020.

(EMail envoyé à mes anciens collègues Microsoft)

Amis Softies,

Voici mes bonnes résolutions pour 2020…

Je vous fais une annonce: je souhaite retravailler pour Microsoft et plus particulièrement pour Corp. Cela passera peut-être par du Services avant, je ne sais pas mais j’y travaille. Comme je le disais à mes copains Alain et les zEric, travailler chez Microsoft était un rêve mais qui s’est arrêté brusquement. Je ne reviendrais pas sur cet épisode et les raisons de cet arrêt, la page est tournée.

Depuis que je suis MVP, j’ai accès à pleins de choses et c’est génial. Microsoft est the number 1 software company, ça ne fait aucun doute. Vous y travaillez et vous le savez. Cette entreprise est magnifique, les produits sont nickel et surtout la technologie est fantastique. Qui ne se prend pas de passion pour un SDK ou un produit ? Notre métier est fait de passion, de rire et de larmes. Les échecs d’aujourd’hui seront les succès de demain.

Quand je lis le code de Windows, c’est complexe mais c’est beau. Le code C++ contient quelque chose que ne possèdent pas les autres langages. Le style Microsoft à base de COM est très spécial. Le mix entre les types Windows (COM strings, VARIANT, UINT, DWORD, UNICODE LPWSTR, wchar_t et char *) et les types C++ (wstring et string) fait que le code est fait avec plusieurs styles. On trouve le code business fait la plupart du temps en composants COM ou en code C++ ISO et la glue spécifique en API Win32. Don Box disait « COM is love ». C’est vrai. Une coclass d’un composant COM, c’est une classe C++. On a une classe en mode shared_ptr, un ctor ambigu AddRef, un dtor ambigu Release, un cast QueryInterface pour obtenir les différentes interfaces (une classe C++ peut implémenter plusieurs interfaces et peut hériter de plusieurs classes contrairement à C# qui lui ne peut hériter que d’une seule classe).

Dans le code de Windows Terminal, il y par exemple le code WinUI du cadre (tabbed et Window et popup menu et menu) écrit en pure Windows API et XAML Islands, le code du cmd avec son char buffer engine, son interpreter et le code Windows ancestral réécrit en moderne C++. Le code est amélioré. C’est comme un bon Bourgogne, il se bonifie avec le temps. Le code C++98/03 est amélioré en code C++11/14 et progressivement ce Modern C++ fait que le code est nickel, il est beau ! Par exemple, j’ai fait une contribution avec PR (pull-request acceptée le 19 June 2019 https://github.com/microsoft/terminal/pull/1161 ) qui consistait à mettre un shared_ptr sur un raw pointer et à faire la plomberie qui va avec pour y jouer avec une référence derrière. La mémoire est libérée automatiquement via le pointeur intelligent (smart pointer). C’est beau. Il y a plein de TODO et FIXME dans le code pour améliorer le code legacy Windows. J’ai vu que cela fait 4 ans que le code du CMD est refactoré et amélioré. C’est peut-être ma mémoire qui me trahie mais je crois que c’est ça ; vu dans les commentaires de code. On ne se rend pas compte de la puissance des outils de Windows. Rien que l’archive de code GitHub du Windows Terminal (https://github.com/microsoft/terminal) fait 9.3 MB. Il y en a pour 6.3 MB de fichiers .h et .cpp. C’est pas mal déjà. Enorme pour un seul individu à comprendre. Le CMD est un outil complexe qui va au-delà d’un simple dir c:\ ! C’est un pilier de Windows. Nos admins système le savent bien.  Je compte bien continuer de m’investir encore un peu sur Windows Terminal car c’est passionnant. C’est ma première résolution.

Ensuite, il y a le CoreCLR (https://github.com/dotnet/runtime) qui est le runtime NET. Là je m’y mettre à fond car c’est une partie de mon avenir qui se joue la dessus. Je vais apprendre et potasser la bête pour bien comprendre comment ça marche. L’archive fait 99MB et unzipped ça fait 777MB. C’est énorme mais bon, y a les tests unitaire & co mais bon le code C++ fait environ une taille de 76MB sans les tests. Autant vous dire que c’est énorme de chez énorme. OK Windows fait 1 GB de source code mais la on parle juste du folder Windows\NET Framework mscoree.dll et compagnie… avec les DLL de la BCL system.xxx. & co. J’en ai pour 3 mois à naviguer, explorer et comprendre le code. C’est ma seconde résolution. Ensuite, je tente l’Issue… Faut que je me trouve un truc facile au début, un FIXME ou TODO basic pour rentrer dedans.

Ensuite il y a le code de Windows via le NDA Shared Source Initiative et là, c’est mon kiffe régulier : lire le code source de Windows. Pour ceux qui ne connaissent pas le C++, c’est l’occasion de s’y mettre. Achetez mon livre « Aide-Mémoire C++ » et demandez à avoir accès au code source de Windows et admirez la qualité du code des Ingénieurs Windows. J’ai énormément de respect pour le code de Windows. Depuis que j’ai mis la main sur le leak Windows NT4 et Windows 2000 (2 GB de source code) dans les années 2000/2002, j’ai passé de nombreuses heures à étudier ce code. Le kernel, les dlls RTL NTUser & co, le Shell, le File Explorer. C’est un roman de Star Wars en 350 Volumes. C’est beau. C’est complexe mais à la fois subtile et organisé. Putain, c’est bon ! C’est pour cela que je voue une admiration sans faille à Bill Gates. Windows est un fleuron de technologies. OK des fois c’est du bon vieux C/C++ mais ça marche vite et bien.

Quand j’ai découvert Windows Internals (7th edition Part 16th Edition Part 16th Edition Part 2). dans les années 2000, j’ai vu la vierge car cela m’a aidé à comprendre les sources Windows puis quand j’ai découvert les Windows Protocols (https://docs.microsoft.com/en-us/openspecs/protocols/ms-protocolslp/9a3ae8a2-02e5-4d05-874a-b3551405d8f9), ça a été le graal. Quand j’étais au Services en 2017, j’ai été surpris, les gens ne connaissent pas ça. La culture du NET fait que les gens sont très peu cultivés sur Windows alors que c’est le fleuron de la companie. OK, maintenant y a Azure mais bon Azure c’est Windows Server et Service Fabric et tout ça c’est Windows. Je fais abstraction de la partie Linux… Chaque Microsoftie devrait se voir offrir le livrer Windows Internals pour son arrivée dans l’entreprise !

Bref vous l’aurez compris, mon objectif c’est de bosser pour Corp. J’y travaille. Je vais trouver un moyen de tirer mon épingle du jeu via GitHub et mes relations avec l’équipe Visual C++ aux US. Mon pote Simon Brand est bien advocate C++ et vie pourtant à Edinburg, UK. La France c’est très spécial… Le C++ est limité. Les entreprises pour Services font, pour le développement avec les Technologies Microsoft, du C# / NET.

Bonne Année à toutes les copines.

Bises à mon mentor EricV. Bises à EricMitt. Bises à Alain.

Bises à Agnes , ma Directrice de Projet HEXV2 de OBS en 2006…. On se marrait bien avec GGray, PCP, Nicolas. Je suis toujours en relation avec les ex-collègues de OBS pour qui on devait remplacer leur système Linux (700.000) BAL POP/IMAP par Exchange Server via HMC… On se revoit régulièrement autour d’une bière avec Gael Roualland, le petit génie de OBS qui nous donnait du fil à retordre et ses potes de l’époque. Depuis que je suis passé aussi à Debian Linux et Ubuntu (C++ oblige), ils m’acceptent mais me chambrent en me disant que Microsoft est mon meilleur ennemi façon je t’aime moi non plus. Ils me disent de tout plaquer de builder que sur Linux et que j’aurais plus de succès qu’avec Microsoft… Je ne suis pas d’accord. 25 ans de C++ Microsoft, ça ne s’abandonne pas, au contraire, ça se monnaie. Et quand on aime, on ne compte pas ses efforts.

Christophe | www.christophepichaud.com

Le code source de Windows (C++)

Windows est fait en C/C++.

A partir de là, on peut rentrer dans le détail. Les plus jeunes pourraient penser que Windows utilise NET mais il n’en ai rien. La lutte entre l’ancienne Windows Division et la Developer Division n’est pas terminée. Pour ceux qui veulent des détails, voici l’article qu’il faut lire:

https://arstechnica.com/information-technology/2011/06/windows-8-for-software-developers-the-longhorn-dream-reborn/

Windows est entièrement fait en C/C++ avec une légère précision:

  • le kernel est fait en C
  • le reste est fait en C++

Pourquoi ?

Pour Microsoft et ce depuis 25 ans, le C++ c’est naturel, c’est l’électricité. On veut faire un logiciel, un produit, on utilise C++. Microsoft fait 95% de ses produits en C++ car c’est fiable, robuste, puissant et rapide.

En tant que MVP, j’ai signé avec Microsoft un NDA pour avoir accès au code source de Windows 10 et Windows Server 2019. le code est clean, truffé de C++ Moderne et ce n’est pas près de s’arrêter.

C++ renaissance dixit Channel 9. https://channel9.msdn.com/Shows/Going+Deep/Craig-Symonds-and-Mohsen-Agsen-C-Renaissance

Avec l’avènement des technologies dites productives comme NET ou Java, les légendes urbaines se multiplient. Windows fait en NET, Linux en Java… Des foutaises ! Linux est faite en C/C++. Windows est fait en C/C++. Le reste c’est de la littérature.

Les grands logiciels sont faits en C++ ! Vive C++ !

J’étudie le code de Windows depuis 2001 date à laquelle j’ai mis la main sur le leak de Windows NT4 puis en 2003 sur le leak de Windows 2000. 2GB de source code, la mine d’or. Puis j’ai eu accès au Windows Research Kernel XP et Windows Server 2003. j’ai rebuildé le kernel et monté une VM Windows Server 2003. Génial!

Windows Research Kernel était une initiative pour les universités qui faisaient des cours sur les systèmes d’exploitation. Fabuleux. Et livré avec Windows Internals, la bible.

Le job de mes rêves : Développeur Windows chez Corp. Mais bon je suis français, faut pas rêver ! 🙂

C++ unsafe et unsecure ?

Mes collègues du monde Microsoft et autres me disent que C++ est dépassé, trop difficile, trop vieux, trop dur à maîtriser et y en a même qui me dise qu’il est unsafe et unsecure !

Je rigole.

Si C++ était porteur de tous ces défauts, Microsoft ne ferait pas 95% de ces produits avec. Je vais revenir sur unsafe et unsecure car c’est très intéressant. Mais avant un rappel: TOUT CE QUE VOUS AVEZ SUR VOS PC et MAC EST FAIT EN C++. Windows, Office (Word, Excel, PowerPoint, Outlook), IE, Chrome, VLC, Notepad++, Calc, MSPaint, Photoshop, File Explorer, Process Explorer, etc…

Pour vendre .NET le Marketing a essayé de décrédibiliser C++ car trop riche, trop puissant et qui n’a pas besoin de publicité ni de marketing, lui. Dans les années 2000, le marketing a essayé de vendre l’idée qu’un langage qui manipule finement la mémoire est susceptible de planter et que la panacée c’était le Garbage Collector. Ce raisonnement est une arnaque intellectuelle.

Ce n’est parce que un langage comme C ou C++ permettent de manipuler la mémoire finement à l’octet près que cela signifie plantage ou corruption de mémoire. Le Marketing, qui est un contingent de personnes qui sortent d’écoles de commerce ne connait rien à la technique et donc ces gens font des raccourcis grossiers. Il faut le dire.

Pour ceux qui sont curieux, la machine virtuelle NET ou CLR (Common Langage Runtime) est faite en C++ donc voilà, la boucle est bouclée. Si C++ était si pourri que ça, le CLR ne serait pas fait en C++. Le garbage collector et le JIT non plus ! Le problème c’est que NET doit luter contre un adversaire qui était là avant lui, à savoir Java et que la concurrence fait rage. Java est beaucoup plus implanté en entreprises que NET et cela malgré des milliards investis en marketing et publicité.

Donc je pose la question: est-ce que d’essayer de décrédibiliser C++ a été une bonne méthode pour vendre NET au monde des développeurs ? Je ne crois pas. C++ est standardisé à l’ISO et compte des millions de développeurs. Le langage C++ n’a pas besoin de publicité, c’est le langage de l’industrie, du médical, de l’édition logicielle, des jeux, etc. C++ est là depuis 40 ans et s’est renouvelé en profondeur. Ce n’est plus le C++ à Papa, le fameux C++98 ou C+03. On est passé au C++ Moderne, celui qui libère la mémoire automatiquement via les pointeurs intelligents ou smart pointers, celui des lambdas, celui de la move semantic. Le Marketing n’en parle pas, bien sur… Le marketing ce n’est pas des mathématiques, ce n’est pas scientifique et c’est pour cela qu’il faut s’en méfier.

Dans le domaine de la conception logicielle, il ne faut jamais croire le marketing et toujours s’en remettre à un raisonnement scientifique. Il faut tester les technologies et se faire sa propre opinion et toujours être factuel.

Moi j’ai accès au code source de Windows et tout est fait en C/C++. C’est du C++ moderne et c’est clean. Windows sera toujours écrit en C++.

La dernière news du moment c’est de pousser Rust comme langage kernel pour résoudre les problèmes mémoire. C’est un faux débat car le kernel comprend un Memory Manager (mm) qui gère la mémoire virtuelle et seule C++ permet d’écrire un tel module. Certains chercheurs n’ont aucune connaissance des systèmes d’exploitation et essaient de faire le buzz autour de Rust avec une démarche marketing… ça y est, ils remettent le couvert. Laissons les parler, Microsoft ne réécrira jamais Windows en Rust. Il y a des millions de ligne de code. Et contrairement à ce que disent les journaux pour les managers comme 01 Informatique, Microsoft ne réécrit pas les OS from scratch. Cela se saurait. Microsoft fait évoluer Windows depuis 25 ans. Et c’est du C++. N’en déplaise au Marketing.

Les grands logiciels sont faits en C++. Un Nième exemple ? Chrome et NodeJS. On ne peut pas saluer la révolution JavaScript sans penser à C++. NodeJS c’est du pur C++ et Chrome aussi. Microsoft en a fait son nouveau browser avec Chromium. Chrome est un logiciel (browser) qui équipe des milliards d’ordinateurs et c’est rapide, fiable et puissant. Vive C++ !

C++ RENAISSANCE

POWER AND PERFORMANCE

“THE WORLD IS BUILT ON C++”, Herb Sutter.

Envoyez moi vos commentaires sur mon email: christophep@cpixxi.com.