La programmation multi-étapes ( MSP ) est une variété de métaprogrammation dans laquelle la compilation est divisée en une série de phases intermédiaires, permettant la génération de code d'exécution de type sécurisé . Les types définis statiquement sont utilisés pour vérifier que les types construits dynamiquement sont valides et ne violent pas le système de types.
Dans les langages MSP, les expressions sont qualifiées par une notation qui précise la phase à laquelle elles doivent être évaluées. En permettant la spécialisation d'un programme à l'exécution, MSP peut optimiser les performances des programmes : il peut être considéré comme une forme d' évaluation partielle qui effectue des calculs à la compilation en échange d'une augmentation de la vitesse de traitement à l'exécution.
Les langages de programmation multi-étapes prennent en charge des constructions similaires à la construction Lispeval de citation et , sauf que les règles de portée sont prises en compte.