質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.31%
書籍

書籍に関する質問を投稿する際にご使用ください。

意見交換

13回答

1843閲覧

コンピュータはなぜ動くのか?

yahoo2023

総合スコア6

書籍

書籍に関する質問を投稿する際にご使用ください。

0グッド

0クリップ

投稿2025/05/20 12:16

テーマ、知りたいこと

「コンピュータはなぜ動くのか?」
という問いに、どんなふうに答えますか?

背景、状況

先日、以下の書籍を読みました。
ざっくりですが理解が深まり「コンピュータって本当にすごいな」と改めて感じました。

コンピュータはなぜ動くのか 第2版 知っておきたいハードウエア&ソフトウエアの基礎知識

しかし、人に説明するとなると説明が難しいなぁとも思いました。
(わかりやすく説明できる自信がない...)

そこでふと思ったのですが、

皆さんは、コンピューターに疎い人に「コンピュータはなぜ動くのか?」という問われたときに、どんなふうに答えますか?

  • 非エンジニアに説明するときはこのように説明する
  • 自分はこう理解している
  • 結局のところ、コンピュータとはこういうものだと思っている
  • 情報処理の本質は○○だと捉えている
  • なぜ動くのかまだ理解できていない...

などなど、自由にご意見いただけると嬉しいです!

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

回答13

#1

cametan

総合スコア35

投稿2025/05/20 12:31

ぶっちゃけ、分からん。
と言うか、表題をマジメに受け取ると、「なぜ動くのか?」と訊かれると「動くように作ってるから」としか言いようがない、と思うんだよね。
自動車を見て「なぜ動くのか?」と訊かれると、答えは「動くように作ってるから」でしょ(笑)?大体、動かなきゃ自「動」車じゃねぇし(笑)。

多分、このテの人(つまり、あなたが言う「コンピューターに疎い人」)の本当にしたい質問は「どう動くのか?」なんだよね。
なぜ、じゃない。
でもそのテの「疑問符を取り違える人」は、大体そこで色んな意味で躓いてるんで(笑)、説明が面倒くさいから、実際「動くように作ってるから、ですよ」って答えて逃げます(笑)。

ちなみに、件の本も英題は「How Computers Work」になってる辺りズルい(笑)。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

#2

utm.

総合スコア852

投稿2025/05/20 13:35

#1さんの回答は自分の考えの方向性と違っていて少し勉強になりましたが、
ここで「なぜ」と使ってしまっているのは、「どう」動いているのかを踏まえたうえで、「なぜ」整合性が取れているのか。というハナシにも思えます。当然視点を変えれば「どう」整合性をとっているのかという話なのですが、そもそもとしてそこの知見がない人からしたら、不思議なのではないでしょうか。

ネジだって規格があるおかげで、たくさんのネジがたくさんのドライバーに対してはまるようになっていますが、規格という概念がなく、注意深い人なら「なぜ」ネジがドライバーにはまるんだ!と疑問に思うかもしれません。

ところで、自分の御託ですが、
そもそもPCが動いていると自覚したことがないので、なぜ動いているか?と質問する人の心境が正直分かりません。
実際にPCが動いていると確認するなら、電源がついているとかだろうけれど、なぜ動いているのかというと、電源を刺してボタンを押したからだろうし、結局なぜ?と思うのは人間とそれとのインタフェースなわけであって、テレビのリモコンでなんでテレビのチャンネルが変わるのか、と聞かれたら、赤外線がどうのこうのだって言われれば納得するけれど、ボタンの押下と赤外線の変換処理に関してまでは疑問に思わなくて不思議です。
エアコンの冷房であれば、ちょっと科学的なことが分かっている人なら説明できそうですし、カラオケならアナログ音声をデジタル音声に変えられるんやで、的な話を記憶から引っ張ってこれそうですけど。

でもほとんどの人にとって実際に動いているところを感じるのはソフトウェアの方であって、ハードウェアじゃないんですよね。だから、ハードウェアについて聞いているとしたら構成要素を答えなければならないんだろうな。というところなのですが、ハードウェアが実際に動いていることを意識するそのきっかけがマジでない気がするんですよね。
音楽聞くレコードであれば、明らかに回ってますが。

