コンピューティング
コンピューティング(computing)の古来の意味は「数えること」と「計算すること」であり、算術ないしは数学の計算を指した。現在は転じてコンピュータによる数値計算や、より広くデータ処理 (data processing)や情報処理 (information processing) といったコンピュータを使う活動全般も指すことがある。
日本語ではどちらも「計算」と呼んでいるが、対応する英語には calculation と computation がある。「電卓」が pocket calculator であり、一方、「コンピュータ」という語はそれなりに複雑な処理ができるものを特に指している、というような違いがある。あるいは理論的には、数学あるいはコンピュータ科学の分野である、計算の理論でいう「計算可能」という語が指すような広い範囲が computation である。
Computing Curricula 2005 では「コンピューティング」を次のように定義している。
「コンピューティング」はもっと狭く定義されることもあり、ACMは1989年の報告書「学問分野としてのコンピューティング」(Computing as a Discipline)において、以下のように定義した。
Computing Curricula 2005 では、「コンピューティング」の意味が文脈に左右されることも認識している。
「計算理論」には、計算可能性理論による「計算可能」という概念がある(ただし現実のコンピュータが行っている処理はそれよりも広い)。
computational science
computer science
コンピュータ科学は、コンピュータおよびコンピューティングにおける科学的かつ数学的なアプローチである。技術や工学の側面もある。
コンピュータの実装と応用についての実践的技術を扱う分野と純粋に理論的な分野とに分けられる。後者を理論計算機科学と細分類することもある。たとえば、コンピュータグラフィックスなどは実世界での応用的側面が強い前者であり、情報理論や計算理論といった分野は(実践にも広く応用されるが)基本的な所としては後者の側に入れられよう。他にコンピューティングの実施・実装に注力する分野もある。コンピュータプログラミングそのものの研究ではプログラミング言語などの様々な側面を研究し、ヒューマンマシンインタフェースでは人間にとってコンピュータを使いやすくする方法の探究などといったことがテーマとなる。
コンピューティングの歴史は計算機の歴史より長く、現代的なコンピュータが登場する以前は紙とペンや、チョークと石版などを使っていた。
コンピューティングは数の表現方法と密接に関連している。しかし「数」の抽象概念が生じるずっと以前から、文明の目的にかなう数学的概念が存在していた。例えば、数を数える際の基本である全単射、測定で使用する基準との比較、直角を作るための辺の長さが3-4-5の直角三角形などである。
数の概念は結局、物を数えることを他人に教えていくうちに具体的で馴染み深いものになっていった。どんな言語にも少なくとも「1」と「2」に対応する単語が存在し、クロウタドリなどの動物にも物の数を区別できるものがいる。
歴史上最も古くからある既知の計算道具はアバカスであり、紀元前24世紀ごろにバビロンで発明されたとみられている。砂の上に線をひき、そこに石を置いて計算していた。そろばんはその後改良されていき、今も計算道具として使われている。これが既知の最古の計算器で、ギリシアで新たな計算手法が生まれる2000年以上前から存在していた。
コンピュータのハードウェアは、コンピュータプログラムと呼ばれる一連の記述に従ってデータを操作する機械である。自動的に計算する機能の無い計算機も含む「計算機械」という言葉もある。プログラムにはコンピュータがそのまま実行できる形式(機械語・バイナリ)がある。人間がそれを直接記述することもあるが、現在ではもっぱら、より人間が読んで理解し易く記述し易い、プログラミング言語によるソースコードがもっぱら使われる。ある問題を解決するアルゴリズムをプログラムとして記述することで、コンピュータでその問題を解決することができる。バイナリは一般にプロセッサやオペレーティングシステム(OS)の種類に対応して異なるが、プログラミング言語は一般にそういった差異に影響されないよう設計されている。プログラミング言語で書かれたプログラムは、プログラミング言語処理系と呼ばれるコンパイラやインタプリタというプログラムにより、解釈実行されたり変換されたりする。
プログラムを複数動作させるような場合の、個々の動作実体(インスタンス)をプロセスと呼ぶ。
コンピュータプログラムは、コンピュータに何をどうすればよいか指示を出す。現在のパーソナルコンピュータ等の一般的な構成では、その記憶装置のうちの補助記憶装置に未使用時は格納されており、主記憶装置にロードされて実行される(主記憶装置に実行対象のプログラムを置く方式をプログラム内蔵方式と言う)。
「ソフトウェア」は、もともと、コンピュータプログラムという概念が出来た後、ハードウェアの対義語として便利なため多用されるようになった曖昧な語である。だいたい、コンピュータプログラム群と関連するデータの集まりである、何らかの目的のためにコンピュータのストレージ内に格納されている1つ以上のコンピュータプログラムとデータを指す、データ処理システムの操作に関する一連の「プログラム、手続き、アルゴリズム」とその「ドキュメンテーション」である、ハードウェアに直接命令を提供することで、あるいは別のソフトウェアの入力として作用することで機能を実行する、などといったように、あいまいに言われている。ソフトウェアは実際に触れることはできないもののことなどといった定義もある。さらには派生して様々な形態のデータ、すなわちフイルム、テープ、レコードなどといったメディアの中身の著作物のことも(たとえば「ビデオデッキ」をハードウェアとするのに対して)ソフトウェアと言うようになったこともあったが、近年ではそれらには「コンテンツ」という、より適切な表現が使われることが多い。
アプリケーションソフトウェアはユーザーの特定の仕事を支援するよう設計されたソフトウェアである。例えば、企業アプリケーション、会計ソフトウェア、オフィススイート、グラフィックソフトウェア、メディアプレーヤーなどがある。多くのアプリケーションは主に文書を扱う。近年ではコンピュータにシステムソフトウェアだけでなく、アプリケーションソフトウェアもプレイントールされていることも多い。単独でも販売される。
アプリケーションソフトウェアに対して、コンピュータ自身の資源管理などといった、特定の応用目的以外の仕事を行うソフトウェアをシステムソフトウェアと言う。他の分野にたとえるとわかりやすい。例えば、ショッピングモールは買い物客が探している商品を直接提供することはないが、小売店にスペースとサービスを提供し、小売店が買い物客に商品を提供する。鉄橋は鉄道の線路を支持し、川の上を列車が通行できるようにする。それによって旅客を輸送できる。
アプリケーションソフトウェアは、特定のコンピューティングプラットフォームやシステムソフトウェアで特定の目的を果たすのに使われる。Microsoft Office などのアプリケーションは、いくつかの異なるプラットフォームで動作するバージョンがある。特定のプラットフォームでのみ動作するアプリケーションは、Windows用地理情報アプリケーション、Android用教育アプリケーション、Linux用ゲームなどと呼ばれる。
アプリケーションソフトウェアをアプリケーションと略すこともあるが、正しくは「アプリケーションソフトウェアで出来ること」が「アプリケーション」である(たとえば「ワープロソフト」と「ワードプロセッシング」の関係を考えればよい)。特定のプラットフォームでしか使えない人気アプリケーションが登場すると、そのプラットフォーム自体の人気が高まる。そのようなアプリケーションをキラーアプリと呼ぶ。
日本語では「アプリケーションソフトウェア」を「応用ソフト」と訳した成り行きからシステムソフトウェアにあたるものが「基本ソフト」などともされるが、一部マスメディアはオペレーティングシステムの言い換え語として「オペレーティングシステム (基本ソフト)」などとしている。オペレーティングシステムとアプリケーションソフトウェアの間に「ミドルウェア」が入る場合もある。