2024-1516304 – Ingénieur développement logiciel spécialiste en compilation (H/F)

Domaine / Métier : Numérique/Tech lead
Nature de l’emploi : Emploi ouvert aux titulaires et aux contractuels
Description du poste :
Contexte et atouts du poste

Le projet d’envergure visé est le projet Catala, dans le cadre de la stratégie d’appui aux politiques publiques d’Inria. Catala est un nouveau langage de programmation dédié permettant la transcription des textes de loi définissant des algorithmes en code, en commençant par le droit fiscal et celui des prestations sociales.
Chaque année, l’administration fiscale française doit calculer le montant imposable de plus de 38 millions de foyers fiscaux. Depuis les années 1980, celle-ci a mis en place des algorithmes permettant de centraliser et de faciliter tous ces calculs ; les caisses d’allocation familiale ont fait de même, ainsi que les caisses de retraite et l’assurance chômage. Ces algorithmes, s’exécutant grâce à des programmes informatiques, doivent traduire en code informatique les textes de nature législative et réglementaire auxquels ils correspondent. L’adéquation entre les programmes et les textes est essentielle afin de garantir que le montant d’impôt prélevé est bien celui prévu par le législateur, mais les erreurs de transcription ne sont malheureusement pas rares. C’est pourquoi il est nécessaire aujourd’hui de proposer une alternative aux solutions existantes d’implémentation informatique des lois permettant d’en améliorer la correction et l’efficacité. Le langage Catala, développé à l’Inria sous l’impulsion de Denis Merigoux et qui résulte d’une collaboration entre juristes et informaticiens, cherche à résoudre ces problèmes.

Le langage de programmation Catala repose sur son compilateur, écrit en OCaml. Ce compilateur prend en entrée des programmes sources écrit en Catala et produit en sortie des programmes générés dans des langages cibles tels que OCaml, Python, Javascript, C, etc. Ces programmes générés sont ensuite compilés ou interprétés par les utilisateurs pour être utilisés dans leurs applications informatiques. La maintenance et l’évolution de ce compilateur sont critiques
pour le projet, requérant donc une forte expertise en compilation et conception de langages de programmation.

La première affectation au sein de cette équipe est d’une durée de 4 ans.
Mission confiée
Mission principale (environ 90 % de son temps), qui concerne essentiellement le domaine de la compilation et de la conception de langages de programmation:
– Conception et développement de logiciels au sein des projets de développement auxquels la personne est affectée.
– Conseil et soutien à l’expérimentation.
– Soutien et encadrement pour les développeurs.
Missions collectives (environ 10 % de son temps) :
Dans le but de partager son savoir-faire, la personne recrutée est amenée à réaliser des activités utiles au collectif des ingénieurs de développement de l’institut, dans le domaine de la compilation mais aussi plus largement.

• Connaissances et expérience en maquettage, prototypage logiciels.
• Capacité à participer à la veille technologique au sein de l’institut.
• Capacité à rédiger, à publier et à présenter en français et en anglais.
• Encadrement technique d’autres ingénieurs.
• Capacité à proposer et réaliser des mises en œuvre de référence, des prototypes. et démonstrateurs : autonomie, créativité, veille proactive, écoute des besoins.
• Capacité à comprendre les contextes et besoins scientifiques, et à les traduire dans des implémentations techniques.
• Maîtrise de la démarche scientifique associée à l’expérimentation (science reproductible, état de l’art scientifique, état de l’art technologique d’un domaine, publication logicielle, contribution à la publication scientifique sur l’aspect méthodologique et la mesure de performance).
• Savoir être : ouverture d’esprit, ténacité, aimant l’effort au long terme.
• Expertise technologique pointue sur au moins un outil technique du domaine scientifique de la compilation et de la conception de langages de programmation, par exemple : compilateur pour un langage fonctionnel (OCaml, Haskell, etc.), assistant de preuve (Coq, etc.) ou prouveur automatique (Z3, etc).
Langue / Niveau :
Anglais : Avancé ou indépendant
POSTULER SUR LE SITE

Postuler