コンピューターサイエンスはどの分野に属しますか?[閉まっている]


15

コンピューターサイエンスは、応用数学、工学、芸術、哲学ですか?「その他」?

背景を説明するために、Scientific Americanに関するSteven Wartikのブログ投稿「私は本当の科学者ではありません、それでいいです」題しています。この記事では、この質問に役立ついくつかのトピックを取り上げていますが、答えよりも多くの情報を公開しています。

規律について考えることができたら、コンピューターサイエンスはその定義にどのように適合しますか?コンピューターサイエンスの分野は、プログラマーが行うこと、または学者が行うことに基づいているべきですか?これについて深く考えていると思われる人々からどのような答えが得られますか?どんな理由がありますか?


1
私がコンピュータサイエンスは科学であると言った学者は、これまでに説明したまったく異なる理由があります。
マクニール

5
コンピューターサイエンスは政治学であり、政治は少し少なくなっています。
ジョブ

1
コンピューターサイエンスは応用数学の分野です...「サイエンス」とは、コンピューターサイエンスには存在しない科学的方法を使用することを意味します。しかし、すべての新しい分野が科学という言葉を名前の最後に付けようとしたときに付けられました。
赤い汚れ

2
@ red-dirtそれは真実ではありません。CompSciには科学的な方法があります。ほとんどの筋金入りのコンピューター科学者は、数学と形式論理(ラムダ計算、停止問題などを参照)に夢中になっており、査読付きのジャーナルに論文を発表しています。「方法論」を発明した人々と混同しないでください。「方法論」は、言葉の定義によっては科学者ではありません。
アンドレスF.

1
@ red-dirt AndresFと同様に、より実用的なアプリケーション側では、デバッグ中に基本的な科学的手法(仮説、テスト、チェック、繰り返し)が作用します。これは通常、プログラミングに費やされる時間のほとんどを占めます。
イズカタ

回答:


30

2つの異なるIT分野があります。

  • コンピューターサイエンス-科学的手法を使用したコンピューターと計算の分野研究です。

  • ソフトウェアエンジニアリング-適切なエンジニアリングの原則に従ってソフトウェアを設計および実装する分野です。

この2つは幾分重なり合っていますが、違いは実際には科学と工学の望ましい結果に関するものです。科学分野の望ましい結果は知識です。エンジニアリング分野の望ましい結果は、機能することです。

あなたの質問に答えるために:

コンピューターサイエンスは、応用数学、工学、芸術、哲学ですか?「その他」?

コンピューターサイエンスは科学です...適切に行われれば。ただし、他の分野と同様に、CSは数学、工学、物理科学、社会科学、哲学などと重複しています。

また、ほとんどのプログラマーはコンピューターサイエンスでもソフトウェアエンジニアリングでもないことを付け加えます。職人がやっていることに似ています。

悲しいことに、学術的なコンピューターサイエンスやソフトウェアエンジニアリングの専門家は、古い科学や工学の分野ほど厳格ではありません。(伝統的に厳密なコンピューターサイエンスの分野があります。たとえば、強力な数学的基礎を備えた分野です。しかし、多くの分野では、本当に重要な質問について適切な科学的研究を行うのは非常に困難です。)


1
ハードウェアエンジニアリングもあります。誰かがソフトウェアを実行するための物理コンピューターを設計する必要があり、それは実際に電子工学の(主要な)下位分野です。
ドナルドフェローズ

職人の類推のために+1、私はそれがソフトウェアエンジニアのCSが何をするかを説明する最も正確な概念であることに気づいた。O'Reillyからの無料の本へのリンクがあります。 apprenticeship-patterns.labs.oreilly.com/ch01.html
romeroqj

「そして悲しいことに、学術的なコンピュータサイエンスもソフトウェアエンジニアリングの専門家も、古い科学と工学の分野ほど厳密ではありません」:私はこの声明に同意しません。特に、コンピューターサイエンスが厳密でなければ、プログラミング言語、コンパイラー(およびそれらの背後にあるすべての正式な言語理論)、暗号化などの進歩はありません。これらすべてのアプリケーションには、主に学界で開発された強固な基盤があります。
ジョルジオ

