좋은 프로그래머가 되려면 수학에 능숙해야합니까? [닫은]


78

기존의 지혜는 훌륭한 프로그래머도 수학에 능숙하다는 것을 암시하는 것 같습니다. 또는 그 둘은 어떻게 든 본질적으로 연결되어 있습니다. 내가 읽은 많은 프로그래밍 서적은 수학 문제에 대한 솔루션이거나, 이러한 예제가 대부분의 사람들에게 적합한 것처럼 수학과 관련이있는 많은 예제를 제공합니다.

내가 떠 다니고 싶은 질문은 : 좋은 프로그래머 가 되려면 수학에 능숙 해야합니까?


1
@Mark 반드시 그런 것은 아닙니다. 주제를 배우고 좋아하는 것은 매우 다른 두 가지입니다.
Maxpm

3
당신은 왕입니까? 아니면 쌍둥이? 그렇지 않다면 자신을 언급 할 때 "I"를 고수하는 것이 좋습니다.
drxzcl

1
@jk - 당신은 올바른 가장 가능성이 physics.about.com/od/alberteinstein/p/einsteinpro.htm는 여전히 프로그래밍 예술의 좋은 금액이 있다고 생각; P
Garet Claborn

3
나는 수학을 좋아하지 않는다고 생각했다. 나중에 인생의 구문에 만족하지 못한다는 것을 깨달았습니다.
MrFox

1
모든 프로그래머는 항상 수학을 사용하지만 학교에서 가르치는 수학과는 너무 다르기 때문에 수학을 깨닫지 못합니다. 신중한 수학, 람다 미적분학, 부울 대수, 논리 (!)는 우리가 매일 사용하는 고급 수학 개념입니다.
rotman

답변:


83

나는 당신이하고 싶은 프로그래밍 유형에 달려 있다고 생각합니다. 비즈니스 세계에서 프로그래머가되는 한 대답은 '아니오'라고 말할 것입니다. 고급 수학을 몰라도 훌륭한 프로그래머가 될 수 있습니다. 수학을 다룰 필요가있는 경우, 공식은 일반적으로 비즈니스 요구 사항에 정의되므로 코드로 구현하기 만하면됩니다.

반면에 저급 프로그래머가되고 싶거나 3D 그래픽 엔진을 만들려면 수학이 큰 역할을합니다.


6
저는 수학과 물리학 박사들이 끔찍한 코드를 작성하는 것을 보았습니다. 이러한 기술은 어느 정도 중복되지만 별도의 원칙입니다.
MrFox

133

나는 그레인에 반대하고 그렇습니다. 당신은 수학 마인드가 필요합니다 . 대부분의 사람들은 수학을 산술 또는 암기적인 수식을하는 것으로 생각합니다. 이것은 훌륭한 작가가되기 위해 완벽한 철자 나 특별한 어휘가 필요한지 묻는 것과 같습니다.

작문은 의사 소통에 관한 것이며, 수학 / 프로그래밍은 명확하고 논리적 사고의 과정에 관한 것입니다 (실수를 할 수없는 방식, 방정식의 균형이 맞지 않거나 프로그램이 컴파일되지 않는 방식). 특히 논리적 사고는 다음과 같이 나타납니다.

  • 숫자의 차이를 추정 / 이해하는 능력 : O (n ^ 2) vs O (lg (n)), KB 대 MB 대 GB의 직관적 인 감각, RAM이 디스크와 비교되는 속도. KB가 GB에 비해 얼마나 작은 지 알지 못하면 중요하지 않은 것을 최적화하는 데 시간을 낭비하게됩니다.
  • 함수 / 함수 프로그래밍 (f (x) = x ^ 2 방정식이 그 방법을 작성하는 방법과 매우 유사합니까? "알고리즘"과 "함수"라는 단어는 수학 세계에서 훨씬 이전에있었습니다. 첫 번째 컴퓨터가 태어났습니다 :-))
  • 자신의 방정식을 만들고 재정렬하는 기본 대수, 평균, 기본 통계

그래서, 당신 은 사실과 이론의 모음이 아니라 프로그램이하고있는 것에 대한 정신적 모델을 구성하고 조작 할 수 있는 수학 마인드 가 필요하다고 말할 것 입니다. 그래픽이나 데이터베이스와 같은 특정 필드에는 필요한 특정 사실이 있지만 "수학에 능숙하다"는 본질이 아닙니다.


1
수학 전공 대 수학 사고 방식 : 그것은 모든 물리학 공식을 아는 것과 20 야드 떨어진 판에서 고무공을 정확하게 튕기는 것의 차이와 같습니다!
TehShrike

9
나는 많은 좋은 프로그래머가 :-) 체스를 재생하거나 이동하는 방법을 알고 추가 할 것입니다
xanatos

