コンピュータ

出典: Wikipedio


コンピュータ (computer) は、広義には計算機、狭義には計算開始後は人手を介さずに計算終了まで動作する電子式汎用計算機。理論的にはチューリングマシンと等価な汎用計算機を指す。現代ではパーソナルコンピュータからスーパーコンピュータなどを含めたデジタルコンピュータを指す場合が多い。なお機械式卓上計算機電子式卓上計算機(電卓)については別項を参照のこと。

目次

表記

カタカナでの「コンピュータ(ー)」の表記は、「プリンタ(ー)」や「サーバ(ー)」などと同様に、表記揺れが発生している。(詳細は 工学分野での長音符の省略 を参照。主なメーカーでの長音符の扱いはサーバ#表記を参照。)

日本の法律上での呼称は「電子計算機」(でんしけいさんき、略称:電算機電算)とされている。「電子頭脳」(でんしずのう、略称:電脳)という通称でも呼ばれる(人間の頭脳アナロジーとして、またロボットの頭脳として捉えられることによる)。ただし、電子頭脳・電子計算機等は概念的にはコンピュータのごく一部であり、歴史的な、あるいは研究中のコンピュータには電子的でないものもある。また日本では昭和30年代のコンピュータの生産が行われた時代から「電子計算組織」とも呼ばれ昭和40年代前半頃まで使われた呼称であった。また21世紀を迎えても官公庁公式文書である入札公告条例などではこのように書かれることがある<ref>Template:Cite web</ref><ref>Template:Cite web</ref>。

語源

computer という語は元々は算術計算を行う人を指す言葉だった。この用法は(英語圏では非常に稀になりつつあるが)今でも有効である。オックスフォード英語辞典第2版 (OED2) では、この語が機械的な計算装置を指す言葉として使われた最初の年を1897年と記している。1946年までには、異なるタイプの計算機を区別するために、OED2によってcomputerに付く修飾語句がいくつか導入されている。これらの修飾語の中には analogue、digital、electronic といった語が含まれている。しかし様々な引用文から、1946年以前にこれらの語が既に使われていたことは明らかである。

computer の定義や訳、その他の詳細な語源はWiktionaryのComputerの項目を参照のこと。

デジタルコンピュータとアナログコンピュータ

ハードウェアの構造からデジタルコンピュータとアナログコンピュータに大別されるが、現在使われているほとんどのコンピュータはデジタルコンピュータであり、単にコンピュータという場合はこちらを指すことが多い。

アナログコンピュータは、電気的現象・機械的現象・水圧現象を利用してある種の物理現象を表現し、問題を解くのに使われるコンピュータの一形態である<ref>Universiteit van Amsterdam Computer Museum (2007)</ref>。アナログコンピュータはある種の物理量を別の物理量で表し、それに数学的な関数を作用させる。入力の変化に対してほぼリアルタイムで出力が得られる特徴があり、各種シミュレーションなどに利用されたが、演算内容を変更するためには回路を変更する必要があり、得られる精度にも限界があるので、デジタルコンピュータの高速化に伴ってその役割を終えた。

対してデジタルコンピュータは、電気的現象・機械的現象を用いて作られた演算論理装置の組み合わせによって構成される。チャールズ・バベッジによって開発された解析機関では、階差機関演算論理装置に相当し、解析機関がコンピュータに相当する。

コンピュータの仕組み

350px|right Template:Main2

1940年代に最初の実用デジタルコンピュータが登場して以来、コンピュータに使われる技術は劇的に変化してきたが、すべてのコンピュータはチューリングマシンと等価な原理で動作している。

チューリングマシンは、あらゆる計算可能な数を計算することのできる最も単純なプログラミング機械である。チューリングマシンは、アドレスの無いテープ状の記憶域から命令とデータを含む入力記号列を取り出すと、取り出した記号の値を内部状態と比較し、状態変化表にしたがって、内部状態を変更するか、ヘッドの位置をひとつだけ移動するか、値をテープ記憶に記録するかを決めて実行し、次の命令を取り出す。「停止」の命令に遭遇するまでこの手順を繰り返す。

実際のコンピュータはチューリングマシンの入力記号列のうちプログラムとなる命令列と、データとなる書き換え可能な入出力列を区別している。また計算結果を利用するため、I/O機構が追加されている。I/O機構はプログラムの入れ替えにも使われる。実際のコンピュータはチューリングマシンと異なり、アドレス付きのメモリをランダムアクセスすることで実行効率を向上している。しかし、究極的な計算能力(あらゆる計算可能な数を計算することができる)は変わらない。

コンピュータは次の4つの主要な部分からなるとされる。すなわち、算術論理ユニット (Arithmetic and Logic Unit, ALU)、制御回路記憶装置(メモリ入出力装置(まとめて I/O と呼ぶ)である。これらの部分はバスと呼ばれる導線の束で相互に接続され、通常はタイマまたはクロックによって動作する(別のイベントが制御回路を動作させる場合もある)。

命令(バス)

Template:Main コンピュータの命令は人間の言語に比べるとずっと貧弱である。コンピュータは限られた数の明確で単純な命令しか持っていないが、曖昧さは全くない。多くのコンピュータで使われている命令の典型的な例としては、「5番地のメモリの中身をコピーしてそのコピーを10番地に書け」とか「7番地の中身を13番地の中身に加算して結果を20番地に書け」とか「999番地の中身が0なら次の命令は30番地にある」といったものである。

コンピュータの内部では命令は二進コード、つまり2を底とする計数法で表現される。例えば、インテル系のマイクロプロセッサで使われるあるコピー命令のコードは10110000である。ある特定のコンピュータがサポートする特定の命令セットをそのコンピュータの機械語(machine language)と呼ぶ。

実際には、人間がコンピュータへの命令を機械語で直接書くことは通常はなく、高水準のプログラミング言語を使う。プログラミング言語で書かれた命令が、インタプリタコンパイラと呼ばれる特別なコンピュータプログラムによって自動的に機械語に翻訳されて実行される。プログラミング言語の中にはアセンブリ言語低水準言語)のように、機械語に非常に近いレベルで対応付けられるものもある。逆に Prolog のような高水準言語は計算機の実際の演算の詳細とは完全に切り分けるという絶対原理に基づいている。

ハードウェア

Template:Main2

記憶装置(メモリ)

Template:Main メモリは番地を付けられたセルの列で、各々のセルには小さな量の情報が格納される。この情報はある場合にはコンピュータに何をすべきかを教える命令である。また、セルにはコンピュータが命令を実行する対象となるデータも格納される。全てのセルはこのどちらかを格納し、ある時はデータを、またある時は命令を格納する。

一般的には、メモリセルの中身はいつでも書き換えられる。すなわち石板というよりは落書き帳に近い。

各セルのサイズとセルの数はコンピュータごとに大きく異なる。また、メモリを実装する技術も時代とともに大きく変化してきた。最初は電磁リレーが、続いて水銀の入った管(水銀遅延線)やバネに音波を通す方法が使われた。次には永久磁石の配列(磁気コアメモリ)やトランジスタが使われた。現在では1つの半導体チップの上に数百万個のコンデンサとトランジスタを集積した集積回路DRAM)が主に使われている。

