컴퓨터 과학과 프로그래밍의 차이점은 무엇입니까?


32

나는 컴퓨터 공학과 프로그래밍을 처음 접했고 컴퓨터 공학과 프로그래밍 사이에 차이점이 있습니까? 그리고 당신은 대학에서 그들 중 하나 또는 둘 다 공부하기로 선택합니까?


42
유추 시간이 잘못되었습니다.
Mike Weller

10
건축과 건축의 차이점은 무엇입니까?
오디드

6
그들은 지질학과 도랑 파기만큼 멀리 떨어져 있습니다
Steven A. Lowe

27
컴퓨터 과학은 당신이 배우기 위해 지불하는 것입니다. 프로그래밍은 지불해야 할 일입니다.
jfrankcarr

5
차이점은 버블 정렬 대신 smoothsort를 사용하게 만드는 것입니다.
deadalnix

답변:


68

컴퓨터 과학은 컴퓨터가 할 수있는 일에 대한 연구입니다. 프로그래밍은 컴퓨터가 일을하도록하는 연습입니다.

이 과정이 CS 과정, 프로그래밍 과정, 다른 것 (예 : 소프트웨어 엔지니어링)인지 또는 위의 조합인지 알아 보려면 관심있는 대학에서 제공하는 과정 / 요강을 살펴보십시오. "컴퓨터 과학"으로 광고되는 많은 과정은 중요한 프로그래밍 구성 요소를 제공합니다.이 과정은 과정의 이론적 부분을 실제로 적용 할 수도 있고 자신을위한 것일 수도 있으므로 프로그램을 만드는 기술을 배울 수 있습니다.


1
아주 좋은 답변이지만, 질문의 실질적인 부분에 대한 답변은 아니지만;)
back2dos

@ back2dos 좋아, 나는 대답을 확장했다.

대부분의 컴퓨터 과학 과정은 이론적 CS와 전혀 관련이 없으며 TCS는 CS가 프로그래밍과는 달리 실제 CS와는 별개입니다.
Ben Brocka

3
CS (이름에도 불구하고)를 컴퓨터에 너무 가깝게 묶어야한다고 생각하지 않습니다. 무엇보다도 정보 연구입니다 . "컴퓨터"라는 용어는 정보 작업에 사용하는 대부분의 물리적 도구를 모두 포함하므로 거의 모든 정보 연구에는 컴퓨터 프로그래밍이 포함됩니다.
Tikhon Jelvis 2016 년

분류 체계는 정보 과학의 대가로 적합 할 수 있습니다. 그러나 CS에서 완벽하게 적합하다고 생각하지는 않습니다. 학제적인 관점에서 유용하지만 CS는 컴퓨터, IMO로 할 수있는 일에 대해 부분적으로 불가분의입니다. "컴퓨터"가 무엇이든, 더 일반적이지만 CS의 정의는 아닙니다.
Erik Reppen

36

경고 : '컴퓨터 과학'은 (적어도 미국에서는) 대학에 "프로그래밍"학위가 없기 때문에 현대에 헷갈리는 분야가되었습니다. 이는 프로그래밍에 관심이있는 사람들은 컴퓨터 과학 학위에 등록해야하며, 컴퓨터 과학 프로그램이 점점 더 프로그래밍을 강조한다는 반응에 따라야합니다.

즉, 컴퓨터 과학 자체는 강력한 수학 과학입니다. 전산 수학은 더 나은 용어 일 수 있습니다. 여기에는 그래프 이론, 알고리즘 복잡성, 형식 논리, 오토마타 및 일반적으로 입력 알고리즘에 대한 변환 또는 응답을 설명 할 수있는 논리 구조에 대한 연구가 포함됩니다. 고전적인 의미의 컴퓨터 과학자는 현재 아키텍처에 대한 구현 세부 사항을 몰라도 모든 컴퓨팅 시스템 (현대 컴퓨터 포함)에 적용되는 규칙에 대해 추론 할 수 있습니다. Computer Science의 강력한 배경 지식을 통해 효율적이고 확장 가능한 알고리즘을 개발 (또는 리콜)하고 논리적 축소를 예측하며 다루기 쉬운 것에 대해 합리적인 추론을 할 수 있습니다.

