Programming languages BASIC中求值函数的实用性探讨

Programming languages BASIC中求值函数的实用性探讨,programming-languages,eval,language-design,basic,language-concepts,Programming Languages,Eval,Language Design,Basic,Language Concepts,我目前正在重新处理我创建的一个基本程序(字节码解释器),无法决定是否将eval函数包含在其中。我怀疑它是否有用 我可以想到eval功能的两种用途: 它似乎是为计算器应用程序量身定做的。但我真诚地认为一个真正的开发人员更愿意自己编写代码 当要求用户提供一些数字时,它将允许输入公式。可能很方便。虽然这听起来不错,但我不记得曾经见过任何提供这种功能的InputBox 我的问题是: 作为通用编程语言(如BASIC)的一部分,eval的实际用途是什么 搜索这个论坛时,我发现了eval函数(虽然是用Py

我目前正在重新处理我创建的一个基本程序(字节码解释器),无法决定是否将
eval
函数包含在其中。我怀疑它是否有用

我可以想到
eval
功能的两种用途:

  • 它似乎是为计算器应用程序量身定做的。但我真诚地认为一个真正的开发人员更愿意自己编写代码
  • 当要求用户提供一些数字时,它将允许输入公式。可能很方便。虽然这听起来不错,但我不记得曾经见过任何提供这种功能的InputBox
我的问题是:

作为通用编程语言(如BASIC)的一部分,
eval
的实际用途是什么

搜索这个论坛时,我发现了
eval
函数(虽然是用Python编写的)。
我是否应该调查一下
eval
的有用性

使用eval是很弱的,不是一个明显的坏习惯

1.违反了“软件基本原则”。您的源代码不是可执行文件的总和。除了你的消息来源, 必须清楚地理解eval的一些论点。对于 因此,它是最后的手段

2.这通常是一种粗心设计的表现。动态源代码是动态构建的,很少有好的理由。几乎任何东西都可以 可以使用委托和其他OO设计技术来完成

3.这导致小代码块的即时编译相对较慢。通过使用更好的设计可以避免的开销 模式


使用
eval
可以在您的语言中为您的语言实现REPL,而无需引导整个语言。对于使用您的语言运行代码的类似工具也是如此。另一个用例是插件:允许应用程序的用户用您的语言编写代码,然后简单地将其放入“plugins”文件夹中进行读取和
eval
ed。使用
eval
您可以用您的语言为您的语言实现REPL,而无需启动整个语言。对于使用您的语言运行代码的类似工具也是如此。另一个用例是插件:允许应用程序的用户用您的语言编写代码,然后简单地将其放入“plugins”文件夹中,在那里它将被读取并
eval
ed。