그냥 수학의 필요성?같은거 ㅋ
.999... = 1 과 비슷하게 아주 끊이지 않는 얘기, 프로그래밍과 수학.
간단한 두 가지 사실.
1. 전산에도 수학이 꼭 필요하지많은 않은 분야가 있긴 하다.
2. 수학적 사고력, 익혀 두면 해롭지 않다.
전세계 사람들이 공동으로 사용하는 거대한 프로젝트의 경우, 모든 분야를 세세히 알 수는 없겠지.
이 경우 좀 높은 직위의 개발관련직책은 세세히 아는 것보다는 전체적인 그림을 알고 있는 것이 좀 더
중요할 수 있다는 얘기를, 외국계 의료기기 회사에서 소프트웨에 엔지니어로 있는 친구와 얼마 전 나누었다.
하지만, 그 내부 알고리즘을 보고 싶어도 너무 수학적이라 겉만 핥고 있는 것이 좀 아쉽다고 하더군.
그것은 오스트리아나 미국/일본처럼 잘 하는 몇 곳이 꽉 쥐고 있다고 하더군.
html 에는 수학이 결코 들어갈 리가 없다. 왜냐, 논리의 흐름이 없기 때문이다. 마찬가지로 GUI 에
수학이 들어갈 가능성도 별로 없다. 우리가 흔히 듣는 얘기 중 하나는, \'수학적 사고력\' 이라는 말인데,
이거, 수학적 사고력이 기가막히게 들어 간 내용을 들어도, 못알아 먹으면 할 말이 없는 것이다.
만약 당장 수학의 필요성을 느껴보고 싶다면 다음의 것을 시도해 보면 된다.
프로그램이 다루는 데이터 개수를 만배 늘려 보라.
프로그램의 수행 횟수를 천배 늘려 보라.
batch processing이 가능하게 프로그램을 작성해 보라.
데이터 몇 천 개 소트 하는 거, 어렵지 않다. 버블 소트 해도 쉽게 끝난다. 그런데, 1억개 넘어 가기 시작하면
퀵소트도 그리 빨리 끝나지 않거니와, 1억개 넘기 시작하면 메모리에 올리기도 빡세다.
프로그램을 왜 수천수만번 시행해야 할까? 하루에 열 개 정도의 데이터만 처리하면 몰라도,
한 번에 꽤 많은 데이터를 처리해야 할 때가 있고, 그럴 때는 1~2분 차이가 매우 중요하다.
그렇게 되면 시간 잡아 먹는 부분을 찾아서 속도를 높여야 하는데, 그냥 되지 않는다.
짱구를 굴려야 하고, 결론적으로 사용되는 건 경험적으로 주로 수학적 내용이었다.
mysql 에 1억 개 집어 넣다 짜증나서, 수학적으로 좀 더 잘 구성되어 있다는 오라클에
집어 넣었더니 픽! 하고 끝나서 놀랬다던 누군가의 말이 생각난다.
개인적 경험을 잠깐 하나만 말해 보자.
연구할 때는 오래 걸리거나 말거나 상관이 없어서 처리하는데 20분 걸리던 것을 그냥 썼는데,
이것이 상용으로 들어가게 되면서 시간 줄이느라 내 수명도 단축이 되었는데, OpenMP 쓰고,
상속시켜서 일반화시켰던 코드를 변경하는 등 코드와 구조 수준에서 최적화해서 2분으로까지
줄였다가, 더 줄이기 위해서 결론적으로 사용한 것은 결국 또다시 수학적 방법(canonical correlation analysis)이었다.
1부터 n까지 더하는 거, for(i = 1, sum = n; i<n; i++, sum+=i); 이런 건 그냥 이해시킬려고
있는 거고, 실제 프로젝트에서 저렇게 하면 혼난다. n(n+1)*0.5 로 해야 한다.
convolution 계산할 것인가? numerical 하게 적분하려고? 조건이 되는지 봐서
convolution theorem쓰던가 해야지. SSE같은 거 써도 convolution theorem 쓴 것보다
느리다.
수학이 왜 필요한지 모르는 이유는, 수학을 잘 모르기 때문에 그것이 어디 사용되는지
알 수 없기 때문이다. 봐도 저게 수학적 생각에서 나온 것인지 알 수 없기 때문이다.
STL을 보고 abstract algebra를 떠올릴 수 없는 것은 abstract algebra를
모르기 때문인 것과 같다.
수학적 사고력의 결과엔 주로 수식이 나오지만, 수식이 나온다고 해서 항상 수학적 사고력
이 들어갔다고 하긴 힘들다. 선형대수를 단순히 행렬계산으로 이해하게 되면 fourier transformation 이
2차원이라는 것을 모르게 되는 것은 \'수식=수학적 사고력\'으로 착각하기 때문이다.
내가 위에서 말한 \'수학\'이란 단순히 \'공식을 사용한다\'는 말이 아니었다.
수학, 배울 기회 있을 때 열심히 배워 두면 득이 되도 백번 되지, 해가 되지는 않는다. 물론 단순공식암기로 외우기만
하면 소용이 없겠지.
하도 자주 나오는 떡밥이라 한 번 물어 봤다.
댓글 영역
획득법
① NFT 발행
작성한 게시물을 NFT로 발행하면 일주일 동안 사용할 수 있습니다. (최초 1회)
② NFT 구매
다른 이용자의 NFT를 구매하면 한 달 동안 사용할 수 있습니다. (구매 시마다 갱신)
사용법
디시콘에서지갑연결시 바로 사용 가능합니다.