Christoffer Lernö ne dit pas que C3 change soudainement de langage. Il dit qu’il s’est trompé sur une phrase utilisée pendant des années pour le présenter.1
« Alternative à C » lui paraissait évidente. Dans son billet du 16 août, le créateur de C3 explique qu’il associait encore C à une époque où le langage servait couramment à écrire des applications entières. Pour beaucoup de développeurs actuels, estime-t-il, l’expression renvoie plutôt aux domaines où C reste particulièrement visible : systèmes d’exploitation, embarqué, bibliothèques et backends très sensibles aux performances.1
Ce décalage de définition a une conséquence de marketing assez concrète. C3 parlera moins de lui-même comme d’un langage « C-like » et davantage comme d’un langage destiné aux applications généralistes.1

Le billet est intéressant parce qu’il parle moins de syntaxe que de mémoire professionnelle. Lernö raconte BASIC, Turbo Pascal, C, C++, Java puis PHP. Son point de référence est la vitesse avec laquelle il pouvait construire un programme procédural sans décider très tôt d’une architecture d’objets.1
De là vient une autre thèse du texte : sa méfiance envers l’approche « methods first » et une partie de la programmation orientée objet. Selon lui, penser d’abord game.run() plutôt que run(&game) pousse plus tôt vers des relations structurelles qui deviennent coûteuses à inverser quand on découvre le problème en avançant.1
Il faut laisser cette idée à sa bonne place. C’est une opinion argumentée par son parcours et par les choix de C3, pas un résultat établi sur la productivité de tous les projets orientés objet. Le billet devient beaucoup moins intéressant si on le transforme en énième guerre « OOP contre procédural », cérémonie périodique où des adultes redécouvrent qu’un outil a des compromis.
Le point plus utile est ailleurs. Lernö dit avoir voulu « rafraîchir C » pour retrouver un langage d’application simple, mais avec les chaînes, tableaux dynamiques, maps et autres commodités qui rendent un environnement moderne praticable.1 Dans sa tête, le concurrent n’était donc pas seulement C. Il pouvait être C++, Swift, Java ou Kotlin selon l’application.
Le logiciel n’a pas besoin d’avoir changé pour que sa catégorie devienne fausse. C’est ce qui arrive ici : C3 avait choisi un raccourci compréhensible par son auteur, puis découvert que ce raccourci envoyait précisément le mauvais signal à une partie du public.
Changer le positionnement ne rendra pas le langage généraliste par décret. Mais cela clarifie enfin le test auquel Lernö veut qu’on le soumette : pas seulement « est-ce un meilleur C pour écrire du bas niveau ? », mais « est-ce un langage agréable pour construire un programme entier ? ».
