URL: https://linuxfr.org/users/small_duck/journaux/de-l-influence-nefaste-de-google-sur-les-developpeurs-c Title: De l'influence néfaste de Google sur les développeurs C++ Authors: small_duck Date: 2022年08月06日T11:37:46+02:00 License: CC By-SA Tags: c++, google et dénonce Score: 43 Aujourd'hui, journal qui dénonce grave. Je voudrais m'élever, non, m'insurger contre cette fascination morbide d'un certain nombre de professionnels pour la firme de Larry Page et Sergey Brin. Une sorte de biais cognitif qui consiste à penser que "Google est prospère, Google fait ça, alors si je fais ça moi aussi je serai prospère". Et Google, qui adore faire la leçon au reste du monde, comme pour s'auto-convaincre que leur réussite ne doit qu'à l'intelligence et la méthode, et surtout pas à un gigantesque coup de bol, non monsieur, se fait un plaisir de répandre la doxa. Et donc, Google a publié il y a de cela de nombreuses années un [guide du C++](https://google.github.io/styleguide/cppguide.html), très limitant, en particulier sur l'héritage multiple (avec une vision très Java d'héritage simple et d'interfaces multiples) et les exceptions, dont ils disent pis que pendre. Inefficaces, peu lisibles, un Goto moderne. Le chien de Larry a du se faire mordre par une exception quand il était petit, c'est pas possible autrement. Dans la version courante du document, il semblerait que les têtes pensantes de chez Google ont mis un peu d'eau dans leur vin: les exceptions ne sont toujours pas autorisées, mais ils conviennent que c'est plutôt pour des raisons historiques et que si c'était à refaire, bref. N'empêche que le mal est fait, et nombre de middle-managers pressés voulant gonfler leur égo en réunion vont lire la première phrase, "nous n'utilisons pas les exceptions", et ressortir ça à toutes les sauces. Et je vois maintenant de nombreux candidats à l'embauche, jeunes et moins jeunes, qui sont terrifiés par les exceptions. Si Google ne veut pas utiliser d'exceptions, grand bien leur fasse. Ils peuvent même coder avec une main dans le dos et une pieuvre sur la tête si ça leur fait plaisir. Mais ce qui est bon pour Google ne l'est pas forcément pour d'autres. Mieux, je considère que dans la vaste majorité des cas, si c'est bon pour Google, alors c'est plutôt mauvais pour moi. Lisez, réfléchissez, tentez de comprendre et de justifier avant de vous précipiter une technologie ou un standard parce que Google a dit (s'applique aussi à Facebook, Microsoft, Amazon, et la voisine du 5ème). Google s'est posé en prosélyte, et ces développeurs influençables s'en font les exégètes, et se persuadent que les exceptions, c'est mal, et que ce que dit Google, c'est bien, avec au sein de leur inconscient le secret l'espoir de devenir à leur tour l'équivalent d'un Google millionnaire et de posséder eux aussi leur gros yacht bien polluant sur lequel [ils passeront précocement de vie à trépas par le truchement d'une demi-mondaine et d'une seringue d'héroine.](https://www.lefigaro.fr/flash-eco/2015/05/19/97002-20150519FILWWW00464-une-call-girl-plaide-coupable-dans-la-mort-d-un-dirigeant-de-google.php). Et donc, en entretien, je propose au candidat d'écrire une petite fonction, oh, quelque chose de tout bête, qui prend un conteneur quelconque et renvoie le plus grand élément du conteneur. La bonne nouvelle, c'est que la majorité des candidats se rendent compte vite fait qu'il faut faire quelque chose de particulier quand le conteneur est vide. La mauvaise nouvelle, c'est qu'ils sont trop nombreux à murmurer "exception", puis, comme effrayés de leur propre témérité, à rétropédaler et tenter de trouver par tous les moyens une alternative, alors on va passer par référence et renvoyer un booléen, oh non peut-être un pointeur? Ou alors un optionnel. Même les pros s'y mettent: regardez moi donc chez Apache Arrow, une bibliothèque qui propose un format plutôt bien fichu d'ailleurs pour faire du transfert ou de l'analyse de données. Et bien, ces gens, leurs types de retour sont systématiquement un "Result", et ils fournissent des macros pour s'en dépatouiller, qui vont renvoyer Machin si le résultat est correct, en lancer une exception si il ne l'est pas. Regardez moi [ça](https://arrow.apache.org/docs/cpp/examples/row_columnar_conversion.html), c'est moche, c'est inefficace. Mais c'est compatible Google, et c'est l'essentiel. Alors oui, les exceptions ne sont pas l'alpha et l'oméga, et il y a de nombreuses situations où elles ne sont pas pertinentes. Mais dans mes systèmes financiers, là où on va prendre une donnée, l'enrichir avec quelques appels à une base de données, y rajouter deux trois fichiers, faire mouliner du code de divers paquets fournissant analyses diverses, pour aller sauver le résultat dans un autre fichier, si mes paramètres d'entrée sont mauvais, mon appel à la base foire, ou le disque plein, je ne vais pas "traiter l'erreur là où elle est lancée", et relancer la base ou faire de la place sur le disque depuis mon code. Non, je lance une exception, laquelle va remonter les 30 ou 50 niveaux dans ma pile, je l'attrape presque en haut, je logge, je fais remonter au système d'alerte, et je passe à l’élément suivant. Alors on explique, on discute, on forme, on justifie. Mais mon calme et ma bonhommie légendaires sont soumis à rude épreuve quand on me rétorque que "Mais regarde, Google le fait !".

AltStyle によって変換されたページ (->オリジナル) /