まあ、こういう質問には基本的に麻生太郎じゃないですが「わかりません」と答えるようにしています。
時点でよいのは、中でパートのおばちゃんが頑張っているから(子供向けなら、妖精さんが動いているから)といっておくとよいと思っています。

ところで、
ハードウェアでしたいことはデジタルとアナログの変換だと思いますが、意識することってほとんどないですよね。プリンターですら、わかりたい部分(インクを落とす)は思いっきりアナログな部分だし。

これ系の質問に対して個人的に面白いと思ったのは、「CPUでなぜ計算(足し算)できるの?」という質問に
「計算していません。」「加算器は論理演算しているだけです。」「ANDとORを組み合わせているだけです。」「実際に本当に計算していません。」といっているおそらくおじさんであろう人がいて、横柄だなぁと思いましたが実際こういう回答の仕方って計算機科学においては面白い入口だろうなとも思いました笑

もう一つこの質問に回答しづらい理由としてあるのは、そもそもとしてそのような構成要素が必須なのか?というところで、今の一般的なコンピュータの構成が別に必須というわけではなさそうというところで、PCってそもそもなんなの?なんで動くってどう説明したらいいの?という部分になっている気がしています。
また、構成要素について語りだすと先のCPUの話と一緒で細部まで話すべきなのかどうか、というところも絶妙に難しいでしょう。

ほとんどの場合、ネジの例と同じで規格(インタフェース・プロトコル)があるんだよ程度の理解でよくて、それらをすべて網羅的に理解する必要性はないとも思っています。
で、要するにハードウェアは実体というよりもそういう規格なんだって理解したほうが優しいという話です。

まあそう考えたら、マシン自体、ソフトウェア自体が人間にとってそういう規格でしかないのですけど。
(いや、ていうか言葉自体がそういう規格でしかないのだけど。。。)
まあ、これは 「コンピュータはなぜ動くのか?」 の説明にはなってないですね

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

#3

TakaiY

総合スコア14359

投稿2025/05/20 13:53

質問者や他の方も書いているとおりとても難しい質問ですね。
その質問をした人がどうしてそれを知りたくて、どんなレベルの人なのかによって答はいろいろです。
基本的には、

  • ちょっと聞いてみただけであれば、適当に答えます。
  • 本当に仕組みを知りたいのであれば、質問にあった書籍を読むことを勧めて、わからないことがあったら聞いてね、と伝えます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

#4

yambejp

総合スコア117744

投稿2025/05/21 00:36

すでに回答がいくつかあるように命題に対する切り口がいくつかありますね。
真面目に答える気がなければ「電源ボタンをおしたからじゃない?」くらいがちょうどいいです

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

#5

fana

総合スコア12181

投稿2025/05/21 01:01

「コンピュータはなぜ動くのか?」

なんつーか,こういう,ものすごーく漠然とした/具体性のかけらも無い/本当に何を問うているのかが定まっていない/etc… な話を考えること自体がもう無駄というか無意味というか……

そういうのは実際に問われてから(且つ,どうしても自分が説明しなきゃならないという謎の状況になってから)
その実際の 相手/状況/etc に応じた説明を試みる しかないんじゃないかなぁ.
要は何をどう話すのかはそのやりとりの文脈とかに応じて変わっていくことになりそうだし
それで自分が説明できないところは「わからん」と言うしかないのだし.

「全ての情報源を遮断された空間で他者に説明できるようになるためにその本を読んでいる」みたいな特殊な事情でもないならば,そもそも問われたこと全てを自分で回答する必要性なんてのも無いだろうし,その本の内容を全て脳内に入れておく必要すら無いと思うし.

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

#6

miyabi-sun

総合スコア21418

投稿2025/05/21 01:20

コンピュータはいくつものパラダイムシフトを経た末に
無数の部品を組み合わせてようやく完成したものです

しかしどうやって説明したものか、同じく巨大なシステムである自動車の説明方法から引っ張ってきましょうか
自動車の原理は何?の問いに対しては、エンジンでタイヤを転がす説明をするのが一般的でしょう
他にもブレーキやアクセル、ハンドル、ラジエータ、シートベルト等
一つ取り上げるだけでも1冊の書籍が書ける程の大事なパーツが腐る程あるにも関わらず……ね

