프로그래머에게 가장 중요한 수학과 물리학은...

geneven의 이미지

아직 대학교 1학년생이지만 주위에서 수학과 물리학이 중요하다는 말을 많이 듣고, 저 역시 컴퓨터를 위한 기초가 수학과 물리학이라고 생각하고 있습니다.

여러분은 수학과 물리학을 어떻게 공부하시나요? 흔히들 우리나라의 수학은
계산력만을 키워주는 역할밖에는 하지 않는다고 하시는데...

--------------------------------------------------------------------------------------
군대에서 말년정도 되면 여유시간이 남아돈다고 하는데 이 때가 기초를 쌓을수 있는 최적기라고 생각하고 있습니다. 환경 좋은곳에서 최고의 집중력으로 돌 깨기 좋을것 같은데..

vietkong의 이미지

군제대후 1년반동안의 시간이 제 인생에 있어서 전환점이 되었습니다.

군대때의 습관이 1년반정도 가더군요.

그리고 그때의 집중력은 나이먹고나니 다시 안나오더군요.

그리고 저도 수학의 중요성을 느끼고 회사 댕기다가 다시 재입학해서

학교다니며 공부하고 있습니다

근데 어떤식으로 공부해야 할지는 잘 모르겠네요.

바퀴쥐의 이미지

저도 이제 학부 2학년 인지라 아직 수학 물리의 필요성을 절실히 느껴본 적은 없습니다. 하지만 선배분들의 조언이나 교수님들의 조언들을 들으면 프로그래밍을 공부할때 수학은 절대적으로 필요하다는 말씀들을 해주시더군요. 물리또한 기본 바탕이 되기는 하지만 수학을 더 중요시하고 공부하라는 말을 들었습니다.

특히 알고리즘을 공부하다보니 수학적 능력이 많은 도움이 된다는 것을 느끼고 있습니다. 특히 3D그래픽 하는 분들은 물리, 수학 두가지다 아주 절실히 필요하다고 하더군요..

그래서 저도 기본을 쌓는 마음으로 수학, 물리등을 공부하고 있는데요. 일단 미적분 부분은 기본과목에서 배운것들을 복습하는 기분의로 공부하고 있구요. 이번에 수학과를 부전공의 신청하면서 정수론, 집합론 등을 수강할 계획입니다. 물리는 현재 큰 비중을 두지 않고 있는데요( 제가 물리를 좋아하지 않는 고로;; ). 일단 고등학교 과정정도의 물리는 알고있자는 의미로 복습하는 마음으로 기초물리학을 보고 있습니다. 물론 필요할때 레퍼런스처럼 쓰는 책들도 있고 하니 아직은 꼭 공부해서 알고 있기보다는 필요할때 찾아볼수 있을정도로만 공부하고 있습니다. ^^;;;

Never Stop WheelMouse ~:>

서정민의 이미지

전공에 따라 많이 다를것입니다.

시스템 공학 쪽이면 전자/전기 쪽 물리 부분에 대해서 많이 아셔야 할거구, 더 깊이 들어가면 미/적분에 대해서도 잘 아셔야 겠지요. 완전 프로그래밍 언어 쪽이라면, 이론 쪽에서 약간의 수학이 가미될 가능성이 있고, 거의 알고리즘, 자료구조 쪽 논리에 더욱 치중하는 편이지요. 컴파일러 쪽이라면 오토마타나 관련 증명에 대한 지식도 많이 요구하죠. 컴퓨터 비전 쪽이라면 또 물리가 빠져서는 안 될 부분이기도 하죠..

아마 전산 전공 학부에서는 크게 수학이나 물리가 작용하지는 않을 것입니다. 하지만, 대부분의 기본적인 지식을 가지고 있는 것이 좋을 거라고 생각합니다. 저도 제 자신이 모르게 가지고 있는 기본 지식으로 인하여 득을 봤을 지도 모르니까요..

한편, 수학이나 물리 공부를 하실때, 두 가지를 전공으로 공부하시는 것이 아닌만큼, 어려운 문제들을 많이 푸는 것보다 개념들을 이해하는데 주력하시면 전산 전공할때도 많은 도움이 될 듯하네요..

조항종의 이미지

Discrete Mathematics and its Application
Kenneth H.Rosen

저는 지금 이 책을 보고 있는 데, 이 책이
전산수학의 기본인 것 같아요. 아주 기본적인 것이지만
용어 정의 부터 응용까지 ...

제가 알기로는 정말 기본을 쌓으려면
어떤 책을 선정하든지 그 책에 있는 문제들을 모조리
혼자 힘으로 풀어보면 되지 않을 까 생각합니다.
물리도 마찬가지일 것 같아요.

