L’écoconception en informatique

Rédigé par Nicolas K Aucun commentaire
Feuille d’arbre en ASCII art

Peut-on écrire du code plus écologique ? C’est la question que s’est posé Bruno Thomas lorsqu’il a démarré son projet d’entreprise Classe.io dans lequel ses associés souhaitaient intégrer une dimension éco-responsable.

Une démarche dans laquelle on reconnait les valeurs de Nodatek.

Quelques pistes de réflexion dans cette brève.

Un premier constat : peu de développeurs se posent la question de l’efficacité écologique de leurs logiciels et applications. Pourtant, de nombreux choix des équipes de développement ont un impact sur l’écologie : choix des technologies, simplicité du code, optimisations, …

L’optimisation a un coût et c’est sans doute la raison pour laquelle peu d’entreprises s’intéressent à l’éco-conception logicielle. Parallèlement, ça peut aussi rapporter sur le long terme : s’il y a besoin de moins de serveurs pour faire tourner une application, on a tout à y gagner !

Mais l’optimisation à outrance rend le code difficile à maintenir. Alors peut-être faut-il déjà avoir quelques réflexions simples lors du développement :

  • les technologies que j’utilise sont-elles les plus efficaces (tous les langages ne sont pas aussi gourmands en énergie, idem pour les frameworks, cf une publication de l’INRIA sur le sujet) ? Écrire du code spécifique ne serait-il pas plus adapté pour un besoin précis ?
  • l’architecture logicielle a-t-elle tendance à réaliser des requêtes nombreuses qui pourraient être regroupées ?
  • mon application est-elle accessible/responsive ?
  • mon application tourne-t-elle sur des vieilles machines ou va-t-elle contribuer à donner un sentiment à l’utilisateur qu’il est temps de changer son ordinateur / son téléphone ?
  • mon projet respecte-t-il les standards dans son domaine ?
  • si mon projet est abandonné, est-il possible de publier tout ou partie des sources sous licence libre ?

Autant de questions qui peuvent aider à avoir une démarche un peu plus écologique dans la conception de logiciels, applications, et sites web.

Développeurs, avez-vous déjà pensé à l’impact écologique de votre code ?

Sources :

Un site web vraiment léger et écologique

Rédigé par Nicolas K Aucun commentaire
Panneaux solaires (photo de Vera Kratochvil sur Public Domain Pictures)

On le sait (du moins quand on s’y intéresse) : internet est très gourmand en énergie. Internet, c’est aujourd’hui 10% de la consommation mondiale d’électricité. Et ça augmente chaque année.

Plus le temps passe, et plus les sites Internet sont lourds à charger, ce qui demande donc de plus en plus d’énergie et des ordinateurs de plus en plus puissants pour les visiter, des serveurs de plus en plus puissants pour les diffuser. Parallèlement, nous sommes tous de plus en plus "en ligne", ce qui augmente évidemment aussi la consommation énergétique du web.

C’est sur ces constats que Low-Tech Magazine, un site internet qui traite de la low technologie, a décidé de montrer l’exemple en concevant une nouvelle version de leur site la plus écologique possible.

Low-Tech Magazine, c’est un site internet qui questionne à travers ses articles sur le progrès technologique : plutôt que de toujours utiliser des nouvelles technologies, n’y a-t-il pas des connaissances ou des technologies plus anciennes, oubliées, qui peuvent répondre aussi bien voire mieux à certains besoins ? N’y a-t-il pas possibilité de combiner anciennes et nouvelles technologies pour une société plus durable ?

C’est dans cette logique et contre la tendance actuelle qu’ils ont donc décidé de concevoir une nouvelle version de leur site qui soit légère, peu consommatrice d’énergie, et alimentée (tant qu’à faire) par de l’énergie renouvelable.

Pour ce faire :

  • le site est statique : plutôt que de générer les pages à la demande, les pages sont générées une fois pour toutes (et demandent donc moins d’énergie au serveur) ;
  • la taille des pages a été réduite à son minimum en supprimant les images jugées non indispensables à la diffusion du réel contenu (le logo par exemple) et en utilisant une ancienne technique de compression pour les autres images ;
  • la police de caractère est celle par défaut du navigateur du client ;
  • il n’y a ni cookies, ni publicité, ni pistage par un tiers (le site étant auto-hébergé, ils ont quand même accès aux statistiques de consultation des pages) ;
  • le site est auto-hébergé, sur un serveur très peu consommateur et qui n’est pas relié au réseau électrique classique : il est alimenté par des panneaux solaires et une petite batterie qui prend le relais en cas de mauvais temps (mais pour 2 jours seulement). En cas de mauvais temps prolongé, le site devient donc inaccessible.

