特定の言語が、設計上、特定のプロセッサアーキテクチャに適しているかどうかを知りたいです。私がアーキテクチャと言うとき、私はARM / PPC / MIPSを意味するのではなく、より多くのスタック、アキュムレータ、またはレジスタベースのアーキテクチャを意味します。
たとえば、スタックアーキテクチャであるForthについて考えることができます。他のもの?
特定の言語が、設計上、特定のプロセッサアーキテクチャに適しているかどうかを知りたいです。私がアーキテクチャと言うとき、私はARM / PPC / MIPSを意味するのではなく、より多くのスタック、アキュムレータ、またはレジスタベースのアーキテクチャを意味します。
たとえば、スタックアーキテクチャであるForthについて考えることができます。他のもの?
はい、間違いなく...逆のこともあります。多くのハードウェアアーキテクチャは、特定の言語に対応するように設計されています。
おそらくもっと多くの良い例が利用可能です。
おそらくこれは少し賢い答えですが、:
関連するプロセッサのアセンブリ言語はアーキテクチャに密接に関連しているため、そうです、それが真実であるいくつかの言語が存在します。
高水準言語が同じことを示すかどうかは、おそらくもっと興味深いでしょう。
これについて話している Simon Peyton Jones による Google Video の講演を見ました。彼は、当時、人々は特定の言語を実行するために特化されたハードウェアを書くことに非常に興味を持っていましたが、問題を解決するためのより良い方法を見つけ出したと述べました: コンパイラをより賢くすることです. ハスケルを見てください。GHC は高レベルの構造から驚くほど高速なコードを生成しますが、Haskell は x86 アセンブラーとは大きく異なり、この 2 つは互いに異質に見えます。Java と Lisp でも同じようなことが起こりました: Java と Lisp はどちらも最近のコンピューターでは非常に高速であり、プロセッサを十分に活用していますが、Java は元々奇妙なスタックベースのバイトコード用にコンパイルされており、ずっと前に人々は Lisp マシンを構築していました。
ちなみに動画はこちら。そのほとんどは現在の質問とは関係ありませんが、興味深いと思うかもしれません。「関数型プログラミングが重要な理由」と、単体テストを簡単な方法で作成する方法についてです。
http://video.google.com/videoplay?docid=-4991530385753299192&hl=ja
コンパイラが Haskell と Java を C とほぼ同じくらい高速にするほど賢くなったのは、ごく最近 (ここ 10 年くらい?) のことです。一体、GHC はスタックさえ使用しません。
ほとんどの言語は、ほとんどのCPUの基盤であるフォンノイマンアーキテクチャを対象としています。
NeilButterworthが言及したトランスピュータのOccamは注目に値する例外です。
VHDLは、データフローの概念に基づく別の例外ですが、プログラミング言語ではなく、ハードウェア記述およびシミュレーション言語です。
最もよく知られている例はもちろんcです
Cは、DEC PDP-11に適合するように1970年代初頭に作成されました。 たとえば、PDP-7ではプログラミング言語Bのデータ型は1つだけでしたが、サイズの異なるデータ型を持つPDP-11に移植すると、変数のデータ型は言語に追加されました。