반대로 프로그래밍프로그래밍 언어 를 사용 하여 알고리즘 을 기계가 수행 할 수있는 것으로 변환 할 때 수행하는 작업입니다. (이것은 컴퓨터 과학과의 밀접한 관계, 그리고 혼란이 많이 발생하는 곳을 분명하게 보여 주어야합니다.) 프로그래머 (환경과 언어에 관계없이)는 거의 모든 알고리즘을 인간의 형태로 변환 할 수 있어야합니다. -코드를 작성하여 기계에서 읽을 수 있습니다. 프로그래밍에 대한 강력한 배경 지식 (대부분의 CS 학위가 제공 할 것임)을 통해 더 나은 코드를 작성할 수 있습니다. 더 나은 코드는 다른 사람들이 더 잘 이해하고 구현하는 알고리즘을 더 잘 표현할 수 있습니다.

물론 많은 양의 누화가 있으며, 하나의 높은 수준의 경험은 다른 사람의 경험을 개발하는 것과 밀접한 관련이 있습니다 .CS 전공은 거의 항상 유능한 프로그래머이며 숙련 된 프로그래머가 태어났습니다. CS의 많은 원칙. 물리 및 공학을 생각하십시오.

차이점을 기억하는 좋은 방법은 다음과 같습니다. 컴퓨터가 작동하는지 확인하려면 프로그래밍이 필요합니다. 연필과 종이로 할 수 있다면 컴퓨터 과학입니다.


4
마지막 문장은 문지르지 않습니까? 초승달 모양의 양피지 주위를 흔드는 곱슬 머리와 초크 한 손가락으로 울퉁불퉁 한 교수들의 이미지를 불러 일으키며 "컴퓨터 과학은 천문학이 망원경에 관한 것보다 컴퓨터에 관한 것이 아닙니다"와 같은 인용문을 떠올리게합니다. 과학이 결국 어떻게 기계로 만들어 지지 않는다면 , 요점은 무엇입니까? 올바른 마음에 어떤 천문학자가 망원경을 쳐다 보지 않습니까?
Robert Harvey

지난 30 년 동안 "알고리즘을 기계가 할 수있는 것으로 변환"하라는 요청을받은 적이 없다고 생각합니다. 당신이 생각하는 것은 프로그래머가 아니라 컴파일러입니다.
gnasher729

2
@ gnasher729 자, "목록의 각 단어에 대해 A로 시작하면 시작 부분으로 옮깁니다."라는 알고리즘이 있다고 가정하겠습니다. 어떤 컴파일러를 추천 하시겠습니까?
shanef22

18

컴퓨터 과학은 정보, 계산의 이론적 기초, 구현 및 적용을위한 실용적인 기술을 다룹니다. http://en.wikipedia.org/wiki/Computer_science

~

컴퓨터 과학은 천문학이 망원경에 관한 것보다 컴퓨터에 관한 것이 아닙니다. Edsger Dijkstra

프로그래밍은 컴퓨터 프로그램을 만드는 기술입니다.


11

컴퓨터 과학은 제 관점에서 물리학과 같은 어려운 과학이어야합니다.

여기에는 컴파일러 및 컴파일러 생성기, 하드웨어 아키텍처 개념, 다양한 형태의 숫자 시스템, 알고리즘 및 알고리즘 효율성 / 성능 및 프로세서의 산술 연산에 대한 이론에 대한 연구가 포함됩니다. 대학에서 CS를 할 때 우리는 컴파일, 링크 및 해석 등의 차이점에 대해 배우고 어셈블러와 많은 시간을 보냈습니다.

이 중 많은 부분이 프로그래밍에 의해 수행되었습니다. 즉, 코드를 작성하여 인터프리터를 통해 컴파일 또는 실행 된 다음 코드를 작성하여 문제를 해결하기위한 결과를 생성합니다. 즉, 프로그래밍은 Computer Science의 지식으로 설명 할 수있는 문제를 해결하는 행위입니다. 그것은 순수 수학 / 응용 수학 스플릿입니다.

프로그래머가되기 위해 컴퓨터 과학 학위가 필요하지는 않지만 CS 배경을 가진 프로그래머는 컴퓨터 프로그램의 동작에 대해 더 깊이 이해할 것입니다.


1
나는 CS 학생들이 다른 프로그래밍 과정의 학생들보다 낫다고 생각하지 않습니다.
Tjaart

5
나는 잘 말하지 않았다 , 나는 더 깊은 이해를 가질 것이라고 말했다.
mcfinnigan

@mcfinnigan 나는 더 잘못 안내했다. 이론적으로 자신을 접지 CS 학생들은 그들이 실제로 컴퓨터가 할 수 있는지 알 수있는 경험이 없기 때문에 덜 이해하는 경향이 , 또는 얼마나 다양한 언어에 거기에 도착하는 방법을.
이즈 카타