1
컴퓨터 코드 자체는 스스로 해결하는 것이 아니라 컴퓨터에 맞게 설정하는 것이지만 엄청나게 많은 컴퓨터 코드가 기본적으로 대수학입니다. 대수를 가지고 집에 있지 않다면 어떻게해야 괜찮은 일을 할 수 있습니까?
Loren Pechtel

18
수학적 사고는 프로그래밍의 열쇠입니다. 나는 그것을 정확하게 강조하기 위해 투표를 추가하고 있습니다.
거스

4
+1 수학 은 우리의 기술의 기초이기 때문에 프로그래밍 언어를 이해하는 데 필수적입니다. 우리가 매일 사용하는 대부분의 프로그래밍 언어 구조는 람다 미적분학과 같은 수학 분야에서 제외됩니다.
MattDavey

53

다양한 프로그래밍 분야가 있으며 많은 분야에서 특히 높은 수준의 수학 지식이 필요하지 않습니다. 3D 엔진을 작성할 수는 없지만 비즈니스 및 웹 응용 프로그램을 개발할 수는 있습니다. 대부분의 컴퓨터 프로그램에서 가장 일반적인 수학적 연산은 숫자를 하나씩 증가시키는 것입니다.

나는 수학을 특별히 좋아하지 않았거나 수학에 능숙하지 않다는 것을 행복하게 인정할 것입니다. 나는 주로 웹 응용 프로그램을 개발하는데 그다지 많은 수학이 필요하지 않습니다. 논리적으로 생각하고, 문제를 여러 덩어리로 나눌 수 있으며, 관련된 다양한 기술과 프레임 워크에 대한 폭 넓은 이해가 가능합니다.

프로그래머 는 완전히 새로운 알고리즘을 고안하는 것보다 기존 알고리즘 을 구현해야 할 가능성이 훨씬 높습니다 . 복리 관심사를 해결해야합니까? 직접 알아낼 필요는 없으며 수식을 찾아 적용하면됩니다. 대부분의 문제는 이미 해결되었으므로 선택한 언어로 솔루션을 구현하는 방법 만 알고 있으면됩니다. 수학을 잘하는 것이 유리 하지 않다고 말할 수는 없습니다 . 그것은 꼭 필요한 것은 아닙니다 .

80 년대 중반에 집에있는 컴퓨터가별로 일반적이지 않은 학교에있을 때 나는 종종 수학 숙제를 해결하기위한 프로그램을 작성했습니다. 나는 종종 내 머리에 그것을 할 수 없었지만 소프트웨어 루틴으로 필요한 모든 공식을 적용 할 수있었습니다. 직각 삼각형의 가장 긴면을 해결하기 위해 다른 피타고라스가 될 필요는 없으며 a² + b² = h²선택한 언어 로 코딩 할 수 있어야합니다 .


3
옵션 가격 책정이나 이와 유사한 것을하지 않는 한 재무 및 회계는 그렇게 나쁘지 않습니다 .

5
Chris는 지적하지만 재무 응용 프로그램을 사용하더라도 수식을 고안하는 것보다 수식을 구현할 가능성이 높습니다.
Dan Diplo

2
@ Mark-True, 그러나 반올림 문제를 이해하는 것이 올바른 유형을 사용하는 것이 더 중요하다는 말입니다. 예를 들어 통화 값에 대해 부동 소수점보다 십진수가 낫다는 것을 배우기 위해 수학에 능숙하지 않아도됩니다. 그리고 수학자가 사용할 올바른 데이터 유형을 자동으로 인식하지 못한다고 생각합니다. 이는 학습의 문제입니다.
Dan Diplo

3
@ SK-logic : 더 엄격하게 말하면 컴퓨터가하는 모든 일은 논리적 입니다. 이러한 논리 연산 중 일부는 수학으로 해석됩니다 (일부 사람들은 논리가 수학의 일부라고 주장하며 일부 철학자들의 분노에 가깝습니다).
Donal Fellows

3
@Donal Fellows, 공식 논리는 수학입니다. 그리고 철학자들은 수학에 대한 역사적 기여에 대해 인정을 받았으며 (예를 들어 '모노 톨 로지'와 같은 이상한 것들을 발명함으로써) 수학자들에게도 인정을 받았습니다.
SK-logic

30

수학에 능숙 할 필요는 없습니다. 그러나 논리와 문제 해결에 능숙해야합니다. 그러나 논리와 문제 해결에 능숙한 사람들은 보통 수학에도 능숙합니다. 나는 그것이 실제로 수학의 유형에 달려 있다고 말할 것입니다. 당신은 미적분학 (나 같은)에서 끔찍할 수 있고, 여전히 좋은 프로그래머 (나 같은)가 될 수 있습니다. 그러나 Discrete Math and Set Theory에 문제가 있다면 프로그래밍의 많은 측면이 상당히 어려울 것입니다.


