コンピュータ()は、広義には、計算やデータ処理を自動的に行う装置全般のことであるが、今日では特に断らない限り、その中でも電子技術を用いたエレクトロニックコンピュータ(electronic computer、電子計算機)を指す『日本大百科全書』コンピュータ。
表記法や同義語は、技術者が使う用語や特定分野限定で使われる用語・表記法なども含めると、かなり多数ある。#呼称の歴史、同義語・表記
概要
歴史的には、機械式のアナログやデジタルの計算機、電気回路によるアナログ計算機、リレー回路によるデジタル計算機、真空管回路によるデジタル計算機、半導体回路によるデジタル計算機などがある。
1970年代や1980年代頃まではコンピュータといえばアナログコンピュータも含めたが、1960年代や1970年代にはすでに、優勢なのは電子回路によるデジタル方式でかつプログラム内蔵方式のコンピュータとなっていて、さらに1970年代なかばにマイクロプロセッサをCPUに採用したマイクロコンピュータが登場し、大型計算機やミニコンに比べて低価格で、国家機関や大企業だけでなくスモールビジネスや家庭でも購入できるようになったおかげで1980年代に爆発的に普及し、1990年代や2000年頃にはマイクロプロセッサで動作するコンピュータが一般的、それ以外はほぼ見当たらない、という状況になった。
広義の演算(計算や文字列の処理)を高速かつ大量に行えるため多用途であり、数値計算、情報処理、データ処理、制御、シミュレーション、文書作成、動画編集、ゲーム、仮想現実(VR)、画像認識、人工知能などに用いられる。
様々な種類があり、メインフレーム、スーパーコンピュータ、パーソナルコンピュータ(マイクロコンピュータ)などの他、さまざまな機器(コピー機、券売機、洗濯機、炊飯器、自動車など)に内蔵された組み込みシステムやそれから派生したシングルボードコンピュータもある。2010年代には板状でタッチスクリーンで操作するタブレット(- 型コンピュータ)、板状で小型で電話・カメラ・GPS機能を搭載したスマートフォンも普及した。
世界に存在するコンピュータの台数は次のようになっている。 組み込みシステムは、2018年時点でおよそ100億台あると推計されているIntroduction to Embedded Systems。 スマートフォンは、2018年時点で33億6千万台が稼働状態と推計されている"So, How Many Smartphones Are There in the World?"。 サーバ・デスクトップPC・ノートPCは、2019年時点で20億台を超えると推計されているHOW MANY COMPUTERS ARE THERE IN THE WORLD?。 コンピュータ同士を繋ぐネットワークは、1990年代に爆発的に普及して地球を覆うネットワークとなり、現在ではインターネットおよびそこに接続された膨大な数のコンピュータがITインフラとして様々なサービスを支えている。
さらに近年では、大学や先端企業などで、量子回路(現在よく使われる電子回路とは異なるもの)を用いた量子コンピュータも研究・開発されている。 呼称の歴史、同義語・表記 computerなる用語の語源 英語のcomputerは、compute + erであり、つまりcompute(計算する)という意味の動詞と 接尾辞 -erを組み合わせた単語で、算術演算を行う人や装置を指しうる単語で、元々は計算する人を指した。この用法は今でも有効である。オックスフォード英語辞典第2版では、この語が計算する機械をも指すようになった最初の年を1286年と記している。同辞典では、1946年までに、「」の前に修飾語を付けることで異なる方式の計算機を区別するようになったとする。たとえば「」「」「」といった表現である。
現在では、計算する人を計算する装置とはっきり区別したい場合はレトロニムで「human computer」と呼ぶことがある。
別の呼称の登場 1950年代になると、コンピュータの用途や機能は、計算より、むしろ文字列を含めたデータの処理が多くなり、computer(計算をする装置)という呼称では、用途や機能の現在の状態と合致していない、と違和感を感じる人々がコンピュータ業界で増えてゆき、他の呼称を使おうとする動きが起きた。 たとえばIBMは、1952年にリリースしたIBM 701の正式な製品名を「IBM 701 Electronic Data Processing Machine」とした。翌1953年にリリースしたIBM 702の正式な製品名は(Machineに変えてSystemという単語を使い) 「IBM 702 Data Processing System」とした。computerではなく「Data Processing System」(データ処理システム)と呼んだ。この呼称はこの機種だけに使われたわけではなく、その後の他の機種も同様の呼び方にしたので、IBMの使用案内冊子の正式名も Introduction to IBM Data Processing Systems Student Textとされた。。特定の1機種だけをData Processing Systemと呼んだわけではなく、IBMが製造している装置はData Processing Systemと呼ぶのが妥当な装置だ、とIBMは判断したのである。ただし、その冊子で、装置全体をData Processing Systemと呼びそれの1要素である装置をcomputerと呼ぶこともしている。 IBM以外でもこの呼び方を採用する会社が現れた。NCRは1962年1月にリリースしたNCR 315(英語版)の正式製品名を「NCR 315 Data Processing System」とした。こうして業界内ではcomputerに加えてData Processing Systemなる用語の使用も定着してゆき、適宜使い分けられるようになっていった。(業界内では使い分けられているが、一般人の感覚では、いずれも「コンピュータ」と呼んでいる。) 英語では、systemという単語を使う類似表現には、data processing systemのほかに、computer systemやcomputing systemなる表現も現れた。 1994年の日本工業規格(JIS)の『情報処理用語−基本用語』 はISOの定義文を改変することなく日本語に翻訳したものであるが、データ処理システム(data processing system),計算機システム(computer system),計算システム(computing system) の(翻訳された)定義文を「データ処理を行う計算機、周辺装置及びソフトウェア」とした。一般人の感覚では、ソフトウェアがインストールされた状態のハードウェアを「コンピュータ」と呼んでいるので、一般人の感覚では "ほぼ同義語"ということになる。 information processing system(情報処理システム)なる用語も使われるようになった。Federal Information Processing Standards PublicationのInformation Systems Dictionary(米国FIPS情報処理辞典)には「A system that performs data processing integrated with processes such as office automation and data communication.」という定義が書かれ、「See also data processing system.」と書かれており、これもdata processing systemとほぼ同義語だと分かる。 アメリカの同義語を集めたSynonym.comでは、GCIDE(GNU Collaborative International Dictionary of English)に書かれているcomputerの同義語として、data processor(データプロセッサ)、electronic computer、information processing systemを挙げている。
日本国内 日本では現在、「コンピュータ」や「コンピューター」という表記が一番多く使われている長音符の扱いについて、JISのルールと国語審議会のルールが食い違っている。(長音符#語末長音符の省略参照) JIS Z 8301では長音符を付けない、というルールが提示されており、それに沿う形で工学専門書では長音符をつけない。工学分野の論文でも長音符をつけないのが一般的である。それに対して国語審議会の報告に沿った基準では長音符をつけるとしており、新聞社、放送局、小中学校教科書などでは長音符付きで表記している。コンピュータ関連のメーカーに関しては、会社ごとに対応が別れている。マイクロソフトの日本法人は(もともとはJISの規定のほうを尊重し「2音の用語は長音符号を付け、3音以上の用語の場合は省くことを原則とする」という規定(JIS Z 8301:規格票の様式及び作成方法)に即した表記ルールを採用していたが)、2008年11月に、あくまで自社製品に関してのみの話として、国語審議会の報告のほうの影響を受けた内閣告示をもとにした「言語の末尾が-er、-or、-arなどで終わる場合に長音表記をつける」というルールに変更するとした。同社の担当者は、一般消費者は工業系・自然科学系の末尾の長音を省略する傾向の表記に対して違和感を感じていて、コンピュータが一般消費者の必需品になるにつれて違和感を感じる人の割合が増加してきたからだ、といった主旨の説明を述べた。ただしメーカーにより主なユーザの範囲が異なり、表記方法も異なる。。
日本の法律用語、たとえば刑法や著作権法等では「電子計算機」と表記される(英語のelectronic computerに相当)。
「電子計算機」は法律用語として現在も有効であり、裁判所の文書などには頻出するが、日常語としてはやや死語に近くなってきている。
電子計算機を漢字で略記したい場合は「電算機」とされる。
中華人民共和国や台湾などでは「电子计算机」・「電脳」が使われ、日本でも趣味的な分野では「電脳(でんのう)」が使われることがある。
1950年代では「人工頭脳(じんこうずのう)」 や「電子頭脳(でんしずのう)」とも表現した。
コンピュータの構成要素 コンピュータは、ハードウェアおよびソフトウェアという2つの要素から構成される。
ハードウェア
現在のほとんどのコンピュータはプログラム内蔵方式・ノイマン型である。
コンピュータのハードウェアは、コンピュータの5大装置、すなわち制御装置、演算装置、記憶装置、入力装置、出力装置に分類されることがある栢木厚『令和04年 栢木先生の基本情報技術者教室』技術評論社、2021年、pp.24-25, 「コンピュータの構成」安井浩之・木村誠聡・辻裕之『基本を学ぶ コンピュータ概論』オーム社、2011年, pp.4-5、「5大装置」大滝みや子『2020年版 基本情報技術者 標準教科書』オーム社、2019年, pp.106-107,「コンピュータの構成」大滝みや子『基本情報技術者教科書 令和2年度』インプレス、p.154「コンピュータの基本構成」。このうち制御装置と演算装置の2つは中央処理装置(CPU)に含まれる。また例えば、メモリマップドI/Oでは記憶装置・入力装置・出力装置は同一視され、タッチパネルでは入力装置・出力装置は一体化されている。これは大型コンピュータから小さなコンピュータまで共通で、スマートフォンなども同様である。
制御装置は実行に必要な情報を記憶装置から読み出し、実行結果を記憶装置の中の正しい場所に収める。
演算装置は、加算・減算などの算術演算、AND・OR・NOTなどの論理演算、比較(2つの値が等しいかどうかなど)、ビットシフト等を行う装置である。
記憶装置(メモリ)はアドレスを附与された領域の列であり、各領域には命令又はデータが格納される。領域に格納された情報は書換可能か否か、揮発性(動力の供給を止めることで情報が失くなるという性質)を有つか否かは、記憶装置の実装方法に依存するため、通常はCPUが直接操作(アドレッシング)できて高速なDRAMなどの主記憶装置と、大量データを保存できるが低速な磁気ディスク装置やディスクドライブなどの補助記憶装置に分類できる。
入力装置と出力装置は、合わせて入出力装置とも呼ばれ、コンピュータが外部であるユーザーや他の機器との間の情報のやりとりを行う。現代のコンピュータで代表的な入力装置にはキーボード、マウス、マイクロフォン、スキャナなどがあり、出力装置にはディスプレイ、スピーカー、プリンターなどがある。また入力装置と出力装置を兼ね備えたものには上述のタッチスクリーンの他にネットワークカードなどがある。
ソフトウェア
コンピュータのソフトウェアは多種類あり、大別する方法もいくつかあり、まずシステムソフトウェアとアプリケーションソフト(応用ソフトウェア)の2つに分類しておいて前者のシステムソフトウェアを更に基本ソフトウェアとミドルウェアに分類する方法『2020年版 基本情報技術者 標準教科書』オーム社, pp.154-158 「ソフトウェアの体系」「基本ソフトウェアの構成」と、最初から基本ソフトウェア・ミドルウェア・応用ソフトの3つに分類する方法五十嵐順子 『かんたん合格 基本情報技術者 教科書 令和2年度』インプレス、2019年、p.70「ソフトウェアの分類」、等がある。基本ソフトウェアは「広義のOS」とも呼ばれ、更に「狭義のOS」とも呼ばれる制御プログラムと、サービスプログラム、言語処理プログラムに分類できる。
ソフトウェアと機械語・アセンブラ・高級言語 コンピュータの中枢部であるCPUが理解し実行することができる形式は機械語だけだが、ソフトウェア開発をする場合は、通常プログラミング言語でソフトウェアを記述しそれをコンパイラを使って機械語に翻訳し、その機械語を実行させる。プログラミング言語は、機械語に近い形式で記述する低水準言語と、人間が理解しやすい自然言語に近い形式で記述する高水準言語栢木厚 著『令和04年 栢木先生の基本情報技術者教室』技術評論社、2021年、, pp.62-65「ソフトウェア」に大別できる。
機械語は「0」か「1」を並べたビット列命令(二進コード、バイナリコード)で表現される。
アセンブリ言語はCPUの命令セットにほぼ対応した記述ができるプログラミング言語で、開発難易度は高くCPUの種類(命令セット)に依存するが、コンピュータを細かく制御でき、高速性が必要な制御系などで使用されている。
高水準言語は時代・用途・特性などにより多種類あり、特に有名な言語を挙げるだけでも、1957年に誕生し「最初の高水準言語」とされる科学技術計算用のFORTRAN、1959年に誕生し金融系の事務計算を得意とし2020年代の現在でも大企業のメインフレームで使われ続けているCOBOL、1964年に大学の教育用に誕生し1970年代後半から1980年代のマイクロコンピュータやパーソナルコンピュータで普及したBASIC、1958年に登場しリスト処理に優れ1950年代や60年代の方式の人工知能用に発展したLISPなどが使われたが、最初に挙げた3言語は行番号(文番号)やgoto文を多用する言語であったので記述に混乱が生じがちで開発時のデバッグや運用開始後の改良作業も困難になりがちだったので、1972年にはその欠点を克服する構造化プログラミングが可能なC言語が登場し現在に至るまで広く使われるようになり、1983年にはそのC言語をオブジェクト指向に対応させたC++が登場し 組み込みシステムのソフト開発や 動作の高速性を求められるコンピュータゲームの開発 等々で現在も重要な役割を果たしており増井敏克『プログラミング言語図鑑』ソシム、2017、p.54、「C++」、更に1995年にはCとC++の系統に属し「Write once, run anywhere」というスローガンを掲げコードを1回書けばどのプラットフォームでも走り ネットの分散コンピューティングにも向いており おまけに様々な要素を言語仕様自体として最初から含んでいるという長所があるJavaが登場し、2020年代の現在でも常に人気最上位にランクインする状態となっている増井敏克『プログラミング言語図鑑』p.94「Java」。また1991年には可読性を重視したPythonが登場しこちらも人気となり、2010年代にはニューラルネットワーク方式の人工知能用のライブラリも充実させ、人工知能開発分野では主流言語となっている。1995年には、全てをオブジェクトとして扱い真のオブジェクト指向であるWhat is the popularity of the Ruby programming language?Rubyが登場した。2004年にはファンにより簡潔にWebアプリケーションを書けるRuby on Railsも開発され、イーコマース・サイトを開発する人々やオープンソースのコミュニティ(コミュニティのサイト)で好んで使われるようになった。2012年にはRubyが「日本発」のプログラミング言語としては初めて国際電気標準会議(IEC)で国際規格に認証された。
なお言語処理系は、プログラム言語で記述したソースコードを事前に機械語コード(バイナリコード)に変換するコンパイラや、ソースコードを実行時に逐次解釈しながら実行するインタプリタや、それら2つの中間的な性質を備えた方式などに分類される。
制御プログラム(OS)
「制御プログラム」とエンジニアに呼ばれるものは、別名では「狭義のオペレーティングシステム(OS) 」と言い(そしてパーソナルコンピュータの世界ではこれのみを「OS」と呼んでおり)、その主な役割はジョブ管理、タスク管理、記憶管理などである日高哲郎『情報処理教科書 基本情報技術者 テキスト&問題集 2015年版』翔泳社, pp.128-138「オペレーティングシステム」。この制御プログラムあるいはOSを細分すると、カーネルとデバイスドライバとファイルシステムに分けることができる。
カーネル カーネルはOSの中核であり、その主な役割は次のようなことである。 ジョブ管理 タスク管理 記憶管理 システムコールサービス - システムコールサービスのAPI(Application Programming Interface、アプリケーションプログラミングインタフェース)はアプリケーションソフトから、OSが用意しているさまざまな機能を利用するための仕組みであり、アプリケーション開発の手間が減り、統一的な操作性も実現できる。
デバイスドライバ デバイスドライバは周辺機器を直接制御する抽象的なインタフェースをアプリケーションソフトに対して提供する。
ファイルシステム ファイルシステムは、データやプログラムが記録される「ファイル」を管理するソフトウェアである。
なお制御プログラムの構成法として、カーネルの機能を限定し最小限の記憶管理やタスク管理に限ったものを「マイクロカーネル」といい、これは機能を絞っている代わりに、その限定的機能に関しては信頼性が増すというメリットがある。マイクロカーネル方式が採用される場合は、ファイルシステムなどはマイクロカーネルの外で作動するサーバプロセスとして提供される。マイクロカーネル方式に対して、カーネル自体にファイルシステムなどさまざまな機能を担当させる方式を「モノリシックカーネル(方式)」という。
コンピュータのタイプごとのOS 世間に普及するコンピュータを台数を基準として見た場合、最も多いのは組み込みシステムであり、すなわちエアコンや炊飯器などの家電製品、乗用車、各種の測定機器、工作機械などに組み込まれた非常に小さく安価なコンピュータである。組み込みシステムでは組み込みOSと呼ばれるOSを用いる。たとえばFreeRTOS、米リナックスワークスのLynxOS、米ウィンドリバーのVxWorks、米シンビアンのSymbian OSなど。組み込みOSには独自OSや組み込みLinuxが多く、小規模な組み込みシステムのなかにはOSを使用していないものもある。
次に台数が多いのがスマートフォンであり、スマートフォンのOSおよびそのシェアは、2021年9月時点でAndroidが約72%、iOSが 約27%である。なおAndroidも広い意味でのLinuxの一種であり、より具体的に言うとLinuxのカーネルを一部改編し他のオープンソース・ソフトウェアを組み合わせたものである。つまりおよそ7割の人々が実は意識せずにLinuxの一種を毎日使っているわけである。
ノートPCやデスクトップPCのOSおよびそのシェアとしては、2021年時点でWindows 75.4%、MacOS 15.93%、ChromeOS 2.59%、Linux 2.33%となっている。なお、このMacOSはFreeBSDを基にしたOSでありUnix系である。
thumb|400px|スーパーコンピュータにおけるOSの使用比率 スーパーコンピュータのOSは、2021年現在、ほぼ100%、Linuxである。スーパーコンピュータ用は2000年ころはUNIXが9割ほどを占めていたが、その後の10年間つまり2010年ころまでにそのほぼ全てがLinuxに置き換わるということが起きた。
CUIとGUI ハードウェアの抽象化層を持つ現在のオペレーティングシステムの多くは、何らかの標準化されたユーザインタフェースを兼ね備えている。かつてはキャラクタユーザインタフェース(CUI)のみが提供されていたが、1970年代にアラン・ケイらが Dynabook構想を提唱し、「暫定 」と呼ばれる Altoと Smalltalkによるグラフィカルユーザインタフェース環境を実現した。なお、「暫定 」は当時のゼロックスの首脳陣の判断により製品化されなかった(ゼロックスより発売されたグラフィカルユーザインタフェース搭載のシステム Xerox Starは「暫定 」とは別系統のプロジェクトに由来する)が、この影響を受け開発された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モードを根本的に切り替えるということも可能である。
サービスプログラム サービスプログラムとは、基本的なテキストエディタやファイル変換プログラム等である。
言語処理プログラム 言語処理プログラムとは、アセンブラ、コンパイラ、インタプリタ等である。
アナログとデジタル
1970年代や1980年代頃までは、「コンピュータ」といえばアナログコンピュータとデジタルコンピュータの両方を指した。その後は、アナログコンピュータがほとんど使われなくなり、「コンピュータ」といえば専らデジタルコンピュータを指す。
アナログコンピュータは、電気的現象・機械的現象・水圧現象を利用してある種の物理現象を表現し、問題を解くのに使われる計算機の形態。アナログ計算機はある種の連続的な物理量を別の物理量で表し、それに数学的な関数を作用させる。入力の変化に対してほぼリアルタイムで出力が得られる特徴があり(これはいわゆる「高速型」の場合の話である。時間をかけてバランスが取れた状態を見つけ出すとか、移動量の合計を得るといったような「低速型のアナログ計算機」もある)、各種シミュレーションなどに利用されたが、演算内容を変更するには回路を変更する必要があり、得られる精度にも限界があるので、デジタルコンピュータの性能の向上とDA/ADコンバータの高精度化・高速化によって役目を終えた。
なお、かつて電子式アナログコンピュータの重要な要素として多用されたものと同じ機能を持つ電子回路は、IC化され「オペアンプIC」として今日でも広く使われているが、モジュール化され簡単に使えるものになっているため、一般にコンピュータとは見なされてない。
それに対して今日主流のデジタルコンピュータは 離散的な物理量( " 飛び飛び " の物理量)を利用するコンピュータである。以前は2値方式のほかに10値方式や他の方式があったが、今日ではもっぱら2値方式(電圧のHigh/Low。数字で抽象化して表現すると1/0)によるものを指しており、その中枢部にあたるCPUでは二進法で数値が表現され、ブール論理の論理演算を行っている。
電気方式やエレクトロニクス方式のデジタルコンピュータは1940年代や1950年代はリレー式のものや真空管式のものが使われたが、これは素子を定期的・不定期的に交換しなければならずメンテナンスにそれなりの手間がかかるものだったので、1950年代以降は新たに発明されたトランジスタで論理回路や演算装置を構成することで低消費電力かつ高速動作で、リレー式や真空管式より小型で、素子交換も不要なコンピュータを実現し、さらに1960年代以降は集積回路も用いて一層の小型化・低消費電力化・高速化が実現することになった。
歴史
古代 thumb|200px|アンティキティラ島の機械(紀元前150年 - 紀元前100年ころ)。現在確認できる最古の歯車式計算機。 紀元前2000年頃 古代バビロニアで手動式デジタル計算器であるアバカスが(そろばんは中国起源説もある)発明される(古代ギリシアでは紀元前300年頃に伝わって来たとされており、日本では西暦1400年頃の室町時代に明から伝わって来たといわれる)。 紀元前2世紀 - アンティキティラ島の機械。 紀元前150年 - 紀元前100年ころに古代ギリシア人によって作られた、現在確認できるものでは世界最古の歯車式アナログ計算機。
17・18世紀
1620年 イギリスのエドマンド・ガンターが、手動式アナログ計算器である計算尺の原型となる対数尺を発明。 1623年頃、ドイツのヴィルヘルム・シッカートが、ネイピアの骨を応用し、乗算と加減算を行なえる歯車式の計算機を作った。加減算に関しては繰り上がりができたが、乗算に関しては繰り上がりができなかった。 1642年 フランスのブレーズ・パスカルが歯車式計算機パスカリーヌを開発。約50台が作成された。(英語版記事 :en:Pascal's calculatorが参照可) 1673年 ドイツのゴットフリート・ライプニッツがを発明。その後パスカリーヌより高機能な計算機を開発し、60年間に約1500台が販売された。 1698年 ライプニッツが二進法の数理を確立。 1725年 織機の制御にパンチカードが使われ始める。
19世紀 1801年 ジョゼフ・マリー・ジャカールがジャカード織機を発明。 1822年 解析機関の設計者チャールズ・バベッジが第1階差機関の実験モデルを作成。 1823年 バベッジによる階差機関の開発開始。thumb|バベッジの階差機関は彼の没後に完成した 1833年 追加予算が打ち切られ、階差機関の開発が中止となる。 1843年 シュウツ親子により階差機関が完成。 1854年 ジョージ・ブールがブール代数を発見する。 1865年 万国電信連合(現・国際電気通信連合)設立。電気通信分野における初の標準化機関であり、国際機関。 1871年 バベッジが解析機関の実現を見ぬまま死去。解析機関のオペレータであるエイダ・ラブレスは世界最初のプログラマとされる。