Cette initiative est vraiment intéressante et fait réfléchir. Certes, tout le monde ne peut pas appliquer l’ensemble des points précédents pour son projet :

  • un site statique est par définition identique pour tout le monde et ne permet pas d’interactivité,
  • la compression des images qu’ils utilisent n’est pas adaptée pour montrer justement un travail artistique par exemple
  • les cookies peuvent être nécessaire pour répondre à certains besoins

Cela dit, ce type de démonstration peut au moins nous inspirer et nous faire prendre conscience des impacts des choix technologiques que l’on fait sur le plan écologique.

Sources :

Un réseau de neurones qui explique son raisonnement

Rédigé par Nicolas K Aucun commentaire
Image de Daniel Friedman

Les réseaux de neurones ont déjà montré des capacités étonnantes. Ils sont déjà meilleurs que l’homme dans bien des domaines. Mais ils sont tellement complexes que même leurs concepteurs n’arrivent pas à comprendre comment ils raisonnent et comment ils aboutissent à la réponse qu’ils donnent à un problème. C’est pour cette raison qu’ils sont souvent considérés comme une boîte noire qui donne un résultat certes souvent juste mais sans aucune explication.

Une équipe du MIT vient de créer un nouveau type de réseau de neurones qui a un raisonnement transparent, proche de celui de l’homme.

Baptisé TbD-net pour Transparency By Design Network, ce réseau de neurone décompose les problèmes en sous-problèmes compréhensibles. Techniquement, il est décomposé en un certain nombre de modules qui ont chacun une tâche particulière.

Par exemple, vous pouvez lui donner une image et lui demander de quelle couleur est le gros cube métallique sur cette image. Un premier module va d’abord chercher sur l’image les gros objets puis envoyer le résultat à un deuxième module qui va pour sa part détecter lesquels sont métalliques. Un troisième module va ensuite filtrer les résultats pour ne récupérer parmi ces gros objets métalliques celui qui est un cube. Et enfin, un dernier module va être capable de donner la couleur de ce cube : rouge par exemple.

Cette technologie est révolutionnaire car elle résout un problème majeur des réseaux de neurones actuels : l’obscurité du raisonnement. Dans le domaine médical par exemple, l’IA est déjà meilleur que l’homme pour détecter certaines maladies à partir d’un scanner par exemple. Mais jusqu’à maintenant, il n’y avait aucun moyen de comprendre pourquoi l’IA détectait pour un sujet donné une maladie : il fallait faire confiance à l’IA aveuglément. Avec ce nouveau type de réseau de neurones, des arguments compréhensibles par l’homme permettront de comprendre la décision de l’IA.

Mais ce n’est pas tout : en plus d’avoir un processus de raisonnement compréhensible par l’homme, ce nouveau réseau de neurones donne des résultats meilleurs que les réseaux actuels ! (Dans le domaine de la vision par ordinateur.)

Une belle avancée à suivre de près !

Sources :

Outil C++ : Sortie de Metashell 4.0.0

Rédigé par Nicolas K Aucun commentaire
Photo de Ricardo Gomez Angel sur Unsplash

La version 4.0.0 de Metashell vient de sortir.

Je ne connaissais pas cet outil, mais il semble très pratique. Metashell, c’est un shell qui permet de débugger ce qui se passe à la compilation : les instanciations de templates, les macros, etc. En d’autres termes, c’est un débugger de métaprogrammation !

Si vous voulez tester, il existe une démo en ligne : http://metashell.org/about/demo/

Source :

C++ : vers une standardisation de la gestion de dépendances ?

Rédigé par Nicolas K Aucun commentaire
Dessin de Moonassi

Le comité de standardisation du C++ (plus précisément le groupe de travail SG15 Tooling) travaille sur une standardisation de la gestion des dépendances en C++ dans le but de simplifier la construction d’un programme.

L’objectif est de s’appuyer sur ce qui existe (car il existe des outils non standards) et de créer un gestionnaire de dépendances et de construction standard. Et plutôt que d’utiliser des scripts (comme cmake par exemple), l’idée est de faire quelque chose de déclaratif, de façon à garder quelque chose de facile à lire, à maintenir, à modifier. Un exemple fictif (de Mathieu Ropert) :

name: hello
version: 1.0.0
type: lib
standards:
- c++11
- c++14
- c++17
sources:
- src/hello.cpp
public_includes:
- include
public_dependencies:
- boost_asio/1.66.0
tests:
  sources: 
  - test/hello_test.cpp
  dependencies:
  - catch2/2.2.2

Personnellement, j’aime bien cette idée. Et vous ?

Sources :

Fil RSS des articles de cette catégorie