我知道 Lisp 和 Scheme 程序员通常会说,除非非常必要,否则应该避免使用 eval
。我已经看到了几种编程语言的相同建议,但是我还没有看到一系列反对使用 eval
的明确论据。我在哪里可以找到使用 eval
的潜在问题的帐户?
例如,我知道程序编程中 GOTO
的问题(使程序不可读和难以维护,使安全问题难以发现等等) ,但我从未见过反对 eval
的论点。
有趣的是,反对 GOTO
的同样参数应该对延续有效,但是我看到,例如,Schemer 不会说延续是“邪恶的”——在使用它们时应该小心。他们更可能反对使用 eval
的代码,而不是使用延续的代码(据我所知——我可能错了)。