메뉴 바로가기 검색 및 카테고리 바로가기 본문 바로가기

한빛출판네트워크

한빛랩스 - 지식에 가능성을 머지하다 / 강의 콘텐츠 무료로 수강하시고 피드백을 남겨주세요. ▶︎

IT/모바일

개발자가 되기 위한 필요조건.. 알고리즘

한빛미디어

|

2004-06-30

|

by HANBIT

14,168

1. 개발자라면 누구나 알고리즘을 학습해야 한다. 그런데 왜 학습해야 하는가?

개발자라면 누구나 알고리즘을 학습해야 한다는 말은 알고리즘 학습이 개발자가 되기 위한 필요조건이란 의미이다. 이 말을 되짚어보면 개발자가 갖추어야할 품성에는 반드시 알고리즘에 대한 깊은 이해가 필수라는 의미이다. 그렇다면 왜 개발자들은 알고리즘에 대한 깊은 이해를 하고 있어야할까? 그리고 알고리즘의 의미는 무엇일까? 먼저 알고리즘의 의미를 살펴보면 가장 일반적인 뜻에서 "문제를 해결하기 위한 일련의 절차들"을 의미한다. 한 마디로 말해서 알고리즘은 문제해결 능력과 관련된 말이다. 이 관점에서 보면 개발자는 한 마디로 문제 해결 능력을 가진 사람 또는 문제 해결 능력이 뛰어나야만 하는 사람이라고 할 수 있다.

사실 세상을 살아가면서 부딪히는 거의 모든 것들이 문제들이고 문제 해결이란 인간 삶의 본질이라고 할 수도 있다. 특히 컴퓨터 프로그래밍에서는 다른 분야에 비하여 상당히 많은 부분에서 어려운 문제에 봉착하게 된다. 사실 소프트웨어가 눈에 보이지 않고 손에 잡히지 않아서 그렇지 논리적인 깊이나 난이도에서 보면 인간이 만든 그 어떤 인공물보다 더 복잡한 구조물이다. 결국 개발자가 수시로 부딪히는 수많은 문제들을 해결하기 위한 기본 능력을 배양해주는 검증된 방법론이 바로 알고리즘 학습이라고 생각한다.


알고리즘 학습을 통하여 얻을 수 있는 산물은 크게 두 가지로 생각할 수 있다. 하나는 특정한 문제에 대한 기존의 해답을 알 수 있다는 것이다. 재미있게도 개발에서 부딪히는 수 많은 문제들이 거의 동일하거나 이전에 다루어졌던 문제들이다. 따라서 이런 반복되는 어려운 문제들은 거의 고민하지 않고 기존의 해답을 활용하여 문제를 극복할 수 있는 것이다. 그리고 나머지 하나는 스스로 새로운 문제 해결 방법을 찾아낼 수 있는 기본 소양을 배양시켜 준다는 것이다. 인류의 역사에서 학문의 시작을 "탈레스"로 생각한다면, 진정한 의미의 과학 즉 물리학이 태동된 "갈릴레오"나 "뉴턴"까지는 거의 3천년의 세월이 흘렀다. 그렇지만 "뉴턴"이후 현대물리학까지의 눈부신 발전에 걸린 시간은 단 2, 300년 정도에 불과했다. 무엇이 달라졌을까? 분명한 것은 사람들의 능력이 갑자기 향상된 것은 아니라는 것이다. 인간은 어떤 문제를 과학적으로 해결할 수 있는 방법론을 정립하는데 수천년을 보낸 것이다. 그렇지만 한 번 정립된 과학적 문제 방법론을 배운 다음부터는 놀랄만한 문제해결 능력의 향상을 도출할 수 있었던 것이다. 특별히 개발에서 부딪히는 갖가지 문제들에 대한 과학적 해결방법론이 바로 알고리즘인 것이다.

2. 본격적인 알고리즘 학습 전에 내가 갖춰야 하는 기반 지식은 무엇인가?

해답은 간단하다. 바로 수학과 물리학이다. 대부분의 사람들이 아무 생각없이도 할 수 있는 대답이다. 그렇지만 정말 그 본질을 절실히 느끼면서 생각해 볼 문제이다. 흔히 이공계 나아가서는 인문사회계열의 거의 모든 분야에서도 수학과 물리학의 능력이 출중한 사람은 큰 성공을 거두곤 한다. 뛰어난 수학자나 물리학자들이 경제학, 경영학은 물론 심지어 정치적인 분야에서도 놀라운 업적을 이루어 내는 것은 많이들 알려져있는 사실이다. 그렇다면 수학이나 물리학이 왜 중요한가? 그 이유는 수학이나 물리학의 학습을 통해서 문제해결 능력 자체에 대한 향상을 도모할 수 있고, 문제를 해결할 수 있는 과학적 방법론을 습득할 수 있기 때문이다. 다른 말로 과장하면 수학이나 물리학을 공부하면 머리가 점점 좋아진다고 할 수 있는 것이다. 그리고 사실 컴퓨터과학에서 말하는 알고리즘은 수학의 한 분야 특히 이산수학의 한 분야라고 말할 수 있다. 컴퓨터과학의 창시자에서 오늘날까지 이 분야를 이끌고 있는 선도적인 연구자들이 놀랍게도 물리학자와 수학자라는 사실은 많은 것들을 시사한다고 말할 수 있다.

3. 문제에 대한 해결 방법은 다양하다. 그러면 나는 무슨 기준으로 어떤 알고리즘을 선택해야 하는가?

이건 상당히 추상적이고 어려운 질문이다. 결국 기존에 학습한 알고리즘들 가운데 유사한 패턴이 있다면 그 해답을 사용할 수 있지만, 그렇지 않은 경우에는 스스로 문제를 풀어야만 한다. 이 때에도 기존의 알고리즘을 학습하면서 얻어진 과학적 문제 풀이 방법론을 잘 활용하여야만 한다.

4. 참고 서적 및 강좌 소개

특별히 추천하는 책들은 다음과 같다.
TAG :
댓글 입력
자료실

최근 본 상품0