コンピュータサイエンス
コンピュータサイエンスは、アルゴリズムプロセス、計算機、および計算自体の研究です。[1]分野として、コンピュータサイエンスは、アルゴリズム、計算、情報の理論的研究から、ハードウェアとソフトウェアに計算システムを実装するという実際的な問題まで、幅広いトピックにまたがっています。[2] [3]
その分野は、理論と実践の分野に分けることができます。たとえば、計算理論は、計算の抽象的なモデルと、それらを使用して解決できる問題の一般的なクラスに関係しますが、コンピュータグラフィックスまたは計算幾何学は、より具体的なアプリケーションを強調します。アルゴリズムとデータ構造は、コンピュータサイエンスの心臓部と呼ばれています。[4] プログラミング言語理論は、計算プロセスの記述へのアプローチを考慮しますが、コンピュータープログラミングは、複雑なシステムを作成するためにそれらを使用することを含みます。コンピュータアーキテクチャは、コンピュータコンポーネントとコンピュータ操作機器の構築を説明します。人工知能は、人間や動物に見られる問題解決、意思決定、環境適応、計画、学習などの目標指向のプロセスを統合することを目的としています。デジタルコンピュータは、さまざまな情報プロセスをシミュレートすることができます。[5]コンピュータサイエンスの基本的な関心事は、自動化できるものとできないものを決定することです。[6]コンピュータ科学者は通常、学術研究に焦点を合わせています。チューリング賞は、一般的に、コンピュータ科学の最高の区別として認識されています。
歴史
コンピュータサイエンスになるものの最も初期の基礎は、現代のデジタルコンピュータの発明よりも前のものです。そろばんなどの固定数値タスクを計算するための機械は古くから存在し、乗算や除算などの計算を支援します。計算を実行するためのアルゴリズムは、高度な計算装置が開発される前でさえ、古くから存在していました。
Wilhelm Schickardは、1623年に最初の実用的な機械式計算機を設計および構築しました。[9] 1673年、Gottfried Leibnizは、SteppedReckonerと呼ばれるデジタル機械式計算機のデモを行いました。[10]ライプニッツは、他の理由の中でも、2進数システムを文書化したことから、最初のコンピューター科学者および情報理論家と見なされる可能性があります。1820年、トーマス・デ・コルマーは、オフィス環境で毎日使用できるほど強力で信頼性の高い最初の計算機である簡略化されたアリスモメーターを発明したときに、機械式計算機業界を立ち上げました[注1]。チャールズ・バベッジは、1822年に最初の自動機械式計算機である階差機関の設計を開始し、最終的には最初のプログラム可能な機械式計算機である分析エンジンのアイデアを彼に与えました。[11]彼は1834年にこのマシンの開発を開始し、「2年足らずで、彼は現代のコンピューターの顕著な特徴の多くをスケッチしました」。[12]「重要なステップは、ジャカード織機から派生したパンチカードシステムの採用でした」[12]無限にプログラム可能にしました。[注2] 1843年、分析エンジンに関するフランス語の記事の翻訳中に、エイダ・ラブレスは、彼女が含めた多くのメモの1つに、ベルヌーイ数を計算するアルゴリズムを書きました。これは、これまでに公開された最初のアルゴリズムと見なされています。コンピュータへの実装用に特別に調整されています。[13] 1885年頃、ハーマン・ホレリスはパンチカードを使用して統計情報を処理するタビュレーターを発明しました。最終的に彼の会社はIBMの一部になりました。バベッジに続いて、彼の以前の仕事に気づいていなかったが、1909年にパーシー・ルドゲートは歴史上機械分析エンジンのためのたった2つの設計のうちの2番目を発表した[14]。1937年、百年バベッジの不可能な夢の後、ハワード・エイケンは、パンチカード機器のすべての種類を作っていたIBMが、確信し電卓事業でもありました[15]彼の巨大なプログラム電卓を開発するために、ASCC /ハーバードマークIは、ベースそれ自体がカードと中央計算装置を使用したバベッジの分析エンジンで。機械が完成したとき、「バベッジの夢が叶った」と称賛する人もいました。[16]
1940年代の間に、新しい、より強力な開発とコンピューティングのような機械アタナソフ&ベリー・コンピュータとENIACは、用語のコンピュータは機械ではなく、その人の前任者を参照するようになりました。[17]コンピュータは単なる数学的計算以上のものに使用できることが明らかになるにつれて、コンピュータサイエンスの分野は一般的な計算を研究するように広がりました。1945年、IBMはニューヨーク市のコロンビア大学にワトソンサイエンティフィックコンピューティングラボラトリーを設立しました。マンハッタンのウェストサイドにある改装された友愛会館は、純粋な科学を専門とするIBMの最初の研究所でした。このラボは、現在世界中で研究施設を運営しているIBMの研究部門の前身です。[18]最終的に、IBMと大学の緊密な関係は、新しい科学分野の出現に貢献し、コロンビアは1946年にコンピューターサイエンスの最初の学術単位コースの1つを提供しました。[19]コンピューターサイエンスが確立され始めました。 1950年代と1960年代初頭の明確な学問分野として。[20] [21]世界初のコンピュータサイエンス学位プログラムであるコンピュータサイエンスのケンブリッジディプロマは、1953年にケンブリッジ大学コンピュータラボラトリーで始まりました。米国で最初のコンピュータサイエンス学部は、1962年にパーデュー大学に設立されました。[ 22]実用的なコンピュータが利用可能になったので、コンピューティングの多くのアプリケーションは、それ自体の権利で別個の研究分野になりました。
語源
最初の1956年に提案されているが、[23]用語「コンピュータサイエンス」における1959年の記事に表示されてACMのコミュニケーション、[24]ルイ・フェインは、の作成に主張したコンピュータ科学の大学院の創設と類似し、ハーバード1921年のビジネススクール[25]は、経営科学のように、学問分野に特有の特徴を持ちながら、主題は本質的に応用され、学際的であると主張することによって名前を正当化しました。[24]彼の努力、および数値解析者の ジョージ・フォーサイスなどの他の努力は報われた。大学は1962年のパデュー大学からそのような学部を創設し続けた。[26]その名前にもかかわらず、かなりの量のコンピュータサイエンスは関与していない。コンピュータ自体の研究。このため、いくつかの代替名が提案されています。[27]主要大学の特定の学部は、その違いを正確に強調するために、コンピューティングサイエンスという用語を好みます。デンマークの科学者ピーター・ナウアは、用語の提案datalogyを、[28] 、必ずしもコンピュータが関与しない一方で、データとデータ処理の周りに科学的な規律の公転という事実を反映します。この用語を使用した最初の科学機関は、1969年に設立されたコペンハーゲン大学のデータ学科であり、ピーターナウアがデータ学の最初の教授でした。この用語は主にスカンジナビア諸国で使用されています。Naurによって提案された代替用語は、データサイエンスです。これは現在、統計やデータベースなど、データ分析の学際的な分野で使用されています。
コンピューティングの黎明期には、コンピューティングの分野の実務家のために、多くの用語で提案されたACMのコミュニケーション- turingineer、turologist、流れ-チャート-男、適用されたメタ数学者、および適用されるepistemologist。[29]三ヶ月後に同じ雑誌で、comptologistが示唆された、来年続いhypologist。[30] computicsという用語も提案されています。[31] ヨーロッパでは、「自動情報」(例:イタリア語で「informazioneautomatica」)または「情報と数学」という表現の契約翻訳に由来する用語がよく使用されます。例:informatique(フランス語)、Informatik(ドイツ語)、informatica(イタリア語、オランダ語) )、インフォマティカ(スペイン語、ポルトガル語)、informatika(スラヴ語とハンガリー語)またはpliroforiki(πληροφορικήで、手段インフォマティクス)ギリシャ。同様の言葉が英国でも採用されています(エジンバラ大学の情報学部のように)。[32]「しかし、米国では、情報学は応用コンピューティング、または別のドメインのコンテキストでのコンピューティングとリンクしています。」[33]
Edsger Dijkstraに起因することが多いが、ほぼ確実に最初に定式化されたわけではない民間伝承の引用は、「コンピュータサイエンスはコンピュータに関するものであり、天文学は望遠鏡に関するものである」と述べています。[注3]コンピュータとコンピュータシステムの設計と展開は、一般にコンピュータサイエンス以外の分野の領域と見なされています。たとえば、コンピュータハードウェアの研究は通常、コンピュータエンジニアリングの一部と見なされますが、商用コンピュータシステムとその展開の研究は、情報技術または情報システムと呼ばれることがよくあります。しかし、さまざまなコンピュータ関連の分野の間でアイデアの相互受精がたくさんありました。コンピュータサイエンスの研究は、哲学、認知科学、言語学、数学、物理学、生物学、地球科学、統計学、論理学などの他の分野とも交差することがよくあります。
コンピュータサイエンスは、多くの科学分野よりも数学とはるかに密接な関係があると考える人もいます。一部のオブザーバーは、コンピューティングは数理科学であると述べています。[20]初期のコンピュータ科学が強くような数学者の作品に影響を受けたクルト・ゲーデル、アラン・チューリング、ジョン・フォン・ノイマン、ロザ・ピーターとアロンゾ・チャーチやなどの分野で2つのフィールド間のアイデアの便利な交換が存在し続け、数学論理学、圏論、領域論、代数。[23]
コンピュータサイエンスとソフトウェアエンジニアリングの関係は論争の的となっている問題であり、「ソフトウェアエンジニアリング」という用語が何を意味するのか、そしてコンピュータサイエンスがどのように定義されているのかをめぐる論争によってさらに混乱しています。[34] デイビッド・パーナスは、他の工学と科学分野の関係からヒントを得て、コンピュータサイエンスの主な焦点は一般的な計算の特性の研究であり、ソフトウェア工学の主な焦点は特定の計算の設計であると主張しました。実用的な目標を達成するために、2つの別々であるが補完的な分野を作ります。[35]
コンピュータサイエンスの学術的、政治的、および資金調達の側面は、部門が数学的な重点で形成されているか、工学的な重点で形成されているかに依存する傾向があります。数学に重点を置き、数値指向のコンピュータサイエンス部門は、計算科学との整合性を検討します。どちらのタイプの部門も、すべての研究にわたってではないにしても、教育的に分野を橋渡しする努力をする傾向があります。
哲学
多くのコンピュータ科学者は、コンピュータサイエンスにおける3つの別々のパラダイムの区別について主張してきました。Peter Wegnerは、これらのパラダイムは科学、技術、数学であると主張しました。[36] ピーター・デニングのワーキンググループは、それらは理論、抽象化(モデリング)、および設計であると主張しました。[37] Amnon H. Edenは、それらを「合理主義パラダイム」(コンピュータサイエンスを数学の分野として扱い、理論的なコンピュータサイエンスで普及しており、主に推論を採用している)、「技術的パラダイム」(工学的アプローチ、最も顕著にソフトウェアエンジニアリングで見られる)、および「科学的パラダイム」(人工知能のいくつかの分野で識別可能な、自然科学の経験的観点からコンピューター関連のアーティファクトにアプローチする)。[38]コンピュータサイエンスは、人工のコンピューティングシステムの設計、仕様、プログラミング、検証、実装、およびテストに関連する方法に焦点を当てています。[39]
田畑
コンピュータサイエンスは、天文学が望遠鏡に関するものであるのと同じように、コンピュータに関するものではありません。
— エドガー・ダイクストラ
分野として、コンピュータサイエンスは、アルゴリズムの理論的研究や計算の限界から、ハードウェアとソフトウェアにコンピューティングシステムを実装するという実際的な問題まで、幅広いトピックにまたがっています。[40] [41] CSAB以前コンピューティング科学認定委員会-の代表者で構成されていると呼ばれる、計算機学会(ACM)、およびIEEEコンピュータ学会(IEEE CS)[42]が、それは考えていることを四つの領域を表しますコンピュータサイエンスの分野に不可欠なもの:計算理論、アルゴリズムとデータ構造、プログラミング方法論と言語、コンピュータ要素とアーキテクチャ。これらの四つの領域に加えて、そのようなソフトウェア工学などCSABも識別フィールド、人工知能、ネットワークコンピュータと通信、データベースシステム、並列計算、分散計算、人間とコンピュータの相互作用、コンピュータグラフィックス、オペレーティングシステム、および数値や記号計算などコンピュータサイエンスの重要な分野です。[40]
理論計算機科学
理論計算機科学は数学的で抽象的な精神を持っていますが、その動機は実用的で日常的な計算に由来しています。その目的は、計算の性質を理解し、この理解の結果として、より効率的な方法論を提供することです。
計算理論
Peter Denningによると、コンピュータサイエンスの根底にある基本的な質問は、「何を自動化できるか」です。[20]計算理論は、何を計算できるか、およびそれらの計算を実行するために必要なリソースの量に関する基本的な質問に答えることに焦点を当てています。最初の質問に答えるために、計算可能性理論は、計算のさまざまな理論モデルでどの計算問題が解決可能かを調べます。2番目の質問は、多数の計算問題を解決するためのさまざまなアプローチに関連する時間と空間のコストを研究する計算複雑性理論によって対処されます。
有名なP = NP?問題の一つミレニアム懸賞問題、[43]の計算の理論にオープンな問題です。
オートマトン理論 | 形式言語 | 計算可能性理論 | 計算の複雑さの理論 |
計算モデル | 量子コンピューティング理論 | 論理回路理論 | セルオートマトン |
情報と符号理論
確率と統計に密接に関連する情報理論は、情報の定量化に関連しています。これは、データの圧縮やデータの確実な保存と通信などの信号処理操作の基本的な制限を見つけるために、ClaudeShannonによって開発されました。[44]符号理論は、コードの特性(情報をある形式から別の形式に変換するためのシステム)と特定のアプリケーションへの適合性の研究です。コードは、データ圧縮、暗号化、エラー検出および訂正に使用され、最近ではネットワークコーディングにも使用されています。コードは、効率的で信頼性の高いデータ送信方法を設計する目的で研究されています。[45]
符号理論 | チャネル容量 | アルゴリズム情報理論 | 信号検出理論 | コルモゴロフの複雑さ |
データ構造とアルゴリズム
データ構造とアルゴリズムは、一般的に使用される計算方法とその計算効率の研究です。
O(n 2) | |||||
アルゴリズムの分析 | アルゴリズム設計 | データ構造 | 組み合わせ最適化 | 計算幾何学 | ランダム化されたアルゴリズム |
プログラミング言語理論と形式手法
プログラミング言語理論は、プログラミング言語とその個々の機能の設計、実装、分析、特性評価、分類を扱うコンピュータサイエンスの一分野です。それは、数学、ソフトウェアエンジニアリング、および言語学に依存し、影響を与えるコンピュータサイエンスの分野に含まれます。数多くの専門学術雑誌があり、活発な研究分野です。
形式手法は、ソフトウェアおよびハードウェアシステムの仕様、開発、および検証のための特定の種類の数学ベースの手法です。[46]ソフトウェアとハードウェアの設計に形式手法を使用することは、他の工学分野と同様に、適切な数学的分析を実行することで設計の信頼性と堅牢性に貢献できるという期待に動機付けられています。これらは、特に安全性やセキュリティが関係する場合に、ソフトウェアエンジニアリングの重要な理論的基盤を形成します。形式手法は、エラーを回避するのに役立ち、テストのフレームワークを提供できるため、ソフトウェアテストの補助として役立ちます。産業用には、工具サポートが必要です。ただし、形式手法を使用するコストが高いということは、通常、安全性またはセキュリティが最も重要である、整合性が高く生命にかかわるシステムの開発でのみ使用されることを意味します。フォーマルメソッドは、最高のかなり広い様々なアプリケーションとして記述されている理論計算機科学、特に、基礎ロジック結石、形式言語、オートマトン理論、およびプログラムのセマンティクスが、また、システムに入力し、代数的データ型をソフトウェアとハードウェアの仕様で問題にし、検証。
正式なセマンティクス | 型理論 | コンパイラの設計 | プログラミング言語 | フォーマル検証 | 自動定理証明 |
コンピュータシステムと計算プロセス
人工知能
人工知能(AI)は、人間や動物に見られる問題解決、意思決定、環境適応、学習、コミュニケーションなどの目標指向のプロセスを統合することを目的としているか、または統合する必要があります。サイバネティックスとダートマス会議(1956)の起源から、人工知能の研究は必然的に学際的であり、応用数学、記号論理学、セミオティックス、電気工学、心の哲学、神経生理学、社会などの専門分野を利用しています。インテリジェンス。AIは一般の人々の心の中でロボット開発に関連付けられていますが、実用化の主な分野は、計算による理解が必要なソフトウェア開発の分野に組み込まれたコンポーネントとしてのものです。1940年代後半の出発点は、アランチューリングの質問「コンピューターは考えることができるか」でした。チューリングテストは、人間の知性のスケールでコンピューター出力を評価するためにまだ使用されていますが、質問は事実上未回答のままです。しかし、評価タスクと予測タスクの自動化は、複雑な実世界のデータを含むコンピューターアプリケーションのドメインでの人間による監視と介入の代わりとしてますます成功しています。
計算論的学習理論 | コンピュータビジョン | ニューラルネットワーク | 計画とスケジューリング |
自然言語処理 | 計算的ゲーム理論 | 進化的計算 | オートノミックコンピューティング |
表現と推論 | パターン認識 | ロボット工学 | 群知能 |
コンピュータアーキテクチャと組織
コンピュータアーキテクチャ、またはデジタルコンピュータ組織は、コンピュータシステムの概念設計および基本的な運用構造です。これは主に、中央処理装置が内部で実行し、メモリ内のアドレスにアクセスする方法に焦点を当てています。[47]コンピュータエンジニアは、個々のプロセッサコンポーネント、マイクロコントローラ、パーソナルコンピュータからスーパーコンピュータ、組み込みシステムまで、コンピュータハードウェアの計算ロジックと設計を研究しています。コンピュータ文献における「アーキテクチャ」という用語は、1959年にIBMの主要な研究センターの機械組織部門のメンバーであったライルR.ジョンソンとフレデリックP.ブルックスジュニアの業績に由来する可能性があります。
処理装置 | マイクロアーキテクチャ | マルチプロセッシング | プロセッサの設計 |
ユビキタスコンピューティング | システムアーキテクチャ | オペレーティングシステム | 入出力 |
組み込みシステム | リアルタイムコンピューティング | 信頼性 | 通訳 |
並行、並列、分散コンピューティング
並行性は、複数の計算が同時に実行され、潜在的に相互作用するシステムの特性です。[48]ペトリネット、プロセス計算、並列ランダムアクセスマシンモデルなど、一般的な並行計算のために多くの数学モデルが開発されています。[49]並行性を使用しながら複数のコンピューターがネットワークに接続されている場合、これは分散システムと呼ばれます。その分散システム内のコンピューターには独自のプライベートメモリがあり、共通の目標を達成するために情報を交換できます。[50]
コンピューターネットワーク
コンピュータサイエンスのこの部門は、世界中のコンピュータ間のネットワークを管理することを目的としています。
コンピュータセキュリティと暗号化
コンピュータセキュリティは、意図されたユーザーのシステムのアクセス可能性と使いやすさを維持しながら、不正アクセス、中断、または変更から情報を保護することを目的としたコンピュータテクノロジのブランチです。暗号化は、情報を隠蔽(暗号化)し、したがって解読(解読)する実践と研究です。多くの暗号化および復号化アルゴリズムは計算の複雑さに基づいているため、現代の暗号化は主にコンピュータサイエンスに関連しています。
データベースとデータマイニング
データベースは、大量のデータを簡単に整理、保存、および取得することを目的としています。デジタルデータベースは、データベース管理システムを使用して管理され、データベースモデルとクエリ言語を使用して、データを保存、作成、維持、および検索します。データマイニングは、大規模なデータセットのパターンを発見するプロセスです。
コンピュータグラフィックスと視覚化
コンピュータグラフィックスはデジタルビジュアルコンテンツの研究であり、画像データの合成と操作を含みます。この研究は、コンピュータービジョン、画像処理、計算幾何学など、コンピューターサイエンスの他の多くの分野に関連しており、特殊効果やビデオゲームの分野に広く適用されています。
2Dコンピュータグラフィックス | コンピューターアニメーション | レンダリング | 複合現実 | バーチャルリアリティ | ソリッドモデリング |
画像と音声の処理
情報は、画像、音声、ビデオ、またはその他のマルチメディアの形をとることができます。情報のビットは、信号を介してストリーミングできます。その処理は、情報学の中心的な概念であり、コンピューティングに関するヨーロッパの見解であり、電気的、機械的、または生物学的であるかどうかにかかわらず、情報キャリアのタイプに関係なく情報処理アルゴリズムを研究します。この分野は、情報理論、電気通信、情報工学において重要な役割を果たしており、とりわけ医療画像コンピューティングや音声合成に応用されています。高速フーリエ変換アルゴリズムの複雑さの下限は何ですか?理論計算機科学における未解決の問題の1つです。
FFTアルゴリズム | 画像処理 | 音声認識 | データ圧縮 | 医用画像コンピューティング | 音声合成 |
応用コンピュータサイエンス
計算科学、金融、工学
科学計算(または計算科学)は、数学的モデルと定量分析技術を構築し、コンピューターを使用して科学的問題を分析および解決することに関係する研究分野です。科学計算の主な用途は、計算流体力学、物理、電気、電子のシステムと回路、社会や社会的状況(特に戦争ゲーム)、およびそれらの生息地など、さまざまなプロセスのシミュレーションです。最新のコンピューターは、完全な航空機などの設計の最適化を可能にします。電気および電子回路設計で注目に値するのは、SPICE [51]と、新しい(または変更された)設計を物理的に実現するためのソフトウェアです。後者には、集積回路に不可欠な設計ソフトウェアが含まれています。[要出典]
数値解析 | 計算物理学 | 計算化学 | バイオインフォマティクス | ニューロインフォマティクス | 心理情報学 | 医療情報学 | 計算工学 | 計算音楽学 |
ソーシャルコンピューティングと人間とコンピューターの相互作用
ソーシャルコンピューティングは、社会的行動と計算システムの交差点に関係する分野です。ヒューマンコンピュータインタラクションの研究は、ユーザーインターフェイス設計者向けの理論、原則、およびガイドラインを開発します。
ソフトウェア工学
ソフトウェアエンジニアリングは、ソフトウェアが高品質で、手頃な価格で、保守が容易で、迅速に構築できるようにするために、ソフトウェアを設計、実装、および変更する研究です。これは、ソフトウェア設計への体系的なアプローチであり、ソフトウェアへのエンジニアリング手法の適用が含まれます。ソフトウェアエンジニアリングは、ソフトウェアの整理と分析を扱います。新しいソフトウェアの作成や製造だけでなく、その内部の配置と保守も扱います。たとえば、ソフトウェアテスト、システムエンジニアリング、技術的負債、ソフトウェア開発プロセスなどです。
発見
コンピューティングの哲学者であるビルラパポートは、コンピュータサイエンスの3つの優れた洞察に言及しました:[52]
- ゴットフリート・ウィルヘルム・ライプニッツ、ジョージ・ブール、アラン・チューリング、クロード・シャノン、サミュエル・モールスの洞察:「何か」を表現するためにコンピューターが処理しなければならないオブジェクトは2つだけです。【注4】
- 計算可能な問題に関するすべての情報は、0と1(または「オン/オフ」、「磁化/非磁化」、「高」などの2つの簡単に区別できる状態間でフリップフロップできる他の双安定ペア)のみを使用して表すことができます。 -電圧/低電圧」など)。
- Alan Turingの洞察:「何でも」行うためにコンピューターが実行しなければならないアクションは5つだけです。
- すべてのアルゴリズムは、5つの基本的な命令のみで構成されるコンピューター用の言語で表現できます。 [53]
- 1つの場所を左に移動します。
- 1つの場所を右に移動します。
- 現在の場所でシンボルを読み取ります。
- 現在の場所に0を出力します。
- 現在の場所に1を印刷します。
- すべてのアルゴリズムは、5つの基本的な命令のみで構成されるコンピューター用の言語で表現できます。 [53]
- コラード・ベームとジュゼッペJacopiniの洞察:だけがある組み合わせの三つの方法『何を』実行するコンピュータのために必要とされているこれらのアクション(より複雑なものには)。[54]
- 基本的な命令のセットをより複雑な命令に組み合わせるために必要なルールは3つだけです。
- シーケンス:最初にこれを実行し、次にそれを実行します。
- 選択:そのような場合は、これを実行し、そうでない場合はそれを実行します。
- 繰り返し:そのような場合は、これを行います。
- BoehmとJacopiniの洞察の3つのルールは、gotoを使用することでさらに単純化できることに注意してください(つまり、 構造化プログラミングよりも基本 的です)。
- 基本的な命令のセットをより複雑な命令に組み合わせるために必要なルールは3つだけです。
プログラミングパラダイム
プログラミング言語を使用して、さまざまなタスクをさまざまな方法で実行できます。一般的なプログラミングパラダイムは次のとおりです。
- 関数型プログラミング、計算を数学関数の評価として扱い、状態および可変データを回避するコンピュータープログラムの構造と要素を構築するスタイル。これは宣言型プログラミングパラダイムです。つまり、プログラミングはステートメントではなく式または宣言を使用して行われます。[55]
- 命令型プログラミング、プログラムの状態を変更するステートメントを使用するプログラミングパラダイム。[56]自然言語の命令型ムードがコマンドを表現するのとほぼ同じ方法で、命令型プログラムはコンピューターが実行するコマンドで構成されます。命令型プログラミングは、プログラムがどのように動作するかを記述することに焦点を当てています。
- オブジェクト指向プログラミング。「オブジェクト」の概念に基づくプログラミングパラダイム。フィールドの形式でデータを含めることができます。これは、属性と呼ばれることもあります。プロシージャの形式のコード。メソッドと呼ばれることもあります。オブジェクトの機能は、オブジェクトのプロシージャが、関連付けられているオブジェクトのデータフィールドにアクセスし、多くの場合、データフィールドを変更できることです。したがって、オブジェクト指向コンピュータプログラムは、相互に作用するオブジェクトで構成されています。[57]
- サービス指向プログラミング、コンピュータ作業の単位として「サービス」を使用して、統合されたビジネスアプリケーションとミッションクリティカルなソフトウェアプログラムを設計および実装するプログラミングパラダイム
多くの言語は複数のパラダイムをサポートしているため、技術的な機能よりもスタイルの問題で区別できます。[58]
アカデミア
会議は、コンピュータサイエンス研究にとって重要なイベントです。これらの会議では、公的および民間部門の研究者が最近の研究を発表し、会合を開きます。他のほとんどの学術分野とは異なり、コンピュータサイエンスでは、会議論文の威信はジャーナル出版物の威信よりも優れています。[59] [60]これについて提案された説明の1つは、この比較的新しい分野の迅速な開発には、結果の迅速なレビューと配布が必要であり、ジャーナルよりも会議でより適切に処理されるタスクであるというものです。[61]
教育
ほぼ同義語であるコンピューティング、コンピュータスタディで知られるコンピュータサイエンスは、バッチ処理の時代から英国の学校で教えられており、機密性の高いカードや紙のテープに印を付けていますが、通常は一部の生徒に教えられています。[62] 1981年、BBCはマイクロコンピューターと教室のネットワークを作成し、コンピューター研究はGCE Oレベルの学生(11〜16歳)に、コンピューターサイエンスはAレベルの学生に一般的になりました。その重要性が認識され、キーステージ3および4の全国カリキュラムの必須部分になりました。2014年9月に、4歳以上のすべての生徒の資格になりました。[63]
で米国、14,000の学区は、カリキュラムを決定し、提供が破断されました。[64] Association for Computing Machinery(ACM)およびComputer Science Teachers Association(CSTA)による2010年のレポートによると、高校のコンピュータサイエンスに重要な教育基準を採用しているのは50州のうち14州のみです。[65]
イスラエル、ニュージーランド、および韓国は、国の中等教育カリキュラムにコンピュータサイエンスを含めており、[66] [67]および他のいくつかがフォローしています。[68]
も参照してください
- コンピュータサイエンスとエンジニアリング
- コンピューターエンジニア
- 情報技術
- コンピュータ科学者のリスト
- コンピュータサイエンス賞のリスト
- コンピュータサイエンスの重要な出版物のリスト
- コンピュータサイエンスのパイオニアのリスト
- コンピュータサイエンスにおける未解決の問題のリスト
- アルゴリズムとデータ構造に関連する用語のリスト
- 第三次産業革命
- ソフトウェア工学
- プログラミング言語
- アルゴリズム取引
- 情報通信技術
ノート
- ^ 1851年に
- ^ 「新しいエンジンへのパンチカードの導入は、ドラムよりも便利な制御方法としてだけでなく、プログラムの範囲が無制限になり、設定エラーを引き起こす危険なしに保存して繰り返すことができるため、重要でした。手作業の機械。それは、バベッジが本当に新しいもの、洗練された計算機以上のものを発明したというバベッジの感覚を結晶化するのに役立ったので、それも重要でした。」ブルース・コリアー、1970年
- ^ この引用の歴史については、ウィキクォートのエントリ「コンピュータサイエンス」を参照してください。
- ^ コンピュータではできないことがあるので、「何でも」という言葉は引用符で囲んでいます。一例は、任意のコンピュータプログラムが最終的に終了するか、永久に実行されるかという質問に答えることです(停止問題)。
参考文献
- ^ 「コンピュータサイエンスとは何ですか?-コンピュータサイエンス。ヨーク大学」。www.cs.york.ac.uk 。2020年6月11日取得。
- ^ 「WordNet検索—3.1」。Wordnetweb.princeton.edu 。2012年5月14日取得。
- ^ 「コンピュータサイエンスの定義| Dictionary.com」。www.dictionary.com 。2020年6月11日取得。
- ^ ハレル、デビッド。(2014)。アルゴリズム学スピリットオブコンピューティング。シュプリンガーベルリン。ISBN 978-3-642-44135-6。OCLC 876384882。
- ^ 「コンピュータサイエンス:学問分野」 (PDF)。2006年5月25日。2006年5月25日のオリジナルからアーカイブ (PDF)。2021年1月4日取得。
- ^ MITプレス。「何を自動化できるか?コンピュータサイエンスとエンジニアリングの調査研究| MITプレス」。mitpress.mit.edu。
- ^ 「チャールズバベッジインスティテュート:チャールズバベッジは誰でしたか?」。cbi.umn.edu 。2016年12月28日取得。
- ^ 「エイダラブレス|バベッジエンジン|コンピューター歴史博物館」。www.computerhistory.org 。2016年12月28日取得。
- ^ 「WilhelmSchickard– Ein Computerpionier」 (PDF)(ドイツ語)。
- ^ キーツ、フィオナ(2012年6月25日)。「コンピューティングの簡単な歴史」。レポジトリ。王立学会。
- ^ 「科学博物館、バベッジの分析エンジン、1834-1871(試験モデル)」。2020年5月11日取得。
- ^ a b アンソニーハイマン(1982)。コンピューターのパイオニア、チャールズ・バベッジ。
- ^ 「Ada、The Enchantress of NumbersにあるAdaのメモからの選択と適応」、Betty Alexandra Toole Ed.D. イチゴを押して、ミルバレー、CA」。からアーカイブされたオリジナルの2月10日、2006 。のRetrieved 5月4、 2006。
- ^ 「ジョンガブリエルバーンコンピュータサイエンスコレクション」 (PDF)。2019年4月16日にオリジナルからアーカイブされました。2019年8月8日取得。
- ^ 「この意味で、エイケンは、パンチカードの使用、数値データの蓄積、およびあるレジスタから別のレジスタへの数値データの転送を含む技術を備えたIBMを必要としていました」、 Bernard Cohen、p.44(2000)
- ^ ブライアン・ランデル、p。187、1975
- ^ 計算機学会(ACM)は、1947年に設立されました。
- ^ 「IBMアーカイブ:1945」。Ibm.com 。2019年3月19日取得。
- ^ 「IBM100–コンピュータサイエンスの起源」。Ibm.com。1995年9月15日。2019年3月19日取得。
- ^ a b c デニング、ピーターJ.(2000)。「コンピュータサイエンス:学問分野」 (PDF)。コンピュータサイエンス百科事典。2006年5月25日にオリジナル (PDF)からアーカイブされました。
- ^ 「いくつかのEDSAC統計」。ケンブリッジ大学。2011年11月19日取得。
- ^ 「コンピュータサイエンスのパイオニアであるサミュエルD.コンテが85歳で死去」。パデューコンピュータサイエンス。2002年7月1日。2014年12月12日取得。
- ^ a b テドレ、マティ(2014)。コンピューティングの科学:分野の形成。テイラーアンドフランシス/ CRCプレス。
- ^ a b ルイファイン(1959)。「コンピュータ、データ処理、および関連分野における大学の役割」。ACMの通信。2(9):7–14。土井:10.1145 /368424.368427。S2CID 6740821。
- ^ 「スタンフォード大学オーラルヒストリー」。スタンフォード大学。2013年5月30日取得。
- ^ ドナルドクヌース(1972)。「ジョージフォーサイスとコンピュータサイエンスの発展」。通信。ACM。アーカイブでは、2013年10月20日ウェイバックマシン
- ^ Matti Tedre(2006)。「コンピュータサイエンスの発展:社会文化的展望」 (PDF)。p。260 。2014年12月12日取得。
- ^ ピーターナウア(1966)。「データ学の科学」。ACMの通信。9(7):485 DOI:10.1145 / 365719.366510。S2CID 47558402。
- ^ ワイス、EA; コーリー、ヘンリーPT「編集者への手紙」。ACMの通信。1(4):6。DOI:10.1145 / 368796.368802。S2CID 5379449。
- ^ ACM 2(1)の通信:p.4
- ^ IEEEコンピューター28(12):p.136
- ^ P. Mounier-Kuhn、 L'Informatique en France、de la seconde guerre mondiale au PlanCalcul。L'émergenced'unescience、パリ、PUPS、2010年、ch。3&4。
- ^ Groth、Dennis P.(2010年2月)。「なぜ情報学の学位なのか?」。ACMの通信。Cacm.acm.org。
- ^ テドレ、M。(2011)。「科学としてのコンピューティング:競合する視点の調査」。心と機械。21(3):361–387。土井:10.1007 / s11023-011-9240-4。S2CID 14263916。
- ^ パーナス、DL(1998)。「ソフトウェア工学プログラムはコンピュータサイエンスプログラムではありません」。ソフトウェア工学の年報。6:19–37。土井:10.1023 / A:1018949113292。S2CID 35786237。、p。19:「ソフトウェア工学をコンピュータサイエンスのサブフィールドとして扱うのではなく、土木工学、機械工学、化学工学、電気工学などのセットの要素として扱います。[…]」
- ^ ウェグナー、P。(1976年10月13〜15日)。コンピュータサイエンスの研究パラダイム—ソフトウェアエンジニアリングに関する第2回国際会議の議事録。米国カリフォルニア州サンフランシスコ:IEEE Computer Society Press、カリフォルニア州ロスアラミトス。
- ^ デニング、PJ; Comer、DE; グリーズ、D。; マルダー、MC; タッカー、A。; ターナー、AJ; ヤング、PR(1989年1月)。「学問としてのコンピューティング」。ACMの通信。32:9–23。土井:10.1145 /63238.63239。S2CID 723103。
- ^ エデン、AH(2007)。「コンピュータサイエンスの3つのパラダイム」 (PDF)。心と機械。17(2):135–167。CiteSeerX 10.1.1.304.7763。土井:10.1007 / s11023-007-9060-8。S2CID 3023076。2016年2月15日にオリジナル (PDF)からアーカイブされました。
- ^ ターナー、レイモンド; アンギウス、ニコラ(2019)。「コンピュータサイエンスの哲学」。ザルタでは、エドワードN.(編)。スタンフォード哲学百科事典。
- ^ a b 「職業としてのコンピュータサイエンス」。コンピューティングサイエンス認定委員会。1997年5月28日。2008年6月17日のオリジナルからアーカイブ。2010年5月23日取得。
- ^ コンピュータサイエンスの基礎に関する委員会:課題と機会、全米研究評議会(2004)。コンピュータサイエンス:フィールドでの反射、フィールドからの反射。国立アカデミープレス。ISBN 978-0-309-09301-9。
- ^ 「CSABをリードするコンピュータ教育」。CSAB。2011年8月3日。2011年11月19日取得。
- ^ クレイ数学研究所は、 P = NPアーカイブで2013年10月14日、ウェイバックマシン
- ^ P.コリンズ、グラハム(2002年10月14日)。「クロードE.シャノン:情報理論の創設者」。サイエンティフィックアメリカン。2014年12月12日取得。
- ^ Van-Nam Huynh; ウラジク・クライノヴィッチ; Songsak Sriboonchitta; 2012.アプリケーションを使用した計量経済学における不確実性分析。シュプリンガーサイエンス&ビジネスメディア。p。63。 ISBN 978-3-642-35443-4。
- ^ Phillip A. Laplante、2010年。ソフトウェアエンジニアリング百科事典3巻セット(印刷)。CRCプレス。p。309。 ISBN 978-1-351-24926-3。
- ^ A.ティステズ、ロナルド(1997年4月7日)。「コンピュータアーキテクチャ」 (PDF)。シカゴ大学。
- ^ Jiacun Wang、2017年。リアルタイム組み込みシステム。ワイリー。p。12.12。 ISBN 978-1-119-42070-5。
- ^ Gordana Dodig-Crnkovic; ラファエラジョバニョーリ; 2013.コンピューティングの性質:チューリング100周年の展望。シュプリンガーサイエンス&ビジネスメディア。p。247。 ISBN 978-3-642-37225-4。
- ^ サイモン・イライアス・ビブリ; 2018.未来のスマートで持続可能な都市:持続可能性を推進するためのビッグデータ分析とコンテキストアウェアコンピューティングの未開拓の可能性。スプリンガー。p。74。 ISBN 978-3-319-73981-6。
- ^ Muhammad H. Rashid、2016年。パワーエレクトロニクスと電力のためのSPICE。CRCプレス。p。6.6。 ISBN 978-1-4398-6047-2。
- ^ ラパポート、ウィリアムJ.(2013年9月20日)。「計算とは?」。ニューヨーク州立大学バッファロー校。
- ^ B.ジャックコープランド、2012年。アランチューリングの電子頭脳:世界最速のコンピューターであるACEを構築するための闘争。OUPオックスフォード。p。107。 ISBN 978-0-19-960915-4。
- ^ Charles W. Herbert、2010年。Alice2.2を使用したプログラミング入門。センゲージラーニング。p。122。 ISBN 0-538-47866-7。
- ^ Md。RezaulKarim; Sridhar Alla; 2017.ビッグデータ分析のためのScalaとSpark:関数型プログラミング、データストリーミング、機械学習の概念を探ります。Packt PublishingLtd.p。87。 ISBN 978-1-78355-050-0。
- ^ Lex Sheehan、2017年。Goで機能プログラミングを学ぶ:Goで機能プログラミングを使用してアプリケーションにアプローチする方法を変更します。Packt PublishingLtd.p。16.16。 ISBN 978-1-78728-604-7。
- ^ Evelio Padilla、2015年。変電所自動化システム:設計と実装。ワイリー。p。245。 ISBN 978-1-118-98730-8。
- ^ 「マルチパラダイムプログラミング言語」。developer.mozilla.org。MozillaFoundation。2013年8月21日にオリジナルからアーカイブされました。
- ^ マイヤー、バートランド(2009年4月)。「視点:コンピュータサイエンスの研究評価」。ACMの通信。25(4):31–34。土井:10.1145 /1498765.1498780。S2CID 8625066。
- ^ パターソン、デビッド(1999年8月)。「昇進と在職期間のためのコンピュータ科学者とエンジニアの評価」。計算機研究協会。
- ^ ランス・フォートノフ(2009年8月)。「視点:コンピュータサイエンスが成長する時間」。ACMの通信。52(8):33–35。土井:10.1145 /1536616.1536631。
- ^ バーンズ、ジュディス(2016年4月3日)。「コンピュータサイエンスAレベル1970年代スタイル」。2019年2月9日取得。
- ^ ジョーンズ、マイケル(1915年10月)。「英国でのコンピュータサイエンスカリキュラムの開発:米国でのアプローチの調査」 (PDF)。ウィンストンチャーチルメモリアルトラスト。2019年2月9日取得。
- ^ 「コンピュータサイエンス:もはや単なる選択科目ではない」。教育週間。2014年2月25日。
- ^ ウィルソン、キャメロン; スードル、リー・アン; スティーブンソン、クリス; Stehlik、Mark(2010)。「空で実行する:デジタル時代の幼稚園から高校までのコンピュータサイエンスを教えることの失敗」 (PDF)。ACM。
- ^ 「Aはアルゴリズム用です」。エコノミスト。2014年4月26日。
- ^ 「学校でのコンピューティングの国際比較」 (PDF)。2015年7月20日取得。
- ^ 「カリキュラムへのコーディングの追加」。ニューヨークタイムズ。2014年3月23日。
参考文献
概要概要
- タッカー、アレンB.(2004)。コンピュータサイエンスハンドブック(第2版)。チャップマンアンドホール/ CRC。ISBN 978-1-58488-360-9。
- 「70以上の章の中で、すべてが新しいか大幅に改訂されて、想像できるコンピュータサイエンスに関するあらゆる種類の情報と参考文献を見つけることができます。[…]全体として、コンピュータサイエンスについて見つけることができないものは絶対にありません。 110の調査記事を含む2.5キログラムの百科事典[…]。」(Christoph Meinel、Zentralblatt MATH)
- ファン・ルーウェン、1月(1994)。理論計算機科学ハンドブック。MITプレス。ISBN 978-0-262-72020-5。
- 「[…]このセットは、[理論計算機科学]コミュニティにとって、教育と研究の両方をサポートする上で最もユニークで、おそらく最も有用です[…]。この本は、単に1つを理解したい人なら誰でも使用できます。これらの分野の、またはトピックの研究に参加したい誰かによって、または彼らが彼らの主要な専門分野の外で教えている主題に関するタイムリーな情報を見つけたいと思っているインストラクターによって。」(ロッキーロス、SIGACTニュース)
- ラルストン、アンソニー; ライリー、エドウィンD。; ヘメンディンガー、デビッド(2000)。コンピュータサイエンス百科事典(第4版)。グローブの辞書。ISBN 978-1-56159-248-7。
- 「1976年以来、これはコンピュータ、コンピューティング、およびコンピュータサイエンスに関する最も信頼のおける参考書です。[…]アルファベット順に並べられ、幅広い主題分野に分類され、エントリはハードウェア、コンピュータシステム、情報とデータ、ソフトウェア、コンピューティングの数学をカバーしています。 、計算理論、方法論、アプリケーション、およびコンピューティング環境。編集者は、歴史的視点と実用的な参考情報をブレンドするという称賛に値する仕事をしました。百科事典は、ほとんどの公的および学術的な図書館の参考図書に不可欠です。」(ジョー・アカルディン、ノースイースタン・イリノイ大学、シカゴ)
- エドウィン・D・ライリー(2003)。コンピュータサイエンスと情報技術のマイルストーン。グリーンウッド出版グループ。ISBN 978-1-57356-521-9。
選択された文献
- クヌース、ドナルドE.(1996)。コンピュータサイエンスに関する厳選された論文。CSLI Publications、ケンブリッジ大学出版局。
- コリアー、ブルース(1990)。できた小さなエンジン:チャールズ・バベッジの計算機。Garland Publishing Inc. ISBN 978-0-8240-0043-1。
- コーエン、バーナード(2000)。ハワードエイケン、コンピューターのパイオニアの肖像画。MITプレス。ISBN 978-0-262-53179-5。
- テドレ、マティ(2014)。コンピューティングの科学:分野の形成。CRC Press、テイラーアンドフランシス。
- ランデル、ブライアン(1973)。デジタルコンピュータの起源、厳選された論文。Springer-Verlag。ISBN 978-3-540-06169-4。
- 「1966年から1993年までの期間をカバーするその関心は、これらの各論文の内容だけでなく、今日でもタイムリーであるだけでなく、異なる時期に表現されたアイデアが互いにうまく補完するようにまとめられることにもあります。」(N. Bernard、Zentralblatt MATH)
記事
- ピーター・J・デニング。コンピュータサイエンスは科学ですか?、ACMの通信、2005年4月。
- Peter J. Denning、コンピューティングカリキュラムの優れた原則、コンピュータサイエンス教育に関する技術シンポジウム、2004年。
- コンピュータサイエンス、情報ヨーロッパのための研究評価報告書 アーカイブで2017年10月18日、ウェイバックマシン。短いジャーナルバージョン:Bertrand Meyer、Christine Choppy、Jan van Leeuwen、Jorgen Staunstrup、コンピュータサイエンスの研究評価、Communications of the ACM、vol。52、いいえ。4、pp。31–34、2009年4月。
カリキュラムと分類
- コンピューティングマシナリー協会。1998ACMコンピューティング分類システム。1998年。
- Association for Computing Machinery(ACM)、Association for Information Systems(AIS)、およびIEEE Computer Society(IEEE CS)の合同タスクフォース。コンピューティングカリキュラム2005:概要レポート。2005年9月30日。
- ノーマンギブス、アレンタッカー。「コンピュータサイエンスのリベラルアーツ学位のためのモデルカリキュラム」。ACMのコミュニケーション、第29巻、第3号、1986年3月。
外部リンク
- コンピュータサイエンスでCurlie
- コンピュータサイエンスの学会
- コンピュータサイエンスとは何ですか?
- 1996年以来のコンピュータサイエンスのベストペーパー賞
- バートランド・メイヤーによるコンピューター科学者の写真
- EECS.berkeley.edu
書誌および学術検索エンジン
- CiteSeer x(記事):コンピューターと情報科学に焦点を当てた科学論文と学術論文の検索エンジン、デジタルライブラリ、リポジトリ。
- DBLP Computer Science Bibliography(記事):ドイツのUniversitätTrierでホストされているコンピューターサイエンスの書誌Webサイト。
- コンピュータサイエンス書誌のコレクション(コンピュータサイエンス書誌のコレクション)
専門組織
- コンピューティングマシナリー協会
- IEEE Computer Society
- 情報学ヨーロッパ
- AAAI
- AAASコンピュータサイエンス
その他
- Computer Science—Stack Exchange:コミュニティが運営するコンピュータサイエンスの質疑応答サイト
- コンピュータサイエンスとは
- コンピュータサイエンスは科学ですか?
- コンピュータサイエンス(ソフトウェア)は、独立した分野と見なす必要があります。