@Giorgio -それはあなたが...私はあなたが引用された文の直後に書いたものを読んでいないのは残念だ
スティーブンC

@Stephen C:私はそれを読みましたが、それでもコンピューターサイエンスが他の科学ほど厳密ではないとは確信していません(もちろん間違っているかもしれません)。あるいは、最初に「科学的」および「厳格」とみなすものとそうでないものを定義する必要がありますが、これには長い議論が必要になると思います。
ジョルジオ

12

プログラマーが「コンピューターサイエンスを行う」ことはめったにありません。彼らはほとんどの場合、エンジニアリングの分野である「ソフトウェアエンジニアリング」の結果を使用します。

それ以外は、コンピューターサイエンスは応用数学です。CSを応用数学に間違いなく属するものと比較すると、多くの類似点に気付くでしょう。

コンピューター科学者は計算(アルゴリズム)の方法を設計および研究し、数学のほとんどの理論(論理、グラフ理論、組み合わせ論など)を取り入れ、同時にそれに貢献します。他の応用数学と同じように。

彼らは、これらのモデルとアルゴリズムの特性を理論的に評価し、モデリング実験を続けます(テストプログラムを作成します)。応用数学者がクラスター上のチューブ内の液体の流れをシミュレートするように、コンピューター科学者はコンピューターを使用してアルゴリズムの実装を実験します。これらの実験の結果は、生産に直接送られます。石油精製所またはストック分析用のソフトウェアです。

私が終えた大学には、コンピューターサイエンスの特別な学部すらありません。コンピューターサイエンス以外の分野では、コンピューターサイエンスチェアは応用数学学科の一部です。


しかし、他の大学では、コンピューターサイエンスは数学学部内の別の学部、工学学部、科学学部、またはこれらのいずれでもありません。これらは管理上/組織上の問題であり、実際の主題とはほとんど関係ありません。
スティーブンC

@Stephen、だからこそ、「ほとんどの大学」や「多くの大学」と言う代わりに大学を指定しました:-)それはほんの一例であり、答えの要旨ではありません。
P Shved

1
確かにそれは「小さな例」ですが、私のポイントは、それが代表的な例ではなく、あなたの議論にも特に関係がないということです。例として、私が働いている大学は学部の再編の過程にあります。何が何に関連するかについての深い思考のためではなく、管理コストを削減するためです。数年前、CSとElec Engの学校は同じ理由で統合されました
スティーブンC

最初の返信で述べたように、コンピューターサイエンスは、計算オートマトンの設計と応用を扱う応用数学の分野です。プログラミングはコンピューターサイエンスではありません。ソフトウェアは、はんだごてを使わずに計算オートマトンを実装する手段です(十分なスペースがあれば、シーケンシャルロジックと組み合わせロジックを使用してプログラムを実装できます)。フォン・ノイマンのアーキテクチャは、「ソフト」な特殊目的のオートマトンを作成するためのベースとして機能する汎用オートマトンであるという点で、先行するアーキテクチャとは異なりました。
ビットトゥイドラ

1
@ bit-twiddler-定義が狭すぎます。これは、従来「コンピューターサイエンス」として分類されていた多くの学術分野を除外しています。
スティーブンC

5

コンピューターサイエンスは、最近では多くの多くのことをカバーする用語です。

  • マスター職人は、ツールの経験に基づいて(および見習いなど)他の人のために仕事をしています。
  • 職人のための新しいツールを発明し、作成するツールスミス
  • 研究者は、ツールスミス向けに、新しい合金やその他の材料(プラスチックなど)を開発しています。
  • 理論的な科学者は、材料がどのように機能するかを解明し、合金メーカーツールがどのように機能するかを理解します。

上記のすべてが、単なる「コンピューター科学者」ではなく、どのように異なる命名を持っているかに注意してください。違いは、コンピュータサイエンスが命名するにはあまりにも新しいため解決できないことです。


ポイント2はツールスミスのムカデ近いですが、この答えは次の
とおりです

1

まず第一に、それは計算科学です。これは、計算の背後にある数学を扱います。
エンジニアリングを指向した他の分野もあります。