というわけで、コンピュータとは何か?という問いに対しては
集積回路+ルール決めで説明するのが打倒だろうとします

https://contents.zaikostore.com/semiconductor/3356/

1940年代まで用いられていた電子部品として代表的なものは真空管です。

エジソンが作った真空管のフィラメントに電気を通すと光ります、
これを見て電気の点灯状態を 1 or 0 と認識して、これを並べて2進数にすれば数を数えられるじゃん
これ思いついた人は天才だと思います

結果第二次世界大戦の頃は真空管を使った巨大なコンピュータが使われており

1970年頃から真空管って効率悪いよね、それ専用の超小型チップ「集積回路」を作ろう
沢山のデータを処理出来るようになったね、じゃあOS作って制御しやすくしよっか

最小限の下調べしかしていないので、多少前後してたり嘘が含まれてるかもしれませんが
こういう流れで説明するのが妥当なんじゃないですかね

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

#7

cametan

総合スコア35

投稿2025/05/21 12:53

編集2025/05/21 12:56

#2氏の投稿を見て、「なるほど」と同意する事が多い。

何だろ、この辺一番の問題は、コンピュータは「人に見える動作がない」って辺りなのかもしんないなぁ。

好事家だと、例えばArduinoとか買って?「これでコンピュータの仕組みが分かる!」とか言ってたりするみたいなんだけど。
いや、批判してるんじゃないんだ。問題は「物理的な動作を想像出来る」人と「出来ない」人がいて。必ずしも後者が「アタマが悪い」とかそういう事にはならないんだよな。
言っちゃえば、ある種の「机上の空論」を本で学んで「なるほどそうなのか」って納得出来るタイプと「やっぱ目で見ないと納得できん」ってタイプの人がいてさ。
しかし、CPUがどう動いてるのか、ってのは実際「目で見て追えない」わけで。目に見えないモノの動作が「想像出来ない」ってのは別に責められるべきトコじゃないし、そこがこの種の問題を難しくしてるのは確かなわけだ。

デジタルコンピュータ自体は実は戦前に既にあったわけですけれども。
いや、当時は今のような電子回路技術は、まぁ、無かったんで。なんと驚く事にモーター駆動だったらしい(笑)。
もちろん、現代でモーターで動かすようなコンピュータなんて非効率的なんだけど、意外と「コンピュータ理解の第一歩」として、教育用だと「あってもいいものなんじゃないか」とかちと思ったりした(笑)。
モーター駆動だったら、実際動くブツが目の前に出来るわけで。「見て動作を理解する」にはいい教材なんじゃねぇかなぁ。
キチンと二進数で計算してるらしいんで、原理的には「今のコンピュータ」の理論通りに動いてるし。
大人の科学」とかで付録やってくれないだろうか(笑)。

とかまぁ、ちと思った、と言う話。
余談です(笑)。

Zuse Z3
元々「計算機」だとドイツが先行してたらしい。
コンピュータの歴史だとすぐ名前が出てくる人にフォン・ノイマンさんがいるが、元々彼はドイツの大学にいた事があり、ドイツの「モータ駆動型の」コンピュータの存在を知ってたんではなかろうか。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

#8

otn

総合スコア86311

投稿2025/05/21 13:00

どう説明するかだけに絞って書きます。

コンピューターに疎い人に、いきなり「コンピュータはなぜ動くのか?」から説明する機会はあまり無いと思います。
もし「コンピューターに疎いが、興味は持っていて是非基本から知りたい」という人がいれば、まずは「コンピューターとは一体何なのか」から説明する必要があるでしょう。数日コースですね(実際には書籍を薦める気がしますが)。

そうじゃない人が(こちらがIT系の仕事と聞いたのでとかの)話の流れで質問しただけで、「3分で知りたい」とか言われると、「無理」と回答するか、適当にごまかすか。その人もちゃんとした回答は求めてないので、それでいいかと思います。

