解释语言:更高

到目前为止,我已经为他们设计了5种实验语言和口译员,作为一种爱好和乐趣的教育。

我注意到的一件事:类似汇编的语言只具有子例程和条件跳转作为结构,比起使用if,while等等的高级语言慢得多。 我同时开发了它们,并且都是解释型语言。 我用C ++编写了解释器,并试图优化代码执行部分以尽可能快。

我的假设:在几乎所有情况下,解释型语言的表现都随其级别(高/低)而增加。

  • 我基本上对吗? (如果没有,为什么?)
  • 编辑:我没有提到这个词在这里编译一次,这是关于解释与解释!


    在这两种情况下,你都是插入代码。 我会想象在更高级的语言中,你有更少的指令来完成相同的任务,所以你花更少的时间来解释指令,花更多的时间去做一些有用的事情。


    最后,无论我们是在讨论汇编语言还是下一个大事语言(TNBL),用您的语言解析一行文本都将花费大致相同的时间。 从字面意义上讲,这不是真实的,但在图灵式的大O型符号方式中是正确的。

    如果需要(再次“大致”)相同的时间来确定这意味着什么:

    mov $3, $4, $5
    

    如下所示:

    print "foo"
    

    ...然后让我们想象用我们的两种语言编写Hello World。 程序集解释器将有一个更复杂的程序来解析。 比如说,n行的长度是TNBL Hello Wolrld的n倍。 所以你最基本的开销是n倍。

    最重要的是,您可以使用更简单的语言来执行所有代码,以模拟寄存器,操作等的行为。这是很多工作。 在TNBL中,解释代码的语义与主机语言可以做的事情之间几乎是一对一的映射。 这意味着大大减少了从语义到执行的开销。

    我相信你会看到一些会忽略这篇论文的Java程序员,但我会指出,Java有几个好处:中间字节码,试图使代码尽可能接近硬件在执行它之前,成千上万的人工年代开始着手开发该语言的编译时和运行时优化。 他们几乎没有爱好者语言的连续体。 =]


    当然,现实情况稍微复杂一些。 随着语言,口译员和编译人员的日益熟练,机器出现了优化性能的新机会。 此外,任何给定程序的性能在很大程度上取决于程序员编写的代码的质量。

    此外,表演以不同方式影响不同类型的节目。 例如,业务线应用程序几乎总是将大部分速度从数据库中查找数据并通过网络发送,而游戏程序员必须处理完全不同的性能概念,即视频卡帧的概念率。

    所以表现画面并不像看起来那么简单。

    链接地址: http://www.djcxy.com/p/72317.html

    上一篇: Interpreted languages: The higher

    下一篇: How to access locals through stack trace? (Mimicking dynamic scope)