違いは、関連する科学および工学分野と同じです。1つは精度に関するもので、もう1つは精度に関するものです。コンピューティング科学は理論的であり、その他は問題に適用される科学です:工学の枝。


1
MITはあなたに同意しませんeecs.mit.edu
アルマンド

@ Alison、wikiエントリ(en.wikipedia.org/wiki/Computer_science)も修正してください。
CMR

0

コンピューターサイエンスが適用され、実験数学が適用されます。


0

コンピューターサイエンスは、計算オートマトンの設計と応用を扱う応用数学の分野です。ソフトウェアエンジニアリングは、フォンノイマンアーキテクチャの形式化されたコードの設計と構築を扱うコンピューターサイエンスの適切なサブセットです。フォンノイマンアーキテクチャは、コンピューティングマシンを実装する1つの方法にすぎません。たとえば、エニグマでエンコードされたメッセージを解読するために使用されたマシンは、フォンノイマンマシンではありませんでした。

ソフトウェア工学は実務家の規律です。コンピューターサイエンスは研究指向の学問です。ほとんどのコンピューター科学者の学部生はソフトウェア開発になります。なぜなら、研究では少なくとも修士号を取得する必要があり、コンピューターサイエンスは栄誉あるプログラミング証明書であるという信念を強化するからです。


3
多くの学術コンピュータ科学者は、この狭いCSの定義を受け入れるとは思わない。
スティーブンC

0

最も正確に「コンピューターサイエンス」と呼ばれる分野は、私がチェックしたほとんどの大学で、工学分野に似た応用科学です。専攻する場合、「BS」または「MS」を受け取ります。テキサステックのCS学位は、エンジニアリングカレッジによって提供されました。教えられているように、規律はほとんど理論的です。チューリングマシン、DA / NDA、および「日常の」プログラマが頭蓋骨をガタガタ音を立て続ける必要のないその他の基本的な概念の概念を学びます。また、より高い数学のパントロードを取得します。テキサス工科大学のCS学位を取得し、他の多くの人も同様に賭けます。数学の未成年者に対応してもらいます。それに加えて、ほとんどの大学の学位トラックは、実用的な低レベルのアプリケーションのかなりのダッシュを追加します。アセンブリ言語、第3世代言語、

ただし、生計を立てるほとんどの人は「コンピューター科学者」ではありません。厳密に言えば、「ソフトウェア開発者」または(分析/設計に追加する場合)「ソフトウェアエンジニア」です。その仕事は、ハードウェアレベルがはるかに低く(その基本を知っている必要があります)、システム分析、設計、および直接的なコーディングがはるかに多くなっています。多くの大学は、そのためだけに別のコースを持っています。テキサス工科大学では「情報システムの管理」と呼ばれ、ビジネス学位(BBA / MBA)でした。そのトラックは、より高い数学(あなたが代数と微分/積分計算について知っていなければならなかったものは、2学期の「ビジネス数学」に絞り込まれ、ベクトル/テンソル計算、線形代数などを含まなかった)金融数学(統計と財務の各学期、会計と経済学をそれぞれ2つ)。オペレーティングシステムの軽量化、データベース、Webサーバー、ネットワーキング、一般的なシステム管理などの「スタック」テクノロジーの強化。低レベル言語、回路設計、AIの軽量化、第3および第4世代言語、システム分析、プロジェクト管理の軽量化。私はテキサス工科大学でこの学位を取得し、去る頃には少なくともJava、VB、C#、Web言語(HTML / CSS / PHP)の各学期に加えて、1年間のOOA&Dおよびその他のさまざまなコースがありましたITプロジェクト管理。

現実の世界ではどちらが良いですか?私はMIS BBAを取得し、弟はCS BSを取得しました。2人ともシニアソフトウェアエンジニアとほぼ同じ給与レベル(生活費の調整)で雇用されています。彼は仕事で必要なOOA&Dの多くを学び、基本的なC ++の知識からC#/ Javaでかなり素早くスピンアップする必要がありました。私の側では、ビジネス管理コースで立ち往生している間に彼が得た概念アルゴリズム研究の2学期があればいいのに(そう、MISは「経営」の学位ですが、どのように私の知識の99%他の人を管理することと管理しないことは、例によって学習されています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.