コンピューターに疎い人から出る質問であれば、「Googleで検索すると何故そこそこちゃんとした情報が得られるの?」とか、「日本にいるのに、何故海外の会社のウェブサイトが見られるの?」とか、「メールはどうやって相手に届くの?」とか、「こんな小さいスマホで何故こんなに色々なことが出来るの?」とかではないですかね?
そういうのであれば、相手によっては、できる限り答えてあげたいので、何かに例えるなど、その場で何か考えつつ、相手の反応を見ながら続きを考えます。相手の反応によっては、時間不足を懸念して途中で断念するかもしれませんね。
具体的な質問で、自分にはかみ砕いた説明が出来ない分野であれば、「そこは専門外なので簡単には説明できない」ですかね。素人に分かり易く説明できるのはかなりのプロフェッショナルであることくらいは、まともな相手なら分かっているかと思いますので。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

#9

yambejp

総合スコア117744

投稿2025/05/22 06:31

ちょっと真面目な話にシフトしているようなので、最近はあまりいわないのかな・・・この手の話題は「ブラックボックス」と評されるものです。
インプットに対して等価以上の付加価値をつけたアウトプットが発生する装置=ブラックボックスは「なぜ動く=原理」ではなく「それを使って何ができるか=結果」が重要で、原理は専門家に任せることがブラックボックスの存在意義です。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

#10

nanashi123

総合スコア127

投稿2025/05/22 12:14

コンピュータはCPUとメモリがデータをやり取りすることで動作します
コンピュータの世界では整数や文字、またはシステムに対する命令を含め、全てをデータとして取り扱います
この内、命令を司るデータがCPUに認識されることにより、プログラムとして挙動します
このプログラムに従って、データのやり取りにおけるルールを取り決めます
例えば電源を入れるとまずコンピュータにシステムの起動を命じます
アプリケーションを起動するとシステムデータを読み込みます
この過程でルールの規定や確認が行われます
このようにコンピュータのあらゆる動作はまず始めに命令をありきとします

初心者に簡潔に説明するのであれば、このくらいざっくりとした抽象化に、それっぽい用語を交える程度で良いでしょう

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

#11

winterboum

総合スコア23651

投稿2025/05/23 07:29

弱い と言ってもどのくらい弱いのか、その中でも強いところはどこなのか、どの動きのことを聞きたいのか
によって説明の仕方は変わるので ベースメッセージに書かれている背景 だけでは議論しようがない、、、、
女房に何度か聞かれ、何度か説明を試みたけど、「なるほど」という眼の光を見たことなし

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

#12

bellejour305

総合スコア12

投稿2025/05/27 03:18

昔よくこの手の話は出ましたね。コンピュータをそろばんに例えると、答え方を教わった手は回路(今はコードですかね) そろばんは機械 と用意して、「願いましては〜」を人間が問いかけると電気的に勝手に答えを出してくれる装置ってとこでしょうか。
表示方法や答え方は今までの積み重ねで高度になってますが。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

#13

kurai

総合スコア90

投稿2025/05/27 08:28

編集2025/05/29 02:07

 そのような疑問を持たれる事は素晴らしいと私は思います。 「普通の人」や、ほとんどのソフトウェア技術者が、「動くようになってるから動く」くらいの認識しか持たない中で、なぜソフトウェアが動くのかという根源的な問いを持てるのは、それだけ心に余裕がある証拠でもありましょう。

 私は元プログラマー・SEですが職業としては20年以上前に退いており、今は単なるオッサンで、他人様に何かを教える資格もございませんが、「コンピューターはなぜ(どのように)動くのか、本心から知りたいのでちゃんと教えて欲しい」と請われたら、おおよそ次に示す順番で答えます(前後したり戻ったりする事はありますが)。