물리의 경우는 1학년들이 공부하는 책이 있어요.
Fundamentals of Physics 라고 물리과 학생이면
누구나 한권쯤 가지고 있는 책이죠.
저자는 Halliday and Resnick 입니다.

Necromancer의 이미지

VLSI 설계시간이 생각나는군요.

그때 머리 깨지는 줄 알았슴다.

어떤 상황에서 전류의 흐름이나 커패시터들의 변화를 나타내는

식에 dx, dy나 인티그럴이 안나온게 없었지요.

암튼..

수학은 주로 이산수학 오토마타이론 등이 해당됩니다.

순수 플밍 쪽이라면 여기에 컴파일러 이론이 추가됩니다. 다른 수학은

그리 필요 없을 듯 합니다.

3d그래픽쪽은 선형대수가 추가되고요. (4x4행렬이 3d 그래픽의 기본 원리 되는

거 아시죠.)

제일 머리 깨지는게 전자공학 계통이나 이 근방으로(시스템플밍 등)가시는

경우인데, 이때는 수학의 거의 모든 부분을 알아야 하지요.

미방이나 적방은 기본입니다. 심심하면 dx/dy가 날라다니는 세상이니.

물리학의 경우는 그리.. 순수 프로그래밍만 하실거면 그다지

필요 없고요 전자공학에 가까운 쪽으로 가실경우에는 전기 전자

분야 물리가 꼭 필요합니다. 어차피 물리를 제대로 하기 위해서는

수학실력 필수입니다.

하지만 꼭 필요하지 않다고 해도 물리나 수학은 알아두는건 좋겠지요.

경우에 따라서는 그게 필요한 일이 벌어질 수 있으니

Written By the Black Knight of Destruction

fatman의 이미지

프로그래머의 수학과 물리는 1학년때 배우는 물리와 공업수학만 철저히 하시면 충분합니다. 아니, 과분할 수도 있습니다.

어느 분야를 더 깊게 파야할 것이냐는 님이 어떤 전공을 선택하느냐에 따라서 천차만별입니다. 한가지 확실한 것은 매우 깊은 수준의 수학이나 물리지식이 필요하다면 프로그래밍을 얼마나 잘하느냐는 큰 의미를 지니지 못할 가능성이 큽니다. 그 정도라면 어떤 일을 하기 위한 알고리듬이 주가 되고, 프로그램은 그 알고리듬을 실제화해서 구현하는 수준이 될 것이니 말입니다. 그리고, 사람들은 주목하는 것은 프로그램이 아니라, 알고리듬일테고요.

물론, 프로그래밍을 잘하면 좋겠지만... 제 경험상 알고있는 지식을 활용해서 알고리듬만 잘 짜면 프로그래밍 못해도 별 상관않하는 경우가 더 많더군요. 제가 다니는 직장은 프로그래밍 능력을 그리 쳐주지 않습니다. 프로그래밍 전혀 못하더라도 전공 지식이 많은 사람을 쳐줍니다. 프로그래밍 그 자체는 반년안에 배울 수 있지만, 전공지식은 그렇게 배울 수 없으니깐요.

프로그래밍을 위한 수학, 물리를 공부하지 마시고, 전공에 필요한 수학, 물리를 배우시는 것이 더 좋을 듯 싶습니다. 전공을 깊게 들어갈수록 높은 수준의 수학과 다양한 이론들을 배울 수 있을 것입니다.

...

cacolith의 이미지

프로그래머에게 가장 도움이 되는 과목이 수학과 물리라는 것에 반대할 생각은 없습니다.
다만, '가장 도움이 되는' 과목이라는 것이지, '가장 중요한' 과목은 아니라는 것입니다.

제 경우에는 물리학과를 졸업했는데요, 실제 프로그래밍에서 물리가 크게 도움이 된다는 느낌은 '거의' 없습니다.
오히려 수학중의 '일부'가 도움이 되는 것 같더군요.

프로그래밍을 위한 수학이라면, 직접적으로 도움이 되는 것은 '논리'부분이구요, 그 외에는 간접적인 도움을 주게 됩니다.

논리야... 조건문이나 반복문 등을 작성할 때 필수가 되니 건너뛰구요...
알고리즘을 다루다보면 어떻게 하면 더 빨리 동작시킬까, 어떻게 하면 더 작은 공간을 차지할까 등등의 고민을 하게 될 때가 있습니다.
바로 이럴 때 수학이 도움이 되는데요...
사실, 실전(?)에서는 얼마나 빠른가, 얼마나 작은 공간을 차지하는가 하는 것 보다는 얼마나 빨리 기간에 맞추는가 하는 것이 더 중요해보이더군요. --;

