web-dev-qa-db-ja.com

コンピュータサイエンスとプログラミングの違いは何ですか?

私はコンピューターサイエンスとプログラミングの初心者ですが、コンピューターサイエンスとプログラミングには違いがあるのでしょうか。大学でどちらか一方だけを勉強するのか、それとも両方を勉強するのかを選択できますか?

33
xXSarahXx

コンピュータサイエンスとは、コンピュータが実行できることを研究することです。プログラミングは、コンピュータに物事を行わせる習慣です。

興味のある大学が提供するコース/シラバスを見て、コースがCSコース、プログラミングコース、その他(ソフトウェアエンジニアリングなど)のいずれであるか、またはこれらの組み合わせであるかどうかを確認します。 「コンピュータサイエンス」として宣伝されている多くのコースは、重要なプログラミングコンポーネントを提供します。これは、コースの理論的な部分を実践したり、プログラムを作成するスキルを習得したりするためのものです。

69
user4051

注意:「コンピュータサイエンス」は現代では泥沼な分野になっています(少なくとも米国では)大学には「プログラミング」の学位がないためです。これは、プログラミングに興味のある人はコンピュータサイエンスの学位にサインアップする必要があることを意味し、その反動として、コンピュータサイエンスプログラムはプログラミングをますます重視しています。

とは言っても、コンピューターサイエンス自体は強く数理科学です-計算数学の方が適しているかもしれません。これには、グラフ理論、アルゴリズムの複雑さ、形式論理、オートマトン、および一般に、入力への変換または応答を記述できる論理構造(アルゴリズム)の研究が含まれます。古典的な意味でのコンピュータサイエンティストは、現在のアーキテクチャでの実装の詳細を必ずしも知らなくても、任意のコンピューティングシステム(最新のコンピュータを含む)を管理するルールについて推論することができます。コンピュータサイエンスの強力なバックグラウンドにより、効率的でスケーラブルなアルゴリズムを開発(または再現)し、論理的削減を予測し、扱いやすいものについて適切に推論することができます。

対照的に、プログラミングとは、人がプログラミング言語を使用してアルゴリズムをマシンが実行できるものに変換するときに行うことです。 (これにより、コンピューターサイエンスとの密接なつながり、および混乱の多くがどこから生じるかが明らかになります。)プログラマー(環境と言語に関連)は、事実上あらゆるアルゴリズムのセットを取り、それらを人間と人間の両方の形式に変換できる必要があります。 -およびコードを記述することで機械可読。 (ほとんどのCSの学位が提供するように)プログラミングの強力なバックグラウンドにより、より優れたコードを書くことができます-「より良い」コードは他の人がより簡単に理解でき、実装しているアルゴリズムの表現に成功します。

もちろん、クロストークは大量にあり、一方での高いレベルの経験は、もう一方での開発経験に強く対応します。前述のように、CSメジャーはほとんど常に有能なプログラマーであり、熟練したプログラマーが採用していますCSの多くの原則。物理学と工学を考える。

違いを覚える良い方法はこれです。それが機能するかどうかをコンピュータで確認する必要がある場合、それはプログラミングです。鉛筆と紙でそれができるのであれば、コンピュータサイエンスです。

36
shanef22

コンピュータサイエンスは、情報、計算の理論的基礎、およびそれらの実装と応用のための実用的な手法を扱います。 http://en.wikipedia.org/wiki/Computer_science

コンピュータサイエンスは、天文学が望遠鏡に関するものであるのと同じくらい、コンピュータに関するものではありません。エズガー・ダイクストラ

プログラミングは、コンピュータプログラムを作成する技術です。

18
Gary Willoughby

コンピュータサイエンスは、私の観点から、物理学のようなハードサイエンスであることになっています。

コンパイラとコンパイラジェネレータ、ハードウェアアーキテクチャの概念、数値システムのさまざまな形式、アルゴリズムとアルゴリズムの効率性/パフォーマンス、およびプロセッサでの算術演算の背後にある理論の研究が含まれます。私が大学でCSをしていたとき、アセンブラーをいじくり回して、コンパイル、リンク、解釈などの違いについて学び、多くの時間を費やしました。