1.論理値と論理演算(すべての理解の大前提)
2.2進数と算術演算と補数
3.アナログおよびディジタル、有限の立場(コンピューターの限界)
4.論理回路(コンピューターを実現する技術理論)
4.1 組み合わせ回路(計算を実現する技術理論)
4.1.1 比較器 
4.1.2 半加算器
4.1.3 全加算器と多桁加算
4.1.4 補数器と減算
4.1.5 エンコーダーとデコーダー
4.1.6 ALU
4.2 順序回路(制御を実現する技術理論)
4.2.1 フリップフロップ
4.2.2 レジスターとシフトレジスター
4.2.3 カウンター
4.2.4 メモリー回路
5.CPUの構成(さまざまな回路技術の上手い組み合わせ)
5.1 命令レジスターと命令デコーダー
5.2 プログラムカウンターとリセット
5.3 バスとクロックによる同期制御
5.4 停止命令
6.機械語の実行様態(「0と1で動かす」ことの理解)
7.アセンブリー言語によるプログラミングとアセンブル、置換マクロ
8.スタックの実現
9.サブルーチンとライブラリー(ハードウェアとソフトウェアの区別の始まり)
10.符号化(豊かな表現力の源)
11.周辺機器
11.1 主記憶と外部記憶
11.2 入力と出力(D/A変換)
11.3 オンライン通信
11.4 キャッシュとバッファー
12.コンパイラー言語によるプログラミングとコンパイル(機械独立の始まり)
13.リロケータブルプログラムとリンケージ(本格的な分業プログラミングの始まり)
14.インタープリター言語によるプログラミング
15.実数演算(固定小数点と浮動小数点)
16.割り込みの実現
17.OS
17.1 並行処理
17.2 スワップ
17.3 仮想記憶
17.4 API
17.5 シェルとカーネル
17.6 時分割処理
17.7 バッチ処理とリアルタイム処理
17.8 資源管理と可用性

 おおよそ、以上を学べば、コンピューターがどのように動いているか概観できます。 実は、これらの項目は、大学や図書館に置いてある一般教養的なテクストの内容とほぼ同じです。 そのような書籍は大抵、昭和の時代に出版されたもので、ものすごく地味な装丁で、令和の現代に目を通す読者はあまりいないので、もったいない事だと個人的には思っています。 個人的なオススメを2冊挙げておきます。
◆コンピュータ入門(和田秀男・著) https://www.amazon.co.jp/dp/4000076388
◆電子計算機基礎論(手塚慶一・編著) https://www.amazon.co.jp/dp/4785630906

 このような基礎を学ぶには、「分かりやすい」教材を選ぶと、かえって遠回りになると私は思います。 質問者様が挙げられた「コンピュータはなぜ動くのか 第2版」は、多くの一般の方々向けに書かれたカラフルな本で、分かりやすくはあるのですが、これを読んで理解に到達する人は、ほとんどいないでしょう。 なぜなら、「分かりやすさ」は初歩学習には必要ですけれども、それだけでは基礎に到達できないからです。

 乱暴な言い方をするならば、「分かりやすさ」とは「初心者向けの嘘」です。 分かりやすさを求めて、嘘ばかり学び続けても、疑問の根源に達する事はありません。 私が挙げた上記項目のうち、もっとも難しいのは、実は、冒頭の「論理値と論理演算」です。 「えっ、AND とか OR とかでしょう、簡単だよ」と意外に思われたかも知れませんが、重ねて断言しますが、これが最も理解「が」難しいところです。 この難しさを「知って」いれば、後の項目はすべて乗り越えてゆけます。 逆に言うと、後々の項目で「どうも分かった気がしない」と思うならば、「論理値と論理演算」から再び学び直すべきである事を示唆しています。

 ともあれ、上記の「基礎」を知れば、ここから先、素子の変遷、ファイルシステム、データベース、通信プロトコル、イーサネット、グラフィックや音声の処理、GUI、DTP、中間言語、エミュレーション、仮想化、非ノイマン、などなど、様々なコンピューター技術について、自力で学んでゆけるようになるでしょう。

 プログラミングに関しては、また別の話になります。 コンピューターがどうやって動くのかを理解していれば、 C から始めるのが最良だと私は思います。 そうでなければ Python か JavaScript あたりから始めるのが良いかも知れませんが、「分かっている人」なら、C から始めるのが近道だと思います。

 C は高級言語でありながら細かい事が出来る言語であり、しかもプログラマーのやりたい事を妨げません。 だから危険も伴うのですが、コンピューター自体を動かすという感覚が養える素晴らしい言語です。 C を知っていれば、他の高級言語やマークアップ言語などがどのように処理されているのかも見当が付くようになります。

 C をひととおり学んだならば、LISP、JavaScript、Haskell、Ruby、Python、Java などなど、様々な言語を学んでゆく事が出来るでしょう。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

この意見交換はまだ受付中です。

会員登録して回答してみよう

アカウントをお持ちの方は

関連した質問