어떤 프로그래밍 언어를 공부해야 할까요?


간혹 페이스북에 보면 어떤 언어를 공부할까요?하는 질문을 많이 보게 되는데, 그 것에 대한 제 생각을 적어 볼까합니다.


질문은 보통 이런 패턴입니다.


저는 지금 C언어를 공부하고 있는데, 다른 언어(Java나 javascript)가 더 도움이 될 것 같은데, 다른 언어를 배워 볼까요?

저는 지금 Java를 공부하고 있는데, python이 더 좋다고 하는데 그걸 배워볼까요?


저는 지금 OO언어를 공부하고 있는데, XX언어를 배워볼까하는데, 어떻게 생각하시나요?


어떤 분들은 현재 YYY 언어가 hot하기 때문에 현재 공부하시는 OO 언어 말고 YYY을 공부하시는게 앞으로 큰 도움이 될 겁니다.라고 말씀하시는 분들도 계십니다.


제 생각에는 하던 공부를 더 하는게 좋은 것 같아요. 어떠한 하나의 프로그래밍 언어라도 내것으로 만드셨다면 다른 언어를 사용해야 할 필요가 있는 경우에 쉽게 익히 실 수 있습니다.


저는 대학생 때 어셈블리 언어와 C언어를 배웠습니다.


첫 회사에서는 C언어/C++을 했었어요. 그 이후에는 Java, javascript, RDBMS, NoSQL, python, ruby를 하고 있습니다.


학교 다닐 때 주로 배우고 익혔던 언어가 C와 어셈블리였지만 다른 언어로 넘어가는데 큰 어려움이 없었습니다. 왜나면 저는 천재니까요는 아니고요. ㅎㅎㅎ 


한 언어를 능숙하게 하시면 다른 언어를 활용하는데 큰 어려움이 없습니다.


프로그래밍 언어는 크게 봐서 딱 4가지 인 것 같아요.

asign - 할당

if - 조건 

loop - 반복

call - 호출


이 외에 언어에 특화된 문법들이 있긴하지만 결국 중요한 건 언어는 크게 다르지 않다는 거죠.


그림을 그리는 것으로 비유를 할 수 있을 것 같아요.


그림을 연필로 그리느냐 포토샵으로 그리느냐의 차이인거죠.


저 처럼 그림의 '그'자도 모르는 사람에게는 둘 다 있으나 마나한 것 입니다. 하지만 그림에 재능이 있고 학습된 사람에게는 둘 다 훌륭한 도구가 될 수 있겠죠.


그림의 목적과 상황에 맞는 툴(연필/포토샵)을 선택할 뿐입니다.


간단한 스케치를 할 때는 연필로. 컴퓨터로 결과물이 필요 할 때는 포토샵으로 사용을 할 수 있겠죠. 또는 다른 이유가 있을 수도 있겠죠.


중요한 것은 연필이냐 포토샵이냐의 툴이 아니라 "그림"입니다.


프로그래밍 언어도 마찬가지입니다.


학습을 할 때는 원하는 결과물을 만들어 내기 위한 논리력이 중요한 것이지 어떤 툴을 사용하느냐가 중요한 것은 아닙니다.


언어는 결국 툴일 뿐이라고 말하면서 왜 공부하던 언어를 계속하라고 하느냐? 그 것은 학습의 깊이 때문입니다.


영어 공부를 하다말고 중국어가 뜰 것 같다면서 중국어 공부를 하다가 힌디어를 공부하다가 일본어를 공부하면 어찌 될까요?


4개의 외국어를 유창하게 잘하거나 제대로 하는 언어가 하나도 없을 겁니다. 후자로 수렴한다에 500원 걸겠습니다!


지금 이대로 공부하면 잘 될까?라고 고민이 되는 것은 어쩔 수 없을겁니다.


저 역시 그랬었으니까요.


반드시 기억하세요. 연필로 그리느냐 포토샵으로 그리느냐가 중요한 것이 아니라 "그림" 자체가 중요한 것 입니다.




결론.


언어의 종류는 우리가 생각하는 것 보다 더 다양하고 많습니다. 


언어는 시대적 상황과 주변 환경에 의해 결정이 됩니다.

(그림 출처 : https://www.tiobe.com/tiobe-index/ )

지금은 Java 언어가 가장 많이 사용되네요.


하지만 3년 5년뒤에는 어떻게 될지 어느 누구도 장담 할 수 없습니다.


새로운 언어가 짜잔 나타나서 지구를 정복할지도 모르죠.


언어는 도구일 뿐입니다. 


툴에 집착하는 것 보다는 논리적인 사고와, 데이터를 핸들링하고 좋은 구조를 고민하고


목적이 있을 때 해결 방법이 머리속으로 떠 오를 때까지 익혀야 합니다.


끝~~



잠깐!! 


좀 더 나아가서 초심자의 프로그래밍 학습 방법 짚어보고 싶어요.


1단계는 언어 선정입니다.


초심자라면 쉽게 자료를 구할 수 있고, 구글링을 했을 때 쉽게 답을 찾을 수 있는 범용적인 언어를 선택하는 것이 좋습니다.


2단계는 기초 문법을 익히는 것입니다.


언어별로 asign, if, loop, call의 표현 방식이 다릅니다. 같은 것을 다르게 표현 하는 것이죠.


3단계는 연습입니다.


기초 문법을 익힐 때 책을 보거나 온라인 강의를 듣는 것만으로는 절대적으로 부족합니다.


태권도를 책을 통해서 온라인 강의를 통해서 배운다고 생각해보시면 됩니다.


어린 아이도 1달간 태권도 학원에 다니면 태권도 품세는 따라 할 수 있습니다. 그럼 그 어린 아이가 국가대표 태권도 선수랑 비등하게 대련할 수 있을까요? 


어린 아이가 당연히 지겠죠. 왜 그럴까요? 당연히 신체적인 능력도 다르지만 수련의 시간과 깊이가 다르니까 당연한 결과입니다.


프로그래밍도 마찬가지에요. 


책에 있는 연습문제를 따라해 보고. 이해하고, 책을 덮고 혼자서 짜 봐야 합니다.



진짜 진짜 마지막.!


로또에 당첨될 확률은 50%잖아요. 당첨 되거나 안되거나.


저는 당첨되지 않을 확률 100%입니다. 사질 않으니까요.


아무리 좋은 교제가 있어도 공부 안하면 끝이죠! 


열심히 공부하세요!


저도 열심히 할께요!

+ Recent posts