"문제 해결"에 능숙하기 위해 논리에 능숙 할 필요는 없습니다. 대부분은 아니지만 논리와 관련이없는 휴리스틱을 사용하여 많은 문제를 해결할 수 있습니다.
ElGringoGrande 1

1
당신은 좋은 프로그래머인지 확신합니까? :)
Russell

17

왜 수학을 좋아하지 않는지 자세히 살펴 보는 것이 중요하다고 생각합니다.

학문 분야에 대한 싫어하는 것은 대개 학교에서 일어나는 일이며 교사와의 갈등, 과목 내 자신의 능력에 대한 자신감 부족 또는 동료 집단의 압력에 의한 것일 수 있습니다.

프로그래밍! = 수학. 그것은 심지어 수학처럼 "느끼지"않습니다 (그리고 공식적인 연구가 끝날 무렵에도 수학을 즐겼습니다). 수학에서 사용할 수있는 많은 기술은 프로그래밍에도 유용하지만, 많은 프로그래머가 대부분 자신을 가르칩니다. 학교에서 수학을 좋아하지 않으면 프로그래밍 능력이나 즐거움에 거의 영향을 미치지 않습니다.


나는 수학에 관해 많은 나쁜 가르침을 보았다. 그것의 본질은 문제를 알려진 문제로 변형 한 다음 여분의 단어없이 "해결됨"이라고 말합니다. 그러나 교육 과정에서 더 낮은 수준으로 진행하기 위해 증거를 다시 구현해야 할 수도 있습니다.
Balog Pal

16

수학은 프로그래밍이 인간과 컴퓨터 사이의 보편적 인 언어이므로 매우 밀접한 관련이 있습니다. 높은 수준의 프로그래밍을 위해서는 많은 수학을 알 필요가 없지만 많은 것이 고급 프로그래밍 개념에 대한 이해를 도울 것입니다. 더 낮은 수준의 프로그래밍 (시스템 또는 장치 프로그래밍)을 수행하려는 경우 훨씬 더 많은 수학을 알아야합니다.


11
+1. 신호 처리, 머신 러닝, 컴퓨터 비전, 3D 렌더링, 물리 시뮬레이션, 애니메이션, 계산 기하학, 암호화 및 아마도 내가 생각할 수없는 다른 많은 분야와 같은 "고수준"작업을 수행하려면 수학이 필요합니다. 지금.
nikie

2
@ nikie : 예,하지만 수학 이 적용됩니다 . 큰 차이. ^^
gablin

어. 실제로 수학은 보편적 언어가 아닙니다. 논리는. 그리고 논리는 철학자들의 영역입니다. 어쨌든 컴퓨터가 실제로 어떻게 작동하는지에 관해서는 수학보다 전기 / 전자 공학 및 형식 철학을 아는 것이 좋습니다. 컴퓨터 과학을하고 있다면 경력 자체만으로는 프로그래밍이 아니라면 수학 자체 만 있으면됩니다.
RibaldEddie

14

좋은 하나? 거의 없을 것입니다. 대부분의 디자인 패턴은 수학적 개념에서 적어도 몇 가지 기초를 가지고 있습니다. 변수, 루프, 프로 시저 및 객체와 같이 프로그래밍에 필수적인 것은 대수학, 미적분학 및 집합 이론과 같은 수학 분야의 개념과 유사합니다.

또한 컴퓨터 과학 은 수학의 하위 집합 이라는 점을 고려하십시오 . 모든 프로그래밍의 기반이되는 알고리즘과 형식 논리는 기본적으로 수학 입니다.

수학을 싫어한다면 프로그래밍 을 싫어할 것 입니다.


13

거의 모든 사람들이 대답했다 : "좋은 프로그래머가되기 위해 수학을 알아야합니까?" 이에 대한 정답은 많은 사람들이 이미 말했듯이 "아니요, 실제로는 아니지만 도움이됩니다"입니다.

그러나 그 질문에 대한 나의 해석은 "수학적 적성과 프로그래밍 적성 사이에 강한 상관 관계가 있는가?"입니다. 이에 대한 정답은 "그렇습니다."입니다. 대수학, 기하학 및 미적분학을 통해 어려움을 겪고 있다면 추상화를 다루거나 논리적으로 생각하는 데 능숙하지 않을 것입니다. 수학에 나쁜 사람이라면 아마도 훌륭한 프로그래머가 아닐 것입니다. (당신이 시도해서는 안됩니다.)


11