원점으로 돌아가서, 단지 프로그래밍 - 복잡하고 거대한 규모가 아닌 적당히 작은(?) - 만을 위해서라면...
물리의 경우에는, 조항종님께서 말씀하신 'Fundamentals of Physics'까지 보실 필요는 없으며, 그냥 교양정도로 개설된 기초물리학쯤 되는 것만 수강하셔도 될것 같습니다.
수학의 경우에는 우선 고등학교 수준까지의 수학들을 다시 점검해보시는 정도로도 괜찮을 것이라 생각됩니다.
대신, 전산과쪽의 '자료구조론'등의 알고리즘과 관련된 과목을 수강하세요.
덤으로, 컴퓨터구조나 어셈블리 관련 수업이 있다면 한 번 쯤 수강해보시는 것도 도움이 됩니다.
그 외에도 소프트웨어공학 등도 도움이 될 수 있습니다.

하드웨어쪽에 가까운 프로그래머가 되시려면 조금 난이도가 높은(!) 수학을 기초로 삼아 물리를 공부해두심이 좋습니다.
물리학의 경우에는 굳이 문제를 풀어보실 필요는 없겠지만, 조항종님 말씀처럼 개념을 어느정도 이해를 했는지 점검해보실 수 있으므로 한 두 문제정도는 풀어보셔야 할 것입니다.
수학의 경우에는 논리부분을 비롯하여 방정식, 미적분의 치환부분이 도움이 되며, 행렬에서는 판별식을 비롯하여 이리저리 쪼개고 붙이는 부분이 나오는데, 그녀석들이 가끔(!) 쓰일 수 있습니다.

대규모 프로젝트를 위해서라면 수학이나 물리보다 자료구조쪽을 더 신경쓰셔야 하며, 디바이스쪽을 위해서는 어셈블리, 컴퓨터구조 등이 도움이 될 것입니다.

대규모 프로젝트를 '이끌기' 위해서라면 경제 관련의 수업도 도움이 될 수 있으며, 정치나 사회관련 과목들도 보조가 되기도 합니다.

자꾸 옆길로 새는데요...
어쨌거나, 프로그래머에게 가장 중요한 과목은 '수학'이나 '물리'가 아닌, '현재 제작중인 프로그램과 직접적으로 관련'되는 과목들일 것입니다.
'수학'이나 '물리'는 어디까지나 '보조'라는 것이지요. ^^;

참고로... 군대에서 공부하는 '지독한' 분들도 계시지만, 대부분의 경우 - 저를 비롯해서 - 에는 마음만 앞설뿐 실행으로 옮기지 못하더군요.
( 저도 말년에는 'Fundamentals of Physics'을 부대로 가져가보기도 했지만, 2문제정도 풀어보고 말았습니다. --; )
그러므로, 군대가기 전에 개념을 익히시고, 나머지 시간에 교양등 비교적 덜 중요한 과목들을 끝내두시고... 군대에서는 시간날 때 가끔씩 개념을 정리해보시고나서, 전역후에 처음부터 다시 시작하는 기분으로 새출발하시는 것이 좋을 것 같습니다.
특히, 컴퓨터 관련 분야는 해가 다르게 발전에 발전을 거듭하고 있으므로 군대 전과 후는 상당한 차이가 생기니까요.
( 제 경우에는 95년 입대 전에는 DOS를 사용했었고, 윈95을 쓰면 용감하다는 소리가 나오기도 했었으며, 97년 전역후에는 DOS는 사라져있었기에 윈98 베타를 쓰게 되었었습니다. )

라는 것으로...
군대에서 무엇을 어떻게 해보겠다 하시는 것보다는 그 전에 좀 더 공부해두시고, 틈틈히 복습하시고, 항상 새로운 마음으로 노력하시는 것이 가장 좋을 것 같spdy. ^^;

seeker의 이미지

영문독해를 잘하는것이 고급지식을 얻는 지름길로
봅니다.

바퀴쥐의 이미지

seeker wrote:
영문독해를 잘하는것이 고급지식을 얻는 지름길로 봅니다.

웹서핑을 통해 얻을수 있는 지식은 무궁무진 하더군요.. 저는 영어라면 두드러기가 나는 체질이라 많이 다녀보진 않았지만 주위사람들이 추천하는 곳들만 다녀봐도 많은 지식들이 떠돌아 다니며, 줍는게 임자라는 걸 요즘들어 특히 피부에 와닿게 느끼고 있습니다. ;;

그나마 근래에 고급서적들이 다량 번역서가 나오는등 출판물들은 읽기가 쉬워져서 이런저런 책들을 많이 구입해서 읽고 있습니다. 근래에 나온 번역서들은 번역 상태가 상당히 좋더군요. 전에 나오는 그 번역기(?)의 흔적이 많이 사라지고 있는듯 합니다. 영어 못하는 슬픈 중생은 요즘 그것만이 위안이랍니다. :cry:

