Je sais que Lisp et Scheme programmeurs l'habitude de dire que eval doit être évitée sauf si cela est strictement nécessaire. J'ai vu la même recommandation pour plusieurs langages de programmation, mais je n'ai pas encore vu une liste claire des arguments contre l'utilisation de eval. Où puis-je trouver un compte des problèmes potentiels de l'utilisation d'eval?
Par exemple, je connais les problèmes de GOTO en programmation procédurale (rend les programmes illisible et difficile à maintenir, du fait des problèmes de sécurité difficile à trouver, etc), mais je n'ai jamais vu les arguments contre eval.
Fait intéressant, les mêmes arguments contre GOTO doit être valide contre les poursuites, mais je vois que les Intrigants, par exemple, ne veut pas dire que les continuations sont "mal" -- vous devez juste être prudent lors de leur utilisation. Ils sont beaucoup plus susceptibles de froncer les sourcils sur le code à l'aide eval que sur le code à l'aide de suites (aussi loin que je peux voir, je peux me tromper).
Edit: WOW, c'était rapide! Trois réponses en moins de cinq minutes! Ainsi, les réponses sont:
- Pas la validation des données des utilisateurs et de l'envoi d'eval est le mal
- L'utilisation d'eval I peut se retrouver avec le code interprété au lieu de compilé
- Eval pourrait rendre le code illisible (même si je pense que l'on peut écrire illisible code sans "puissant", donc ce n'est pas vraiment un problème)
- Les débutants peuvent être confus mélange au moment de la compilation et de l'évaluation en temps quand le mélange eval et les macros (mais je pense que ce n'est pas un problème une fois que vous obtenez une solide compréhension de la façon dont votre langue œuvres, Lisp ou autres)
Jusqu'à présent, il semble que si je générer du code (et non pas directement utiliser quoi que ce soit à partir de la saisie de l'utilisateur directement), et si je sais ce que l'environnement eval sera exécuté; et si je ne suis pas attendre super-rapide de code, puis eval est OK.