【问题标题】:Do certain languages have intrinsic processor architectures by-design某些语言是否有内在的处理器架构设计
【发布时间】:2010-10-29 19:39:28
【问题描述】:

我很想知道某些语言在设计上是否更适合某些处理器架构。当我说架构时,我指的不是 ARM/PPC/MIPS,而是更多基于堆栈、累加器或寄存器的架构。

例如,我可以想到 Forth,它是一种堆栈架构。还有其他人吗?

【问题讨论】:

    标签: programming-languages cpu-architecture


    【解决方案1】:

    是的,当然……它也有相反的方向:许多硬件架构旨在适应某些语言。

    • RISC 架构在很大程度上解决了人们从汇编语言转向 C/C++ 等编译语言的问题。
    • Burroughs B5000 使用 Algol 而不是汇编程序。
    • 有几个不同的Forth chips
    • Lisp machines 旨在高效运行 Lisp。
    • Java 处理器在硬件中运行 Java 字节码。
    • 某些 ARM 处理器具有(可选)Java acceleration technology

    可能还有更多好的例子。

    【讨论】:

    • + 在 Burroughs 和 Lisp 上击败我。请注意,Algol 的“按名称调用”架构需要一个“显示列表”(今天的“延续”和“lambda 表达式”的前身)并在硬件中支持它。
    • ... 在 70 年代和 80 年代的某个时期,看起来下一波浪潮将产生,而不是特定于应用程序的机器语言(这是编译器所做的),而是应用程序-专用集成电路 (ASIC)。所以有一段时间,硬件试图成为新的软件。
    【解决方案2】:

    是的。例如,Occam 编程语言最初专门针对Transputer 架构。

    【讨论】:

      【解决方案3】:

      也许这是一个聪明的答案,但是:

      所涉及的处理器的汇编语言与体系结构紧密相关,因此,是的,确实存在一些确实如此的语言。

      高级语言是否表现出相同的特性可能更有趣。

      【讨论】:

        【解决方案4】:

        我在 Google 视频上看到了 Simon Peyton Jones 的一次演讲,其中谈到了这一点。他提到,过去人们对编写专门用于执行特定语言的硬件非常感兴趣,但人们找到了解决问题的更好方法:让编译器更智能。看看哈斯克尔。 GHC 从高级构造中生成了一些快得离谱的代码,但 Haskell 与 x86 汇编器非常不同,以至于两者看起来彼此陌生。 Java 和 Lisp 也发生了同样的事情:Java 和 Lisp 在现代计算机上都非常快,并且充分利用了我们的处理器,但 Java 最初是为一个奇怪的基于堆栈的字节码编译的,很久以前,人们构建了 Lisp 机器。

        顺便说一下,这是视频。其中大部分与当前问题无关,但您可能会觉得它很有趣,它是关于“为什么函数式编程很重要”以及如何以简单的方式进行单元测试。

        http://video.google.com/videoplay?docid=-4991530385753299192&hl=en

        直到最近(过去十年左右?),编译器已经足够聪明,可以使 Haskell 和 Java 几乎与 C 一样快,尽管它们都没有暴露很多底层架构。哎呀,GHC 甚至都不使用堆栈,这有多古怪?

        【讨论】:

          【解决方案5】:

          最著名的例子当然是c

          【讨论】:

          • 您能详细说明一下吗?对于有这个问题的人,你的答案并不明显,因此可能没有帮助。为什么是“当然”?
          【解决方案6】:

          C 是在 1970 年代初编写的,以适应 DEC PDP-11 例如在 PDP-7 上,编程语言 B 只有一种数据类型,但将其移植到具有不同大小数据类型的 PDP-11 中,变量的数据类型被添加到语言中。

          【讨论】:

            【解决方案7】:

            大多数语言都以Von Neumann architecture为目标,这是大多数CPU的基础。

            Neil Butterworth 提到的 Transputer Occam 是一个值得注意的例外。

            VHDL 是另一个例外,它基于数据流的概念,但它不是一种编程语言,它是一种硬件描述和仿真语言。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2013-10-24
              • 1970-01-01
              • 1970-01-01
              • 2011-02-22
              • 2012-01-09
              • 1970-01-01
              • 2023-01-15
              • 1970-01-01
              相关资源
              最近更新 更多