ID非表示

2010/9/22 23:46

66回答

コンピュータの原理について疑問があります。 プログラムを組むと、その指令に従い機能するわけですが、そのプログラム自体は何により動かされるのでしょうか?

工学2,757閲覧xmlns="http://www.w3.org/2000/svg">100

ベストアンサー

この回答はいかがでしたか? リアクションしてみよう

その他の回答(5件)

半導体がプログラムを理解してるわけではありません。 半導体を使った論理回路(機械でもかまいません)が、プログラムコード(1と0の2進数) を、読み取って、といっても、機械的に反応して、プログラムとおりに動作します。 (オルゴールのピンの有り無しに似ています) 例えば、半導体でAND回路を作って、出力にランプを付けておけば、 多くの端子が、全部、1になったときにランプを点けるという、論理の判定ができます。 2進数の論理動作ができれば、あらゆる動作が可能になります。 1と0の機械語を回路は判定しますが、 その機械語は、普通のプログラム(高級言語)を翻訳するプログラムで作成されます。

一言で言えばプログラム自体はクロックで駆動されます。 クロックの波形のハイ、ローに従って一つ一つのプログラムコードをさらに細分化した1単位(マシンコード)毎に進んでいきます。 ですからクロックの周波数の高いコンピュータの方がプログラムの進み方が早いわけです。 別にコンピュータがプログラムを人間のように理解しているわけではありません。 そのクロックで駆動されたマシンコードに従って半導体素子の動作がなされる(進む)事を擬人化して「理解する」と言っているだけ、と考えています。 一つ一つのマシンコードの半導体回路での進行は非常に単純ですが、それが非常な短時間に何千、何万と実行(進行)されている時、マクロ(全体的)に見れば、あたかも人間のように理解されている様に見える、という事です。

ID非表示

2010/9/23 1:00(編集あり)

ようは計算式なんです。 より簡単にすれば、いろんな溝をほってそこにビー玉を入れる いろんなところを通ってある地点にビー玉が出てくる それがプログラムによって出てくる解答なんです。 理解とかではなく、ただ溝を掘ってるだけなんです。溝掘ってビー玉を転がすのは砂場でもできるでしょう ・溝が掘れる ・ビー玉が溝の通りに進む が実現できるものならプログラムを走らせることができるということなんです だからON・OFFの二つしかない半導体の塊でもON・OFFで溝が作れるのでできるわけです。 それが複雑になってきたので 人間が書いたことを理解・従い何かをしているように見えるだけですなんです。 それこそ初期のコンピューターは計算のたびに次の計算式を作る必要(大量の研究者がコードや真空管をつなぎなおす必要⇒溝を掘る)があったんです。今はそれを電子的こなすことができていますが ビー玉を転がすのが重力の力だけで済むように プログラムは電気が流れる力だけで動いてるんです。 当たった⇒刺激⇒動く というような単純な反応しかしない神経細胞でも大量に集まることで我々のような人格やら意識というものを出現させられてるのと同じといえばいいのでしょうか・・・・途になく単純なものが集まれば複雑なものができる(に見える)ということなんです

プログラムは「命令」のリストです。 命令により「記憶装置とのやりとり、演算処理、結果によるプログラム内へのジャンプ(別の場所へ跳んで処理を続ける)」 等の処理を行います。 人に例えると 「隣の部屋にある赤い箱の中身を取り出し、リンゴならコップに水を汲み、リンゴを青い箱へいれ、戻って次の指示を待て。箱の中になにもなければ、なにもせず戻って次の指示を待て」 といった、命令どおりに動作しています。

理解はしていませんよ。 命令されたとおりに計算して答えを出してくるだけです。 基本的な電卓は10キーと演算子(+-×÷=)キーで構成されています。 1+1を計算しようとすると 「1」「+」「1」「=」 という順序でキーを押すというのがプログラムです。 実際プログラムでは、人間がキーを押す代わりに、 プログラムカウンタの指すアドレスに書かれている「式」に従って、 計算しているだけです。 CPUの演算子はもっと大量にありますが… C言語のような高級言語は算数で言う文章問題のようなもんです。 コンパイラが実際に電卓で計算出来る式に翻訳してくれます。 例えば、 「りんごが15個あります、3人で分けるとひとり何個でしょう?」 という問題をコンパイラが翻訳すると、 「15」「÷」「3」「=」 と訳されて、この数字にどんな意味があるかなど関係なく電卓は 「5」 と答えてきます。 CPUはその計算がどんな意味を持っているかなど知ったことではないのです。