MubCrazy2014. 5. 13. 00:16

학생들이 꽤나 오랜시간을 배우는데 제대로 하지 못하는 과목이 있다.


바로!


자.료.구.조


대학 수업 중 일부는 자료구조에서 간단한 알고리즘을 학습하는 것에만 초점을 두고 학습하고,

일부는 이진트리가 자료구조의 최종 구조인 것 처럼 배운다.


사실 자료구조는 깊게 들어가면 끝이 없을 정도로 넓고 깊은 학문인데,

학부생 수준에서 C로 쓴 자료구조론 을 모두 이해하고 연습문제를 푼 다는 것은 어려운 일임이 분명하다.


헌데, 너무나도 웃긴것은 굉장히 많은 책들이 "자료구조"라는 이름으로 나온다..

내가 볼 땐 "자료구조 입문", "자료구조 개론"에 불과한 내용을 다룬체로 말이다.

많은 학생들이 자료구조 알아요! 라는 말을 할 때 나는 "내가 몇년간 공부해도 다 못한걸?" 이라는 생각으로 물어보면

역시나 이진트리가 그 학생이 아는 최고의 트리였다.


사실 자료구조는 그러한 것이 아니다. 자료구조는 마치 역사 공부처럼 해야하는 것이다.

현재는 남의 이야기 같지만, 다가올 미래를 대비하기 위해서?!


자료구조에 대한 몇가지 질문에 답을 적어본다.


1. 꼭 자신이 구현을 해봐야 하나요?

   - 네, 수준에 따라서는 많이 다르지만, 구현을 하는 것이 좋습니다.

2. 고급언어에선 간단히 불러와 쓸 수 있는데 왜 구현을 하는 법을 알아야 하죠?

   - 자료구조를 구현을 할 수 있는 능력 자체가 중요한 것이 아니라, 자료구조를 구현함으로

     '자신의 사고를 코드로 옮기는 기술'을 익히는 것이 중요합니다. 그것은 프로그래머의 기본 자질입니다.

3. 구현은 일반적으로 프로젝트를 해도 많이 할 수 있는데, 자료구조를 구현해야 하는 이유는 무엇인가요?

   - 질문을 하는 당신을 비난하거나 무시하는 것은 아니지만, 당신이 짠 프로그램은 어떠한 로직이나 

     알고리즘이 구현이 되어 있기 보다는, 있는 기능들을 퍼와서 쓴게 전부 일 수도 있습니다.

     현재 대학생 수준에서 코딩은 '자신의 사고를 코드로 옮기는 기술'과는 거리가 먼,

     라이브러리, 프레임웨크 사용법에 지나지 않는 경우가 많습니다.

4. 그럼 자료구조는 사람들이 꽃이라고 하는 RED BLACK Tree정도를 구현 하면 되는 것인가요?

  - 아니요, 선형 자료구조에서 비선형자료구조로 바뀌는 과정과 

    이진트리가 RED BLACK Tree로 변화되는 과정을 아는게 더 중요해요. 자료구조는 역사공부 같은 거니깐요..

5. 그럼 어떻게 공부해야 하나요?

 - 링크드 리스트로 이뤄진 스택정도를 코드를 보며 학습 한 뒤,

   이후에 나오는 자료구조는 알고리즘만 보고, 코드를 참고하지 않고 공부해야합니다.

   자료구조를 구현하기 위해 소스를 암기하는 순간, 허공에 삽질을 하는 것과 같다고 생각합니다.

6. 다시 한 번 더 묻겠습니다. 자료구조 중요한 가요?

 - 당신에게 묻겠습니다. SW프로그래머가 되고 싶은가요?



Posted by 슈퍼 점프