3
다시, 당신은 나를 오해합니다. 실제 CS 이론 중 일부를 얻는 데 시간을 투자 한 프로그래머 는 특정 상황에서 왜 세트가 목록보다 나은지, 왜 부동 소수점이 까다로운 지 알 수 있다고 말합니다 .
mcfinnigan

2
@TikhonJelvis : 엔지니어링은 수학을 사용하지만 두 단계 만 거치면됩니다. CS는 수학의 한 가지입니다.
케빈 클라인

3

"컴퓨터 과학과 소프트웨어 공학의 차이점은 무엇입니까?" 결국 둘 다 프로그래밍과 관련이 있습니다.

컴퓨터 과학은 계산이 무엇인지, 불가능하고 불가능한 지에 대한 이론적 연구입니다. 그것은 Godels 정리와 Halting 문제와 같은 것을 봅니다.

소프트웨어 엔지니어링은 설계 및 유지 보수가 가능한 작업을 수행하는 프로그램을 작성하는 방법입니다.


아니요. 왜 그의 질문을 다시 말합니까? 그는 자기가 요구 한 것을 물었다. 소프트웨어 공학은 프로그래밍과 다르며 다른 나라 (예 : 미국과 캐나다)에서 다른 것을 의미하기 때문에 논쟁의 여지가 있습니다
Douglas Held

2

컴퓨터 과학 은 프로그래밍 이론입니다. 프로그래밍은 구현입니다.

컴퓨터 과학은 ... 컴퓨터 와 그 응용에 대한 과학적이고 실용적인 접근입니다. 컴퓨터 과학자는 계산 이론과 계산 시스템 설계를 전문으로합니다.

서브 필드는 다양한 이론 및 실제 분야로 나눌 수 있습니다. 컴퓨터 복잡도 이론 (계산 문제의 기본 속성을 탐구하는)과 같은 일부 분야는 매우 추상적 인 반면 컴퓨터 그래픽과 같은 분야는 실제 시각적 응용 프로그램을 강조합니다. 또 다른 분야는 계산 구현의 과제에 중점을 둡니다. 예를 들어, 프로그래밍 언어 이론은 계산 기술에 대한 다양한 접근법을 고려하는 반면, 컴퓨터 프로그래밍 자체에 대한 연구는 프로그래밍 언어 및 복잡한 시스템의 사용에 대한 다양한 측면을 조사합니다. 인간과 컴퓨터의 상호 작용은 인간이 컴퓨터와 계산을 유용하고 유용하며 보편적으로 액세스 할 수있게하는 문제를 고려합니다.


12
저는 솔직히 컴퓨터 과학이 프로그래밍 그 이상이라고 믿습니다.
Ubermensch

2
@ Ubermensch : 솔직히 말하면 프로그래밍은 컴퓨터 과학 이상의 것입니다.
Michael Borgwardt

1
@MichaelBorgwardt 사실, 우리의 견해는 모두 맞습니다. 그러나 컴퓨터 과학은 여전히 ​​프로그래밍보다 훨씬 큽니다. Niehls Bohr의 유명한 인용문 "작은 진실과 큰 진실의 두 가지 종류가 있습니다. 그 반대는 거짓이기 때문에 작은 진실을 인식 할 수 있습니다. 큰 진실의 반대는 또 다른 진실입니다."
Ubermensch

@Ubermensch 당신의 믿음은 사실입니다. 컴퓨터 과학은 단순한 프로그래밍 이론이 아닙니다. 컴퓨터 과학은 컴퓨터 이전에있었습니다.
Casey Patton 2016 년

1

프로그래밍이 목공이라면, 컴퓨터 과학은 건축 / 디자인입니다.

편집하다

더 많은 정보 : 목공에서는 프레임, 서브 플로어, 내부 벽, 건식 벽체 등의 물건을 짓는 순서와 같은 것에 관심이 있습니다. 구성하는 데 시간이 덜 걸리지 만 나중에 수정할 수 있도록 빌드하는 방법

건축 (어쨌든 CS와 같은 부분)의 경우, 재료의 기능이 무엇인지,이 벽 / 지붕 범위를 지원하기 위해 얼마나 큰 빔이 필요한지 등의 문제에 관심이 있습니까?

마찬가지로 CS는 컴퓨터의 이론적 기능에 관한 것이며, 프로그래밍은 해당 지식의 실제 적용에 관한 것입니다.


3
나쁜 비유. 프로그래밍이 목공이라면 소프트웨어 디자인은 아키텍처 / 디자인입니다. 컴퓨터 과학은 그런 점에서 덴드로 지 (dendrology)와 비슷하거나 일반적으로 생물학입니다.
back2dos

