ソロバンも計算尺も「手動」で計算を行う道具だが、機械式の計算機も17世紀に登場している。以下、登場順にシッカートの計算機:6桁の加減算と、オーバーフローの検出、複数の「ネイピアの棒」を使った乗算が可能パスカルの計算機:歯車を使って、加減算を計算。自動で桁上りする機能を持つライプニッツの計算機:パスカルの計算機を改良し、乗除算が出来るライプニッツは、計算機を単純に数値の計算だけに使うのではなく、「論理的な仮説を検証することにも使える」という考え方を打ち出している。これは、現在のコンピュータにも通じるもので、その後の計算機の理論的な発展に重要な影響を及ぼしたとされている。ここまでの機械は歯車などの比較的単純な機構を用いた装置であった。現在のコンピュータにもつながる基本的な仕組みは、産業革命期のイギリスにおいて発明された。航海に必要な天文学の計算や、機械設計などの科学技術分野で、膨大な計算作業が必要になったことを受けてのことである。それは、イギリスの数学者・バベッジによる「階差機関」と「解析機関」として、開発が着手され、とりわけ「解析機関」は現在のコンピュータにも通じる、重要なアイディアが盛り込まれていた。「演算機能」と「記憶機能」が分離されていて、「プログラム」によって色々なパターンの計算をさせよう、という考え方を採用していた点である。そのため、バベッジは「コンピュータの父」とも言われている。*ただし「階差機関」も「解析機関」も、バベッジが生きているうちには完成しなかった。「解析機関」では外部から「プログラム」を与えるとされているが、その「プログラム」の入力には、織り機のために発明されていた「パンチカード」を使うことが考えられていた。「パンチカード」は紙で出来たカードに穴をあけたもので、開けられた穴の位置によって計算の指示を与えるものである。ちなみに、「解析機関」の開発に深く携わった人物として、エイダという女性がいる。彼女はバベッジに対して、「解析機関」の開発費用の援助を行っただけでなく、解析機関の解説書の作成や、解析機関で利用されるプログラムの作成にも携わっている。そのプログラムの考え方は、現在のコンピュータのプログラムにも通じるほど高度なものであり、『人類初のプログラマ』とも言われている。(2)0と1の世界の確立ライプニッツによって『計算機械が論理的な仮説の検証にも使える』という考え方が提唱されたが、19世紀になって、イギリスの数学者・ブールがこの考え方をさらに発展させて、コンピュータで使われる理論の基礎を築いた。1854年にブールは『真』と『偽』の二つの値を使う『論理学』という学問を、『1』と『0』という2つの数字だけを使って扱うことが出来るという考え方を示した。これを『ブール代数』と読んでいる。ブールは『事象1』が『真』であり、かつ、『事象2』が『真』であれば、『結果』も『真』であるということを、『論理積』として、単純に1×1=1という演算で表現した。この『論理積』以外の他に、『論理和』や『否定』といった『論理演算』を使って、論理の世界を1と0の演算で表現できることを証明した。1と0の演算を行える機械を作りさえすれば、その機械でどんな論理的な計算もできることを示したのである。その後、20世紀に入り、イギリスの数学者・チューリングによって、論理的な計算を仮想的な機械で行うことが出来ることが示された。チューリングは、無限に長いテープと、それに0か1かの情報を読み書きするヘッドを持った、テープレコーダーのような機械を想定し、その機械を何回か動作させれば、加減乗除をはじめとして、数学的な様々な問題が解けることを証明したのである。この仮想的な機械は『チューリング機械』と呼ばれている。チューリング機械の可能性を示すと同時に、限界も示されており、「プログラムに書けない問題は解決することは出来ない」ということである。プログラムに書ける=アルゴリズムが分かっている、という言い方もできるが、アルゴリズムがわからない問題は、チューリング機械では解決できないということである。ドイツで1938年に『Z1』という計算機械が開発される。初期型の『Z1』は機械式だったが、改良版の『Z2』では、電気のオン・オフを切り替える『リレー』という電子部品が使われており、航空機の設計計算に用いられた。アメリカでは1939年にアタナソフにより『ABC』という名の電子計算機が試作された。『ABC』では、リレー回路だけではなく、『真空管』という電子部品も使われた。1944年に『MarkI』というリレーを使った大型計算機も開発されている。それ以外にも、1943年にイギリスで『COLOSSUS』という真空管を使った電子計算機が開発されている。一般的に、「世界初のコンピュータ」と言うと、1946年に誕生した『ENIAC』を指す。『ENIAC』はアメリカ・ペンシルバニア大学のエッカートとモークリーによって開発された計算機で、『ABC』の技術も取り入れているが、最大の違いは真空管だけを使ってすべての計算をさせるという点である。真空管はリレーと同様に電気のスイッチの役割を果たすが、動作がリレーよりも格段に速いという特徴を持っていた。反面、リレーよりも信頼性に劣り、価格も高かったのだが、『ミサイル弾道のシミュレーション』に使いたいというアメリカ陸軍の思惑もあり、開発が進められた。『ENIAC』のプログラムは実際に人間が配線を変更することで行われ、現在のコンピュータの仕組みとは異なっている部分もあり、コンピュータの定義によっては必ずしも世界最初のものではない。いずれにせよ『ENIAC』が、コンピュータの黎明期において歴史的に重要な役割を果たしたものの1つであることに変わりはない。『ENIAC』の計算速度は、それまでの計算機械と比べて、圧倒的な性能を誇った。プログラムの変更が、人手による配線の変更を要し、手間がかかるという欠点があった。そこで、後継機の『EDVAC』では、プログラムをあらかじめ記憶装置に内蔵しておく方式が採用されることになった。この方式を、『プログラム内蔵方式』といい、この方式を取るコンピュータのことを『フォン・ノイマン型コンピュータ』と呼ぶ。当時すでに有名な科学者であったフォン・ノイマンは『ENIAC』の開発に途中から参画し、『ENIAC』・『EDVAC』開発プロジェクトにも深く関わっていたのだが、そのなかで出てきたアイディアをフォン・ノイマンが纏め上げたことから、彼の名が残っているわけである。その『EDVAC』は1950年に完成したが、実は、世界初の『フォン・ノイマン型コンピュータ』とはならなかった。フォン・ノイマンらのアイディアを知った、イギリス・ケンブリッジ大学のウィルクスらが『EDSAC』というコンピュータを1949年、つまり『EDVAC』より先にに完成させたのである。現在のコンピュータが『EDVAC』の延長線上にあること。『フォン・ノイマン型コンピュータ』であることには変わらない。いった変化を日進月歩で繰り返し、さらにそのサイクルも短くなる形で急速な発展を遂げできたわけだが、「プログラム内蔵方式」であり、「スイッチの集合体」であるという点で、『EDVAC』の延長線上にあると言える。初期のトランジスタから小型化・高速化が進んでIC、LSIと進化してきた。コンピュータの形態としても、初期の大型汎用コンピュータから、オフコン・ミニコン、サーバ・ワークステーション、パソコン、といった形でダウンサイジングが進みつつ、現在のパソコンは初期の汎用大型コンピュータよりも高性能を誇るほどの高性能化も進んでいる。コンピュータがどれだけ小型化・高性能化しても、スイッチの集合体であり、0と1の論理演算の組合せで、処理を実行している点や、アルゴリズム化できない問題は解決できないという、チューリング機械の限界といった、基本的な考え方については変わっていない。コンピュータの進化という話題では、とりわけパーソナルコンピュータ(パソコン)の進化のスピードは凄まじいものがある。その大きな要因となっているキーワードが、『デファクト・スタンダード』『オープン・アーキテクチャ』『水平分業』である。オープン・アーキテクチャとは、内部仕様の公開ということで、元々の狙いとしては、ソフトや周辺機器の開発を容易にし、多数のソフト・周辺機器を競わせることで、本体の魅力をより向上させようというものであった。現在のパソコンの多くは『PC/AT互換機』と言われ、元はIBMの1商品で、その商品力アップのために仕様が公開されたわけだが、仕様を公開することで、ソフトや周辺機器のみならず、パソコン本体の仕様を真似た物(=互換機)も登場することとなり、パソコン市場を独占しようというIBMの目論見は失敗に終わる。世に多数の『PC/AT互換機』が出回り、シェアを拡大することで、『PC/AT互換機』が事実上のパソコンの標準規格となってしまったわけである。(=デファクトスタンダード)*水平分業が技術革新を進めるというのは、パソコンに限定される話ではない。殆どの産業に言えることである。『様々な計算は、0と1を使った論理演算の組合せで実現できる』という基本的な事項は、コンピュータが進化しても変わりない部分である。コンピュータの中での情報の表現方法や、論理演算といった、コンピュータの根幹に関わる理論を扱っているのが『離散数学』という分野であり、「どんなパターンの計算をさせるのか?」といった具体的な事例について触れているのが、『応用数学』(特に確率統計や、数値解析)という分野ということになる。情報処理技術者として、『離散数学』や『応用数学』の分野から、役に立ちそうなエッセンスを吸収してくださいね、という事であり、情報処理技術者に学問としての『離散数学』や『応用数学』をマスターすることが求められているわけではない。鍛えるための学問である点も見逃せない。『論理的思考』とは『物事を数理的に捕え、筋道を立てて考え、処理する』という事になる。実際の仕事では『習うより慣れろ』『理論より実践』ということは、よく言われるが、慣れることで処理能力は向上しても、『なぜそうなるのか?』ということが分かっていなければ、これまでの経験を応用して異なる仕事をしたり、何がしかの問題が発生したときに原因を究明することが難しくなる。何がしかのプログラム言語で「1÷3×3」という計算をさせたところ、1になるはずの解が1にならない。算数のドリルを解いたところで、コンピュータ上で、数字がどう表現されているのか、四則演算がどう行った仕組みで行われているのか、を理解しておかないと、何が悪くて期待通りの結果が出ないのかが分からないのである。人間の脳は直感的に、この数式の解が1であると分かるが、それはあくまでも四則演算というアルゴリズムを刷り込まれているから『直感的』に解が出せるが、コンピュータにもそのアルゴリズムを教えてあげないと、正しく計算はしてれないし、コンピュータの内部では『分数』という便利なものは表現できない点、割り算では誤差が出る可能性がある、という原理が分かっていないと、対処法が導き出せないのである。3倍したものはどれか。10進数で表現したものはどれか。mathematics)とは、原則として離散的な(言い換えると連続でない、とびとびの)対象をあつかう数学のことである。有限数学あるいは離散数理と呼ばれることもある。プログラミング、アルゴリズム論が絡む[1]応用分野で、その領域を包括的・抽象的に表現する際に用いられることが多い。離散数学には整数論が含まれるが、初等整数論を超えると解析学などとも関係し(解析的整数論)、離散数学の範疇を超える。『離散数学』という言葉自体は義務教育の数学ではまず聞かないだろうし、高校レベルでもキーワードとしては出てこなかったと記憶している。コンピュータ内部での情報の扱いを考えた場合、情報は電気信号の[ON]と[OFF]の2値の組み合わせで管理されているので、一般的には『2進数』の[0]と[1]に対応させて表現している。2進数そのままでは人間にとっては至極扱いにくいため、必要に応じて10進数に戻して理解する。基数の変換,数値の表現,算術演算と精度など,コンピュータで扱う数値表現を修得し,応用する。集合,論理演算の基本法則,手法を修得し,応用する。基数の基本的な考え方を理解する。集合の基本的な考え方を理解する。負の数の表現(補数表現),小数の表現を理解する。ンピュータでの算術演算を理解する。集合,命題,ベン図の手法と考え方を理解する。