사실 수만 가지의 언어들이 있는데 무얼 선택해야 되나요라고 물으면 답변해 드리기가 사실 어렵습니다.
그럼, 어떤 언어를 해야 밥먹고 살까요?혹은 어떤 언어가 대세인가요?라고 물어도 사실 답변해 드리기가 어렵습니다.
현재 사용하고 있는 언어 중 가장 베이스라고 할 수 있는 것은 학교에서 배우듯 바로 C언어입니다.
그리고, C++, Java, C#, ASP, JSP, PHP, Delphi....등등 엄청 많은 프로그래밍 언어들을 배우거나 습득을 합니다.
그럼, C부터 해야 되나요? 요새 Java도 많이 하던데, Java부터 해야 되나요?
이렇게 질문하시면 전 공부하시고 싶은 걸 하십시오라고 대답을 해 드립니다.(너무 무책임한가요?ㅋ)
자, 프로그래밍 언어를 선택하고 흔히들 말하는 고급언어스킬을 어떻게 키울 것인가를 많이들 생각을 합니다.
(저 또한 뭐부터 해야 할지 뭘 해야 할지 참 많은 고민을 했습니다. 사실 저는 이 고민을 사회나와서 했다는 거...학교다닐 때는 공부를 지독스럽게도 안해서인지 사실 아주 순결한(?) 백지 상태로 졸업을 했던 관계로 사회나와서 남들보다 몇배는 힘이 들었던 것 같습니다.)
그럼 정답은 있느냐?
한가지 언어를 제대로(!) 마스터하라
사실, 한가지 언어만 제대로 마스터 하면 다른 언어들은 그리 어렵지 않게 습득할 수 있습니다.
간혹 이런 질문을 하는 사람들이 있습니다.
"전, C는 보통이상인 거 같은데, Java는 못해서 하 정도 밖에 안되는 거 같습니다"
이런 분들은 가슴에 손을 얹고 잘 생각을 해 보십시오.
과연 C도 제대로 할 수 있는 지를....
사실 저 역시 C는 어느 정도 하는데, Java는 잘 못합니다라고 말을 하고 다닌적이 있습니다.
돌이켜 보니 저 말을 하고 다닐때는 두가지 시기였습니다.
언어습득을 제대로 못하였을 시기와 요새는 다른 일을 시킬까봐...ㅡㅡ;(귀차니즘의 압박으로다.)
물론 반박하시는 분들도 있습니다.
하지만, 대다수의 분들은 C언어를 잘 하시는 분들은 Java도 잘하고, C++도 잘합니다.(그 반대의 경우도 마찬가지입니다)
자, 서점에 가셔서 객체지향에 대한 책을 쓰신 분들의 책을 보십시오. 그리고, 그 저자가 쓴 책들을 검색해 보십시오. C++, Java 가리지 않고 다 책을 쓰셨을 것입니다. 거기다 웹쪽 책이든 그 이상의 소프트웨어 공학 책이든 그 한명이 혼자서 온갖 책들을 다 썼다는 것을 알 수 있을 것입니다.
바로 전문가들은 언어습득이 그닥 어렵지 않다는 것입니다.
그럼, 프로그램 전문가가 되려면 어떻게 공부해야되나요?
저 같은 경우,(전 아직 전문가라 생각을 한적은 없습니다만...) 학교에서 C만을 배우고(사실 배우긴 했으나, 제가 제대로 공부를 한적이 없어서...) 정규 과정을 다 이수를 한 후, 졸업 후 사회에 첫발을 내딛고 나서 보니 참 막막했습니다.
그럼, 어떻게 공부를 했느냐?
먼저, 제가 알고 있는 분야 즉, C언어를 마스터하기 위해서 노력했습니다.
첫 직장도 마침 C언어로 개발을 하는 업체여서 공부도 쉽게 되었습니다.
공부 방법은 어떻게 했느냐? 책을 깊이 보진 않았습니다. 왜냐 사실 바이블 같은 책들은(언어 소개 책들 대다수) 일종의 사용설명서이자 도구에 대한 설명이지 사실 깊이는 없습니다. 왜냐 잘 생각해 보시면, 사실 책들을 뒤에서 시작해서 보나 중간에서 보나 앞에 기초만 조금 보나 사실 어디서 보든 별 어렵지 않습니다. 그러나, 보통 언어를 배우시는 분들은 첨부터 정독을 합니다.(저도 첨엔 정독했습니다. 하지만, 정독의 문제점 앞은 손때가 묻어 시커멓게 변해있을 정도이나 뒤는 잘 보질 않죠^^그리고, 지루하다는거...학습지 광고가 생각납니다. 매번 1장만 반복해서 본다는...)
그런데, 과연 내 수준이 C언어를 마스터했다고 주장할 수 있을 정도의 수준인가라는 의문이 생기더군요.
사실 마스터의 기준이 어디인지 어느정도인지를 모르기 때문입니다. 시험이라는 놈이 있지 않기 때문에 그걸 알 수가 없습니다.
그럼, 어떻게 마스터했다고 생각할 정도의 수준을 만들까를 고민해야 됩니다.
즉, 언어를 이용한 응용을 해 봐야 합니다.
C언어를 마스터했다는 기준은 이 언어를 이용한 자료구조라던지 알고리즘, 파일시스템 등등을 해 보므로써 본인의 실력이 어느정도인지 가늠할 수 있습니다.
즉, C만했다고 해서 마스터가 되는게 아니라는 것입니다. 사실, 프로그래밍을 잘 하려면 본인이 스스로 알고리즘정도는 만들 수 있어야 됩니다. 그러기 위해서는 언어의 스킬 만큼이나 자료구조, 파일시스템, 알고리즘 등 다양한 지식들이 필요하다는 것입니다.
학교다닐때는 자료구조, 파일시스템, 알고리즘등 왜 해야 되냐라고 생각하고 안듣거나, 거기서 거기인거 같은데 뭐 굳이 라고 하면서 안듣는 경우가 많습니다. 안타깝습니다.정말...(저도 학교다닐때는 그랬으니까요.ㅠㅠ)
프로그래밍을 하려면 바로 원리와 이해가 중요하고, 그걸 응용할 수 있는 것이 중요합니다.
즉, 프로그래밍에 쓰이는 원리나 원칙을 이해하고 나서, 그것을 이용하여 자료구조, 알고리즘 등을 구성해 본다면 그 언어는 마스터했다고 봐도 됩니다.
그런데 이런 분들이 있습니다.
C는 하는 데, Java는 생소해서 잘 못하겠더라고요. (그 반대도 마찬가지고요.)
한가지 언어를 익히고 나면 사실 다른 언어를 습득하는 건 그리 어렵지 않습니다.
단, C언어같은 구조적인 언어일 때와 C++나 java같은 객체지향 언어일 때는 조금 차이가 있습니다.
바로 객체지향의 개념을 확실히 이해를 해야 된다는 것입니다.
사실 객체지향 하면 다들 암기분야로 생각합니다. 다형성이 어쩌고, 클래스가 어쩌고 상속의 정의가 어쩌고...
잘못된 습관입니다. 객체지향에 대한 개념을 확실히 이해하여야 합니다.
객체지향에 대한 내용만 나와있는 객체지향이야기 같은 책들을 보시고 익히는 것 또한 도움이 됩니다.
간혹, 객체지향 개념을 익히긴 했는데도 Java습득하기가 쉽지 않네요.
이러시는 분들이 있을 수 있습니다.
공부하는 방법의 차이를 몰라서 입니다.
객체 지향에 대해 공부해서 C와 Java의 차이점은 익혔습니다.
그럼 이제 유사한 점을 비교해서 익히십시오.
포인터를 가지고 객체와 연관지어 생각을 해 보십시오.
포인터 공부할 때 그림을 그렸듯이, Java공부할 때 그림을 똑같이 그려보십시오.
즉, 본인이 마스터한 언어와 비교하면서 공부를 해 보십시오.
그리 어렵지 않을 것입니다.
보통 새로운 언어를 습득하기 위해서 다들 새로 책을 사서 첨부터 정독을 합니다.
이처럼 무식한 방법은 없습니다.
본인이 익힌 언어를 잘 응용해서 새로운 언어와 비교하면서 공부하시면 참 쉽게 해결될 것입니다.
거기다, 기존에 마스터한 언어로 구현했던 프로그램을 새로운 언어로 바꿔서 구현해 보십시오.
그것만큼 쉽게 이해하고 공부할 수 있는 방법이 없습니다.^^
자 그럼 정리를 해 보겠습니다.
Q)프로그래밍 언어는 뭘 할까요?
A)하고 싶은걸 하십시오!!!
Q)그럼 어떻게 할 까요?
A)원리와 개념을 이해하십시오. API를 많이 알고 있다고 잘 하는 것이 아닙니다.
Q)다른 언어를 습득하려고 하는데 고민입니다.
A)기존에 쓰시던 언어와 유사점과 차아점을 찾아서 비교하시면서 공부하십시오.
기존에 쓰시던 언어로 구현했던 프로그램을 새로 습득한 언어로 재변환해보십시오
A)하고 싶은걸 하십시오!!!
Q)그럼 어떻게 할 까요?
A)원리와 개념을 이해하십시오. API를 많이 알고 있다고 잘 하는 것이 아닙니다.
Q)다른 언어를 습득하려고 하는데 고민입니다.
A)기존에 쓰시던 언어와 유사점과 차아점을 찾아서 비교하시면서 공부하십시오.
기존에 쓰시던 언어로 구현했던 프로그램을 새로 습득한 언어로 재변환해보십시오
이젠 쉽게 프로그래밍 공부를 하실 수 있으시겠나요?



無我's World





