「ノイマン型」の版間の差分

削除された内容 追加された内容
15行目:
チューリングマシンからの本来の[[プログラム内蔵方式]]に入出力装置を付加してストアドプログラムを実現する[[コンピュータ・アーキテクチャ]]の一つである。[[主記憶装置]](メモリ)上に[[命令 (コンピュータ)|命令]]と[[データ]]を区別することなく格納し、データを命令として解釈実行する方式である。もともとのノイマンの提案では命令を書き換えながら実行する構想であったが、後にデータだけを書き換えてデータ値によって分岐する命令で等価なプログラムになることが証明され、命令とデータは区別されるようになった。(命令とデータを区別して配置するアーキテクチャについては[[ハーバード・アーキテクチャ]]を参照)。
-->[[チューリングマシン]]を、可能な範囲で実現・具体化([[実装]])するもので、記憶装置を仮に、必要であれば必要なだけ無制限に追加できるものとすれば、[[計算模型]]として(「ノイマンマシン」と呼ばれることがある)見た場合[[チューリング完全]]とみなせることになる。また、[[二進法]]の採用も、要件に含めることがある(二進法と、二進法の基本的な演算([[論理演算]])の組み合わせで、あらゆるデジタル処理が可能である)。ノイマン型コンピュータを計算模型として定義したものとして[[RAMマシン]]がある。
 
また、ノイマンの思考はチューリングマシンを通してのものではなく、[[ゲーデル数]]からの直接のものではないだろうか、とする論者もいる(ノイマンは不完全性定理とも深くかかわっている)<ref>ノーマン・マクレイ 『フォン・ノイマンの生涯』、紀華彦『計算機科学の発想』16章「ゲーデル数とプログラム内蔵方式」</ref>。
 
プログラムのチューリング完全性は、命令の書き換えをしなくても、[[インタプリタ]]の原理により可能とわかったり、また一般に[[自己書き換えコード]]は特殊な技法とされるため、[[システムソフトウェア]]を除いて、特に一般ユーザの通常の[[プログラミング (コンピュータ)|プログラミング]]では、命令とデータは区別するのが一般的である。特に近年ではマルウェア対策として、命令を置いたメモリは書き換え禁止に設定されることがある。また、[[組み込みシステム]]などの専用コンピュータなどで、プログラムを入れ替える必要がないなど、命令とデータを区別する[[ハーバード・アーキテクチャ]]もある。しかし、汎用コンピュータにおけるプログラムの入れ換えなどは、ノイマン型に依っており、システムソフトウェアや性能のため(インタプリタは遅い)などで、依然として重要な原理であることに変わりない。