좋아, 어쩌면 나는 분명하지 않았기 때문에 왜 당신이 비유가 효과가 없다고 생각하는지 설명하겠습니다. 재료의 기능에 관심을 갖는 것은 재료 과학이며, 구조의 안정성은 정적입니다. 그들 중 어느 것도 실제로 디자인에 관한 것이 아니며 단지 디자인을 제한합니다. 디자인 (소프트웨어 또는 건물 등)은 모든 요구 사항과 제약 (기술, 재무, 심리적 등)을 취하고이를 충족하는 솔루션을 설계하는 것입니다.
back2dos

1

물리학은 기계 공학과 마찬가지로 컴퓨터 과학은 프로그래밍입니다.

컴퓨터 과학은 이론적이며 정보에 대한 과학적이고 수학적인 접근 방식을 취하며 계산입니다.

컴퓨터 프로그래밍은 실용적이며 컴퓨터 프로그램의 소스 코드를 디자인, 작성, 테스트, 디버깅 및 유지 관리하는 프로세스입니다.

그것들은 다르지만 관련 분야입니다. 둘 다 서로 이익을 얻었습니다.


0

컴퓨터 과학의 학위는 범위가 훨씬 넓고 컴퓨팅 배후 이론을 다룹니다. 반면 에 컴퓨터 프로그래밍 학위 는 학생들이 다른 프로그래밍 언어로 훈련함으로써 코딩 또는 프로그래밍 기술을 개발하는 데 중점을 둡니다. 혼란 스러우면 California College San Diego에서이 두 프로그램의 세부 정보를 찾아 볼 수 있습니다. 그것은 당신에게이 학위의 범위에 관한 명확성을 제공 할 것입니다!


0

컴퓨터 과학 : 컴퓨터 / 계산 방법으로 문제를 해결하는 연구입니다.

컴퓨터 프로그래밍 : 컴퓨터 과학 분야를 구성하는 것은이 문제 해결 과정의 일부입니다. 컴퓨터 프로그래밍은 컴퓨터 과학의 작은 부분 일뿐입니다.


-1

프로그래밍은 사람들에 관한 것입니다. 사람들은 코드를 읽고 쓰고 유지합니다. 컴퓨터 과학은 수학에 관한 것입니다. 알고리즘을 구현하고 설명합니다.


3
@ SK-logic 및 DeadMG. 이 모든 의견을 삭제했습니다. 당신이 토론 (또는 실제로 논쟁)을하고 싶다면 다른 곳으로 가져 가십시오.
ChrisF

1
조금 좁습니다. 적어도 우리 대학 의 "알고리즘, 기계 및 사람들" 연구실은 동의하지 않기를 원합니다. :) 이 실험실에는 CS 전문가 중 일부가 포함되어 있습니다. 또한 모든 HCI 사람들이 도처에 있습니다. 나는 조금 애매하지만 CS는 알고리즘과 수학보다 더 광범위합니다.
Tikhon Jelvis 2016 년

-1

프로그래밍 (개발)은 돈 버는 것입니다. 과학은 새로운 것을 발견하는 것입니다.


7
누군가 오픈 소스 커뮤니티에 알리는 것을 잊었습니다.
webbiedave

2
@webbiedave-글쎄, 거기에 하나 또는 두 개의 진정한 이타주의자가있을 수 있지만, 결국 오픈 소스는 돈을 버는 것입니다. 저는 오픈 소스 프로젝트에 참여하는 대부분의 사람들이 자신의 기술과 CV를 향상시키고 미래의 소득 잠재력을 높이기 위해 노력한다고 말합니다. 많은 오픈 소스 프로젝트는 또한 상용 / 기업 버전을 만들어 프로젝트에서 수익을 창출합니다. 따라서 오픈 소스 커뮤니티는 돈을 벌기 위해 많은 노력을
기울이고 있습니다

과학도 마찬가지입니까? ;)
webbiedave

@webbiedave-아니요, 동의하지 않습니다. 돈은 과학의 부산물 일 수도 있지만, 주요 목표는 아닙니다. 과학은 그 자체를위한 발견에 관한 것입니다. 회사는 R & D를 수행하지만 새로운 것을 발견하는 것이 아니라 이미 발견 한 것을 수익을 창출하는 것입니다.
pap

대부분의 과학자들이 더 많은 돈을 원하는 유일한 이유는 더 많은 연구를 할 수 있기 때문입니다. 오픈 소스도 마찬가지라고 생각합니다. CV를 향상시키기 위해 오픈 소스를 사용하면 저에게 실패의 길처럼 들립니다. 호기심, 발견 및 가려움증에 관한 것이어야합니다.
Tjaart
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.