Voici un exemple en php, ces deux lignes sont absolument équivalentes :
a = 1 + b; print c; eval("a = 1 + b; print c;");
Une évaluation à travers une chaîne de caractères au cours de l'exécution permet facilement de :
- Placer du code dans une base de données pour une exécution ultérieure
- Permettre quelques raccourcis d'écriture ou des "astuces" pour simplifier la programmation
- Exécuter un fichier extérieur
- Accéder dynamiquement à une variable ou une fonction à partir de son nom
- Protéger du code (en décodant à la volée le code source protégé)
Puisqu'un programme utilisant eval ne peut pas être complètement compilé (on peut toujours avoir besoin d'un élément dans un eval, donc nombre d'optimisations habituelles sont très compliquées), ces programmes sont par nature plus lents qu'un programme compilé. Ceci en considérant qu'on utilise eval sans en avoir besoin, car ses raccourcis d'écriture permettent une programmation plus rapide. De plus, le langage utilisé peut optimiser cette fonction de sorte qu'il est des fois préférables de l'utiliser plutôt que d'essayer d'arriver au même résultat sans eval.
Malgré la puissance de cette fonction et de ses possibilités, eval n'est pas très utilisé. Et ceci car son utilisation rend le code plus complexe à comprendre et en partie car cette fonction est considéré comme "superflue" et "sale".