演算処理(プロセッサ)

Template:Main 算術論理演算ユニット (ALU) は算術演算(加算・減算など)のような基本的な演算やAND、OR、NOTといった論理演算、比較演算(2つのバイトの中身が等しいかどうかの比較など)、シフト演算などを行う装置である。コンピュータの中で真の仕事(情報処理)を行う部分と言える。

制御

Template:Main 制御ユニットはメモリの中でどのバイトがコンピュータが現在実行中の命令を格納しているかを追いかけ、どの命令を実行すべきかをALUに教え、実行に必要な情報をメモリから受け取り、実行結果を適切なメモリ位置に運ぶといった仕事をする。一度これらの仕事を終えると、制御ユニットは次の命令に飛ぶ(次の命令は普通、次のメモリ番地に位置しているが、命令がジャンプ命令の場合には別の場所にある)。

メモリを参照する際に、現在の命令はメモリ内で関連する番地を指定するために様々なアドレッシングモードを使う場合がある。コンピュータのマザーボードの中には2つまたはそれ以上のプロセッサをサポートするものもある。コンピュータサーバでは2つまたは複数のプロセッサを使うのが一般的である。

入出力

Template:Main 入出力(Input/Outputを略してI/Oとも言う)はコンピュータが外の世界から情報を得たり、計算結果を外に送り返したりすることを可能にするためのものである。外部から見て、コンピュータに情報を送ることを入力、逆にコンピュータから情報を得ることを出力という。

入出力には、入出力インタフェースを介して、入出力装置(I/O装置)が接続される。入出力装置としては例えば、キーボードマウススキャナモニタプリンター磁気ディスク装置光学ドライブ装置、ネットワークインタフェースなどといった馴染み深いものから、3次元ディスプレイデータグローブといったものまで、幅広いものが存在する。

入出力装置は、主として入力を得るためのもの(キーボード、スキャナなど)、出力するためのもの(モニタ、プリンターなど)、入力と出力を兼ね備えたもの(磁気ディスク装置、インタフェースなど)に大別することができる。

アーキテクチャ

