Microsoft se penche sur le langage Rust pour sa programmation système
Les vieux pots
Le 26 juillet 2019 à 08h03
10 min
Logiciel
Logiciel
Microsoft considère très sérieusement le Rust comme successeur aux C et C++ pour sa propre programmation système. Une déclaration importante, qui jette une nouvelle lumière sur le langage créé par Mozilla et veut sensibiliser les développeurs aux problèmes de sécurité liés à la mémoire.
La firme s’est lancée dans une série d’articles portant sur la sécurité du code informatique. L’éditeur en dresse un tableau peu reluisant, avec un objectif en tête : réduire, et si possible se débarrasser des erreurs liées à la gestion de la mémoire.
Le constat s’établit sur la base de plusieurs études et d’une longue série de statistiques. Conséquence, la question se pose : par quoi remplacer les langages C et C++ couramment utilisés pour l’écriture du code natif ?
Les langages dits « memory safe » existent depuis longtemps. Microsoft donne bien sûr les exemples maison – C# et F# – on citera aussi l’un des plus connus : Java. Mais l’éditeur, même en citant leurs qualités intrinsèques, ne semble pas satisfait, pour une raison principale : leur coût en performances.
Il se tourne donc vers un langage open source créé par Mozilla, initialement pour ses propres besoins : Rust. Ce n’est plus vraiment un jeune langage (2010), mais il reste récent, posant des problématiques que nous exposerons. En dépit des défauts inhérents à son âge, l’entreprise s’intéresse de très près au Rust comme successeur de C/C++ dans ses propres produits, jusqu’à citer indirectement le noyau de Windows.
70 % des failles de sécurité liées à la mémoire
Dans une présentation donnée à la conférence BlueHat IL, Matt Miller, du MSRC (Microsoft Security Response Center), faisait un drôle de constat : l’immense majorité (70 %) des failles corrigées par Microsoft – et pour lesquelles une identification CVE avait été fournie – provenaient de bugs de corruption de mémoire introduits dans le code C ou C++ par les développeurs. Cette statistique s’est avérée stable sur la décennie écoulée.
Exemple le plus courant, très souvent croisé dans les comptes rendus de sécurité ? Les dépassements de mémoire tampon (buffer overflows). Ils surviennent quand un processus, censé écrire dans un espace mémoire spécifique, écrit dans un autre. Si ce dernier n’est pas libre, des données sont écrasées, pouvant entrainer un comportement imprévisible de l’ensemble du système.
Dans la plupart des cas, le symptôme est un plantage de l’application ou du système. Mais un dépassement de mémoire tampon peut aussi être détourné et utilisé à des fins de piratage informatique. La technique consiste alors à écrire dans une zone un code exécutable.
Notez tout de même que ces soucis sont connus depuis bien longtemps. C’est ce qui explique l’apparition de technologies comme l’ASLR (Adress Space Layout Randomization). Le principe en est simple : déplacer de manière aléatoire les données critiques pour que leur emplacement soit imprévisible. Ces techniques ne sont toutefois pas infaillibles et ne font que limiter les risques, sans jamais les réduire à zéro.
Les langages « memory safe »
Ces fautes sont courantes en C et C++ car ils n’incluent pas dès l’origine de mécanismes de sûreté pour la mémoire. Les pointeurs utilisés peuvent cibler n’importe quelle zone mémoire et requièrent donc de multiples précautions, reposant sur les épaules des développeurs.
« Le boulot principal d’un développeur n’est pas de se préoccuper de la sécurité mais de travailler sur les fonctionnalités », explique Gavin Thomas, ingénieur responsable au MSRC. « Plutôt que d’investir dans toujours plus d’outils, formations et correctifs, pourquoi pas dès le départ un langage où ils ne pourraient pas introduire de problèmes de sûreté mémoire dans leurs fonctionnalités ? ».
C’est déjà le cas de langages comme C# ou Java qui sont de haut niveau, c’est-à-dire centrés sur la résolution de problèmes spécifiques, sans se soucier (en général) des composants de la machine. Parmi leurs caractéristiques, on trouve en particulier le typage sûr. Le compilateur valide alors (statiquement) les types en vérifiant qu’ils n’ont pas été affectés de manière erronée. Cet attribut permet à lui seul d’éviter la plupart des erreurs menant à une corruption de la mémoire.
Mais ils ont un désavantage : ils requièrent la présence d’un runtime pour fonctionner. Cette machine virtuelle a un coût en performances, pas nécessairement visible dans un cadre applicatif (potentiellement au lancement, souvent un peu plus long), mais clairement plus sensible pour un système d’exploitation, a fortiori un noyau.
C et C++ restent donc largement utilisés pour leurs performances. On se souvient que Google avait même lancé son NaCl (Native Client) pour permettre aux développeurs web d’écrire du code C/C++, chargé avec le reste du site. Principal bénéfice, la rapidité d’exécution. Le projet a depuis été supplanté par les nombreux travaux sur WebAssembly, autour duquel s’est organisé un consortium (voir notre article).
Le C++ en particulier n’est pas démuni contre les éventuels soucis de corruption de la mémoire. Plusieurs mesures ont été implémentées avec les années. Par exemple, les pointeurs intelligents peuvent prévenir en partie les risques. Cependant, même si un développeur au meilleur de sa forme et avec les bonnes compétences peut faire attention à toujours utiliser les techniques à sa disposition, la difficulté devient exponentielle quand le projet prend une taille importante.
Ce qu’aimerait Microsoft ? La synthèse de ces avantages : « Si seulement les développeurs pouvaient avoir toutes les garanties de sécurité pour la mémoire des langages comme C# combinées à toute l’efficacité de C++ ». C’est là qu’intervient le Rust, qui pour l’éditeur réunit le meilleur des deux mondes.
La solution dans l’open source
Le simple fait de regarder en direction du langage de Mozilla n’est pas anodin : le Rust est open source (licence Apache 2.0). Microsoft le considère-t-il sérieusement comme une solution d’avenir pour ses propres besoins ? Il semblerait bien.
Dans son dernier billet de blog, l’éditeur évoque les langages « memory safe » comme C#, F#, Swift, Go et Python. Aucun d’entre eux ne se veut universel et est donc à utiliser en fonction du contexte. Python est par exemple un langage de script et n’est pas fait pour la situation qui intéresse Microsoft.
« Nous discutons cependant du besoin d’un langage sûr pour la programmation système (un langage pouvant construire des systèmes sur lesquels d’autres logiciels vont fonctionner, comme un noyau). De telles charges de travail nécessitent la vitesse et les performances prévisibles que C, C++ et Rust fournissent. Les langages capables d’assurer la sûreté de la mémoire via le ramasse-miettes ne sont pas idéaux puisque leurs runtimes peuvent conduire à des performances imprévisibles et une surcharge inutile ».
Parmi les avantages du Rust, Microsoft cite en particulier son runtime minimal et surtout optionnel. La bibliothèque standard dépend de libc (comme C et C++), mais n’est pas forcément nécessaire, permettant au code de fonctionner sans système d’exploitation préalable.
Deuxième avantage, la granularité dans le contrôle de la mémoire, qui permet au développeur « de choisir quand et combien de mémoire doit être allouée ». Sur ce point, Microsoft considère que Rust est au même niveau que C et C++.
Mais c’est bien sur la protection de cette mémoire que Rust se différencie, faisant dire à l’entreprise que les fameux 70 % de failles n’auraient sans doute jamais existé si le code concerné avait été écrit avec le langage de Mozilla. À noter, d’ailleurs, que Microsoft ne s’exclue pas des erreurs, puisqu’il s’agit dans l’immense majorité des cas de vulnérabilités relevées dans ses propres produits.
La protection accordée n’est cependant pas forcée. Les développeurs peuvent déclarer explicitement des blocs de code comme « unsafe » quand les opérations l’exigent. Mais même ces opérations finissent par être « empaquetées » dans des structures vérifiées statiquement à la compilation.
D’autres points sont appréciés. L’exactitude du langage par exemple, qui a permis en interne de vérifier un vieil adage : « Si ça compile, c’est que ça marche ». La vérification statique des propriétés va également au-delà de la mémoire et permet de se débarrasser d’autres problèmes potentiels, comme les pointeurs null et les accès concurrents.
C’est toutefois la communauté qui remporte l’adhésion de Microsoft. Même si le langage a été créé par Mozilla, qui investit toujours dedans, la majorité des contributions provient de sa communauté. Selon le classement Stack Overflow pour l’année 2018, Rust est en fait le langage le plus populaire, devançant Kotlin, Python et TypeScript. Et plus la communauté grandit, plus le langage devient apte à répondre aux demandes, et plus les tests sont nombreux.
Et pourquoi pas un Windows réécrit en Rust ?
Quelle crédibilité apporter aux réflexions de Microsoft sur ce langage ? Conséquente car l’éditeur en est à publier plusieurs billets de blogs expliquant tout le bien qu’il pense de Rust et la manière dont il pourrait très clairement bénéficier à la programmation système. Et puisque les fameux 70 % concernent des failles dans ses propres produits, il est permis de penser que l’entreprise pense avant tout à sa propre programmation système.
L’image d’un avenir réécrit en Rust chez Microsoft se précise encore quand la firme aborde les quelques points noirs qui l’empêchent pour l’instant de se mettre à la tâche. Parmi eux, un manque d’interopérabilité avec la chaine d’outils maison. L’interopérabilité avec le C++ est également citée comme un problème, de même que la manière de réguler l’utilisation du surensemble « unsafe » du Rust dans les projets de grande taille.
Microsoft va donc continuer à publier des billets sur le langage, notamment pour détailler les problèmes et ce qui manque à son goût pour une utilisation à grande échelle au sein de l’entreprise. La couleur est d’ailleurs annoncée : elle espère impliquer la communauté Rust pour réfléchir aux solutions, signe supplémentaire d’une volonté d’utiliser le langage.
Dans l’hypothèse où toutes les barrières seraient levées, faut-il s’attendre à une réécriture de Windows en Rust ? Pas nécessairement. Au vu de l’ampleur du travail, il est plus probable que la firme travaillerait directement sur de nouvelles briques ou une nouvelle génération de son système d’exploitation.
En attendant, le langage va probablement bénéficier de ce nouvel éclairage, de la même manière que TypeScript (créé par Microsoft) avait été adoubé par Google, qui en avait fait la voie royale pour Angular.
Microsoft se penche sur le langage Rust pour sa programmation système
-
70 % des failles de sécurité liées à la mémoire
-
Les langages « memory safe »
-
La solution dans l’open source
-
Et pourquoi pas un Windows réécrit en Rust ?
Commentaires (65)
Vous devez être abonné pour pouvoir commenter.
Déjà abonné ? Se connecter
Abonnez-vousLe 29/07/2019 à 09h27
peut etre pas les atomisé il vont recréer un compte, je voterai plus pour un genre de filtre au niveau site
-il voit ses postes comme si de rien n’etait MAIS pas nous :)
un peu comme un compte filtré par mes soins, mais fait par vous meme
Le 29/07/2019 à 10h23
Mais pourquoi personne ne parle-t-il d’Ada ? ^^
Memory safe, éprouvé, adapté à la programmation système !
Le 29/07/2019 à 10h34
exactement ce à quoi je pensais, c’est de plus en plus utilisé, et ça s’appel le “shadow ban”, ça peux faire perdre pas mal de temps au mecs avant qu’ils ne s’en rendent compte ( mais un contrôle sur les 3⁄4 premiers posts d’utilisateur / ceux avec les liens en plus permet de bien diminuer le problème ) ( si ils génère 0 click en provenance du site il vont arrêter/diminuer )
la le problème c’est qu’une partie va ouvrir dans une vm / onglet privé pour regarder quelque genre de scam c’est …
Le 29/07/2019 à 11h57
Juste pour apporter mon petit grain de sable, on ne peut pas comparer le C++98 avec le C++ moderne (C++17 et superieur).
Il y a eu un enorme changement d’approche du code ces dernieres années, du code précompilé typé (avec meme des assert statiques et des conditions !), une batterie d’outils de manipulation de variable entierement revue (fini les auto_ptr), la stl plus robuste…
Je serais curieux de voir les stats de de failles de secu liées à un overflow sur un projet de l’ampleur de Windows, mais bati sur du C++ moderne from scratch. M’est avis qu’on serait bien moins alarmiste sur ce beau language…
Le 29/07/2019 à 12h31
Le 29/07/2019 à 13h22
Le 29/07/2019 à 13h25
au début je pensais naïvement, tiens le lectorat se féminise " />
Le 29/07/2019 à 16h08
Ca ne l’était pas…
En gros j’étais dans une équipe commando et et on était rattaché à l’opérationnel et pas à la partie technique de la banque.
Du coup les N+X techniques refusaient de nous octroyer les autorisations pour utiliser des bases de données SQL car réservés aux “pro”.
Bref… bienvenue dans la finance et le management intelligent " />
Le 29/07/2019 à 19h45
Le 30/07/2019 à 15h12
Je viens de signaler cela:
Next INpact
Next INpact
Le 31/07/2019 à 13h48
Les deux comptes ont été bloqués et les comms supprimés. Par contre je suis surpris, tu as bien utilisé la fonction de signalement de commentaire ?
Le 26/07/2019 à 08h14
Tiens, MS nous ressort donc les idées de son vieux projet de R&D Singularity du placard. Pourquoi pas, ce n’est pas inintéressant de tester ce genre d’idée et ils ont justement les moyen de le faire.
Le 26/07/2019 à 08h36
En espérant qu’ils fassent de gros dons à Mozilla…
Le 26/07/2019 à 08h37
C’est déjà le cas de langages comme C# ou Java qui sont de haut niveau, c’est-à-dire centrés sur la résolution de problèmes spécifiques, sans se soucier (en général) des composants de la machine.
Ce qui est aussi son principal défaut quand on a des gros volumes de données à traiter, la conso mémoire joue parfois des tours.
J’avais eu le soucis avec des applis en 32 bits ou je devais loader et recouper des fichiers de 4 à 5 go et que je me retrouvais avec la mémoire pleine du fait que le GC n’avais pas envie de passer quand il le fallait :(
Je ne connais pas spécialement Rust, mais si Crosoft se penche sur un langage qui pourrait remplacer le C++ en ajoutant de la sécurisation mémoire, ca ne serait pas un mal je suivrais ça " />
Le 26/07/2019 à 08h51
Je ne connaissais rust que de nom et ne me suis pas du tout penché sur le langage.
Un tel article me fait dire qu’il me faudrait en fait clairement le faire. " />
M’en vais donc voir un peu le langage et les framework facilement intégrables avec. :)
Le 26/07/2019 à 08h55
Le 26/07/2019 à 09h20
Ce qui est aussi intéressant avec Rust est que l’on peut l’ “interfacer” avec du code C++.
Cela permet de garder la majorité du code en C++ mais qu’une nouvelle fonctionnalité ou une mise à jour d’une partie du code peut elle être refaite en Rust sans tout réécrire d’un coup.
Le 26/07/2019 à 09h37
C’est dans ce cas là que j’aime savoir comment fonctionne la gestion de la mémoire et du Garbage collector. A un certain moment, on ne peut pas ignorer quelque fonctionnement du langage (surtout dans ton cas où tu utilisent de gros volume de donnée).
Souvent par exemple, les objets qui n’ont eu d’existence que dans une fonction sont systématiquement supprimer à la fin de la fonction (ça correspondrait à la pile dans C/C++).
Parfois il y a aussi les “smart pointer” (python en utilise) qui compte le nombre de fois vers lequel on pointe sur l’objet et dès lors que le compteur tombe à zero, on supprime. Cependant du coup ce genre d’outil n’aime pas (mais alors vraiment pas) les références cycliques (un objet A a un pointeur vers un objet B, et l’objet B a un pointeur vers l’objet A). Ce genre de référence cyclique peut être utile par exemple dans les structures de données donnant la possibilité d’un retour arrière (double linked list en java, mais aussi l’arbre du DOM qui permet aussi bien d’aller cherche chercher des nœuds enfants que revenir au parent). Du coup, dans le cadre de smart pointer, mettre un pointer à Null/None n’est pas aberrant, ça force sa suppression systématique (c’est une façon safe de faire un ‘free/del’) à l’instant même (et pas à la fin de la fonction, quand le smart pointer sera détruit).
Le 26/07/2019 à 10h16
Les langages dits « memory safe » existent depuis longtemps. Microsoft donne bien sûr les exemples maison – C# et F# – on citera aussi l’un des plus connus : Java
Oui bon. C’est plutôt aux programmeurs d’arrêter de faire des choses pas propres.
C’est un peu comme cette époque ou pas mal de glands répétaient à tue tête que PHP n’était pas “sécure”. Alors qu’il était au delà de tout doute que c’était plutôt des problèmes Apache, de configuration serveur et bien sur de programmeurs qu’on pourrait qualifier de pigiste.
Il serait bon de préciser que la politique EEE (Embrace, Enhance Extinguish) de Microsoft commence comme cela.
Le 26/07/2019 à 14h48
Mais c’est bien sur la protection de cette mémoire que Rust se différencie, faisant dire à l’entreprise que les fameux 70 % de failles n’auraient sans doute jamais existé si le code concerné avait été écrit avec le langage de Mozilla.
Le 26/07/2019 à 14h54
Sans exagération ? Parce que ce sont des mails qu’on traite en priorité, ça et les erreurs signalées dans les actualités. D’autant que les comptes de spams sont atomisés en deux clics et que nous n’avons vraiment aucune raison raison de les garder, bien au contraire.
Le 26/07/2019 à 14h57
Le 26/07/2019 à 14h58
On ne les supprime pas. Ils sont bloqués et les tous leurs comms sont supprimés. Les inscriptions sont faites manuellement, on ne peut pas vraiment lutter contre ça, mais on peut au moins les empêcher d’utiliser le même pseudo (maigre consolation).
Le 26/07/2019 à 15h18
Sans exagérations. C’est surtout dans les commentaires des bons plans que visiblement ils passent votre vigilance.
Le 26/07/2019 à 15h20
Tu peux m’en montrer un ?
Le 26/07/2019 à 15h25
Je te les avais re-signalé il y a 5 minutes:
Next INpact
Next INpact
Check tous les bons plans depuis 6 mois sinon.
Le 26/07/2019 à 15h31
Le 26/07/2019 à 15h40
Le 26/07/2019 à 15h53
On attend tes propositions d’amélioration pour le C++ , je pense que tu peux te faire un paquet de pognon.
Si c’était aussi simple, je pense que les ingé de Microsoft l’aurait fait. Comme tu le dit, changer de langage n’est pas une mince affaire, et pour des projets comme Windows ca coute du vblé rien que d’émettre l’idée " />
Le 26/07/2019 à 16h00
https://doc.rust-lang.org/nomicon/meet-safe-and-unsafe.html
Je vois pas tellement l’intérêt de ta prose. On peut pas changer le design de C/C++, c’est pour ça qu’ils sont reparti de 0 en intégrant les contraintes de sécurité mémoire dans leur cahier des charges.
Le résultat est brillant, je ne comprends pas ta complainte.
Le 26/07/2019 à 16h13
Je n’ai pas lu tous les commentaires, la discussion est longue mais une nouveauté toute récente concernant l’interopérabilité C++/Rust, les dévs de Firefox ont réussi à faire du LTO (link-time optimization) entre fichiers objet issus de C++ et de Rust !!!
" />
https://www.reddit.com/r/cpp/comments/ch7g6n/mozilla_just_landed_crosslanguage_l…
C’est un peu le niveau ultime de l’interopérabilité quand même… Faut juste que Microsoft se mette à la page " />
Le 26/07/2019 à 17h22
Le 26/07/2019 à 17h23
Super intéressant, merci pour le lien !!
Le 26/07/2019 à 17h43
Le 26/07/2019 à 20h59
”[…] si plusieurs grosses entreprises se fédère autour deRust pour en faire le langage principal de la prog’ system dans lesannées futures je serais pas contre :).”
Sur le principeOK, mais j’espère que tu laisse quand même Mozilla et la communautépour chapeauter tout ce beau monde. Sans ça je crains que ce langagedevienne sans queue ni tête.
Le 26/07/2019 à 23h37
Je suis d’accord avec toi, il faut bien trouver un “dénominateur commun” pour brancher deux langages si différents dans leurs grands principes, qui est donc l’ABI du C.
Néanmoins, ce dénominateur commun n’est justement que l’interface binaire des wrappers vers le langage de destination. Sachant que le langage de destination est utilisé pour écrire ce même wrapper, il peut utiliser dans son implémentation les spécificités du langage de destination, mais évidemment pas dans son interface, limitée par l’ABI du C.
Mais une fois le LTO passé, ces wrappers étant généralement courts, ils auront certainement été inlinés donnant un overhead proche de zéro.
Enfin, ça reste du travail pas fait en simplement quelques jours. Pour les types/classes échangés entre les deux langages, il faut faire des wrappers pour tous les services ; pour ce qui est template, il faut faire une “moulinette” qui génère ces wrappers ou les faire à la main comme pour les classes s’il y en a juste quelques-uns, sinon vite chronophage.
Bref, je raconte quasiment la même chose que toi, nous sommes d’accord " />
Le 27/07/2019 à 04h32
En effet et c’est bien ce que dit Microsoft : l’interopérabilité est possible mais complexe car elle requiert beaucoup de travail d’adaptation manuel.
Il existe bien “bindgen” : un générateur automatique de code Rust pour le lier à du C ou C++. Il marche plutôt bien mais le code Rust généré a forcément la logique d’origine pas forcément adaptée au Rust (notamment niveau sécurité). Pour une utilisation naturelle en Rust, il faut bâtir par dessus ce code généré des abstractions adaptées ce qui représente beaucoup de travail.
Le 27/07/2019 à 04h45
Le 27/07/2019 à 20h03
Bon et du coup, le compilo rust, il est ecrit en C ou en C++ ?
Le 27/07/2019 à 20h50
Python!
Au mpins au premier niveau,je n’ai pas creusé si tout le code du générateur l’était.
Le 27/07/2019 à 22h54
Le 28/07/2019 à 08h13
Il est donc quasiment autoporté. C’est bon ça pour ce type de language.
Le 28/07/2019 à 09h51
Le 28/07/2019 à 10h01
Pas bête, je vais transmettre :)
Le 28/07/2019 à 13h48
Ou limitez définitivement aux abonnés, ça vous fera plus de revenus si les bots à spam sont désespérés à ce point là " />
Le 28/07/2019 à 14h29
Je serais quand même curieux de savoir sur le nombre de bugs combien sont dans du code C pur, voire du vieux C++, comparé au nombre de bugs trouvés dans du code plus récent écrit en C++11 mini.
Je ne suis pas très adepte de ranger C et C++ dans le même panier. Écrire du C++ moderne n’a plus grand chose à voir avec du C. Typiquement, des buffer overrun ça fait des années que je n’ai pas eu l’occasion d’en coder, et c’est le genre de bug qui se détecte assez facilement en débug avec les collections de la std.
Le 28/07/2019 à 21h53
Indépendamment du langage, en 32 bit, partir du principe de charger en mémoire des fichiers de plus de 1GO est une erreur (et même 512MO dans un environnement managé). En 64bits la limite n’en est pas autant une (ça ne plantera pas), mais ce serait quand même une erreur.
Le 29/07/2019 à 05h34
C’est aussi valable quand on travaille avec des bases de données je pense. (je précise, je ne suis pas dev)
J’ai connu un cas d’une application dont les traitements très optimisés (c’est ironique, au cas où) chargeaient la quasi intégralité d’une table de plusieurs millions d’enregs.
Le Tomcat qui portait l’appli derrière (et lui était dédié), il aimait pas trop… Obligé de lui filer à minima 2Go de mémoire pour espérer qu’il n’explose plus.
Même chose pour des traitements en base type PL/SQL et compagnie… Quand on manipule des tonnes de données et qu’on commit pas régulièrement, on se retrouve avec un gaspillage de ressources monumental pour traiter du temporaire.
Le 29/07/2019 à 09h07
Je n’avais jamais essayé le Rust, c’est sympa, du coup j’ai aussi essayé le framework web Rocket basé sur Rust, très sympa :-)
Le 29/07/2019 à 09h16
+1.
Mais je suppose que c’est tout simplement que TexMex ne connait pas du tout Rust et par conséquent ne se rend pas compte de tout le paradigme qu’il y a derrière pour permettre d’éviter les problèmes de mémoire by design.
Le 29/07/2019 à 09h17
Le 26/07/2019 à 10h44
Non, le langage est un outil, par une finalité. S’il existe des outils plus adaptés et qui entraînent moins d’erreurs, il faut les adopter. Le travail d’un développeur c’est de faire des fonctionnalités utiles, pas de passer du temps à gérer de la sécurité de bas niveau.
Et c’est d’autant plus vrai si le nouvel outil n’entraîne aucun désavantage en termes de performance par exemple.
Personne ne code “pour la beauté du code”. Et de toutes façons il n’y a rien de beau dans le C et le C++
Le 26/07/2019 à 11h11
Oui et j’ajoute que personne n’est infaillible, même les meilleurs développeurs peuvent avoir un coup de mou un jour et se planter. Si les langages peuvent aider à plus de sécurité, c’est à prendre, surtout dans le cas de rust où ce n’est pas compromettant pour les perfs.
D’autant que ce n’est pas ici juste une lubie de hipster, ça part d’un constat très concret (et négatif) sur les correctifs de sécurité, donc ce n’est ni plus ni moins que du pragmatisme.
Pour avoir essayé rust, c’est un langage très rigoureux à la compilation … ce qui peut donner quelques crises d’arrachage de cheveux à l’écriture, mais la récompense est toujours au bout du chemin, comme dit l’article, quand ça compile, ça marche.
Le 26/07/2019 à 11h53
Principe de la loi de Murphy, s’il y a la possibilité de faire quelque chose mal, il y aura toujours quelqu’un pour le faire. Or développer en C et C++ c’est jouer au foot dans un champs de mine : il y a des pièges partout et tu va forcément sauter pied joint sur l’un d’entre eux.
Tout ce qui ont déjà un jours touché à C ont fait l’expérience du pointeur dont l’espace mémoire pointé venait d’être réaffecté d’une manière ou d’une autre (le classique du débutant : la fonction qui retourne un array créer en tant que variable local).
Encore en C, tu es par exemple obliger de “caster” à la mains les pointeurs si tu veux utiliser un peu de généricité. Or, caster à la main, c’est clairement une opération “unsafe”.
Le 26/07/2019 à 12h21
Le 26/07/2019 à 13h10
Le 26/07/2019 à 13h12
Le 26/07/2019 à 14h10
Le 26/07/2019 à 14h21
Le 26/07/2019 à 14h22
Les trolls gentils qui passent pas un vendredi, mais les SPAM de «sites de rencontre» dans les commentaires jamais supprimés (notamment les bons plans, regardez le dernier en date) .
Vous vous foutez de moi ?
Le 26/07/2019 à 14h22
Je vais me faire sworder aussi, mais un jour il faudrait songer à arrêter d’idéaliser Microsoft.
Le 26/07/2019 à 14h29
Il n’y a pas de troll gentil, le vendredi est un jour comme les autres, et si un spam est resté c’est que nous ne l’avons pas vu. Si tu en vois un, tu peux d’ailleurs le signaler, ça nous permet d’intervenir très rapidement. Parce - attention spoiler - ça ne nous fait pas spécialement rire non plus :)
Le 26/07/2019 à 14h30
Ce n’est pas un troll, une insulte ou du HS. Encore que je me demande qui ton commentaire visait.
Le 26/07/2019 à 14h30
Ici, personne n’a idéalisé Microsoft. MS est une boite intéressante à suivre, qu’on l’aime ou pas. Et ici, c’est vraiment pertinent justement.
D’ailleurs, j’ai découvert ces blogs récemment et c’est toujours intéressant à lire quand on est développeur. Les sujets sont détaillés, explicités avec pas mal d’objectivité. Microsoft n’hésite pas à critiquer son propre travail, à chercher ailleurs pour trouver des idées.
Bel exemple, le blog sur le Terminal, qui offre un historique des consoles (UNIX, Windows), les avantages et inconvénients de chaque, les erreurs faites par MS à l’époque (avec le pourquoi) et comment ils se sont adaptés pour revenir dans le bon chemin (ce qui donne maintenant un Terminal open source, en UWP/Core).
Le 26/07/2019 à 14h32
Je vous les ai signalé plusieurs fois sans aucunes actions de votre part.