자료 구조와 알고리즘은 꼭 공부해야 할까
어느 게시판에서 누가 질문을 했는데 거기에 답변을 단 것. 일반적인 질문이라고 생각해서 내 생각을 블로그에도 다시 옮겨 적는다.
자료 구조와 알고리즘에 대한 지식은 크게 두 가지로 나눌 수 있는데
어떤 자료구조와 알고리즘이 있으며 그 자료 구조가 수학적인 추상적인 수준에서 어떤
성질’을 갖고 있으며 언제 그러한 성질이 도움이 되고 쓸모없는지, 어떤 알고리즘이 어떤 자료구조와 조화롭거나 그렇지 않은지 아는 ‘활용지식이 있을 수 있고그것들을 자기 손으로 만들어내는 지식이 있을 수 있습니다.
컴퓨터 과학을 공부하신다면 후자는 교양 수준에서 어느 정도 알아야 한다고 생각하고요, 그게 아니라 연구자로서 컴퓨터 프로그래밍을 도구 목적으로 활용하신다거나, 서비스 디자이너로서 시스템의 프로토타입을 만들어야 하거나 하는 식으로 프로그래밍을 오로지 수단으로만 쓰시려고 한다면 활용에 대한 지식이 훨씬 도움이 됩니다.
실제로 컴퓨터 과학 전공자들도 전문 분야(예를 들면 암호학)를 깊게 파다보면 해당 분야에 핵심적인 자료구조와 알고리즘은 꿰뚫고 있을지라도 상관 없는 쪽은 잘 모르기 쉽습니다. 반면 활용을 잘 하는 사람들은 그걸 어떻게 만드는지는 몰라도 세상에 어떤 유용한 자료구조와 알고리즘이 있는지 전체적인 카탈로그가 머릿속에 있어서 필요한 상황에 즉시 찾아서 사용하기도 합니다.