Archives de
Category: Veille technologique

« Copilot » est-il un bon copilote ?

« Copilot » est-il un bon copilote ?

Aujourd’hui, la meilleure IA pisseuse de code produit en quelques secondes des lignes qu’un étudiant moyen de niveau bac+1 ou +2 aurait produit en plusieurs heures. Avec le même niveau de « qualité ». C’est à dire que ça ne marche pas. Dans le meilleur des cas, ça marche au début, mais toute modification entraînera son lot de bugs à corriger. Par exemple, des constantes sont hardcodées un peu partout. Des variables qui auraient du être liées ne le sont pas, etc. Bref : le vers est dans le fruit, lowcost => shortlife !

Désolé petit padawan : pour chevalier Jedi devenir, sabre laser il te faudra , mais pour toi-même apprendre à ne pas blesser, beaucoup de temps et force tu auras besoin.

Un code de bien meilleure qualité peut être produit par un bon étudiant bac+3 ou +4, mais toujours en plusieurs heures. Au prix d’un travail bien moins agréable, ce bon étudiant peut décider de faire produire un 1er jet par une IA, prendre le temps de corriger soigneusement le code « prédit ». Il aura économisé quelques heures de travail, essentiellement sur la recherche des modules pertinents et sur la documentation du code.

Voilà où l’on en est.

Par ailleurs, connaissant le paradigme sur lequel est fondé le Machine Learning, il est bien plus probable que la qualité du code produit par les IA ait une tendance à se dégrader plutôt qu’à s’améliorer.

Le paradigme est le suivant : plus gros le dataset d’apprentissage, meilleure la prédiction. Cependant, Copilot, GPT ou Claude ne cherchent pas à prédire le meilleur code, mais à produire le code le plus banal. La meilleure prédiction de code est donc la prédiction du code de qualité la plus moyenne. Donc de niveau bac <+2.

Comme le % de code produit par des IA prédictives sur Github augmente de jour en jour, ces dernières vont prédire de mieux en mieux du code de qualité de plus en plus moyenne.

Conclusion : oui, l’IA prédictive et générative peut augmenter la productivité des développeuses et développeurs de bon niveau. Mais je ne suis vraiment pas convaincu qu’elle augmente aujourd’hui ou dans le futur la productivité des débutantes et débutants.

Artificial intelligence and algorithms: pros and cons | DW Documentary (AI documentary)

Artificial intelligence and algorithms: pros and cons | DW Documentary (AI documentary)

This documentary discusses the evolution of Artificial Intelligence as well as the pros and cons of algorithms. It also accentuates the ethical debate behind this technology.

AI is referred as “a new evolution that could fundamentally change life on our planet”. Will this revolution be used solely in the favor of humanity?

From amazon cashierless supermarkets, to x-rays screening of certain diseases, AI is making fast progressing many fields previously not corelated to the digital world.

However, this “hype” should be treated with caution. It is already raising alarming questions concerning the society, economy, and governance.

In order to know more, I invite you to watch the documentary below.

Centralisme vs Répartition

Centralisme vs Répartition

Écrire un programme informatique, c’est écrire. Même s’il s’agit seulement de décrire des connaissances, des informations, des données et d’exprimer comment elles peuvent évoluer sans perdre leur cohérence et même si le langage de programmation utilisé reste formel, sec et froid, sans ambivalence, sans métaphores, c’est encore écrire.

Si pour chaque problème, on voulait classer les différents algorithmes et leur implémentations, on aurait un ordre partiel, représenté dans un graphe acyclique orienté. Ils seraient rangés par couches :

  • les algorithmes d’une même couche seraient incomparables, car meilleurs sur certains aspects, inférieurs sur d’autres.
  • les algorithmes d’une couche de niveau n seraient supérieurs sur tous les aspects aux algorithmes des couches de niveau inférieur à n

Comme pour le langage naturel, la combinatoire induit que toute phrase raisonnablement longue que l’on écrit, n’a très probablement jamais été écrite. Vérifiez par vous-même : copiez une phrase de ce texte et cherchez la, telle qu’elle sur internet. Vous devrez probablement l’encadrer avec les guillemets du 3 avant de la proposer à votre moteur de recherche favori.

Il est donc difficilement imaginable de créer un programme qui écrit des programmes. Sauf, évidemment, si le problème a traiter est extrêmement bien défini. Le souci, c’est qu’écrire un programme est indissociable de la tâche qui consiste à définir précisément le problème à traiter : le cahier des charges.

Dans tous le processus de développement logiciel, nous sommes donc contraints de faire comme dans l’écriture en langue naturelle : nous puisons nos idées dans notre culture, nos connaissances et notre représentation du monde, pour produire des séquences ordonnées de symboles qui ont un sens, dans le contexte de nos représentations.

Ainsi, dans les premières trois ou quatre décennies de l’informatique, comme les microprocesseurs n’avaient qu’un seul noyau, étaient au mieux associés à un co-processeur arithmétique, n’étaient pas connectés en réseau, il n’y avait aucune incitation à se poser la question d’écrire des algorithmes parallèles, concurrents ou de concevoir des architectures distribuées. Quand nous concevons des machines, elles sont souvent à notre image. Nous prenons alors comme modèle notre cerveau, ou plutôt ce que nous savons, ou croyons savoir de son fonctionnement. C’est ainsi que nous avons développé les approches logiques, symboliques et les approches connexionnistes.

Ce sont les avancées de la science et de la technologie, puis des avancées matérielles qui nous ont incités à changer de style d’écriture et lieu de s’inspirer du cerveau humain, nous avons commencé à nous inspirer des sociétés humaines et à concevoir des approches dites décentralisées.

A ce propos, saviez-vous que « L’existence de sociétés hiérarchisées et inégalitaires n’est pas le résultat d’un long processus naturel et achevé, mais ces formes de gouvernance ont toujours coexisté avec des formes de sociétés égalitaires » ?