Template:Main 現代のコンピュータではALUと制御ユニットを中央処理装置 (CPU ;central processing unit) と呼ばれる一つの集積回路にまとめている。典型的には、コンピュータのメモリは数個の小さな集積回路の形で CPU の近くに配置する。コンピュータの質量の圧倒的大部分を占めているのは電源装置のような付属システムかあるいは入出力装置である。

大型のコンピュータでは、上記のようなモデルとは違って複数のCPUと制御ユニットが同時に動いているものもある。さらに、主に研究用途や科学計算に使われるコンピュータでは上に書いたモデルとは大きく異なっている。しかしこういったタイプのコンピュータはプログラミングの方式が標準化されていないため、商用目的の機種にはほとんど見られない。

ソフトウェア

プログラム

Template:Main コンピュータプログラムは単にコンピュータに実行させる命令の大きなリストである。場合によってはデータの表が付属することもある。現在でも1行〜数1000行程度のプログラムが用いられているが、ワープロソフトOSなどのコンピュータプログラムは数百万行の命令からなる。これらの命令の多くは繰り返し実行される。2003年時点での典型的なパーソナルコンピュータは1秒間に20〜30億個の命令を実行できる。コンピュータのこのような並外れた能力は、複雑な命令を実行できる能力に由来するものではない。むしろ、コンピュータはプログラマと呼ばれる人々によって組まれた何百万もの単純な命令を実行しているのである。プログラムごとに全てを新規に書き下すことは効率が悪いため、画面に点を描くといったよく使われる仕事を行う命令のセット(ライブラリ)が多数用意されている。

今日では、ほとんどのコンピュータは同時にいくつものプログラムを実行するように見える。これは通常、マルチタスクと呼ばれている。実際には、CPUはあるプログラムの命令を実行した後、短い時間の後でもう一つのプログラムに切り替えてその命令を実行している。この短い時間の区切りをタイムスライスと呼ぶ。これによって、複数のプログラムがCPU時間を共有して同時に実行されるように見える。これは動画が実は静止画のフレームの短い連続で作られているのと似ている。このタイムシェアリングは通常、オペレーティングシステムというプログラムで制御されている。

オペレーティングシステム (OS)

Template:Main 具体的に処理すべき作業の有無によらず、コンピュータに自らの演算資源を管理し「ユーザーの指示を待つ」という動作を取らせるためにさえ、ある種のプログラムを必要とする。典型的なコンピュータでは、このプログラムはオペレーティングシステム (Operating System = OS) と呼ばれている。オペレーティングシステムをはじめとする、コンピュータを動作させるのに必要となるソフトウェアを全般に、「基本ソフト(基本ソフトウェア)」「システムソフトウェア」と呼ぶ。

コンピュータを動作するためオペレーティングシステムは、ユーザー、もしくは他のプログラムからの要求に応じてプログラム(この意味では、アプリケーションソフトウェアもしくは単にアプリケーションという用語も使用される。ソフトウェアという用語も似た意味合いだが、これはプログラム一般を指すより広い概念である)をメモリー上にロードし、プログラムからの要求に応じていつ、どのリソース(メモリやI/O)をそのプログラムに割り当てるかを決定する。

オペレーティングシステムはハードウェアを抽象化した層を提供し、他のプログラムがハードウェアにアクセスできるようにする。例えばデバイスドライバと呼ばれるコードがその例である。これによってプログラマは、コンピュータに接続された全ての電子装置について、その奥深い詳細を知る必要なくそれらの機械を使うプログラムを書くことができる。また、ライブラリと呼ばれる再利用可能な多くのプログラム群を備え、プログラマは自ら全てのプログラムを書くことなく、自らのプログラムに様々な機能を組み込むことができる。

ハードウェアの抽象化層を持つ現在のオペレーティングシステムの多くは、何らかの標準化されたユーザインタフェースを兼ね備えている。かつてはキャラクタユーザインタフェースのみが提供されていたが、1970年代にアラン・ケイらがDynabook構想を提唱、暫定Dynabookと呼ばれるaltosmalltalkによるグラフィカルユーザインタフェース環境を実現した。なお、暫定Dynabookは当時のゼロックスの首脳陣の判断により製品化されなかった(ゼロックスより発売されたグラフィカルユーザインタフェース搭載のシステムXerox Starは暫定Dynabookとは別系統のプロジェクトに由来する)が、この影響を受け開発されたアップルコンピュータLisaMacintoshマイクロソフト社のWindowsの発売、普及により、グラフィカルユーザインタフェースが一般的にも普及することとなった。

現在、デスクトップコンピュータ用として最も普及しているOSはマイクロソフトWindowsである。

