저자: 이정재( mylovingyou@paran.com )
저는 흔히 말하는 윈도우 개발자입니다. 윈도우 운영체제를 기반으로 동작하는 크고 작은 프로그램을 개발하는 것이 주 업무이고 이것저것 윈도우 기반을 프로젝트를 경험했습니다. 모바일 열풍에 힘입어 안드로이드 혹은 iOS 에 대한 개발이 유행하고 있지만, 윈도우 운영체제는 아직도 꾸준히 수요가 있는, 개발의 중요한 부분입니다.
윈도우 운영체제는 윈도우 98부터 시작해서 C 언어와 C++ 언어가 중요한 개발언어입니다. 닷넷이 나오고 나서는 C#이 중요한 개발언어로 그 역할을 나누고 있지만, 아직까지도 윈도우 운영체제의 개발언어는 C와 C++이 가장 중요하고 강력한 언어입니다. 윈도우 관련 프로그램을 개발하기 위해서 자연스럽게 C와 C++을 공부했습니다. 물론 고객이 원하는 프로그램을 개발하기 위해서는 단순히 프로그래밍 언어만 아는 것으로는 부족하고, 운영체제, 자료구조, 알고리즘, 시스템에 대한 이해 등 훨씬 더 많은 지식과 학습이 필요합니다. 이런 다양한 부분에 대한 것을 모두 다루기에는 어려울 듯하고 범위를 좁혀서 C와 C++언어에 대한 학습을 어떻게 해왔는지 정리하는 차원에서 이렇게 적어보기로 했습니다.
컴퓨터 전공이 아닌 비전공자로서 컴퓨터 언어를 처음 접한 것은 C언어였습니다. 예전에 제가 처음 배웠을 때도 그랬지만, C언어는 항상 쉽게 시작하고 쉽게 좌절하는 언어가 아닌가 생각합니다. 제가 봤던 C언어 책은 다음과 같습니다.
[기본 문법 및 자료구조]
- C 언어기초 + 알파 (황희융 역 / 교학사)
- C로 쓴 자료구조론 (이석호 역 / 사이텍미디어)
- C 언어 프로그래밍 (K & R / 대영사)
- C로 배우는 알고리즘 1 (이재규 / 세화)
- 임베디드 프로그래밍 C 코드 최적화 (김유진 / 한빛미디어)
- C언어 펀더멘탈 (전웅 / 한빛미디어)
C 언어는 워낙 많은 종류의 책이 있어서 어떤 책을 소개하기 보다는 자신에게 맞는 책을 찾는 것이 더 어렵지 않나 생각이 듭니다. 그리고 제가 봤던 책이 좋기는 하지만, 최근에는 예전과 달리 인터넷 강의가 있다든지, 좀 더 화려하게 편집되어 있다든지, 좋은 종이를 사용한다든지 등등 이런 책의 외형적인 면도 많이 좋아졌고, 책의 내용면에서도 예전보다 좀 더 친절하고 자세하게 설명해 주는 책들이 많이 나온 것 같습니다. 최근에 나왔던 C언어 책을 몇 권 살펴보니 시대가 달라졌다는 말이 실감날 정도였습니다.
C++ 언어도 C 언어와 마찬가지로 다양한 종류의 책이 있어서 자신에게 맞는 책을 찾는 것이 학습에 중요한 요인이 아닌가 생각합니다. C++의 경우 객체지향을 지원하는 언어이다 보니 문법적인 측면에서 C언어보다 알아야 할 내용이 더 많은 언어입니다. 그리고 최근에 표준이 완성된 만큼 여러 가지 변화가 많았던 언어가 바로 C++ 언어였다는 생각이 듭니다.
제가 봤던 C++ 책은 다음과 같습니다.
[기본 문법 및 자료구조]
- C++ 기초 플러스 (이도희 역 / 성안당)
- C 프로그래머를 위한 C++ (서정욱 역 / 한빛미디어)
- C++ 자료구조론 (이석호 역 / 교보문고)
[응용 및 언어 표준]
- C++ 프로그래밍 언어 (비야네 스트롭스트룹 / 피어슨에듀케이션코리아)
- Effective C++ (연승훈 외 역 / 대림)
- More Effective C++ (곽용재 역 / 인포북)
- C++ Standard Library 튜토리얼 레퍼런스 (문정환 역 / 인포북)
[STL]
- 일반적 프로그래밍과 STL (류광 역 / 정보문화사)
- 프로젝트와 함께 하는 STL의 아름다움 (김정훈 / 사이텍미디어)
- 이펙티브 STL (곽용재 / 인포북)
C++ 언어의 쓰임새가 C언어 보다 많고 적고의 문제가 아니라, 언어가 가진 특성상 알아야 할 기본적인 사항이 훨씬 많아서 배우고 익히는데 애를 먹었던 기억이 납니다.
C와 C++ 양쪽 모두 제 스스로의 맘에 들 정도로 잘 알고 잘 사용하는 편이 아니라는 생각을 지금도 하고 있습니다. 그래서 틈나는 대로 최근에 나온 여러 책들을 살펴볼 수 있도록 노력하고 있습니다. 제가 봤던 C++ 책의 대부분이 표준이 정해지기 전에 나온 책들이라서, 표준 제정 이후에 나온 자료들을 찾아서 보는 중입니다.
요즘은 스마트폰에 대한 관심과 개발이 개발의 주류를 이루고 있습니다. iOS의 경우 C언어를 사용하지만, 안드로이드의 경우, 자바 언어를 사용하기 때문에, 예전에는 필수였던 C와 C++ 모두 이제는 예전만큼 많이 찾지 않는 것은 아닌가라는 생각이 듭니다. 그러나 시대가 변해도 기본적인 원리는 변하지 않듯이 C와 C++ 모두 아직 현역으로서 확고한 위치를 가지고 활발히 활동하고 있는 살아있는 언어입니다.
개발자로서 살아남기 위해서는 자신이 생각하는 바를 실체화 할 수 있는 개발 언어 하나쯤 확실하게 익혀두는 것이 기본적인 사항이라고 생각합니다. C와 C++ 은 중요하고 가치있는 개발자의 무기가 될 수 있을 것입니다.
이렇게 정리를 하면서 인터넷 서점을 찾아보니, 앞에 적었던 책들 중에는, 절판되어 구할 수 없는 책도 여럿 있었습니다. 책의 품질이 좋고 나쁨의 문제가 아니라 시대가 변하고 사람이 변하고 필요가 변하듯이 언어도 점점 변해가는 것을 느낍니다. 앞으로는 제가 봤던 책보다 더 보기 좋고, 더 자세하게 설명해 놓은 책도 나올 것이며, 전자책과 마찬가지로 더 손쉽게 얻을 수 있게 기술이 발달할 것입니다.
제 경험상 좋은 책이 더 좋은 개발자가 되는데 큰 도움을 준다고 생각합니다. 그러나 좋은 책보다 더 나은 개발자가 되기 위한 열정이 개발자로 살아가는데 더 도움이 될 것이며, 책은 그런 개발자에게 더 많은 도움을 줄 것이라고 생각합니다.