我很想知道某些语言是否在设计上更适合某些处理器架构。当我说架构时,我指的不是 ARM/PPC/MIPS,而是更多基于堆栈、累加器或寄存器的架构。
例如,我可以想到 Forth,它是一种堆栈架构。还有其他人吗?
我很想知道某些语言是否在设计上更适合某些处理器架构。当我说架构时,我指的不是 ARM/PPC/MIPS,而是更多基于堆栈、累加器或寄存器的架构。
例如,我可以想到 Forth,它是一种堆栈架构。还有其他人吗?
是的,他们这样做。例如,Occam编程语言最初专门针对Transputer架构。
也许这是一个聪明的答案,但是:
所涉及的处理器的汇编语言与架构紧密相关,因此,是的,确实存在一些确实如此的语言。
高级语言是否表现出同样的效果可能更有趣。
我看到西蒙·佩顿·琼斯(Simon Peyton Jones)在 Google 视频上发表的一篇演讲中谈到了这一点。他提到,过去人们对编写专门用于执行特定语言的硬件非常感兴趣,但人们找到了解决问题的更好方法:让编译器更智能。看看哈斯克尔。GHC 从高级构造生成一些快得离谱的代码,但 Haskell 与 x86 汇编器非常不同,以至于两者看起来彼此陌生。Java 和 Lisp 也发生了同样的事情:Java 和 Lisp 在现代计算机上都非常快,并且充分利用了我们的处理器,但 Java 最初是为一个奇怪的基于堆栈的字节码编译的,很久以前,人们构建了 Lisp 机器。
Here's the video, by the way. Most of it is not relevant to the current question but you may find it interesting, it's about "why functional programming is important" and how to make unit tests the easy way.
http://video.google.com/videoplay?docid=-4991530385753299192&hl=en
It's only been fairly recent (last decade or so?) that compilers have been smart enough to make Haskell and Java almost as fast as C, even though neither of them expose much of the underlying architecture. Heck, GHC doesn't even use the stack, how wacky is that?
大多数语言都以冯诺依曼架构为目标,这是大多数 CPU 的基础。
Neil Butterworth 提到的 Occam for Transputer 是一个明显的例外。
VHDL 是另一个例外,它基于数据流概念,但它不是一种编程语言,它是一种硬件描述和仿真语言。
最著名的例子当然是 c