프로그래밍하는 내용에 따라 다릅니다. 예를 들어, 3D 게임 엔진은 적절한 수학적 개념에 대한 지식 없이도 어느 정도의 일관성을 유지하기가 매우 어렵습니다 (가능하지는 않더라도).


11

"좋아요"와 "적합하다"는 완전히 다른 것입니다. 따라서 적절하게 수치를 계산하면 수학을 좋아 해야하는 이유를 알 수 없습니다 .

그러나 프로그래밍은 수학의 기초가되며 조만간 거의 모든 사소한 개발에는 계산이 필요합니다. 여기서 숨길 수는 없습니다.

모든 프로그래밍에는 논리 (수학 기반)가 포함되며, 가장 현대적인 프로그래밍에는 아마도 이론이 명확하지 않은 경우 (예 : 명확하지 않더라도) SQL과 같은 것들이 포함되며 그렇지 않은 경우에는 그렇지 않을 수 있습니다. 좀 더 명시 적으로 수학을 기반으로하는 영역 (게임 프로그래밍과 같은) (렌더링-수학, AI-> 확률 및 임의성-수학 ...)이 계속됩니다.

위의 결론은 숫자에 익숙해 져야한다는 것입니다. "세계에는 10 가지 유형의 사람들, 바이너리를 이해하는 사람들, 모르는 사람들"이 왜 재미 있는지 알아야합니다. 그러나 "2 + 2 = 5 ... 매우 큰 값 2"인 경우에는 예외입니다.


+1, 이것은 정말로 우울합니다. 나는 그 농담을 실제로 웃었다.
Ben

10

수학의 기본 개념은 다음과 같은 알고리즘의 고안, 이해, 구현 및 사용입니다. 수학을 할 수 없다면 이런 일을 할 수 없기 때문이며, 이런 일을 할 수 없다면 효과적인 프로그래머가 될 수 없습니다.

일반적인 프로그래밍 작업에는 특별한 수학적 지식이 필요하지 않을 수 있습니다 (예 : 3D 그래픽 또는 물리 시뮬레이션과 같은 작업을 수행하지 않는 한 벡터 대수 및 미적분학이 필요하지는 않지만) 기본 기술 집합은 동일하며 능력이 부족합니다. 한 도메인에서 다른 도메인의 해당 능력 부족으로 일치합니다.


9

솔직히 말해서 저는 학교에서 끔찍한 수학 학생이었습니다. 대수는 당시에 저를 완전히 넘어서서 제가 그보다 D보다 높다고 생각하지 않습니다.

그러나 몇 년 후 전문 소프트웨어 개발자로 일한 후 대학으로 돌아가서 대수 과정을 수강했습니다. 놀랍게도, 그것은 내가 가진 가장 쉬운 수업이었고, 나는 그것에 A를 얻었습니다.

진실이었다 거의 모든 것이 대수식 때문에 프로그래밍, 대수 가르쳐.

아니, 당신은 그것을 시작할 필요가 없습니다. 도움이되지만 필수는 아닙니다. 수학을 가르치기위한 수단으로서 소프트웨어 개발에 대한 아름다운 점은 컴파일러, 디버거 및 실행 프로그램이 당신이 정답을 가지고 있는지 확인하는 훌륭한 방법이라는 것입니다. 이와 관련하여 디버깅은 특히 학습에 큰 도움이됩니다. 코드를 단계별로 실행하고 알고리즘 평가의 각 단계를 볼 수 있기 때문입니다.


소프트웨어를 개발한지 10 년 만에 학교에 돌아 왔고 같은 경험을하고 있습니다. 수년에 걸쳐 작성한 일부 기능과 대부분의 개념을 연관시킬 수 있으므로 미적분학 및 통계가 훨씬 더 쉽다는 것을 알게되었습니다. SQL 조인을 가르쳤을 때 벤 다이어그램이 알려지지 않았다고 생각할 때 화가납니다. 부정 행위와 같습니다.
Heath Lilley

7

그것은 확실히 당신이하고있는 일에 달려 있지만 분명히 아플 수는 없습니다.

예를 들어, 컴퓨터 과학을 전공 한 사람은 학위를 얻기 위해 많은 수학을 겪어야합니다. CS는 일반적으로 고급 수학 스타일 증명을 통해 입증 된 알고리즘과 정확성에 많은 초점을 둡니다. 많은 Universitie의 CS 프로그램은 수학 프로그램에 너무 가깝기 때문에 이중 전공이 몇 코스 떨어져 있습니다. 저는 소프트웨어 엔지니어링 전공으로도 수학 부전공에서 2 과목 떨어져있었습니다.

그러나 말하자면, 내가 배운 많은 증명, 데이터 구조, 검색 방법 및 알고리즘 정확성 항목은 학교를 마친 이후 실제로 직접 사용되지 않았습니다. 그러나 적어도 저에게 저수준에서 내가하는 일에 대한 좋은 기초와 더 나은 이해를 제공하지 못했다고 말하기는 어렵습니다.

