計算機科学 (けいさんきかがく、英 : computer science 、コンピューター・サイエンス)またはコンピュータ科学 [ 1] 、CS とは[ 2] [ 3] 、情報 と計算 の理論的基礎、およびそのコンピュータ 上への実装と応用に関する研究分野である[ 4] [ 5] [ 6] 。コンピュータサイエンス(computer science )は「情報科学 」や「情報工学 」とも和訳される[ 注釈 1] 。コンピュータ科学には様々な分野がある。コンピュータグラフィックス のように応用に力点がある領域もあれば、理論計算機科学 と呼ばれる分野のように数学的な性格が強い分野もある。計算科学 は科学技術計算という「計算需要」に応えるための分野であり、それを実現する手段の研究は高性能計算 である。また、一見わかりやすい分類として、計算機工学 など「ハードウェア」と、プログラミング など「ソフトウェア」という分類があるが、再構成可能コンピューティング のようにその両方といえる分野があるなど、単純に分類ができるようなものではない。
歴史
アンティキティラ島の機械 (紀元前150-100年ごろ)
アストロラーベ (1208年、ペルシア)
そろばん (アバカス )や、一種のアナログ計算機 といえるような機械といった、計算を手助けするものは古代から存在していた。「計算機械」と今日言われるような機械としては、最初の機械式計算機 がヴィルヘルム・シッカート によって1623年に作られた[ 8] 。チャールズ・バベッジ はヴィクトリア朝 時代にプログラム可能な解析機関 を設計した[ 9] 。1890年にはハーマン・ホレリス の発明したパンチカードシステム が米国勢調査に初めて使用されている[ 10] 。
1920年代以前、「computer 」という言葉は仕事として計算を行う人(計算手 )を指していた。しかしこの時代に、現代に通じる計算理論 と計算模型 が考案されている。クルト・ゲーデル 、アロンゾ・チャーチ 、アラン・チューリング など、後に計算機科学と呼ばれるようになる分野の先駆者は、計算可能性 、すなわち(特別な前提知識や技能なしに)紙と鉛筆と命令書だけでどのようなものが計算できるか、に興味を抱いた。この研究は、一部には人間に付き物の間違いをすることなく自動的に計算を行う「計算する機械」を開発したいという欲求に基づくものであった。この重要な洞察は、あらゆる計算作業を(理論上)全て実行可能な汎用の計算システムを構築することを意味し、それまでの専用機械を汎用計算機の概念に一般化した。汎用計算機という概念の創造が現代の計算機科学を生み出したのである。
1940年代に入り、より新しくかつ強力な計算機が開発されるにつれて、「computer 」という言葉は人間ではなくそういった機械を指す言葉となった。1940年代から1950年代にかけて、次々と電子式コンピュータが建造され、1950年代末には基本的な考え方としては現代にまで引き継がれている仕組みが(いわゆるプログラム内蔵方式 など)完成した。前述の、米国の国勢調査においてパンチカードシステムが有用であった事例などもあるように、科学技術などにおける数の計算(いわゆる数値解析 的な計算)だけではなく、もっと一般の事務処理などといったデータ処理 にもこういった機械は有用だということは以前から明らかになっていたわけだが、そういった、「狭義の計算」より広い意味を指す語として1960年ごろには[ 注釈 2] 、主に学術方面ではInformation Processing(情報処理 )という熟語が使われるようになり、機械翻訳 やパターン認識 のような、数値計算ではない応用の研究が始まった。また、主に産業方面ではData Processing(データ処理 )という熟語もあり、EDPという3文字語などもあった。コンピューティング という語の意味はそれらを含む広い意味とされるようになり、計算機科学はそれらを扱う科学ということになった。1960年代には計算機科学は独立した学問分野として確立され、大学などで計算機科学科の設立と学位認定が行われるようになった[ 11] 。実用的なコンピュータが利用可能になると、その様々な応用が下位領域を形成していった。2000年前後には「IT」という語が流行した。
教育
一部の大学にはコンピュータ科学を専攻とする部門がある。まず近年、コンピュータ科学と計算装置(コンピュータ)が普及させているものとして、すべての人にとって基本的な技術としての「計算論的思考」(Computational Thinking)というものが考えられており(詳細は文献[ 12] を参照)、後述する国際学会が取りまとめているカリキュラムでも重視されている。各論的カリキュラムとしては、離散構造 、プログラミング 、計算理論 、アルゴリズム解析 、形式手法 、並行性理論 、データベース 、コンピュータグラフィックス 、システム解析などがある。
またスタンフォードではComputer Science Department(CS)だが、バークレイやMITなどではElectrical Engineering and Computer Science(EECS)というように、一般にこの分野のトップクラスと目されている大学のいくつかでは電気電子工学(日本語では使い分けられるが、英語ではElectrical Engineeringにまとめられていることも多い)を名前に付けている。
コンピュータ科学専攻のためのカリキュラム案としては、国際学会ACM がとりまとめているものがあり、1968年の Curriculum 68 以来定期的に情勢に合わせ見直されている。2015年現在の最新版は CS 2013 (Computer Science 2013: Curriculum Guidelines for Undergraduate Programs in Computer Science )である。日本の情報処理学会 もこれに合わせ「カリキュラム標準」を発表しており、2015年現在の最新版はJ07[ 13] である。
他のコンピュータ科学以外の専攻においても、プログラミングが教えられているが、それらはもっぱら、コンピュータ科学の一部としてよりも、物理や化学、あるいは計算言語学 といった分野において、コンピュータを道具として使うためのものとして教えられている。
Peter J. Denning, Great principles in computing curricula , Technical Symposium on Computer Science Education, 2004年 も参照されたい(英語)。
なお、「コンピュータ科学」という用語について、情報処理学会のカリキュラムJ97(『大学の理工系学部情報系学科のためのコンピュータサイエンス教育カリキュラム J97[ 14] 』)では、「コンピュータサイエンス」を「情報工学 、情報科学 、計算機科学、計算機工学 などの総称」としているが、それぞれの語に特に定義を与えているわけでもないため、語がてんでに使われている実態を反映したものと思われる。
当然ながら、メタ分析によれば、コンピュータサイエンスの一部は、他の分野と同様、研究者のバイアスによってある程度歪められており、研究を行う際には、学界に存在するバイアスを意識することが望ましい[ 15] 。
主な成果
学問としての歴史は浅いが、計算機科学は科学と社会への数々の根源的貢献をしてきた。
他の分野との関係
この節には独自研究 が含まれているおそれがあります。 問題箇所を検証 し出典を追加 して、記事の改善にご協力ください。議論はノート を参照してください。(2017年12月 )
計算機科学と関係の深い学問分野として、経済学 、数学 、物理学 、言語学 などを挙げることができる。一部の人々[誰? ] は計算機科学は数学 と関連が深いとみなしているという[ 11] 。初期の計算機科学はクルト・ゲーデル やアラン・チューリング などの数学での業績に強い影響を受けていたし、数理論理学 、圏論 、領域理論 、代数学 といった領域は計算機科学と数学の間でアイデアをやり取りする領域となっている。
計算機科学とソフトウェア工学 の関係は論争の的である。「ソフトウェア工学」という言葉が表すものが何か、計算機科学の範囲をどう定めるかは長年の議論の対象となっている。一部の人々[誰? ] はソフトウェア工学が計算機科学の一部であると信じている。他の人々は、計算機科学が計算全般を扱う学問であるのに対して、ソフトウェア工学は実用的な目的でコンピュータ処理を設計するものであり、異なる学問分野であると考えている。この見方の例としてデイビッド・パーナス がいる[ 18] 。他の人々[誰? ] はソフトウェアは全く工学的に扱うことはできていないと考えている。
基礎
実装
脚注
注釈
^ 『英和コンピュータ用語大辞典』には次の通りある。
^ 1960年に情報処理国際連合 が設立されている。
出典
^ 『ブリタニカ国際大百科事典 小項目事典』「計算機科学」
^ Passey, D. (2017). Computer science (CS) in the compulsory education curriculum: Implications for future research. Education and Information Technologies , 22(2), 421.
^ Camp, T. et al. (2017). Generation CS: the growth of computer science. ACM Inroads , 8(2), 44.
^ 「計算機科学は情報に関する学問である」計算機情報科学科 、Guttenberg Information Technologies
^ 「計算機科学は計算に関する学問である。」聖ヨハネ大学 聖ベネディクト校 計算機科学科
^ 「計算機科学はコンピュータシステムのあらゆる側面に関する学問である。理論的基礎から極めて実用的な巨大ソフトウェアプロジェクト管理までも含む。」マッセイ大学
^ Nigel Tout (2006年). “Calculator Timeline ”. Vintage Calculator Web Museum . 2006年9月18日 閲覧。
^ “Science Museum - Introduction to Babbage ”. 2006年9月24日 閲覧。
^ “IBM Punch Cards in the U.S. Army ”. 2006年9月24日 閲覧。
^ a b Denning, P.J. (2000年). “Computer science:the discipline” . Encyclopedia of Computer Science . https://web.archive.org/web/20060828130518/http://www.idi.ntnu.no/emner/dif8916/denning.pdf .
^ 『計算論的思考』(Jeannette M. Wing Computational Thinking , 中島秀之訳)
^ https://www.ipsj.or.jp/annai/committee/education/j07/ed_j07.html
^ “大学の理工系学部情報系学科のためのコンピュータサイエンス教育カリキュラム J97(第1.1版) ” (PDF). 情報処理学会 (1999年9月). 2013年3月22日 閲覧。
^ Shepperd, Martin (2015-01). “How Do I Know Whether to Trust a Research Result?” . IEEE Software 32 (1): 106–109. doi :10.1109/MS.2015.8 . ISSN 0740-7459 . https://ieeexplore.ieee.org/document/7030205/ .
^ Constable, R.L. (2000年3月). Computer Science: Achievements and Challenges circa 2000 . https://web.archive.org/web/20081002155359/http://www.cs.cornell.edu/cis-dean/bgu.pdf
^ Abelson, Hal; G.J. Sussman with J.Sussman (1996年). Structure and Interpretation of Computer Programs (2nd Ed. ed.). MIT Press. ISBN 0-262-01153-0 . "コンピュータ革命は思考方法の革命であり、思考を表現する手法の革命である。この変化の本質は「procedural epistemology; 手続き的認識論」と呼ばれるものがよく表している。それは手続き的観点からの知識構造の研究であり、古典的数学の宣言的観点の対極に位置する。"
^ Parnas, David L. (1998年). “Software Engineering Programmes are not Computer Science Programmes” . Annals of Software Engineering 6 : 19–37. https://web.archive.org/web/20060613031738/http://citeseer.ist.psu.edu/parnas98software.html . , p. 19: 「私はソフトウェア工学を計算機科学の一分野としてではなく、土木工学、機械工学、化学工学、電気工学などなどの要素を組み合わせたものとして扱う」
参考文献
関連項目
外部リンク
ウィキメディア・コモンズには、
計算機科学 に関連するカテゴリがあります。
ウィキバーシティに
計算機科学 に関する学習教材があります。