| name | programming-languages-recherche |
| description | Compétence en recherche sur les langages de programmation suivie sur arXiv sous cs.PL. Couvre la sémantique des langages, la compilation, l'interprétation, l'analyse statique, les systèmes de types, la vérification formelle, la synthèse de programmes, la compilation JIT, l'interprétation abstraite, la vérification de modèles et les langages dédiés (DSL). |
| category | research |
Compétence en Recherche — Langages de Programmation (cs.PL)
Présentation
Cette compétence assure une veille scientifique sur les langages de programmation via arXiv, principalement sous la catégorie cs.PL (Programming Languages). Elle couvre l'ensemble du spectre : de la théorie des types à la compilation optimisante, en passant par la vérification formelle et la synthèse automatique de programmes. Les publications pertinentes apparaissent également dans cs.LO (Logic in Computer Science), cs.SE (Software Engineering) et cs.SC (Symbolic Computation).
Systèmes de Types et Vérification
- Type checking et inférence de types — Algorithmes d'inférence (Hindley-Milner, unification), systèmes de types avancés (types dépendants, types raffinés, types de sous-structure)
- Typage dépendant — Langages avec types dépendants (Coq, Agda, Idris, Lean), théories de types intuitionnistes, égalité propositionnelle
- Théorie de Hindley-Milner — Polymorphisme paramétrique, let-polymorphisme, extensions du système HM (HM(X), types récursifs, types existentiels)
- Vérification de types pour langages industriels — TypeScript, Flow, Rust, Haskell, OCaml, Swift
Analyse Statique de Programmes
- Interprétation abstraite — Domaines abstraits (intervalles, polyèdres, octogones), points fixes, widening/narrowing, analyse de bornes
- Analyse de flot de données — Analyse atteignante, analyse des définitions sûres, analyse de vivacité, analyse des dépendances
- Détection de bugs statique — Null pointer dereference, buffer overflows, fuites mémoire, race conditions, vérification de propriétés de sûreté
- Analyse de programmes pour la sécurité — Analyse de flot d'information, contrôle de non-interférence, analyse de vulnérabilités
Compilation et Optimisation
- Compilation JIT (Just-In-Time) — Compilation à l'exécution, traçage, graphes de flot de contrôle, optimisation spéculative, tiered compilation (HotSpot, V8, LuaJIT, PyPy)
- Représentation intermédiaire (IR) — SSA (Static Single Assignment), CFG, IR MLIR, LLVM IR, Sea of Nodes
- Optimisation de boucles — Loop unrolling, vectorisation, interchange, fusion/fission, strip mining, pipeline logiciel
- Allocation de registres — Coloration de graphe, allocation linéaire, allocation globale vs locale
- Compilation pour matériel spécialisé — GPU, TPU, FPGA, compilation différientiable
Synthèse de Programmes
- Synthèse par contraintes — Synthèse de boucles invariantes, synthèse de programmes avec solveurs SAT/SMT (Sketch, CEGIS)
- Synthèse inductive — Programmation par exemples (PBE), synthèse à partir de spécifications partielles, FlashFill, PROSE
- Synthèse de programmes probabiliste — Synthèse avec garanties de performance, synthèse de programmes randomisés
- Réparation automatique de programmes — Genetic improvement, patch synthesis, APR
Vérification Formelle
- Assistants de preuve — Coq (Gallina, tactiques, Ltac), Isabelle/HOL (Isar, sledgehammer), Lean (tactiques, calc), Agda
- Vérification de programmes — Vérification déductive (Frama-C, Dafny, VeriFast), separation logic, vérification de programmes concurrents
- Preuves assistées par machine — Automatisation des preuves, SMT solvers (Z3, CVC5), ATP (E, Vampire)
- Vérification de modèles (Model Checking) — SPIN, NuSMV, TLA+, vérification de protocoles, vérification de systèmes réactifs
Langages Dédiés (DSL)
- DSL pour l'apprentissage automatique — JAX, TensorFlow DSL, Lantern, Dex, Enzyme (compilation différientiable)
- Compilateurs différientiables — Différentiation automatique au niveau compilateur, Enzyme, Myia, DiffTaichi
- Langages pour graphes et calculs distribués — Pregel, GraphX, Datalog optimisé
- DSL pour domaines spécifiques — Langages pour bases de données (SQL optimisé), langages pour blockchain (Solidity, Move), langages pour calcul quantique (Q#, Quipper, Cirq)
Catégories arXiv surveillées
| Catégorie | Description |
|---|
| cs.PL | Programming Languages |
| cs.LO | Logic in Computer Science |
| cs.SE | Software Engineering |
| cs.SC | Symbolic Computation |
| cs.FL | Formal Languages and Automata Theory |
Articles notables et tendances
- Compiling Bioinformatics Recurrences — Compilation d'algorithmes bioinformatiques récursifs vers du code efficient
- ScratchLens — Visualisation et débogage de programmes Scratch pour l'éducation
- Deep Learning for Type Inference — Inférence de types probabiliste par réseaux de neurones (DeepTyper, LambdaNet)
- Neural Guided Program Synthesis — Synthèse de programmes guidée par l'apprentissage profond (DeepCoder, NPPS)
- Differentiable Programming — Compilation différientiable de bout en bout (Julia Zygote, Swift Differentiable Programming)
Requêtes arXiv recommandées