당신이 그것을 어떻게 보더라도, 가장 낮은 수준에서, 당신이하는 모든 것은 수학으로 귀결됩니다.


7

수학없이 훌륭한 소프트웨어 개발자가 될 수 있습니까? 예, 그렇게 생각합니다. 사람들이 항상 이야기하는 일종의 영웅 프로그래머가 될 수 있습니까? 나는 그렇게 생각하지 않는다.

문제는 대부분의 영웅 영웅 프로그래머 (데니스 리치 (Dennis Ritchie))가 컴퓨터 과학 또는 수학 배경을 가지고 있다는 것입니다. 진정으로 훌륭한 프로그래머가 되려면 피상적 인 수준 이상의 알고리즘을 이해해야합니다. 즉, 공식적인 컴퓨터 과학에 깊이 빠져들게됩니다. 그리고 컴퓨터 과학은 단지 수학에 적용됩니다.

마찬가지로 람다 미적분학에 대한 이해는 OS 설계자 또는 언어 설계자에게 귀중합니다.


7

나는이 주제가 앞뒤로 논쟁되는 것을 보았다. 나는 수학에 학위를 가진 사람들과 함께 프로그램을 할 수 있다고 생각했고 1 년에서 2 년 내로 진로를 바 꾸었습니다. 내가 함께 일하는 것을 좋아했던 최고의 프로그래머 중 하나는 생화학 박사 학위를 받았으며 학교에서 공식 프로그래밍 / CS 수업을 수강하지는 않았지만 스스로를 가르치고 성공적인 소프트웨어 회사를 시작했습니다!

궁극적으로 훌륭한 프로그래머에게 유익한 것은 논리, 워크 플로를 이해하고, 예를 들어 배우고 솔루션을 연구 할 의향이있는 사람입니다. 또한 응용 프로그램을위한 비즈니스를 배워야합니다. 나는 회계를 이해하지 못하지만 회계 응용 프로그램을 작성하는 프로그래머가 싫습니다. 그들은 항상 잘못된 가정을하고 개발 속도를 늦 춥니 다.

어느 학교를가더라도 4 년 학교보다 학교에서 1 년 동안 더 많은 것을 배우게됩니다. 학교는 기본 기술 세트로 배우는 방법을 가르쳐 주지만 실제 경험은 시간이 지남에 따라 훨씬 더 가치가 있습니다.

경험은 최고의 교사이며, 비즈니스를 배우는 한 소프트웨어 개발에 수학을 적용해야 할 때는 괜찮을 것입니다. 또한 이전 게시물에서 언급했듯이 GIS 응용 프로그램과 같은 3D 그래픽 엔진 또는 그래픽 좌표 시스템에서 작업하지 않는 한 고등학교를 통해 배운 수학이 실제로 필요한 전부입니다.

회계 및 청구 시스템에서 일한 적이 있으며 일반 원장을 처리하거나 데이터 입력을 허용하기 위해 Log (x), SIN, COS 등을 파악할 필요가 없었습니다. 노화 저널은 "고등 수학"이 아니라 AP 문제를 평가하는 데 중요합니다.

그것에 대해 생각해 보니, 나는 책상에 과학 계산기가있는 회계사를 결코 만나지 않았습니다!


5

짧은 대답은 '아니요'입니다. 나는 그것이 약간의 신화라고 생각하지만 수학 문제는 일반적으로 컴퓨터로 해결하기에 적합하기 때문에 전파됩니다.

따라서 단일 / 대학에서 사람들은 수학 과목에서 해결해야하는 수학 문제를 겪게 될 것입니다. 그러나 일반적으로 찾을 수있는 것은 솔루션을 구현하는 데 필요한 코드보다 수학이 실제로 해결하기 어렵다는 것입니다.

현실 세계에 들어 서면 문제가 크게 해결되는 것을 점점 더 많이 발견하게 될 것입니다. 문제는 코드로 구현하는 것입니다.


5

수학을 배우거나 직접 수학을 만들어야합니다. 어느 쪽이든 어떤 형태로든 잘하는 것이 중요합니다.

만큼 당신이 값으로 작동하고 그들이 무엇을하고 있는지, 왜 당신이 할 수 있는지 이해할 수 있도록 그들이 수행 한 후 기존의 수학은 항상 필요하지 않을 수도있다. 때때로 그것은 심지어 방해가됩니다.

숫자 이외의 바이트 값을 시각화하는 다른 방법이 있지만 가장 확실한 방법입니다. 예를 들어 모든 값을 색으로 생각하는 프로그램을 작성하는 것이 가능할 것입니다.

