En informatique, un langage de programmation dynamique est un langage de haut niveau qui effectue au moment de l'exécution des actions que d'autres langages ne peuvent effectuer que durant la compilation. Ces actions peuvent inclure des extensions du programme, en ajoutant du code nouveau, en étendant des structures de données et en modifiant le système de types, cela pendant l'exécution du programme. Ces comportements peuvent être émulés dans pratiquement tous les langages de complexité suffisante, mais les langages dynamiques ne comportent pas de barrière, telles que le typage statique, empêchant d'obtenir directement ces comportements.
Les concepts de langage dynamique et de typage dynamique ne sont pas des concepts identiques[pas clair] ; un langage dynamique n'est pas nécessairement typé dynamiquement, bien que la plupart des langages dynamiques le soient.