これの多くはプログラミングによって行われました。つまり、問題を解決するために結果を生成することを目的として、コンパイルまたはインタプリタを介して実行されるコードを書く行為です。つまり、プログラミングは、コンピュータサイエンスの知識で説明できる問題を解決する行為です。それは一種の純粋な数学/応用数学の分割です。

プログラマーになるためにコンピューターサイエンスの学位は必要ありませんが、CSのバックグラウンドを持つプログラマーは、コンピュータープログラムの動作をより深く理解できるでしょう。

11
mcfinnigan

「コンピューターサイエンスとソフトウェアエンジニアリングの違いは何ですか?」結局のところ、両方ともプログラミングに関係しています。

コンピュータサイエンスは、計算とは何か、何が可能で何が不可能であるかについての理論的な研究です。ゴデルの定理や停止問題などを調べます。

ソフトウェアエンジニアリングとは、プログラムがどのように設計されており、保守可能なプログラムを作成するかです。

3
Jaydee

コンピュータサイエンス はプログラミングの理論です。プログラミングは実装です。

コンピュータサイエンス...は、計算とそのアプリケーションへの科学的かつ実用的なアプローチです。コンピューター科学者は、計算理論と計算システムの設計を専門としています。

そのサブフィールドは、さまざまな理論的および実用的な分野に分けることができます。計算の複雑さの理論(計算問題の基本的な特性を調査する)などの一部のフィールドは非常に抽象的ですが、コンピュータグラフィックスのようなフィールドは実際のビジュアルアプリケーションを強調しています。さらに他の分野は、計算の実装における課題に焦点を当てています。たとえば、プログラミング言語理論では、計算の記述に対するさまざまなアプローチが検討されていますが、コンピュータプログラミング自体の研究では、プログラミング言語と複雑なシステムの使用に関するさまざまな側面を調査しています。人間とコンピュータの相互作用では、コンピュータと計算を、人間にとって使いやすく、使いやすく、普遍的にアクセスできるようにする際の課題を考慮しています...

2
Tom Squires

物理学は機械工学に対するものであるのに対し、コンピュータ科学はプログラミングに対するものです。

コンピュータサイエンスは理論的なものであり、情報と計算には科学的および数学的アプローチを採用しています。

コンピュータプログラミングは実用的であり、コンピュータプログラムのソースコードを設計、記述、テスト、デバッグ、および保守するプロセスです。

それらは異なりますが、関連するフィールドです。どちらもお互いから恩恵を受けています。

1
bbb

プログラミングが大工の場合、コンピュータサイエンスはアーキテクチャ/デザインです。

編集

詳細:大工仕事では、どのような順序で物を構築するか(フレーム、サブフロア、内壁、乾式壁など)に興味があります。構築にかかる時間を短縮し、後で変更できるようにするにはどうすればよいですか。

建築の場合(とにかくCSのような部分)、材料の機能は何か、この壁/屋根のスパンをサポートするために必要な梁の大きさなどに関心がありますか?

同様に、CSはコンピューターの理論的な機能に関するものであり、プログラミングはその知識の実用的なアプリケーションに関するものです。

1
Scott Whitlock

コンピュータサイエンス :これは、コンピュータ/計算手法による問題解決の研究です。

コンピュータプログラミング:コンピュータサイエンスの分野を構成するのは、この問題解決プロセスの一部です。コンピュータプログラミングは、コンピュータサイエンスのほんの一部です。

0
ramneet

コンピュータサイエンスの学位は範囲がはるかに広く、コンピューティングの背後にある理論をカバーしています。 A コンピュータプログラミングの学位 は、さまざまなプログラミング言語で学生を訓練することにより、学生のコーディングまたはプログラミングスキルの開発に重点を置いています。混乱している場合は、カリフォルニアカレッジサンディエゴでこれらの両方のプログラムの詳細を参照できます。これにより、これらの学位の範囲が明確になる場合があります。

0
user45390