오늘날의 프로그래밍은 1과 0을 다른 유형의 데이터로 표현할 수 있다는 점에서 많은 가치를 이끌어냅니다. 실제로 그 1과 0은 전혀 숫자가 아니지만 전기 파장 변화이지만, 수학은 물리학만큼 중요 하지는 않지만 ... 하지만 ... 다른 프로그래머들은 말하고 코딩합니다.

아직이 될 있지만 어려운 수학없이 좋은 프로그래머가 될 수 있습니다.


1
모든 값을 색상으로 생각하면 거의 더 의미가 있습니다. 스펙트럼의 한쪽 끝에서 너무 멀리
떨어지면

도 (0-256을 제외하고 0-360에서와 같이)도 도움이됩니다. =) 값이 얼마나 '완전'한지에 따라 색상이나도에 대한 수치 적 의미로 실제로 생각할 필요는 없습니다.
Garet Claborn

5

나는 이산 수학을위한 인트로 코스를 마쳤고, 프로그래밍 덕분 에 술어 논리 에 관한 거의 모든 것을 이미 알고 있음을 발견했다 . 새로운 것은 구문이었습니다. 기본적으로 부울을 사용하는 것입니다.

한마디로 : 아마도 수학을 명시 적으로 배울 필요는 없지만 , 프로그래머가 되어서야 깨닫지 않고 수학을 배웠을 것입니다. 즉, "좋은 프로그래머"가되면 실제로 수학자이기도합니다 (어느 정도).

카레 - 하워드의 대응은 기본적으로 그것을 증명하고 특정 컴퓨터 프로그램들이 같은 일을 쓰는 다른 방법입니다, 즉, "동형"것을 말한다 : 나는 무엇을 의미하는지 설명한다. 물론, 이것은 실제로 이것보다 더 복잡하지만, 저는 수학자가 아니므로 이것이 제가 설명 할 수있는 가장 좋은 설명입니다. 잘만되면 그것은 너무 멀리 떨어져 있지 않습니다.

요약하면 CS에서 많은 필드를 수행 할뿐만 아니라 프로그래밍에는 많은 수학이 필요하지만 기본 프로그래밍 아이디어 (예 : 부울)도 기본적으로 변장 된 수학입니다.


4

이것은 대답하기 매우 어려운 질문이며 많은 논쟁을 불러 일으킬 것입니다.

이 질문이 어려운 이유 중 하나는 어떤 유형의 작업을 수행 하느냐에 부분적으로 의존하기 때문입니다. 대부분의 비즈니스 응용 프로그램에 관련된 수학은 많지 않으므로 대수 및 비즈니스 수학에 대한 확실한 이해를 얻을 수 있습니다. 그러나 고급 응용 프로그램의 경우 고급 수학이 필요하므로 미적분학, 선형 대수학 등을 제대로 이해해야합니다.

그러나 그것은 프로그래밍 자체의 연습을 위해 어느 정도의 수학이 여전히 필요하다는 점에서 방정식의 일부일뿐입니다. 기본 대수뿐만 아니라 기본 프로그램을 작성하려면 논리에 익숙해야한다는 것은 말할 필요도 없습니다. 주어진 문제에 대해 좋은 알고리즘을 사용하는 방법을 결정할 수 있도록 이산 수학의 특정 측면에 대한 이해가 필요하지만 기본 프로그램을 작동시키는 것 이상을 살펴보십시오.

그래도 질문의 핵심으로 돌아갑니다. 저는 개인적으로 당신이 훌륭한 프로그래머가되기 위해 수학자가 될 필요는 없다고 생각합니다. 그러나 훌륭한 일반 프로그래머가 되려면 수학에 익숙해야한다고 생각합니다.


4

물론 이죠

밀 비즈니스 프로그래밍을 실행하더라도 수학에 약간의 기술이 필요합니다.

공장 경영 프로그램을 운영하려면 데이터베이스 기술이 필요합니다. 훌륭한 데이터베이스 프로그래머가 되려면 데이터베이스 작동 방식과 쿼리 프로세서가 쿼리를 변환 할 때 사용하는 알고리즘에 대해 이해해야합니다. 한계와 미분에 대한 이해가 없거나 (또는 ​​라인 y = x가 라인 y = x ^ 2와 두 번 교차한다는 기본 이해도없이) 해시 일치 내부 조인 쿼리 계획과 중첩 루프 조인을 정확하게 비교하는 것은 불가능합니다. 쿼리 계획.

또한, 훌륭한 프로그래머는 게임, 시뮬레이션, 임베디드 개발, 컴파일러, 운영 체제, 웹 컨텐츠, 데이터베이스 등을 조금 연구하면 모든 영역에서 일할 수 있습니다. 모든 것을하는 법을 빠르게 배울 수 있으려면 적절한 수학 배경이 필요합니다.

