3 points par GN⁺ 2024-02-11 | 1 commentaires | Partager sur WhatsApp

Plaidoyer pour un logiciel concis pour 2024

  • Le gonflement des logiciels, ou « bloat », reste l’une des plus grandes faiblesses des logiciels.
  • Développer des logiciels concis est important pour améliorer l’expérience utilisateur, réduire les risques de sécurité et accroître l’efficacité des systèmes.
  • Les développeurs doivent concevoir des logiciels capables d’offrir davantage de fonctionnalités avec moins de code.

L’avis de GN⁺

  • Le phénomène de « bloat » logiciel peut entraîner une baisse des performances du système et des vulnérabilités de sécurité ; les développeurs doivent donc se concentrer sur l’optimisation du code et une conception efficace.
  • Comme les utilisateurs veulent des logiciels plus rapides et plus sûrs, les logiciels concis peuvent être compétitifs sur le marché.
  • Cet article peut aider les développeurs à reconsidérer les tendances actuelles du développement logiciel et à trouver une motivation pour créer de meilleurs logiciels.

1 commentaires

 
GN⁺ 2024-02-11
Avis Hacker News
  • Dans le roman de Vernor Vinge, "A Deepness in the Sky", l’humanité s’est déjà répandue entre les étoiles sans disposer de technologie dépassant encore la vitesse de la lumière. Les vaisseaux spatiaux sont très anciens et mêlent des technologies issues de systèmes et de civilisations variés.

    • Les systèmes informatiques ont évolué pendant si longtemps que plus personne ne comprend vraiment la majeure partie du code. Les gens se contentent d’utiliser ce code et de construire de nouvelles choses par-dessus.
    • Un personnage a voyagé très longtemps et est resté en stase, ce qui fait probablement de lui l’un des humains les plus âgés. C’est un ancien ingénieur système, et comme il connaît le fonctionnement et les failles des systèmes de son époque, il dispose dans le futur d’un énorme avantage, quand d’autres ont empilé plusieurs couches dessus sans savoir exactement ce qu’ils font.
    • Je pense que Vernor soulève un point important.
  • La plupart des bibliothèques npm ont inutilement trop de fonctionnalités. Leurs auteurs ne connaissent pas le bon design, et chaque bibliothèque essaie de tout faire.

    • Par exemple, une bibliothèque de conversion d’encodage de chaînes inclut aussi le chargement de fichiers, leur sauvegarde, le téléchargement via Internet, un outil en ligne de commande, etc. Une bibliothèque ne devrait faire qu’une seule chose.
    • Même en Rust, la situation ne semble pas meilleure. Si l’on veut éditer la documentation Rust, il faut installer environ 1 000 crates.
    • Le problème ne vient pas du langage, mais du fait que n’importe qui peut publier une bibliothèque, et qu’en pratique tout le monde le fait. Les gens qui veulent simplement « faire le travail » choisissent la bibliothèque la plus riche en fonctionnalités, puis réclament encore plus de fonctions parce qu’ils trouvent fastidieux d’écrire quelques lignes de code qui pourraient être résolues en dehors de la bibliothèque.
    • Je ne sais pas comment résoudre ce problème. Une idée serait de lancer un groupe orienté « faibles dépendances », d’encourager les gens à attribuer ce badge à leurs bibliothèques et d’inciter les utilisateurs à rechercher ce badge lorsqu’ils choisissent une bibliothèque.
  • Dans "Terre des Hommes" d’Antoine de Saint-Exupéry, il est demandé si l’on a déjà observé un avion moderne, suivi la ligne de son évolution année après année, et réfléchi à tout ce que l’être humain fabrique.

    • Tous les efforts industriels, les calculs, la conception et les nuits passées sur les plans finissent par se concentrer sur la création d’un objet régi par le principe ultime de simplicité.
    • Il faut que plusieurs générations d’artisans expérimentent pour façonner progressivement la courbe d’un meuble, la quille d’un navire ou le fuselage d’un avion jusqu’à retrouver les courbes fondamentales et pures d’une poitrine ou d’une épaule humaines.
    • La perfection est atteinte, non pas lorsqu’il n’y a plus rien à ajouter, mais lorsqu’il n’y a plus rien à retirer.
  • La quantité de code que nous utilisons aujourd’hui est énorme. Par exemple, ouvrir une porte de garage peut nécessiter plus de 50 millions de lignes de code actives.

    • Nous exécutons autant de code, alors qu’une grande partie n’a probablement jamais fait l’objet d’une revue approfondie.
    • Et malgré cela, on retourne à la routine consistant à installer des dépendances npm.
  • Le logiciel est considéré comme dangereux, si bien qu’on conseille aux gens de ne pas l’exécuter eux-mêmes, mais de le confier à un fournisseur de « X as a Service » ou au « cloud ».

    • C’est comparable à une situation où, sous prétexte que les voitures prennent facilement feu, on vous dirait de laisser la conduite à un professionnel accompagné de pompiers spécialisés.
  • Si les logiciels ne deviennent pas plus compacts, c’est parce que cela demande du temps, des compétences et de la main-d’œuvre très coûteuse.

    • En tant que développeur indépendant, quelqu’un qui a appris node.js l’an dernier peut assembler node.js, des conteneurs, divers services de bases de données hébergées AWS, des services lambda, du stockage d’objets, Cloudflare, yaml, react, vite, etc., et fabriquer en une journée une web app fragile.
    • Un logiciel rapide et peu coûteux à maintenir est difficile à produire de manière rentable.
  • Par le passé, on espérait standardiser des hooks fournis par le système afin que tous les développeurs les utilisent pour les interfaces et autres éléments, tandis que leur travail principal consisterait à coder la logique métier du programme.

    • Ces appels système devaient continuer à remplir les mêmes fonctions même si le code changeait, afin que l’ancien code puisse être compilé et exécuté sans problème tout en offrant davantage de fonctionnalités aux nouveaux logiciels.
    • Ce rêve s’est rapidement effondré (par exemple avec les problèmes de DLL), et une grande partie de la gestion des packages s’est concentrée sur le fait de permettre l’utilisation de la bonne bibliothèque.
    • Nous avons maintenant accumulé beaucoup d’expérience, mais la question demeure : ce rêve est-il réalisable, ou avançons-nous dans la situation chaotique actuelle vers des logiciels rapides, concis, stables et renforcés sur le plan de la sécurité ?
  • Concernant Rust, même si Rust avait 70 % de vulnérabilités en moins par ligne que le C++, si l’on y ajoute des centaines de packages et que le nombre de lignes de code est 10 fois plus élevé, le nombre absolu de vulnérabilités pourrait malgré tout être supérieur.

  • Si j’avais su il y a 20 ans que le logiciel serait comme aujourd’hui, je n’aurais pas choisi de devenir programmeur. Tout est gigantesque, le matériel et le logiciel se livrent une course sans fin, et les choses ne deviennent ni meilleures, ni plus faciles, ni plus simples.

  • Dès qu’on clique sur un lien, un bandeau CTA, des publicités Google et une bannière de cookies apparaissent. À peine la bannière de cookies fermée, une autre publicité Google s’affiche, puis suit le défilement lorsqu’on descend dans la page. Pendant la lecture de l’article, on voit encore au moins trois publicités supplémentaires.

    • Dans ces conditions, il est difficile de prendre ce contenu au sérieux.