一言で言えば:
命令型プログラミング言語をチューリングマシンおよびPCなどの通常のコンピューター(チューリングマシンではなくランダムアクセスマシン(RAM)に近い)に特徴付けるのは、保存するために変更できる明示的なメモリの概念です(中間結果) )。これは計算のオートマトンビューであり、計算が進むにつれて変化する可能性のある状態(有限状態制御とメモリコンテンツの両方を含む)の概念を備えています。
他のほとんどのモデルはより抽象的です。元の構造の一連の変換ステップとして計算を表現する場合もありますが、これらの変換は数学的意味のある種の一時的な宇宙に適用されます。これにより、参照透過性などのプロパティが保持され、数学的な分析が簡単になります。しかし、メモリのコンペトに依存する自然な物理モデルからは遠く離れています。
したがって、ソフトウェアは実際にはハードウェアから分離可能ではないため、以下で説明するより大きな意味を除いて、自然な機能マシンはありません。
計算可能性の尺度としてのチューリングへの言及は、おそらく、彼のモデルであるチューリングマシンがこの物理的実現可能性の制約に最も近く、それにより計算のより直感的なモデルになったという事実に由来します。
さらなる考慮事項:
計算の多くのモデルがあり、最も一般的な方法で計算の概念をキャプチャするように設計されています。チューリングマシンには、実際にはさまざまなフレーバー、ラムダ計算(フレーバーも)、セミチューリライトシステム、部分再帰関数、組み合わせロジックが含まれます。
それらはすべて、計算を表現または実行するために数学者が使用するさまざまな手法のいくつかの側面をキャプチャします。また、ほとんどはプログラミング言語設計の基礎としてある程度使用されており(書き換えシステム用のSnobol、コンビネーター用のAPL、ラムダ計算用のLisp / Schemeなど)、現代のプログラミング言語でさまざまな方法で組み合わせることができます。
主要な結果の1つは、これらすべての計算モデルが同等であることが証明されたため、物理的に実現可能な計算モデルはこれらのモデルよりも多くのことを行うことができないというチャーチチューリングの論文につながります。計算モデルは、これらのモデルのいずれかと同等であることが証明され、したがってすべてのモデルと同等であることが証明できる場合、チューリング完全と呼ばれます。
名前は異なる場合があります。参照としてのチューリングマシン(TM)の選択は、おそらく、それがこれらのモデルの中で最も単純であり、人間が計算する方法を厳密に(単純に)模倣し、実装がかなり簡単である(限られた有限形式で)という事実によるものと思われます)物理デバイスとして、チューリングマシンがレゴセットで構築されている程度まで。基本的な考え方は数学的洗練を必要としません。この基準位置を与えたのは、おそらくモデルの単純さと実現可能性です。
Alan Turingがコンピューティングデバイスを作成した時点で、数学の基礎にとって重要な問題である計算可能性の正式な定義として役立つ他の提案が発表されました(Entscheidungsproblemを参照
)。チューリングの提案は、当時の専門家によって、計算可能性に関する既知の研究を最も説得力を持って包含するものであると見なされていました(Computability and Recursion、RI Soare、1996、section 3.2を参照)。さまざまな提案が同等であることが証明されましたが、チューリングの提案はより説得力がありました。[ユヴァル・フィルマスのコメントより]
ハードウェアの観点からは、コンピューターはチューリングマシンではなく、チューリング完全なランダムアクセスマシン(RAM)と呼ばれるものであることに注意してください。
純粋に命令型の言語(意味が何であれ)は、おそらくチューリングマシンなどの最も基本的なモデルに使用される形式、またはコンピューターのアセンブリ言語(バイナリコーディングをスキップ)です。どちらも読めないことで有名で、重要なプログラムを書くのは非常に難しい。実際、アセンブリ言語でさえ、機械語命令を直接使用する場合と比較して、プログラミングを少し簡単にするためのいくつかのより高いレベルの機能を備えています。基本的な命令モデルは物理的な世界に閉じられていますが、あまり有用ではありません。
これにより、すぐに高レベルの計算モデルが開発され、サブプログラムや関数呼び出し、メモリの場所の名前付け、名前のスコープ、数量化、ダミー変数など、さまざまな計算手法が既に何らかの形式で使用されています数学や論理、さらにはリフレクションなどの非常に抽象的な概念でさえも(Lisp 1958)。
プログラミング言語を命令、機能、ロジック、オブジェクト指向などのプログラミングパラダイムに分類することは、言語の設計におけるこれらの手法のいくつかの卓越性と、プログラムの一部のプロパティを強制するコンピューティング機能の有無に基づいていますまたは言語で書かれたプログラムの断片。
一部のモデルは、物理マシンに便利です。他のいくつかのアルゴリズムは、アルゴリズムの高レベルの記述により便利であり、記述されるアルゴリズムのタイプに依存する場合があります。一部の理論家は、アルゴリズムの非決定的仕様を使用することさえあり、それをさらに従来のプログラミング用語で翻訳することさえあります。しかし、必要に応じて各モデルを別のモデルに変換できる洗練されたコンパイラー/インタープリターテクノロジーを開発したため、ミスマッチの問題はありません(これもチャーチチューリングテーゼの基礎です)。
今、あなたは決してあなたのコンピューターを生のハードウェアと見るべきではない。非常に基本的な処理を行うブール回路が含まれています。しかし、その多くは、あなたが決して知らないコンピューター内部のマイクロプログラムによって駆動されます。次に、マシンをハードウェアの動作とは異なるように見せるためのオペレーティングシステムがあります。その上に、バイトコードを実行する仮想マシンと、PyvaやJathon、Haskellなどの高級言語があります。 、またはOCaml。バイトコードにコンパイルできます。
各レベルで、異なる計算モデルが表示されます。ハードウェアレベルをソフトウェアレベルから分離して、特定の計算モデルをマシンに割り当てることは非常に困難です。そして、それらはすべて相互変換可能であるため、究極のハードウェア計算モデルのアイデアはほとんど幻想です。
ラムダ計算機は存在します:ラムダ計算式を減らすことができるコンピューターです。簡単にできる広告。
特殊なマシンアーキテクチャについて
実際、ピーターテイラーの答えを補完し、ハードウェア/ソフトウェアの絡み合いをフォローアップして、特定のパラダイムによりよく適合するように特殊なマシンが製造され、そのパラダイムに基づいたプログラミング言語で基本ソフトウェアが記述されました。
これらには
基本的に、これらは必須のハードウェア構造でもありますが、特別なハーウェア機能またはマイクロプログラムされたインタープリターで緩和され、意図したパラダイムによりよく適応します。
実際、特定のパラダイムに特化したハードウェアは、長期的には成功していないようです。その理由は、バニラハードウェアにパラダイムを実装するためのコンパイルテクノロジがますます効果的になり、専用ハードウェアがそれほど必要なくなったためです。さらに、ハーウェアのパフォーマンスは急速に改善されましたが、改善のコスト(基本ソフトウェアの進化を含む)は、特殊なハードウェアよりもバニラハードウェアで簡単に償却できました。専門的なハードウェアは、長期的には競争できませんでした。
それでも、これに関する正確なデータはありませんが、これらのベンチャーは、マシン、メモリ、および命令セットアーキテクチャの進化に影響を与えるいくつかのアイデアを残したと思われます。
(a -> a) -> a
ます。