나는 다음과 같은 시점에서 어느 정도 경험이 있어야한다고 말하고 싶습니다.

  1. Calc의 3 학기
  2. 차이 Eq
  3. 선형 대수
  4. 현대 대수
  5. 기본 확률, 계산 및 통계

4

수학은 단순한 공식 그 이상입니다. 집합 이론에 대한 수학적 원리를 이해하는 것은 효율적인 데이터 구조 사용법의 복잡성을 이해하는 것과 같이 유형 시스템에서 복잡한 개념을 파악하는 데 매우 유용합니다.

그래프 이론은 많은 프로그래밍 문제를 그래프로 모델링 할 수 있으므로 매우 유용합니다. 비즈니스 응용 프로그램을 개발할 때 가장 짧은 경로 이론이 내가 가진 끔찍한 문제에 대한 우아한 해결책을 제공하고 있음을 알게되어 매우 놀랐습니다!


4

저는 항상 프로그래밍이 수학 일 뿐이라고 생각 했습니다.

고등학교 대수처럼 보이지 않습니다.


4

수학은 프로그래밍의 전실입니다.

추상화, 모델, 함수의 "개념화", 변형 및 시간 개념에 대한 레이어 작업을 수행 할 수있는 수학은 모든 것을위한 완벽한 교육 기반입니다.

수학없이 프로그래밍에 대한 올바른 사고 방식을 개발하는 것이 가능하지만 훨씬 어렵습니다.

그러나 모든 분야의 이름과 주어진 정리를 증명할 수있는 방법을 아는 것은 수학을 이해하는 것만이 중요합니다. 따라서 실제로 이해하지 않고 모든 것을 배웠기 때문에 수학에서 좋은 점수를 받았더라도 여전히 프로그래밍에 어려움을 겪을 것입니다.


4

수학 지식은 게임, 인공 지능, 컴퓨터 그래픽 등과 같은 일부 응용 프로그램에는 유용하지만 수학은 공식이나 복잡한 방정식 이외의 것을 가르쳐줍니다.

수학을 배우는 것은 새로운 프로그래밍 언어를 배우는 것과 같습니다. 실제로 프로그래밍은 수학에 적용됩니다. 새로운 언어를 배우면 더 나은 프로그래머가 될 수있는 많은 것을 배우게됩니다. 수학과 다르지 않지만, 실제로 수학을 익히면 더 나은 프로그래머가 될 것입니다. 고급 수학을 직장에서 사용하지 않더라도 말입니다.

그 이유는 간단합니다. 수학은 다른 눈으로 세상을 보도록 가르쳐줍니다. 프로그래밍하지 않아도 다양한 접근 방식으로 문제를 해결하는 방법을 알려줍니다. 이 새로운 사고 방식은 확실히 당신이 더 나은 일을 할 수있는 길로 이끌어줍니다.

프로그래밍은 예술입니다. 수학은 예술입니다. 둘 다 결합하면 더 나은 아티스트가 될 것입니다.


프로그래밍은 기본적으로 적용되는 논리이며 실제로 수학도 적용되는 논리입니다.
RibaldEddie

3

아니.

대부분의 과학 분야와 마찬가지로, 특히 효율성과 같은 것을 평가할 때 수학 개념을 잘 이해하는 것이 도움이 될 것입니다. 그러나 대부분의 프로그래밍 작업에서 수학 능력은 해결하려는 문제가 수학과 관련된 경우에만 관련이 있습니다.

컴퓨터는 수학에 능숙하기 때문에 초기 컴퓨터는 많은 복잡한 수학 작업과 관련된 '불쾌한 작업'을 수행하는 데 광범위하게 사용되었습니다. 소프트웨어의 많은 여전히 않는 경우 당신은 더 나은 프로그램을 작성 도움이 될 것입니다 수학에서 좋은으로에 복잡한 수학 문제를 해결하지만, 그것은 당신에게 좋은 프로그래머를 만드는 것 아니다.


3

일반적으로 대부분의 작업을 수행하기 위해 미적분 또는 삼각 방정식을 알아야한다는 의미는 아닙니다. 무거운 그래픽 / 게임 프로그래밍을하고 있다면 그렇습니다. Quake 의 유명한 수학 해킹 이 이에 대한 좋은 예입니다. 그러나 더 높은 수준의 수학을 다룰 때 고려해야 할 생각은 프로그래밍에 적용 할 수 있습니다. 프로그래밍으로, 당신은 당신의 자신의 논리 구조, 자신의 기능, 자신의 "증거"를 개발하고 있습니다.

