나는 이 책의 군데 군데에 '전문가 따라하기' 가 위험하다는 것을 여러 차례 이야기하였다.
자료 구조2)나 알고리즘을 배울 때에도 마찬가지이다.
선배 프로그래머들에 의해서 C언어나 C++언어 등,
특정 언어로 구현된 알고리즘을 그대로 따라서 배우는 것은 위험하다.
이런 식의 교육 방식이나 학습 방법은 가르치거나 배우기에 쉽지만 창의성을 없앤다는 점을 잊지 말아야 한다.
나는 조만간에 자료 구조를 구현하는 구체적인 알고리즘을 설명하지도 않고 코드를 동원하지 않으며, 말과 의사 코드3)로만 개념을 설명하는 식으로 자료 구조에 관한 책을 써내기로 계약이 되어 있다.
이 책이 필요한 이유는 간단하다.
풀이 방법까지 모두 다 기재된 수학 참고서를 생각해 보자.
이런 책은 인기가 많다.
아주 친절하게 풀이의 정석과 해법을 다 제시하고 있으니 얼마나 좋겠는가? 그렇지만
이런 수학 책으로 공부한 사람은 시험장에서 낭패를 보기 쉽다.
시험장에서 풀이 방법을 알려주지 않기 때문이다.
자료구조나 알고리즘의 구체적인 구현 방법을 알려 주는 것은
수학 문제의 풀이 방법을 알려주는 것과 다름이 없다.
이렇게 되면 창의적인 생각이 비집고 들어갈 자리가 없어진다.
그렇기 때문에 자료구조나 알고리즘을 개념 중심으로 공부하는 것이 좋다.
일단 개념을 잡은 뒤에 구체적인 구현 방법은 직접 고안해 내보도록 하라.
이런 식으로 공부하게 되면, 현업에서 문제에 부딪힐 때에 직접 자료 구조와 알고리즘을 고안하기가 쉬워진다.
자신의 힘으로만 수학 문제를 풀어본 학생이 시험장에서 문제를 풀 수 있는 것과 같은 원리인 것이다.
2)자료 구조(data structure):자료를 일정한 형태로 담기 위한 서식.
예를 들면, 출석부를 아무렇게나 적는 것보다는 표 즉, 서식을 만들어 적으면, 출석 상황을 관리하기가 쉽다.
마찬가지로 컴퓨터에서 처리하는 자료도 일정한 서식을 만들어 관리하는 편이 좋은데, 이런 자료의 서식을 자료 구조라고 부른다.
3)의사 코드(pseudo code):프로그래밍 언어로 소스 코드를 작성하기 전에, 즉 '소스 코드는 아니지만 소스 코드와 유사하며 사람의 말에 가까운 형태의 코드'로 프로그램을 미리 설계해 보게 되는데, 이 때 작성한 코드를 소스 코드를 모방한 코드라 하여 의사코드라고 부른다.
2010년 07월 27일 17시 30분 06초
반응형