4

特定の言語が、設計上、特定のプロセッサアーキテクチャに適しているかどうかを知りたいです。私がアーキテクチャと言うとき、私はARM / PPC / MIPSを意味するのではなく、より多くのスタック、アキュムレータ、またはレジスタベースのアーキテクチャを意味します。

たとえば、スタックアーキテクチャであるForthについて考えることができます。他のもの?

4

7 に答える 7

5

はい、間違いなく...逆のこともあります。多くのハードウェアアーキテクチャは、特定の言語に対応するように設計されています。

  • RISCアーキテクチャは、人々がアセンブリ言語からC /C++のようなコンパイル言語に移行したことに対する非常に大きな答えです。
  • バロウズ B5000にはアセンブラーの代わりにアルゴルがありました。
  • いくつかの異なるForthチップがあります。
  • Lispマシンは、Lispを効率的に実行するように設計されています。
  • Javaプロセッサは、ハードウェアでJavaバイトコードを実行します。
  • 一部のARMプロセッサには、(オプションの)Javaアクセラレーションテクノロジが搭載されています。

おそらくもっと多くの良い例が利用可能です。

于 2009-05-29T07:59:23.300 に答える
4

はい、彼らはやる。たとえば、Occamプログラミング言語は、もともとトランスピュータアーキテクチャで特別にターゲットにされていました。

于 2009-05-29T07:53:58.430 に答える
2

おそらくこれは少し賢い答えですが、:

関連するプロセッサのアセンブリ言語はアーキテクチャに密接に関連しているため、そうです、それが真実であるいくつかの言語が存在します。

高水準言語が同じことを示すかどうかは、おそらくもっと興味深いでしょう。

于 2009-05-29T07:55:43.793 に答える
1

これについて話している 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 はスタックさえ使用しません。

于 2009-05-29T08:25:28.990 に答える
0

ほとんどの言語は、ほとんどのCPUの基盤であるフォンノイマンアーキテクチャを対象としています。

NeilButterworthが言及したトランスピュータのOccamは注目に値する例外です。

VHDLは、データフローの概念に基づく別の例外ですが、プログラミング言語ではなく、ハードウェア記述およびシミュレーション言語です。

于 2009-05-29T08:01:38.243 に答える
0

最もよく知られている例はもちろんcです

于 2009-05-29T08:06:26.703 に答える
0

Cは、DEC PDP-11に適合するように1970年代初頭に作成されました。 たとえば、PDP-7ではプログラミング言語Bのデータ型は1つだけでしたが、サイズの異なるデータ型を持つPDP-11に移植すると、変数のデータ型は言語に追加されました。

于 2009-05-29T08:07:07.450 に答える