내 업무 (내부 엔터프라이즈 워크 플로 및 앱)에서 수학을 실행하는 유일한 경우는 통계에 대한 지식이 필요한 일부보고 응용 프로그램을 수행해야하지만 요구 사항에 직접 적용 할 수 있기 때문입니다.


3

꼭 그런 것은 아닙니다. 특정 프로그래밍 분야 (암호, 그래픽, 물리 엔진 등)는 수학적으로 기울어 진 것에 분명한 이점이 있지만, 미분 방정식에 대한 이해가 웹 프로그래밍에 특히 유용하다고 생각하지 않습니다.

부울 논리는 아마도 좋은 프로그래머가되기위한 요구 사항 일 것입니다. 그러나 고등학교 수학에서 좋은 점수를 얻지 못한 많은 사람들이 프로그래밍에 능숙하다고 판명되면 놀랄 일이 아닙니다.


3

좋은 프로그래머가되기 위해 수학에 능숙 할 필요는 없습니다.

프로그래머로서의 첫 번째 직업은 B-52 및 Cruise Missile 임무 계획을 위해 3D 그래픽을 수행하는 것이 었습니다. 수학 중심의 응용 프로그램 이었지만 수학에 능숙한 사람들에게만 액세스해야했습니다. 두 점 사이의 큰 원거리를 계산하는 공식을 알 필요가 없었습니다. 프로그래밍 언어에서 작동하도록 수식을 변환하는 방법을 알아야했습니다. 비행 시뮬레이션과 동일합니다. 보잉은 방금 적용해야 할 모든 수학을 수행했습니다.

그 경험은 또한 누가 좋은 프로그래머가되고 누가 그렇지 않은지를 이해하는 데 도움이되었습니다. 이 임무에는 조종사와 항해사가 프로그래머로서 임무를 수행하고 프로그래머가 임무의 요구를 이해하도록 도와주었습니다. 보통 몇 주 안에 어떤 조종사와 항해사가 그것에 능숙한 지 알 수 있습니다. 수학 전공은 대개 즉시 프로그래밍에 사용되었습니다.

수학에 능숙하면 프로그래밍에 능숙 할 것 같지만 수학에 능숙하지 않은 많은 훌륭한 프로그래머를 알고 있습니다.


3

나는 수학을 좋아하지 않으며 항상 수학 점수가 낮습니다. 나는 좋은 프로그래머라고 말하고 싶지 않지만, 10 년 동안 소프트웨어 산업에서 큰 성공을 거두었습니다.


1
나는 당신의 수학 성적에 전적으로 관련되어 있습니다. 나는 실제로 나는 나쁜 프로그래머가 아니며 수학에 끔찍하지 않다고 생각하지만 어떤 이유로 든 열심히 노력하더라도 내 수학 과정에서 "평균"점수를 넘어서는 것처럼 보이지 않습니다.
Bryan Harrington 2

@Bryan, 나는 그것에 관련 될 수있다
jasonco

3

수학을 좋아하지 않는 사람들이 훌륭한 프로그래머가 될 수 있습니까?

아니요, 아니요, 아니요, 예, 아니요!

아니요, 종종 필요하기 때문에.

(! (a | (! (b && c) || d) && (! e)))

왜 작동하지 않습니까?

foo ('a', 'b', 19, g(h))
bar ('c', 'd', 44) 

좀 더 추상적 인 방식으로 다시 쓸 수 있습니까?

968ms가 0.7 초보다 크거나 작습니까? 얼마나 많은 MB가 필요하고 기계에 몇 개의 Ghz가 있습니까? 바이트는 충분할 것입니다. 수학은 일상적인 일입니다. 때로는 명시 적으로 더 높은 수학.

항상 암시 적으로 수학을 낮추십시오.

수학은 계산에서 행렬, 기하학, 논리, 통계, 범주 이론, 그래프 이론에 이르는 광범위한 분야입니다. 따라서 수학을 사용하지 않고 프로그래밍하고 있다고 생각되면 잘못되었을 수 있습니다.

Project Euler 페이지 에서 문제를 살펴보면 퍼즐을 찾을 수있을 것입니다. 수학을 풀기 위해 수학이 어떻게 사용되는지 모르겠습니다. (수학 없이는 해결할 수 없습니다.) 문제의 크기는 일반적으로 크므로 무차별 적으로 해결할 수 없습니다.

그러나-나는 그것들을 많이 풀 수 없기 때문에 (지금까지 약 2/3) 수학을 좋아하지 않는다는 것을 의미합니까?

수학을 공부하지 않았다면 프로그래밍을 포함하여 일상 생활에서 수학을 찾을 수있는 곳을 모를 것입니다.

화면에서 GUI 구성 요소를 이동하여보기 좋게 만들었더라도 어떤 식 으로든 수학하고 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.