Never Stop WheelMouse ~:>

버그소년의 이미지

음.. 저도 물리학과 나왔습니다.

고댕때부터 땜쟁이(?)하다가 대학엘 와 보니 선배들이 마이컴을 가지고

놀더군요.. 전 그냥 TTL이나 트랜지스터 가지구 놀았었는데..

현재는 Unix/Linux프로그램 짜면서 밥먹구있습니다.

흠... 근데 물리 4년동안 워낙 공부를 안해서 그런가 수학/물리가 도움이

전산쟁이 하면서 도움이된건.. 딱 두가지 있습니다.

우선은 입자 충돌/차원 회전같은걸 구현하는데 행렬곱으로 그냥 풀리더군요.

그리고, MMDB만들때.. SQL문을 파싱해서 조건별로 결과값을 찾을때

집합 (논리회로의 Bool대수)이 많이 도움이되더군요..

흠... 근데 .. 대부분의 서버/어플리케이션 프로그래밍에선 그리 효용성이

없는듯 하네요...

전산쟁이라는 직업은 종류가 워낙에 많아서리...

암튼... 전 수학보단.. 초딩때 배운 집합(Bool 대수)가 0/1밖에 없는

컴에서 가장 도움이 되고있네요.. ^^;

(초딩때 공부를 안해서 집합을 대학 2학년때 다시 배웠네요.. )

가끔은 밥을 굶어도 살 수 있다.

cdpark의 이미지

부울대수, 집합, ... 이런 걸 다루는 수학이 이산수학입니다. :)

고등학교 과정에도 수학 선택과목으로 추가되었다는데, 어디까지 다루나요?

douner의 이미지

저도 프로그래밍 공부하면서 수학을 무시했었습니다.

하지만 몇해전에 뼈져리게 후회하고 지금은 열심히 하고 있습니다.

복학을 한 후에는 수학과로 전과를 고려하고 있지요. 그만큼 수학에 빠져들면

빠져들 수록 참 재미를 느꼈습니다.

수학을 공부하실 때 절대 정석을 다시 펴지 마십시요! 그냥 공식 참고용으로는

괜찮겠지만... 그대신 수학의 툴을 컴퓨터에 설치하세요. 추천 툴은 메쓰메티카

입니다. 수학의 거의 모든 분야를 다룰 수 있습니다.

그리고 수학을 공부할 때 선형대수를 먼저 공부해 보세요.

대학교의 수학과에서도 수학 전공 기초 과목으로 제일 처음 선형 대수를 가르칩니다.

그만큼 선형대수는 그래픽스 이론 뿐만 아니라, 물리, 기타 등등에서 두루두루

쓰이는 기본입니다.

그리고 저는 게임 프로그래밍을 공부하면서 수학과 물리(!) 의 필요성과 판타스틱한(^^) 면을 느꼈는데요

수학 및 물리를 공부하시면서 이를 프로그래밍으로 표현해 보는 것도 참 좋을 것이라고 생각됩니다.

그럼 ~~

인생, 쉬운 것만은 아니네..

neibc의 이미지

일단 무슨 일을 하느냐에 따라 답변이 다양할겁니다. 그러나 고금의 진리는..

영어가 가장 중요하다는 것이고

이산수학및 공업수학 정도

그리고 물리는 그냥 기초 물리면 됩니다.

어떻게 응용되느냐는 computer science라는 것을 보시면 아시게 되는데

좀 복잡한 알고리즘으로 들어가거 하면 수식에 미분/적분/통계가

반드시 들어가거든요. 이걸 이해 못하면 답답하죠.

그러나 대학 교양 수학을 그냥 열심히 하시면(계산력만 키워주진
않는다고 봅니다. 식을 이해하고 의미는 이해할 수 있으니까요) 되고

영어 공부에 더 전념하시는것이...

canifly의 이미지

:oops:

아직 초짜라 그런지 ....

물론 수학의 경우 중요하고, 유용한 부분이 꽤 있는것 같지만

물리학이라 .... 물리학 까지 필요할려나 모르겠네요.

물리학 까지 필요하다면 프로그래머는 너무 힘든 직업이겠죠. 아마도 .

제 생각에는 차라리 영어가 훨씬 더 중요할것 같은데...

물리학도 워낙 다양한 분야가 있는데... 양자물리, 천체 물리.... 그런건 그 분야의 전문가들에게 맏기는게 좋을듯.


일하면서 느끼는 거지만 저라면 군대를 안가는 방법을 생각해보겠네요.

병역특례를 하던지해서...
경력이나 경험을 많이 중요하게 생각하거덩여. 취업할때.