Codage IA : les langages les plus frugaux en tokens
Dessiner un cuboïde, créer un raccourcisseur d’URL, lire des variables dans un fichier de configuration, implémenter le code de César… Autant de tâches de programmation qui figurent au catalogue de Rosetta Code.
Le projet en réunit plus d’un millier. Il cherche à collecter des solutions dans un maximum de langages. Son dataset a servi de base à une expérimentation dont un des fondateurs de CatchMetrics (optimisation des sites web) a récemment rendu compte. L’objectif était de déterminer quels langages sont frugaux en tokens – et donc susceptibles de moins encombrer la fenêtre de contexte des agents de codage.
Les langages dynamiques (juste) devant les langages fonctionnels
Le travail de comparaison a été confié à Claude Code, à l’appui d’un portage communautaire du tokenizer de GPT-4. L’agent avait, au préalable, sélectionné 19 langages « populaires » et avait récupéré les tâches ayant des solutions dans chacun de ces langages.
L’auteur de l’expérimentation admet les limites et les biais potentiels de son approche, qu’il reconnaît dépourvue de « rigueur scientifique » (pas de communication du prompt, entre autres). Il en souligne toutefois quelques enseignements. Entre autres, la plus grande efficacité des langages dynamiques (Clojure, Julia, Ruby, Perl et Python occupent les 5 premières places). Ne pas avoir à déclarer de types explicites aide, considère-t-il.
L’intéressé s’étonne de l’efficacité de langages fonctionnels comme Haskell et F#. L’un et l’autre consomment à peine plus de tokens que les langages dynamiques. C’est sans doute dû mécanisme d’inférence de types, estime-t-il.
La frugalité des langages orientés tableaux
Ses conclusions ont fait réagir. On lui a notamment rappelé les garanties qu’apportent les annotations de type… et le coût – en efforts comme en tokens – nécessaire pour en apporter de comparables dans les langages à typage dynamique.
On lui a aussi suggéré de tester des langages orientés tableaux. Ce qu’il a fait, avec APL et J.
APL se classe au 4e rang, consommant 110 tokens en moyenne. Sa syntaxe concise est un plus. Au contraire de son jeu de caractères, riche en glyphes (⍳, ⍴, ⌽…) auxquels le tokenizer est mal adapté.
Limité à de l’ASCII, J se révèle plus frugal, descendant à 70 tokens de moyenne.
L’expérience a ses limites en ce qu’elle se focalise sur de petites tâches. De même, le tokenizer est fixe, alors qu’on pourrait le réentraîner pour mieux gérer le code. L’auteur ne dit pas ailleurs pas si son comparatif a pris en compte les éventuelles erreurs à l’exécution et les tokens qu’elles ont consommés. Il n’aborde pas non plus les spécificités syntaxiques des langages. Par exemple, le fait que certains intègrent du code de formatage de texte dans des chaînes littérales comptées comme des tokens, tandis que d’autres ont un usage important des espaces – on peut citer les indentations de blocs dans Python – quant à eux possiblement pas comptés comme des tokens.
Illustration générée par IA
The post Codage IA : les langages les plus frugaux en tokens appeared first on Silicon.fr.
