【发布时间】:2010-10-29 19:39:28
【问题描述】:
我很想知道某些语言在设计上是否更适合某些处理器架构。当我说架构时,我指的不是 ARM/PPC/MIPS,而是更多基于堆栈、累加器或寄存器的架构。
例如,我可以想到 Forth,它是一种堆栈架构。还有其他人吗?
【问题讨论】:
标签: programming-languages cpu-architecture
我很想知道某些语言在设计上是否更适合某些处理器架构。当我说架构时,我指的不是 ARM/PPC/MIPS,而是更多基于堆栈、累加器或寄存器的架构。
例如,我可以想到 Forth,它是一种堆栈架构。还有其他人吗?
【问题讨论】:
标签: programming-languages cpu-architecture
是的,当然……它也有相反的方向:许多硬件架构旨在适应某些语言。
可能还有更多好的例子。
【讨论】:
是的。例如,Occam 编程语言最初专门针对Transputer 架构。
【讨论】:
也许这是一个聪明的答案,但是:
所涉及的处理器的汇编语言与体系结构紧密相关,因此,是的,确实存在一些确实如此的语言。
高级语言是否表现出相同的特性可能更有趣。
【讨论】:
我在 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 甚至都不使用堆栈,这有多古怪?
【讨论】:
最著名的例子当然是c
【讨论】:
大多数语言都以Von Neumann architecture为目标,这是大多数CPU的基础。
Neil Butterworth 提到的 Transputer Occam 是一个值得注意的例外。
VHDL 是另一个例外,它基于数据流的概念,但它不是一种编程语言,它是一种硬件描述和仿真语言。
【讨论】: