コンピュータ科学の世界観です。
コンピュータの計算とは、単なる数の計算ではないと知っておきましょう。
コンピュータの計算は、単なる加減乗除の計算ではありません。
コンピュータの計算は、ある特定の操作があって、特定の状態に対してその場その場で行われるべき操作が決まっていて、操作の結果現れる新しい状態に基づいてまた別の操作が行われるようになっていて、状態が続くという条件の間それが繰り返され、それが終点になった時点で計算が終了する処理のように、「ひとつひとつの状態に対して決められた操作処理を行う一連の手続き」のことです。
コンピュータの計算は、単なる加減乗除の計算だけではありません。たとえば小学校で習う掛け算や割り算の筆算のように、あるいは筆算の延長線上にあるような一連の操作処理のように、よりさまざまな場合に共通の「状態に対する連続した操作」のことを意味しています。
古い本ですが、数学の思想 (NHKブックス 42)という本には、そのような「電子計算機の計算とは単なる数の計算ではない」ということが記述されており、参考になります。
コンピュータの計算は、まさにそのような「アルゴリズムの計算」であると言えます。
このような結果、コンピュータではさまざまなことができます。単にできるだけではなく、高速であり、また正確です。大量にある仕事であっても、とても複雑な計算であっても、文句を言わず、間違えることもなく、コンピュータが動く限りこなすことができます。
僕は、プログラミングのコツは、「状態に対して手続きを記述する」ということだと思います。
まず、データ構造である「状態」を思い浮かべます。この状態は、「ある一定の法則」によって常に秩序が保たれているか、あるいは自分の手でそのように保ちます。
そして、この「状態」を、「別のなんらかの状態にする」ために、「手続き」となるアルゴリズムを考えます。
これは、たとえばソートや探索のようなものです。
ある秩序に基づく状態があり、その状態を別の状態にするため、あるいは秩序を保ち続けるために、どのような手続きを実行したらいいかを考え、それを記述するのです。
実際には、プログラミングはなんらかの状態を別の状態にするだけではありません。特定のデータを見つけるための探索もありますし、圧縮や解凍、あるいは通信やストレージやメモリの管理など、さまざまな分野があります。
ですが、基本的な「状態と手続きが現れ、状態に対して手続きを記述する」ということは変わらないため、状態を別の状態にするための手続きを書くことができるなら、ほかのことも同じようにできるようになるでしょう。
クロード・シャノンは、コンピュータを単なる「計算機」から、どんな情報でも万能に処理できる「コンピュータ」に変えた。物理学では情報を分析することはできないと唱え、情報を「ツー」と「トン」で計算できるモールス信号のように、情報を単純化する「コード化」を行い、0と1のビット化によって、数字だけではなくさまざまな情報(マルチメディア情報など)を処理することができると考えた。
後日注記:シャノンの賢い点は、情報の基本単位を0と1のビットにし、数だけではなく、文字や画像や音声など、すべての情報がこのビットによって表現できるとしたこと。これにより、コンピュータというたった一種類の「情報を処理する機械」で、すべてのビット情報を同じように処理することが可能になった。文字や画像や音声などに種類を分けることなく、たったひとつのコンピュータですべてが処理できるということが、この「ビット」という情報の共通単位によって可能になったのだ。これにより、ビットの処理を行うコンピュータは「万能情報処理装置」になったのである。
以下の書籍に、クロード・シャノンの情報理論についての記述が載っている。TRON開発者の坂村健さんによる書籍である。(上の記述は以下の書籍を参考に執筆しました。)
2023.02.09編集
以下のようなページが参考になる。熱力学と共通の概念であるエントロピー(情報の乱雑さの度合い)や、確率分布・符号化などの理論がよく教えられる。
通信、暗号化、圧縮などに関連する、情報理論の提唱者。彼によってコンピュータは単なる計算機から「符号化」によってさまざまな情報処理を行う「万能機械」になった。
Linuxアーカイブ・同期・デバイス処理も参照のこと。
エントロピーについては熱力学も参照のこと。
チューリングマシンは仮想的な理想かつ単純な機械のことで、計算機を数学的に議論するために用いられる。
チューリングマシンは、自分の「状態」があり、文字列をテープから受け付けた上で、入力文字列から出力文字列になるように上書きし、受理あるいは拒否の状態に入って停止するような仮想的な機械のこと。
チューリングは、すべての言語が決定可能なのかどうか、すなわちすべての問題が有限時間でイエスかノーかで判断できるのかどうかを考えるために、「万能チューリングマシン」を用意することで、この問題に「ノー」(有限では解決できない問題も存在する)であると証明した。
チューリングマシンについての数学的な議論については、以下の記事が詳しい。(以上の内容はこの記事を参考に執筆しました。)
チューリングマシンで知られるコンピュータ科学者。
ノイマン型コンピュータとは、プログラム内蔵方式のコンピュータのこと。
命令をひとつひとつ逐次的に実行する「プログラム」を、コンピュータの内部にデータとして持つ。
コンピュータ科学者。
後日注記:フォン・ノイマンは、コンピュータ科学以外でもたくさんの分野で巨大な貢献を遺した、20世紀を代表する偉大な天才である。
2023.05.01編集
僕がノイマン型コンピュータについて思うことは、「必ずしも命令の逐次実行ではないコンピュータも考えられる」ということです。
たとえば、人工知能を持った自律思考型のロボットがあったとして、これを今のコンピュータのように、プログラムを逐次実行していく方法で作ることは難しいと思います。
そうではなく、別の方法で、プログラムを自分自身が考えだすようなCPUを作ることは、僕はできると思います。
グラフ描画ソフト。
gnuplotも参照のこと。
統計専用のプログラミング言語。
R言語も参照のこと。
数学的解析のための高レベルな言語・ソフトウェア。
古いコンピュータ(1.メインフレーム・ミニコン)も参照のこと。
人工知能・AI・機械学習・データマイニングを参照のこと。