Publicodes, l’étrange langage de développement en français
Cocoricode
Une partie des simulateurs proposés aujourd’hui par l’administration et le gouvernement français sont basés sur un langage spécifique, nommé Publicodes. L’une de ses particularités est d’être intégralement en français. Il a été créé en 2017 par un développeur, Maël Thomas, avec qui nous nous sommes entretenus.
Le 19 décembre à 09h15
10 min
Logiciel
Logiciel
Voilà un langage bien étrange, dont la syntaxe est basée sur des mots courants en français, pour en simplifier l’utilisation. Si vous n’en avez jamais entendu parler, on le trouve pourtant sur bon nombre de services proposés par l’administration directement ou dans des projets affiliés. mon-entreprise.fr a par exemple été incubé par l’URSSAF et s’en sert pour calculer les coûts liés aux salaires. Nos Gestes Climat a été incubé par l’ADEME et propose un calculateur pour estimer les empreintes carbone et eau. Le Code du travail numérique s’en sert aussi pour répondre aux questions sur le droit du travail.
De quoi parle-t-on exactement ? D’un langage déclaratif créé pour coder les algorithmes d’intérêt public. Il génère automatiquement une documentation permettant d’expliquer les opérations. Dès sa création, ses concepteurs ont cherché à fournir un code interprétable et explicable. Publicodes se veut particulièrement adapté à la modélisation des domaines métiers pouvant être décomposés en règles élémentaires. Sur le GitHub du projet (le langage est sous licence MIT) et le site officiel, on trouve plusieurs cas d'usage : législation socio-fiscale, bilan carbone, estimateur de rendement locatif, etc.
Le langage a été créé en 2017 par le développeur Maël Thomas, alors qu’il travaillait à la Direction du numérique (DINUM) sur un projet de simulateur d’embauche (devenu depuis mon-entreprise.fr après une reprise par l’URSSAF). Aujourd’hui, il souhaite faire plus largement connaitre Publicodes, pour attirer des personnes intéressées, collecter des retours critiques, voire des retours pratiques d’autres membres des administrations. Nous lui avons posé quelques questions.
Comment vous est venue l’idée de créer Publicodes ?
J’ai commencé à travailler pour l’État en 2016, avec un CDD de deux ans. Je suis arrivé dans l’équipe qui travaillait sur le simulateur d’embauche. On utilisait alors un outil qui s’appelle OpenFisca, assez lourd, en Python, mais qui a joué un rôle crucial dans l'ouverture des calculs de l'administration et dans l'évolution des pratiques. On avait alors une écriture vectorielle et des formules de calcul et on devait coder les fiches de paye avec ça. C’était démesurément compliqué. On ne pouvait pas faire de choses simples comme « if ». Je me suis dit que l’on pouvait faire beaucoup plus simple.
Il reste 74% de l'article à découvrir.
Déjà abonné ? Se connecter
Soutenez un journalisme indépendant,
libre de ton, sans pub et sans reproche.
Accédez en illimité aux articles
Profitez d'un média expert et unique
Intégrez la communauté et prenez part aux débats
Partagez des articles premium à vos contacts
Abonnez-vousPublicodes, l’étrange langage de développement en français
-
Comment vous est venue l’idée de créer Publicodes ?
-
Sur quoi est basé le langage ?
-
Publicodes a-t-il fait des émules depuis sa création ?
-
À quoi correspond aujourd’hui cette volonté de parler plus ouvertement de Publicodes ? Quel est votre objectif ?
-
La fragmentation y est prononcée ?
-
Si le but de Publicodes est de coder la loi, y a-t-il des problèmes d’interprétations de cette loi ? Comment obtenez-vous les retours ?
-
Cette volonté de mieux faire connaitre Publicodes se heurte au mur de la francophonie, car centré sur la loi française. Y a-t-il une volonté d’internationaliser le projet ?
-
Publicodes pourrait-il être utilisé pour autre chose que de la simulation ?
Commentaires (22)
Le 19/12/2024 à 10h30
D'autre part, dans mon métier, je suis amené à fournir à des utilisateurs non informaticiens (juste curieux) des outils de configuration. Parfois, un simple fichier de configuration de type INI ne suffit pas, il faut pouvoir y coder quelques règles. Demander aux gens d'apprendre Python ou Lua, c'est un peu trop exigeant.
Quand je vois Publicodes, je me dis que c'est justement adapté à la cible. Excel devient trop vite le bordel, et il est difficile de partager son document.
C'est clairement pas un outil pour les développeurs de métier. C'est justement le but, j'ai l'impression.
Le 19/12/2024 à 10h58
On dit souvent de lire le code source, mais un peu comme pour lire les textes de loi, il faut avoir un certain niveau de connaissances avant de pouvoir l’interpréter. Cette initiative pourrait-elle un jour permettre à Mr Tout-Le-Monde de comprendre les calculs et décisions qui en découlent ?
Le 19/12/2024 à 11h22
Côté dev : il est plutôt facile de générer du code à partir de ce langage
Côté métier : il est plutôt facile à lire, et donc de voir s'il y a des erreurs.
La lecture ne nécessite pas un gros bagage technique, et ceux qui font déjà du Excel s'en sortirons très bien.
Qui plus est, je vois un avantage très rare par rapport aux autres langages plus "classiques" : le support des unités.
Enfin, le métier peut facilement faire des cas de tests et vérifier que les résultats sont bons (toujours d'un point de vue métier). Louvois aurait bien eu besoin de cette approche !
Le 20/12/2024 à 11h29
Le 20/12/2024 à 11h58
A ma connaissance, je ne vois que C++ et F# qui proposent ce genre de fonctionnalité. Des langages beaucoup plus répandus (Python, Javascript, PHP, Java, C#, etc.) ne proposent pas nativement ce concept (bien que parfois il soit possible de l'approcher)
Le 19/12/2024 à 11h24
Le 19/12/2024 à 11h30
Le studio* remplit en partie cette fonction, mais pas complètement.
https://publi.codes/studio
Le 19/12/2024 à 11h46
Le 19/12/2024 à 12h47
Si @laem sait répondre, ce serait top !
Le 19/12/2024 à 13h08
Mais sur publicodes, on n'utilise que les fonctions très basiques. D'ailleurs, on conseille maintenant d'utiliser des fichiers .publicodes pour la coloration syntaxique. Un parser simple pourrait être une option un jour.
Dans tous les cas, Publicodes prend en entrée du JSON. Libre à l'utilisateur d'utiliser du TOML s'il le désire, tant qu'il produit un JSON compatible :)
Hier à 03h44
Et YAML n'est pas un superset de JSON en plus ?
Le 19/12/2024 à 12h04
Mais pour le coup, c'est beaucoup moins convivial 😅
Le 19/12/2024 à 12h09
Modifié le 19/12/2024 à 13h07
Le 19/12/2024 à 19h21
Modifié le 19/12/2024 à 20h24
Edit : voir aussi cette interface qui donne l'équivalent en Python.
Le 19/12/2024 à 12h34
Le 19/12/2024 à 12h48
Le 19/12/2024 à 13h06
Le 19/12/2024 à 13h49
Mais on pourrait appliquer la même chose et venir enrichir au fur et à mesure avec la prise en compte du nombre de parts, du calcul du montant imposable à partir des revenus, etc...
Ca peut être assez itératif comme descriptif
montant imposable : 35000€
impot revenu :
somme :
- revenu tranche 1 * tranche 1 taux
- revenu tranche 2 * tranche 2 taux
- revenu tranche 3 * tranche 3 taux
- revenu tranche 4 * tranche 4 taux
- revenu tranche 5 * tranche 5 taux
avec :
tranche 1 taux : 0%
tranche 1 plafond : 11520 €
tranche 2 taux : 11%
tranche 2 plafond : 29373 €
tranche 3 taux : 30%
tranche 3 plafond : 83988 €
tranche 4 taux : 41%
tranche 4 plafond : 180648 €
tranche 5 taux : 45%
revenu tranche 1 :
valeur : montant imposable
plafond : tranche 1 plafond
revenu tranche 2 :
valeur :
valeur : montant imposable
plafond : tranche 2 plafond
abattement : revenu tranche 1
plancher : 0 €
revenu tranche 3 :
valeur :
valeur: montant imposable
plafond : tranche 3 plafond
abattement : revenu tranche 1 + revenu tranche 2
plancher : 0€
revenu tranche 4 :
valeur :
valeur : montant imposable
plafond : tranche 4 plafond
abattement : revenu tranche 1 + revenu tranche 2 + revenu tranche 3
plancher : 0€
revenu tranche 5 :
valeur : montant imposable
abattement : revenu tranche 1 + revenu tranche 2 + revenu tranche 3 + revenu tranche 4
plancher : 0€
Bon, pas utilisable en l'état car l'indentation n'est pas conservée :/
Le 19/12/2024 à 13h51
J'ai cru comprendre que tu ne gérais plus trop l'évolution, mais si c'est syntaxiquement faisable, ce serait un ajout intéressant pour gagner en clarté je pense ;)
Le 20/12/2024 à 07h16
Dans le genre arrêtez de nous péter de nouveaux langages qui ont en gros la même syntaxe qu'avant ou pire, le langage M de MS dans PowerQuery est impressionnant pour la transformation de données.
Deux langages qui ont été pensés autrement que "C et trop compliqué, il faut le simplifier", mais plutôt "C est niveau CPU, j'ai besoin d'un langage niveau utilisateur".
Je pense que je vais modifier des programmes pour intégrer ce langage pour les règles.