먼저 C 언어에 대해 정의해야 합니다.
보통 C 언어를 잘 한다고 하면,
전체적인 코딩 능력을 보는 경우가 많습니다.
가령, 윈도우에서는 API와 MFC를, 리눅스에서는 시스템이나 X 윈도우 프로그램 등입니다.
앞에 있는 분이 C 언어 자체에 대해서만 말을 했으므로,
저는 이와 같은 일반적인 경우에 대해 말해 보겠습니다.
참고로 여러 권의 책을 쓴 저자이며 현재 무역협회 강사입니다.
개인적으로 www.printf.co.kr을 운영하고 있습니다.
여러 권의 책을 쓰고 강사로 활동하고 있습니다.
저는 윈도우 기반에서 활동하므로 윈도우를 기준으로 얘기하겠습니다.
[1단계]
C와 C++를 공부하는 단계로 자료구조를 반드시 포함해야 합니다.
자료구조에 대한 코딩은 어느 정도까지는 직접 할 수 있어야 합니다.
C에서는 포인터 연산에 무리가 없으면 되고, C++는 상속을 이용해서 프로젝트를 수행할 수 있으면 됩니다.
여기에 새롭게 등장한 STL을 공부해야 합니다.
STL은 C++에 포함된 라이브러리로 자료구조를 내장하고 있는 클래스 라이브러리입니다.
[2단계]
1단계가 콘솔 기반에서의 작업이라면 2단계부터는 윈도우 기반입니다.
API와 MFC의 두 가지 길이 있습니다.
어느 것을 먼저 배우는지가 중요한데, 처음부터 API로 시작하는 것이 좋습니다.
MFC는 API를 포장하고 있는 클래스 라이브러리인데,
C를 잘 하면 C++를 잘 하는 것과 같은 이치입니다.
흔히 API가 어렵고 가르치는 곳이 없기 때문에
MFC를 먼저 배우는데 잘못된 방식입니다.
[3단계]
API와 MFC를 했다면, 그 중에서도 고급 기술을 공부해야 합니다.
대표적으로 소켓, COM, Device가 있습니다.
소켓은 TCP/IP를 활용한 네트워크 프로그래밍을 말하고,
COM은 액티브X를 구현하기 위한 기반 기술이고, Device는 임베디드에서 사용하는 장치를 말합니다.
액티브X는 웹 환경에서 동작하는 프로그래밍을 말하고,
Device는 WDM이라는 표준 모델을 사용하는 프로그래밍을 말합니다.
그러나, 가장 많이 하려고 하는 분야는 네트워크 프로그래밍입니다.
최근 몇 권의 책이 나오긴 했지만 여전히 고급 코드는 보기 어렵습니다.
참.. 책의 품귀 현상은 소켓의 문제가 아닌 3단계 전체의 문제입니다.
책이 없어서 공부를 할 수가 없습니다.
소켓 프로그래밍을 잘 한다고 얘기하려면
코드 한줄 없는 프로토콜이라는 책을 독파해야 합니다.
국내에서 이들 3단계를 별도로 가르치는 과정은 없고,
1주일 단위의 세미나 정도가 고작입니다.
비트에서 소켓 프로그래밍의 경우 2주 정도의 수업이 열리기도 하는 것 같습니다.
참고로 제가 이번에 개인적으로 2달 과정으로 개설하려고 합니다.^^
3단계부터는 분야가 너무 다르기 때문에
진로를 확실히 정해야 합니다.
어느 길로 가건 한 분야에서 성공하기가 쉽지 않습니다.
모든 과목을 다 할 수는 없습니다.
[4단계]
3단계를 더욱 발전시킨 경우로, 3단계에 포함될 수도 있습니다.
첫 번째는 서버 프로그래밍을 할 수 있느냐.
두 번째는 암호나 백신을 제작할 수 있느냐.
세 번째는 전자 상거래 액티브X 컨트롤을 제작할 수 있느냐.
네 번째는 보드를 직접 만들어서 드라이버를 설치할 수 있느냐
아니면 최소한 보드를 만들지는 못해도 만들어지 보드에 이식할 수 있느냐.
이와 같은 경지라면
어디가서도 자신의 이름을 밝힐 수 있습니다.
경력 10년에 접어든 저는 3단계와 4단계의 중간에 있다고 하겠습니다.
4단계라고 선뜻 말하지 못하는 것은
강의를 오래 했기 때문에 실제로 동작하는 코드를 만들어보지 않았기 때문입니다.
그래서 최근 준비하는 것이
실제 서비스하는 서버 코드 제작입니다.
아주 재밌습니다.
휴.. 답변을 한다는 것이 이렇게 힘들군요.
더 궁금한 점이 있으면 www.printf.co.kr에 와서 글을 남겨주기 바랍니다.
그럼. ^^