出典(authority):フリー百科事典『ウィキペディア(Wikipedia)』「2017/01/06 07:25:50」(JST)
この記事は検証可能な参考文献や出典が全く示されていないか、不十分です。 出典を追加して記事の信頼性向上にご協力ください。(2014年4月) |
コンピュータ(英: computer)は、自動計算機、とくに計算開始後は人手を介さずに計算終了まで動作する電子式汎用計算機。歴史的経緯により「計算」の語が使われているが、実際の対象は数値計算に限らず、コンピューティング(その理論としては計算理論)と呼ばれる、より広い範囲である。現代ではパーソナルコンピュータからスーパーコンピュータなどを含めたデジタルコンピュータを指す場合が多い。電卓・機械式計算機・アナログ計算機については各項を参照。
日本語においては、英語の「computer」のカタカナ語として「コンピュータ」または「コンピューター」を用いる[1]。
法用語では「電子計算機」という表現が刑法や著作権法等で用いられている。また、手動の機械式計算機などと違う点を強調して「自動」の語が初期には入ることもあったが、近年はほぼ見なくなった。「電子計算組織」という語もあり、官公庁の公式文書である入札公告、条例などで21世紀に入った後の使用例も見られる[2][3]。「組織」の用法は大体「システム」といった意味のようである。
電算機という語もあり、「電算業務」といった形で電算と略しても使われているが、情報処理学会が歴史について調査した際に、学会誌『情報処理』に掲載された富士通における歴史を述べた記事[4]によれば、電子計算機以前の頃、リレーによる計算機によりサービスを開始した同社が(「電子」じゃないけど、ということで)使い始めた言葉であろう、と書かれている。
他に、人工頭脳[5]や電子頭脳、台湾や香港などでもよく使われる電脳といった言葉がある。
英語の 「computer(コンピューター)」は算術演算(数値計算)を行う人を指す言葉だった。この用法は(英語圏では非常に稀になりつつあるが)今でも有効である。オックスフォード英語辞典第2版では、この語が機械的な計算装置を指す言葉として使われた最初の年を1897年と記している。同辞典では、1946年までに、異なるタイプの計算機を区別するために、「computer」に付く修飾語句がいくつか導入している。これらの修飾語の中には「analogue(アナログ)」、「digital(ディジタル)」「electronic(エレクトロニック)」といった語が含まれている。しかし様々な引用文から、1946年以前にこれらの語が既に使われていたことは明らかである。
デジタルコンピュータとアナログコンピュータという分類が可能だが、現在使われているほとんどのコンピュータはデジタルコンピュータであり、単にコンピュータという表現でデジタルコンピュータを指すことが多い。
アナログコンピュータは、電気的現象・機械的現象・水圧現象を利用してある種の物理現象を表現し、問題を解くのに使われるコンピュータの一形態である[6]。アナログコンピュータはある種の物理量を別の物理量で表し、それに数学的な関数を作用させる。入力の変化に対してほぼリアルタイムで出力が得られる特徴があり、各種シミュレーションなどに利用されたが、演算内容を変更するためには回路を変更する必要があり、得られる精度にも限界があるので、デジタルコンピュータの高速化に伴ってその役割を終えた。
なお、かつて電子式アナログコンピュータの重要な要素として多用されたものと同じ機能を持つ電子回路は、オペアンプICとして今日でも広く使われているが、モジュール化され簡単に使えるものになっているため、全くコンピュータとは意識されていない。
以上のようにアナログコンピュータが「量」(物理量)によって計算を行うのに対して、デジタルコンピュータは、数字[7](数を表す記号)をつかって計算を行う。現代ではもっぱらエレクトロニクスを用いて、二進法で数を表現し、2値論理による論理演算を使っている(タイガー計算器のように歯車の離散的な角度により十進法を表現するものもデジタルな計算機であるし、2値論理を使っていても3増し符号などにより十進法で数を扱うものもある。数値の表現法である「x進法」と、論理のモデルである「x値論理」は、厳密には別のものであることに注意)。
1940年代に最初の実用デジタルコンピュータが登場して以来、コンピュータに使われる技術は、特に微細化という点では劇的に変化してきた。しかし現在のところ、基本的にはノイマン型の構成を受け継いでいる。
コンピュータの命令は人間の言語に比べるとずっと貧弱である。コンピュータは限られた数の明確で単純な命令しか持っていないが、曖昧さは全くない。多くのコンピュータで使われている命令の典型的な例としては、「5番地のメモリの中身をコピーしてそのコピーを10番地に書け」とか「7番地の中身を13番地の中身に加算して結果を20番地に書け」とか「999番地の中身が0なら次の命令は30番地にある」といったものである。
コンピュータの内部では命令は二進コード、つまり2を底とする計数法で表現される。例えば、インテル系のマイクロプロセッサで使われるあるコピー命令のコードは10110000である。ある特定のコンピュータがサポートする特定の命令セットをそのコンピュータの機械語と呼ぶ。
実際には、人間がコンピュータへの命令を機械語で直接書くことは通常はなく、高水準のプログラミング言語を使う。プログラミング言語で書かれた命令が、インタプリタやコンパイラと呼ばれる特別なコンピュータプログラムによって自動的に機械語に翻訳されて実行される。プログラミング言語の中にはアセンブリ言語(低水準言語)のように、機械語に非常に近いレベルで対応付けられるものもある。逆に Prolog(プロログ)のような高水準言語は計算機の実際の演算の詳細とは完全に切り分けるという絶対原理に基づいている。
主記憶装置(メモリ)は番地を付けられたセルの列で、各々のセルには小さな量の情報が格納される。この情報はある場合にはコンピュータに何をすべきかを教える命令である。また、セルにはコンピュータが命令を実行する対象となるデータも格納される。全てのセルはこのどちらかを格納し、ある時はデータを、またある時は命令を格納する。
一般的には、メモリセルの中身はいつでも書き換えられる。すなわち石板というよりは落書き帳に近い。
各セルのサイズとセルの数はコンピュータごとに大きく異なる。また、メモリを実装する技術も時代とともに大きく変化してきた。最初は電磁リレーが、続いて水銀の入った管(水銀遅延線)やバネに音波を通す方法が使われた。次には永久磁石の配列(磁気コアメモリ)やトランジスタが使われた。現在では1つの半導体チップの上に数百万個のコンデンサとトランジスタを集積した集積回路(DRAM)が主に使われている。
また、補助的な、一般に大容量の補助記憶装置がある。
演算ユニットは算術演算(加算・減算など)のような基本的な演算やAND、OR、NOTといった論理演算、比較演算(2つのバイトの中身が等しいかどうかの比較など)、シフト演算などを行う装置である。コンピュータの中で真の仕事(情報処理)を行う部分と言える。
制御ユニットはメモリの中でどのバイトがコンピュータが現在実行中の命令を格納しているかを追いかけ、どの命令を実行すべきかを演算装置(ALU)に教え、実行に必要な情報をメモリから受け取り、実行結果を適切なメモリ位置に運ぶといった仕事をする。一度これらの仕事を終えると、制御ユニットは次の命令に飛ぶ(次の命令は普通、次のメモリ番地に位置しているが、命令がジャンプ命令の場合には別の場所にある)。
メモリを参照する際に、現在の命令はメモリ内で関連する番地を指定するために様々なアドレッシングモードを使う場合がある。コンピュータのマザーボードの中には2つまたはそれ以上のプロセッサをサポートするものもある。コンピュータサーバでは2つまたは複数のプロセッサを使うのが一般的である。
入出力(I/Oとも言う)はコンピュータが外の世界から情報を得たり、計算結果を外に送り返したりすることを可能にするためのものである。外部から見て、コンピュータに情報を送ることを入力、逆にコンピュータから情報を得ることを出力という。
入出力には、入出力インタフェースを介して、入出力装置(I/O装置)が接続される。入出力装置としては例えば、キーボード、マウス、スキャナ、モニタやプリンター、磁気ディスク装置、光学ドライブ装置、ネットワークインタフェースなどといった馴染み深いものから、3次元ディスプレイやデータグローブといったものまで、幅広いものが存在する。
入出力装置は、主として入力を得るためのもの(キーボード、スキャナなど)、出力するためのもの(モニタ、プリンターなど)、入力と出力を兼ね備えたもの(磁気ディスク装置、インタフェースなど)に大別することができる。
現代のコンピュータではALUと制御ユニットを中央処理装置 (CPU) と呼ばれる一つの集積回路にまとめている。典型的には、コンピュータのメモリは数個の小さな集積回路の形で CPU の近くに配置する。コンピュータの質量の圧倒的大部分を占めているのは電源装置のような付属システムかあるいは入出力装置である。
大型のコンピュータでは、上記のようなモデルとは違って複数のCPUと制御ユニットが同時に動いているものもある。さらに、主に研究用途や科学計算に使われるコンピュータでは上に書いたモデルとは大きく異なっている。しかしこういったタイプのコンピュータはプログラミングの方式が標準化されていないため、商用目的の機種にはほとんど見られない。
コンピュータプログラムは単にコンピュータに実行させる命令の大きなリストである。場合によってはデータの表が付属することもある。現在でも1行〜数1000行程度のプログラムが用いられているが、ワープロソフトやOSなどのコンピュータプログラムは数百万行の命令からなる。これらの命令の多くは繰り返し実行される。2003年時点での典型的なパーソナルコンピュータは1秒間に20〜30億個の命令を実行できる。コンピュータのこのような並外れた能力は、複雑な命令を実行できる能力に由来するものではない。むしろ、コンピュータはプログラマと呼ばれる人々によって組まれた何百万もの単純な命令を実行しているのである。プログラムごとに全てを新規に書き下すことは効率が悪いため、画面に点を描くといったよく使われる仕事を行う命令のセット(ライブラリ)が多数用意されている。
今日では、ほとんどのコンピュータは同時にいくつものプログラムを実行するように見える。これは通常、マルチタスクと呼ばれている。実際には、CPUはあるプログラムの命令を実行した後、短い時間の後でもう一つのプログラムに切り替えてその命令を実行している。この短い時間の区切りをタイムスライスと呼ぶ。これによって、複数のプログラムがCPU時間を共有して同時に実行されるように見える。これは動画が実は静止画のフレームの短い連続で作られているのと似ている。このタイムシェアリングは通常、オペレーティングシステムというプログラムで制御されている。
具体的に処理すべき作業の有無によらず、コンピュータに自らの演算資源を管理し「ユーザーの指示を待つ」という動作を取らせるためにさえ、ある種のプログラムを必要とする。典型的なコンピュータでは、このプログラムはオペレーティングシステム (OS) と呼ばれている。オペレーティングシステムをはじめとする、コンピュータを動作させるのに必要となるソフトウェアを全般に「システムソフトウェア」と呼ぶ。
コンピュータを動作するためオペレーティングシステムは、ユーザー、もしくは他のプログラムからの要求に応じてプログラム(この意味では、アプリケーションソフトウェアもしくは単にアプリケーションという用語も使用される。ソフトウェアという用語も似た意味合いだが、これはプログラム一般を指すより広い概念である)をメモリー上にロードし、プログラムからの要求に応じていつ、どのリソース(メモリやI/O)をそのプログラムに割り当てるかを決定する。
オペレーティングシステムはハードウェアを抽象化した層を提供し、他のプログラムがハードウェアにアクセスできるようにする。例えばデバイスドライバと呼ばれるコードがその例である。これによってプログラマは、コンピュータに接続された全ての電子装置について、その奥深い詳細を知る必要なくそれらの機械を使うプログラムを書くことができる。また、ライブラリと呼ばれる再利用可能な多くのプログラム群を備え、プログラマは自ら全てのプログラムを書くことなく、自らのプログラムに様々な機能を組み込むことができる。
ハードウェアの抽象化層を持つ現在のオペレーティングシステムの多くは、何らかの標準化されたユーザインタフェースを兼ね備えている。かつてはキャラクタユーザインタフェースのみが提供されていたが、1970年代にアラン・ケイらが Dynabook(ダイナブック)構想を提唱し、「暫定 Dynabook」と呼ばれる Alto(アルト)と Smalltalk(スモールトーク)によるグラフィカルユーザインタフェース環境を実現した。なお、「暫定 Dynabook」は当時のゼロックスの首脳陣の判断により製品化されなかった(ゼロックスより発売されたグラフィカルユーザインタフェース搭載のシステム Xerox Star(ゼロックス・スター)は「暫定 Dynabook」とは別系統のプロジェクトに由来する)が、この影響を受け開発されたアップルコンピュータの LISA(リサ)や Macintosh(マッキントッシュ)、マイクロソフトの Windows(ウィンドウズ)の発売、普及により、グラフィカルユーザインタフェースが一般的にも普及することとなった。
世間に普及するコンピュータを台数を基準として見た場合、そのほとんどはデスクトップコンピュータとして存在しておらず、携帯電話や炊飯器などの電気製品、各種の測定機器、乗用車や工作機械などの装置に組み込まれた、非常に小さく安価なコンピュータとして実装されている。これらを組み込みシステムと呼ぶ。一般に組み込みOSと呼ばれる専用のOSを用いる。TRON(トロン)プロジェクトのITRON(アイトロン)、米ウィンドリバーのVxWorks(ヴイエックスワークスト)、米シンビアンのSymbian OS(シンビアン・オーエス)、米リナックスワークスのLynxOS(リンクスオーエス)などが利用されている。ただし、近年は開発期間の短縮などの目的で、Windows や Linux(リナックス)といったデスクトップコンピュータで使われているOSと同系統のOSを搭載する場合もある。また、小規模な組み込みシステムのなかには、明確なOSを内蔵していないものも多い。
[ヘルプ] |
ポータル コンピュータ |
ウィキペディアの姉妹プロジェクトで 「コンピュータ」に関する情報が検索できます。 |
|
ウィクショナリーの辞書項目 | |
ウィキブックスの教科書や解説書 |
|
ウィキクォートの引用句集 |
|
ウィキソースの原文 |
|
コモンズでメディア |
|
ウィキニュースのニュース |
|
ウィキバーシティの学習支援 |
|
|
|
全文を閲覧するには購読必要です。 To read the full text you will need to subscribe.
リンク元 | 「コンピュータ」「computer」「計算機」「電子計算機」 |
拡張検索 | 「コンピュータープログラム」「コンピューター断層撮影法」「コンピューター断層撮影」 |
.