programming-languages - 执行自己的代码的编程语言类的名称

标签 programming-languages nomenclature

可以执行自己的代码(作为字符串文字传递)的编程语言叫什么?我脑海中的设置与此类似(暂时忘记输入代码、结果等):

string eight = "5+3"
int result = run(eight)

在哪里 run是关键字。那是一种反射式编程语言吗?

最佳答案

你能想到的最好的就是你所要求的就是“有一个评估功能”(正如哈维尔在他对你的问题的评论中提到的那样)。

自托管不是必需的,也不一定能满足您的需求。两个例子是:C 是一种自托管语言,它不能在字符串中执行它自己的代码,但 Tcl 不是一种自托管语言,它可以执行它自己在字符串中给出的代码。

  • 附带说明一下,C 有一半时间在没有 API 来执行外部进程的环境中运行。因此,虽然在某些环境中您可以配置您的系统以使 C 能够执行其自己的编译器,然后执行其自己的代码,但通常这并不是您真正想要的。
  • 旁注。如果我们可以作弊并使用“执行外部编译器”路线来做到这一点,那么语言不需要自托管来做你想做的事。它只需要一个 exec 函数来调用它自己的编译器(通常用 C 编写)。

  • 与反射/自省(introspection)相同,能够自己进行自省(introspection)并不意味着您可以在字符串中执行代码。具有反射但没有内置 eval 的语言的两个示例是 C# 和 Java。
  • 附带说明一下,一旦你有一个 eval 函数,你通常可以进行反射/内省(introspection),尽管方式很笨拙。

  • 自我解释与自我托管的定义相同。 Tcl 是一种语言,它的 eval 函数不是自己编写的——它只是公开了用 C 实现的 Tcl 代码评估器。

    乍一看,元循环评估器看起来像你想要的。它被定义为自我解释,其中 eval 函数是内置的,而不是在语言本身中实现的。但进一步看,您会注意到它是由用于实现该功能的机制定义的,而不是由功能本身定义的。 Tcl 又是一个异常(exception),它不满足元循环评估器的所有定义,但仍然具有 eval 函数(不适用,没有必要)。因此,在我看来,元循环评估器是“具有评估功能”功能的特定实现。

    因此,我只想说任何“具有 eval 功能”的语言都可以满足您的要求。

    关于programming-languages - 执行自己的代码的编程语言类的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2390667/

    相关文章:

    syntax - 我们可以将 X/Y 或 X :Y in Prolog 归入什么类别

    c++ - 为什么人们认为唯一创建 C++ 的人是 Bjarne Stroustrup?

    ruby - 为什么在 Ruby 中将 0 视为 True?

    c++ - 文件读取麻烦?

    lisp - Lisps 何时/为何开始使用分号进行注释?

    haskell - Haskell 中不同类型之间的关系

    javascript - "JSON object"应该叫什么?

    programming-languages - 您如何看待 Google 的新编程语言 : Noop?

    dns - QD 在 DNS RFC1035 中代表什么

    math - 十六进制数?