| 'ウィキポータル があります。 |
なお、日本の法律上での呼称は「電子計算機」(でんしけいさんき、略称・電算機)とされている。「電子頭脳」(でんしずのう、略称・電脳)という通称でも呼ばれる。
ハードウェアの構造からデジタルコンピュータとアナログコンピュータに大別されるが、現在使われているほとんどのコンピュータはデジタルコンピュータである。
デジタルコンピュータは、おもに半導体素子を用いて作られた論理回路の組み合わせによって構成される。演算の対象は通常2進数によって表され、桁数を増やしていけば原理的にいくらでも計算精度を上げられるが、ほとんどの演算では、桁数が多くなれば必要な計算が増えて遅くなる。
対してアナログコンピュータは、加減算や微積分などを行うアナログ電子回路を演算増幅器によって構成し、それらを組み合わせて所望の演算を行う。演算の対象は電圧によって表され、演算結果はオシロスコープやペンレコーダなどに出力される。入力の変化に対してほぼリアルタイムで出力が得られる特徴があり、各種シミュレーションなどに利用されたが、演算内容を変更するためには回路を変更する必要があり、得られる精度にも限界があるので、デジタルコンピュータの高速化に伴ってその役割を終えた。
古くはチャールズ・バベッジによって開発された階差機関などがデジタルコンピュータの元祖であった。現在のデジタルコンピュータは、ストアードプログラム方式で逐次処理をして駆動するノイマン型コンピュータがほとんどであるが、量子コンピュータやDNAコンピュータなどのノイマン型でないコンピュータも研究され、1990年代後半から画像解析分野などで実用化されている。例を挙げるならば、地球観測プラットフォーム技術衛星の映像解析など地球自然環境調査などの分野で利用されている。
チューリングマシンが停止性問題を解く事が出来ない事を証明する為に、チューリングは万能チューリングマシンの概念を考え出した。この概念はジョン・フォン・ノイマンによるノイマン型コンピュータの概念の先駆けである。
チューリング以後、様々な人がコンピュータとアルゴリズムの概念の理論的なモデルを提案した。代表的なモデルとして帰納的関数、ラムダ計算等がある。しかし後にチャーチはこれらの概念は実は全て同値である事を証明し、これら同値な概念をコンピュータの定義として採用する事を提唱した(チャーチの提唱)。
コンピュータを使う際には、解くべき問題を直接モデル化することもある。すなわち、計算に利用する物理現象に、解くべき問題をできるだけ忠実に当てはめるのである。例えばダムの水の流れをモデル化するために電子の流れ(電流)を使うといった例が挙げられる。このようなアナログコンピュータは1960年代には良く使われたが、今では希少になっている。
今日のほとんどのコンピュータでは、問題はまず、全ての関連する情報を二進数(0と1を用いる記数法)で表現することで数学的形式に翻訳される。次に、これらの情報に対する全ての演算が単純なブール代数に還元される。
続いて、ブール演算を表現するために電子回路が使われる。ほぼ全ての数学的演算はブール演算に還元できるので、十分に高速な電子計算機さえあれば数学的問題の多く(や数学の問題に変換可能な情報処理問題の多く)は解くことが可能である。現代のデジタルコンピュータを可能にしたこの基本的なアイデアはクロード・シャノンによって形式化され、研究された。
しかしコンピュータは全ての数学的問題を解くことはできない。どのような問題がコンピュータで計算可能でどのような問題が不可能なのかを示したのはアラン・チューリングである。彼はこの仕事を通じて理論計算機科学を創始した。
コンピュータが問題の計算を終えると、結果は電球や発光ダイオード (LED)、モニタ、プリンタといった出力装置の出力によってユーザに表示される。
初心者、特に子供にとっては、「コンピュータはただの機械であり、自らが表示する言葉を考えたり理解したりしているわけではない」という重要な事実を理解するのが難しい場合もある。コンピュータは単にプログラムされた線や色の一覧表を機械的に引いて、それを出力装置を使っていろいろなパターンの光の図形として表示しているだけである。これらのパターンが文字や数字を形作ることを認識して、それに意味付けを行っているのは人間の脳である。現在存在するコンピュータがやっていることは、0と1に論理的に等価な電子を操作していることだけである。コンピュータを使って人間の理解力や自我をうまく模倣する方法は今のところない。詳しくは人工知能を参照のこと。
computer の定義や訳、その他の詳細な語源はWiktionaryのComputerの項目を参照のこと。
ノイマン型コンピュータの機能は原理的には非常に素直なものである。典型的には、クロックサイクルごとにコンピュータは命令とデータをメモリから取り出す (fetch)。取り出した命令を実行し、結果を格納し、次の命令を取り出す。「停止」の命令に遭遇するまでこの手順が繰り返される。
フォン・ノイマン型アーキテクチャではコンピュータは次の4つの主要な部分からなるとされる。すなわち、算術論理ユニット (Arithmetic and Logic Unit, ALU)、制御回路、記憶装置(メモリ)、入出力装置(まとめて I/O と呼ぶ)である。これらの部分はバス (コンピュータ)と呼ばれる導線の束で相互に接続され、通常はタイマまたはクロックによって動作する(別のイベントが制御回路を動作させる場合もある)。
コンピュータの内部では命令は二進コード、つまり2を底とする計数法で表現される。例えば、インテル系のマイクロプロセッサで使われるあるコピー命令のコードは10110000である。ある特定のコンピュータがサポートする特定の命令セットをそのコンピュータの機械語 (machine language) と呼ぶ。
実際には、人間がコンピュータへの命令を機械語で直接書くことは通常はなく、高水準のプログラミング言語を使う。プログラミング言語で書かれた命令が、インタープリタやコンパイラと呼ばれる特別なコンピュータプログラムによって自動的に機械語に翻訳されて実行される。プログラミング言語の中にはアセンブリ言語(低水準言語)のように、機械語に非常に近いレベルで対応付けられるものもある。逆に Prolog のような高水準言語は計算機の実際の演算の詳細とは完全に切り分けるという絶対原理に基づいている。
一般的には、メモリセルの中身はいつでも書き換えられる。すなわち石板というよりは落書き帳に近い。
各セルのサイズとセルの数はコンピュータごとに大きく異なる。また、メモリを実装する技術も時代とともに大きく変化してきた。最初は電磁リレーが、続いて水銀の入った管(水銀遅延線)やバネに音波を通す方法が使われた。次には永久磁石の配列(磁気コアメモリ)やトランジスタが使われた。現在では1つの半導体チップの上に数百万個のコンデンサとトランジスタを集積した集積回路(DRAM)が主に使われている。
メモリを参照する際に、現在の命令はメモリ内で関連する番地を指定するために様々なアドレッシングモードを使う場合がある。コンピュータのマザーボードの中には2つまたはそれ以上のプロセッサをサポートするものもある。コンピュータサーバでは2つまたは複数のプロセッサを使うのが一般的である。
入出力(にゅうしゅつりょく)(Input Outputを略してI/Oとも言う)はコンピュータが外の世界から情報を得たり、計算結果を外に送り返したりすることを可能にするためのものである。外部から見て、コンピュータに情報を送ることを入力、逆にコンピュータから情報を得ることを出力という。
入出力には、入出力インターフェースを介して、入出力装置(I/O装置)が接続される。入出力装置としては例えば、キーボード、マウス、スキャナ、モニタやプリンタ、磁気ディスク装置、光学ドライブ装置などといった馴染み深いものから、3次元ディスプレイやデータグローブといったものまで、幅広いものが存在する。
入出力装置は、主として入力を得るためのもの(キーボード、スキャナなど)、出力するためのもの(モニタ、プリンタなど)、入力と出力を兼ね備え情報を蓄積して後からそれを読み出すことのできるもの(磁気ディスク装置など)に大別することができる。
大型のコンピュータでは、上記のようなモデルとは違って複数のCPUと制御ユニットが同時に動いているものもある。さらに、主に研究用途や科学計算に使われるコンピュータでは上に書いたモデルとは大きく異なっている。しかしこういったタイプのコンピュータはプログラミングの方式が標準化されていないため、商用目的の機種にはほとんど見られない。
今日では、ほとんどのコンピュータは同時にいくつものプログラムを実行するように見える。これは通常、マルチタスクと呼ばれている。実際には、CPUはあるプログラムの命令を実行した後、短い時間の後でもう一つのプログラムに切り替えてその命令を実行している。この短い時間の区切りをタイムスライスと呼ぶ。これによって、複数のプログラムがCPU時間を共有して同時に実行されるように見える。これは動画が実は静止画のフレームの短い連続で作られているのと似ている。このタイムシェアリングは通常、オペレーティングシステムというプログラムで制御されている。
コンピュータを動作するためオペレーティングシステムは、ユーザー、もしくは他のプログラムからの要求に応じてプログラム (この意味では、アプリケーションソフトウェアもしくは単にアプリケーションという用語も使用される。ソフトウェアという用語も似た意味合いだが、これはプログラム一般を指すより広い概念である。)をメモリー上にロードし、プログラムからの要求に応じていつ、どのリソース(メモリやI/O)をそのプログラムに割り当てるかを決定する。
オペレーティングシステムはハードウェアを抽象化した層を提供し、他のプログラムがハードウェアにアクセスできるようにする。例えばデバイスドライバと呼ばれるコードがその例である。これによってプログラマは、コンピュータに全ての接続された電子装置について、その奥深い詳細を知る必要なくそれらの機械を使うプログラムを書くことができる。
ハードウェアの抽象層を持つ多くのオペレーティングシステムは標準化されたユーザインターフェイスも持っている。かつてはキャラクターユーザインターフェースのみが提供されていたが、Mac OSがグラフィカルユーザインターフェースの概念を普及させた。現在、デスクトップコンピュータ用として最も良く知られているOSはマイクロソフト社のWindowsである。
コンピュータのほとんどはデスクトップコンピュータではなく、携帯電話や炊飯器などの電気製品、各種の測定機器、乗用車や工作機械などの装置に組み込まれた非常に小さく安価なコンピュータである。これを組み込みシステムと呼ぶ。一般に組み込みOS (embedded OS) と呼ばれる専用のOSを用いる。TRONプロジェクトのITRON、米WindRiver社のVxWorks、米Symbian社のSymbian OS、米LinuxWorks社のLynxOSなどが利用されている。ただし、近年は開発期間の短縮などの目的で、WindowsやLinuxといったデスクトップコンピュータで使われているOSと同系統のOSを搭載する場合もある。また、組み込みシステムのなかには、明確なOSを内蔵していないものも多い。
Rekenaar | Circolwyrde | حاسوب | Computadora | Компютър | গণকযন্ত্র (কমপিউটার) | Urzhiataer | Računar | Ordinador | Počítač | Cyfrifiadur | Computer | Computer | Computer | Komputilo | Computadora | Arvuti | رایانه | Tietokone | Telda | Ordinateur | Ordenadôr | Kompjûter | Coimpiutaireachd | Ordenador | מחשב | Számítógép | Computator | Komputer | Ordinatro | Tölva | Computer | ᖃᕋᓴᐅᔭᖅ | 컴퓨터 | Komputer | Computatrum | Computer | Computer | Esálela | ຄອມພິວເຕີ | Kompiuteris | Datori | Mpikajy | കംപ്യൂട്ടര് | Komputer | က္ဝန္ပ္ရူတာ | Reekner | Computer | Datamaskin | Datamaskin | Béésh bee ak'e'elchíhí t'áá bí nitsékeesígíí | ਕੰਪਿਊਟਰ | Komputer | Computador | Computer | Компьютер | Dator | Computer | Počítač | Računalnik | Kompjuteri | Рачунар | Dator | Tarakishi | கணினி | కంప్యూటరు | คอมพิวเตอร์ | Kompyuter | Bilgisayar | كومصيذتئر | Комп'ютер | شمارندہ | Kompyuter | Máy tính | קאמפיוטער | 電子計算機 | Tiān-náu