Loading AI tools
算術演算や論理演算を実行するための汎用デバイス ウィキペディアから
コンピュータ(英: computer)は、計算やデータ処理を自動的に行う装置全般のことであり[1]、計算機とも言う。
特に断らない限りエレクトロニクスを用いた電子コンピュータ(英: electronic computer、漢字表記では電子計算機)を指す[1]場合も多い。
「コンピュータ」とは、元は計算する人間の作業者を指したが、今では計算する装置あるいはシステムを指す。 歴史的には、機械式のアナログやデジタルの計算機、電気回路によるアナログ計算機、リレー回路によるデジタル計算機、真空管回路によるデジタル計算機、半導体回路によるデジタル計算機などがある。
1970年代や1980年代頃まではコンピュータといえばアナログコンピューターも含めた[1]が、1990年代や2000年頃には一般には、主に電子回路による、デジタル方式でかつプログラム内蔵方式のコンピュータを指す状況になっていた。(広義の)演算を高速かつ大量に行えるため多用途であり、数値計算、情報処理、データ処理、制御、シミュレーション、文書作成、動画編集、ゲーム、仮想現実(VR)、画像認識、人工知能などに用いられる。さらに近年では、大学や先端企業などで、量子回路(現在よく使われる電子回路とは異なるもの)を用いた量子コンピュータも研究・開発されている。
様々な種類があり、メインフレーム、スーパーコンピュータ、パーソナルコンピュータ(マイクロコンピュータ)などの他、さまざまな機器(コピー機、券売機、洗濯機、炊飯器、自動車など)に内蔵された組み込みシステムやそれから派生したシングルボードコンピュータもある。2010年代には板状でタッチスクリーンで操作するタブレット(- 型コンピュータ)、板状で小型で電話・カメラ・GPS機能を搭載したスマートフォンも普及した。
世界に存在するコンピュータの台数は次のようになっている。
コンピュータ同士を繋ぐネットワークは、1990年代に爆発的に普及して地球を覆うネットワークとなり、現在ではインターネットおよびそこに接続された膨大な数のコンピュータがITインフラとして様々なサービスを支えている。
日本では「コンピュータ」や「コンピューター」という表記が多く使われている[注釈 1]。
日本の法律用語、たとえば刑法や著作権法等では「
英語の「computer」は算術演算を行う主体であるが、元々は計算する人を指した。この用法は今でも有効である。オックスフォード英語辞典第2版では、この語が計算する機械をも指すようになった最初の年を1286年と記している。同辞典では、1946年までに、「computer」の前に修飾語を付けることで異なる方式の計算機を区別するようになったとする。たとえば「analogue computer」「digital computer」「electronic computer」といった表現である。
コンピュータは、ハードウェアおよびソフトウェアという2つの要素から構成される。
現在のコンピューターの基本はノイマン型で、そのハードウェアはコンピュータの5大装置とも呼ばれる装置(または機能)、すなわち制御装置、演算装置、記憶装置、入力装置、出力装置に分類できる[7][8][9][10][8]。このうち制御装置と演算装置の2つは通常は中央処理装置(CPU) に含まれる[7][8]。またメモリマップドI/Oでは記憶装置・入力装置・出力装置、タッチパネルでは入力装置・出力装置は一体化されている。これは大型コンピュータから小さなコンピュータまで共通で[8]、スマートフォンなども同様である[7]。
制御装置は実行に必要な情報を記憶装置から読み出し、実行結果を記憶装置の中の正しい場所に収める。
演算装置は、加算・減算などの算術演算、AND・OR・NOTなどの論理演算、比較(2つの値が等しいかどうかなど)、ビットシフト等を行う装置である。
記憶装置(メモリ)はアドレスを附与された領域の列であり、各領域には命令又はデータが格納される。領域に格納された情報は書換可能か否か、揮発性(動力の供給を止めることで情報が失くなるという性質)を有つか否かは、記憶装置の実装方法に依存するため、通常はCPUが直接操作(アドレッシング)できて高速なDRAMなどの主記憶装置と、大量データを保存できるが低速な磁気ディスク装置やディスクドライブなどの補助記憶装置に分類できる。
入力装置と出力装置は、合わせて入出力装置とも呼ばれ、コンピュータが外部であるユーザーや他の機器との間の情報のやりとりを行う。現代のコンピュータで代表的な入力装置にはキーボード、マウス、マイクロフォン、スキャナなどがあり、出力装置にはディスプレイ、スピーカー、プリンターなどがある。また入力装置と出力装置を兼ね備えたものには上述のタッチスクリーンの他にネットワークカードなどがある。
コンピュータのソフトウェアは多種類あり、大別する方法もいくつかあり、まずシステムソフトウェアとアプリケーションソフト(応用ソフトウェア)の2つに分類しておいて前者のシステムソフトウェアを更に基本ソフトウェアとミドルウェアに分類する方法[11]と、最初から基本ソフトウェア・ミドルウェア・応用ソフトの3つに分類する方法[12]がある。基本ソフトウェアは「広義のOS」とも呼ばれ、更に「狭義のOS」とも呼ばれる制御プログラムと、サービスプログラム、言語処理プログラムに分類できる[11]。
コンピュータの中枢部であるCPUが理解し実行することができる形式は機械語だけだが、ソフトウェア開発をする場合は、通常プログラミング言語でソフトウェアを記述しそれをコンパイラを使って機械語に翻訳し、その機械語を実行させる。プログラミング言語は、機械語に近い形式で記述する低水準言語と、人間が理解しやすい自然言語に近い形式で記述する高水準言語[13]に大別できる。
機械語は「0」か「1」を並べたビット列命令(二進コード、バイナリコード)で表現される。
アセンブリ言語はCPUの命令セットにほぼ対応した記述ができるプログラミング言語で、開発難易度は高くCPUの種類(命令セット)に依存するが、コンピューターを細かく制御でき、高速性が必要な制御系などで使用されている。
高水準言語は時代・用途・特性などにより多種類あり、特に有名な言語を挙げるだけでも、1957年に誕生し「最初の高水準言語」とされる科学技術計算用のFORTRAN、1959年に誕生し金融系の事務計算を得意とし2020年代の現在でも大企業のメインフレームで使われ続けているCOBOL、1964年に大学の教育用に誕生し1970年代後半から1980年代のマイクロコンピュータやパーソナルコンピュータで普及したBASIC、1958年に登場しリスト処理に優れ1950年代や60年代の方式の人工知能[注釈 2]用に発展したLISPなどが使われたが、最初に挙げた3言語は行番号(文番号)やgoto文を多用する言語であったので記述に混乱が生じがちで開発時のデバッグや運用開始後の改良作業も困難になりがちだったので[注釈 3]、1972年にはその欠点を克服する構造化プログラミングが可能なC言語が登場し現在に至るまで広く使われるようになり、1983年にはそのC言語をオブジェクト指向に対応させたC++が登場し 組み込みシステムのソフト開発や 動作の高速性を求められるコンピューターゲームの開発 等々で現在も重要な役割を果たしており[14]、更に1995年にはCとC++の系統に属し「Write once, run anywhere」というスローガンを掲げコードを1回書けばどのプラットフォームでも走り ネットの分散コンピューティングにも向いており おまけに様々な要素を言語仕様自体として最初から含んでいるという長所がある[15]Javaが登場し、2020年代の現在でも常に人気最上位にランクインする状態となっている[16]。また1991年には可読性を重視したPythonが登場しこちらも人気となり、2010年代にはニューラルネットワーク方式の人工知能用のライブラリも充実させ、人工知能開発分野では主流言語となっている。1995年には、全てをオブジェクトとして扱い真のオブジェクト指向である[17]Rubyが登場した。2004年にはファンにより簡潔にWebアプリケーションを書けるRuby on Railsも開発され、イーコマース・サイトを開発する人々やオープンソースのコミュニティ(コミュニティのサイト)で好んで使われるようになった[17][注釈 4]。2012年にはRubyが「日本発」のプログラミング言語としては初めて国際電気標準会議(IEC)で国際規格に認証された。
なお言語処理系は、プログラム言語で記述したソースコードを事前に機械語コード(バイナリコード)に変換するコンパイラや、ソースコードを実行時に逐次解釈しながら実行するインタプリタや、それら2つの中間的な性質を備えた方式などに分類される。
「制御プログラム」とエンジニアに呼ばれるものは、別名では「狭義のオペレーティングシステム (OS) 」と言い[11](そしてパーソナルコンピュータの世界ではこれのみを「OS」と呼んでおり[11])、その主な役割はジョブ管理、タスク管理、記憶管理などである[11][18][13]。この制御プログラムあるいはOSを細分すると、カーネルとデバイスドライバとファイルシステムに分けることができる[11][18]。
カーネルはOSの中核であり、その主な役割は次のようなことである[11][18]。
デバイスドライバは周辺機器を直接制御する抽象的なインタフェースをアプリケーションソフトに対して提供する[11][18]。
ファイルシステムは、データやプログラムが記録される「ファイル」を管理するソフトウェアである[11][18]。
なお制御プログラムの構成法として、カーネルの機能を限定し最小限の記憶管理やタスク管理に限ったものを「マイクロカーネル」といい[11]、これは機能を絞っている代わりに、その限定的機能に関しては信頼性が増すというメリットがある。マイクロカーネル方式が採用される場合は、ファイルシステムなどはマイクロカーネルの外で作動するサーバプロセスとして提供される[11]。マイクロカーネル方式に対して、カーネル自体にファイルシステムなどさまざまな機能を担当させる方式を「モノリシックカーネル(方式)」という[11][18][注釈 5]。
世間に普及するコンピュータを台数を基準として見た場合、最も多いのは組み込みシステムであり、すなわちエアコンや炊飯器などの家電製品、乗用車、各種の測定機器、工作機械などに組み込まれた非常に小さく安価なコンピュータであり、組み込みシステムでは組み込みOSと呼ばれるOSを用いる。2019年時点でのシェアを見ると、東京大学の坂村健が開発し無料配布可能で機器開発者が改変することも許されているTRON系OSのシェアが世界第1位のおよそ60%であり、24年連続トップ[19]。TRON系のなかでもITRONが最も普及している[19]。TRON以外はPOSIX系つまりUnix系、Linux類である[19]。たとえば米リナックスワークスのLynxOS、米ウィンドリバーのVxWorks、米シンビアンのSymbian OSなど。なお小規模な組み込みシステムのなかには、明確なOSを内蔵していないものもある。
次に台数が多いのがスマートフォンであり、スマートフォンのOSおよびそのシェアは、2021年9月時点でAndroidが約72%、iOSが 約27%である[20]。なおAndroidも広い意味でのLinuxの一種であり、より具体的に言うとLinuxのカーネルを一部改編し他のオープンソース・ソフトウェアを組み合わせたものである。つまりおよそ7割の人々が実は意識せずにLinuxの一種を毎日使っているわけである。
ノートPCやデスクトップPCのOSおよびそのシェアとしては、2021年時点でWindows 75.4%、MacOS 15.93%、ChromeOS 2.59%、Linux 2.33%となっている[21]。なお、このMacOSはFreeBSDを基にしたOSでありUnix系である。
スーパーコンピュータのOSは、2021年現在、ほぼ100%、Linuxである。スーパーコンピュータ用は2000年ころはUNIXが9割ほどを占めていたが、その後の10年間つまり2010年ころまでにそのほぼ全てがLinuxに置き換わるということが起きた。
ハードウェアの抽象化層を持つ現在のオペレーティングシステムの多くは、何らかの標準化されたユーザインタフェースを兼ね備えている。かつてはキャラクタユーザインタフェース(CUI)のみが提供されていたが、1970年代にアラン・ケイらが Dynabook構想を提唱し、「暫定 Dynabook」と呼ばれる Altoと Smalltalkによるグラフィカルユーザインタフェース環境を実現した。なお、「暫定 Dynabook」は当時のゼロックスの首脳陣の判断により製品化されなかった(ゼロックスより発売されたグラフィカルユーザインタフェース搭載のシステム Xerox Starは「暫定 Dynabook」とは別系統のプロジェクトに由来する)が、この影響を受け開発されたApple Computer(現:Apple)の LISAや Macintosh、マイクロソフトの Windowsの発売、普及により、グラフィカルユーザインタフェース(GUI)が一般的にも普及することとなった。一方、Unix系OSでも1980年代からX Window Systemが開発されグラフィカルユーザインタフェースが実現した。CUIとGUIはそれぞれ長所と短所があり、GUIは初心者に優しいので初心者向けにはもっぱらGUIを使う操作法が教えられ、上級者あたりになるとGUIとCUIを併用することになり、コンピュータ技術者やシステム運用エンジニアなどはしばしば主にCUIを使いGUIは補助的に使う。現在CUIを使う人はGUIとCUIを同時並行的に使用しGUIのマルチウィンドウのいくつかをCUI状態で使うといったことも一般的である。またLinuxなどではGUIモードとCUIモードを根本的に切り替えるということも可能である[22]。
サービスプログラムとは、基本的なテキストエディタやファイル変換プログラムのことである。
1970年代や1980年代頃までは、「コンピュータ」といえばアナログコンピュータとデジタルコンピュータの両方を指した。その後は、アナログコンピュータがほとんど使われなくなり、「コンピュータ」といえば専らデジタルコンピュータを指す。
アナログコンピュータは、電気的現象・機械的現象・水圧現象を利用してある種の物理現象を表現し、問題を解くのに使われる計算機の形態[23]。アナログ計算機はある種の連続的な物理量を別の物理量で表し、それに数学的な関数を作用させる。入力の変化に対してほぼリアルタイムで出力が得られる特徴があり(これはいわゆる「高速型」の場合の話である。時間をかけてバランスが取れた状態を見つけ出すとか、移動量の合計を得るといったような「低速型のアナログ計算機」もある)、各種シミュレーションなどに利用されたが、演算内容を変更するには回路を変更する必要があり、得られる精度にも限界があるので、デジタルコンピュータの性能の向上とDA/ADコンバータの高精度化・高速化によって役目を終えた。
なお、かつて電子式アナログコンピュータの重要な要素として多用されたものと同じ機能を持つ電子回路は、IC化され「オペアンプIC」として今日でも広く使われているが、モジュール化され簡単に使えるものになっているため、一般にコンピュータとは見なされてない。
それに対して今日主流のデジタルコンピュータは 離散的な物理量( " 飛び飛び " の物理量)を利用するコンピュータである。以前は2値方式のほかに10値方式や他の方式があったが[注釈 6]、今日ではもっぱら2値方式(電圧のHigh/Low。数字で抽象化して表現すると1/0)によるものを指しており、その中枢部にあたるCPUでは二進法で数値が表現され、ブール論理の論理演算を行っている。
電気方式やエレクトロニクス方式のデジタルコンピュータは1940年代や1950年代はリレー式のものや真空管式のものが使われたが、これは素子を定期的・不定期的に交換しなければならずメンテナンスにそれなりの手間がかかるものだったので、1950年代以降は新たに発明されたトランジスタで論理回路や演算装置を構成することで低消費電力かつ高速動作で、リレー式や真空管式より小型で、素子交換も不要なコンピュータを実現し、さらに1960年代以降は集積回路も用いて一層の小型化・低消費電力化・高速化が実現することになった。
日本の行政組織内では次のような関連用語も使われている。それぞれ異なった意味で使われている。
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.