世間に普及するコンピュータを台数を基準として見た場合、そのほとんどはデスクトップコンピュータとして存在しておらず、携帯電話や炊飯器などの電気製品、各種の測定機器、乗用車や工作機械などの装置に組み込まれた、非常に小さく安価なコンピュータとして実装されている。これらを組み込みシステムと呼ぶ。一般に組み込みOS (embedded OS) と呼ばれる専用のOSを用いる。TRONプロジェクトのITRON、米WindRiver社のVxWorks、米Symbian社のSymbian OS、米LinuxWorks社のLynxOSなどが利用されている。ただし、近年は開発期間の短縮などの目的で、WindowsやLinuxといったデスクトップコンピュータで使われているOSと同系統のOSを搭載する場合もある。また、小規模な組み込みシステムのなかには、明確なOSを内蔵していないものも多い。

歴史

Template:See also

種類

携帯機器

研究段階のコンピュータ

関連項目

Template:ウィキポータルリンクS Template:Sisterlinks

脚注

<references />

外部リンク

Template:Computer sizes Template:コンピュータの構成要素Template:Link FA Template:Link FA

ace:Komputer af:Rekenaar als:Computer am:ኮምፒዩተር an:Ordinador ang:Spærcletelle ar:حاسوب arz:كومپيوتر ast:Computadora az:Kompyuter ba:Компьютер bar:Rechna bat-smg:Kuompioteris be:Камп'ютэр be-x-old:Кампутар bg:Компютър bn:কম্পিউটার bo:གློག་ཀླད། bpy:কম্পিউটার br:Urzhiataer bs:Računar bug:Komputer ca:Ordinador ceb:Kompyuter cs:Počítač cu:Съмѣтатєл҄ь cv:Компьютер cy:Cyfrifiadur da:Computer de:Computer diq:Komputer el:Ηλεκτρονικός υπολογιστής eml:Zarvlån en:Computer eo:Komputilo es:Computadora et:Arvuti eu:Ordenagailu fa:رایانه fi:Tietokone fiu-vro:Puutri fo:Telda fr:Ordinateur fur:Ordenadôr fy:Kompjûter ga:Ríomhaire gan:電腦 gd:Coimpiutaireachd gl:Ordenador got:𐍅𐌹𐍄𐌹𐍂𐌰𐌷𐌽𐌾𐌰𐌽𐌳𐍃 gu:કમ્પ્યૂટર gv:Co-earrooder ha:Na'ura hak:Thien-nó he:מחשב hi:अभिकलित्र hr:Računalo hu:Számítógép hy:Համակարգիչ ia:Computator id:Komputer ig:Orunotu io:Ordinatro is:Tölva it:Computer iu:ᖃᕋᓴᐅᔭᖅ/qarasaujaq jbo:skami jv:Komputer ka:კომპიუტერი kg:Ludinatelo kk:Компьютер km:កុំព្យូទ័រ kn:ಗಣಕಯಂತ್ರ ko:컴퓨터 ku:Komputer kw:Comptyor ky:ЭЭМ la:Computatrum lad:Komputer lb:Computer li:Computer lmo:Cumpiüter ln:Esálela lo:ຄອມພິວເຕີ lt:Kompiuteris lv:Dators mg:Mpikajy mhr:Компучыр mk:Сметач ml:കമ്പ്യൂട്ടർ mn:Компьютер mr:संगणक विज्ञान ms:Komputer mt:Kompjuter mwl:Cumputador my:ကွန်ပျူတာ mzn:کامپیوتر nah:Chīuhpōhualhuaztli nap:Computer nds:Reekner nds-nl:Komputer ne:कम्प्युटर new:कम्प्युटर nl:Computer nn:Datamaskin no:Datamaskin nv:Béésh bee akʼeʼelchíhí tʼáá bí nitsékeesígíí oc:Ordinator pa:ਕੰਪਿਊਟਰ pam:Computer pl:Komputer pnb:کمپیوٹر ps:سولګر pt:Computador qu:Antañiqiq ro:Calculator ru:Компьютер sah:Көмпүүтэр sc:Computer scn:Computer sco:Computer sh:Kompjuter si:පරිගණකය simple:Computer sk:Počítač sl:Računalnik so:Kumbuyuutar sq:Kompjuteri sr:Рачунар stq:Computer sv:Dator sw:Tarakilishi ta:கணினி te:కంప్యూటరు tg:Компутар th:คอมพิวเตอร์ tk:Kompýuter tl:Kompyuter tr:Bilgisayar tt:Санак uk:Комп'ютер ur:شمارِندہ uz:Kompyuter vec:Computer vi:Máy tính vls:Computer wa:Copiutrece war:Kompyuter wo:Nosukaay wuu:计算机 xh:Ikhompyutha yi:קאמפיוטער yo:Kọ̀mpútà za:Dennauj zh:電子計算機 zh-min-nan:Tiān-náu zh-yue:電腦

個人用ツール