지앤선 이야기

[멘토에게 묻다]추천해주고 싶은 프로그래밍 언어는??? 그리고 그 이유는???

지앤선 2014. 4. 30. 14:03

이번 멘토에게 묻다는 분명하지 못한 질문으로 인해서 멘토들을 고민에 빠트리고, 제가 여러 가지를 배울 수 있었던 과정이었습니다. 그래서 조금 내용이 길더라도 전체를 공개하고자 합니다. 원하는 답을 얻기 위해서는 질문을 하는 이유가 분명해야 한다는 것을 깨달았고, 질문을 통해 답을 얻어 나가는 과장도 중요하다는 것을 느꼈습니다.

(참고로, 정확한 전달을 위해 주고 받은 대화의 거의 대부분을 그대로 공개합니다. 아울러, 내용 중에 ㅋㅋㅎㅎ같은 표현을 삭제하여 다소 딱딱한 느낌이 들 수 있으나 잘 못 된 표현을 바로 잡아 주시고 많은 도움을 주시기 위해 애써주신 멘토들께 감사 드립니다.)

 

이제 막 프로그래밍 공부를 시작하는 혹은 프로그래밍을 공부하고 있는 - 그러나 아직 한 분야를 깊이 있게 공부하지 못한- 사람들에게 추천해주고 싶은 (전망 좋은) 프로그래밍 언어는??? 그리고 그 이유는???” (제가 프로그래머가 아니다 보니 질문이 좀 잘 못 될 수도 있어요~ 혹 부족한 부분이 있다면 지체 없이 팍팍 고쳐주세요~)



프로그래밍 언어라고 해봐야 아는 언어들이 별로 없으니 언어보다는 분야를 추천하고 싶고 개인적으로 을 해 보면 어떨까 싶습니다.

프로그래밍 언어가 컴파일이라는 과정을 거치는 언어(Native Language)가 있고 거치지 않는 언어(Script Language)가 있으며 둘 다에 해당되는 언어(Java)가 있지만 개인적으로 우리에게 익숙한 웹브라우저와 편집기 하나만 있으면 손쉽게 개발환경을 구축할 수 있는데다, 코딩 결과가 바로바로 눈에 보이는 웹쪽이 처음 흥미를 느끼게 하는데 좋지 않을까 싶어요.
더군다나 요즘 보니 웹 관련된 프로그래밍 언어 중 하나인 JavaScript 가지고 웹을 통해 하드웨어까지 제어하고 있는 걸 보고 있자니 앞으로 점점 더 웹의 중요성 또한 올라갈 것 같기에 웹부터 해보면 어떨까 조심스레 추천해봅니다. 
 


질문이 많이~~ 어려워서 고민고민 하다가, 제가 JavaJavaScript를 주로 사용하고 있고, 다른 언어들은 혼자 한번씩 익혀본 것뿐이라서 자신 있게 추천 드리기도 어렵고, 대세를 전망할만한 시야도 가지고 있지 못해서 추천이라기보다는... 프로그래밍 언어에 대한 개인적인 생각을 적어볼까 합니다!

보통 이미 구축되어 있는 많은 시스템들이 Java로 되어있기 때문에 밥벌이를 위해서는 Java와 혹은 개인적인 관심사가 모바일이라면 그에 맞는 언어(Obj-C, android )를 공부하면 좋을 것 같습니다. 그리고 웹, 모바일 할 것 없이 뻔뻔강사님께서 추천하신 JavaScript에 저도 많이 동의하고요, 공감하고 있습니다. (어찌되었든, 먹고는 살아야 뭐든 할 수 있지 않나 싶은 생각에…)

그 외에 스타트업 회사를 원한다면 그에 맞는 빠른 개발을 위한 Ruby나 Python 등의 언어들을 공부한다면 좋겠다라는 생각이 들고요. (모든 스타트업이 이런 언어들을 사용하지는 않지만요)
그리고 이건 지금 저의 목표이기도 한데, 개발자가 하나의 언어만 파고드는 것도 중요하지만 뭔가 하나 이상의 나름대로의 무기(?)를 가지고 있는 것이 좋다고 생각합니다. 저 같은 경우 주업무(웹개발)를 위한 Java와 JavaScript 외에 개발자가 하나씩 무기를 가져야 한다는 생각으로 Ruby와 Python을 공부하고 있는데요. 개인적인 흥미도 있지만 이런 언어를 하나둘씩 익혀 놓고 사용한다면 업무에서도 유용하고 나중에 다른 기회가 왔을 때 그 기회를 잡기에도 참 좋을 것 같다는 생각이 듭니다. 시야를 넓히는 것도 도움이 되고요깊이 있게 공부할 언어는 분명히 필요하지만 거기에만 목메지 말고 폭넓게~ 다양한 언어를 습득하는 습관을 갖는다면 참 좋겠어요.
약간의 조크라면단언컨데 가장 중요한 언어 중 하나는 영어입니다.
 


영어에 비하면 프로그래밍 언어는 쉽다고 생각합니다. 그냥 아무 프로그래밍 언어나 정통하면 된다고 생각하는 편이에요. 예를 들어, 스크래치도 해당 언어를 정통하면 다른 언어도 쉽게 익힐 수 있습니다. 언어는 그냥 어떤 언어든지 처음 배운 언어를 끝까지 마스터하는 것이 중요해요. 나머지 개념은 다 대동소이!!! 그렇지만, 굳이 언어를 고르라면, 정형화가 잘 되어 있는 Algol 계열의 언어면 아무거나 무방하다고 생각하는데, 아무래도 함수형이나 다른 언어들은 개념이 조금 시작하는 프로그래머들이 배우기에는 복잡하니까... 


전망 좋은...’이란 표현이 너무 모호하네요. 밥벌이가 목적이라면 Java, Python 두 가지 추천하고요. low level로 내려가려면 C, 웹은 JavaScript 추가, 좀 모던한 언어를 맛보고 싶다면 Ruby, 앞서가고 싶다면 Closure, Erlang, Scala... (! 하나만 고르라고 했었나?)


 

: 하나만 말씀해주실 필요는 없고요, 추천해주시는 이유도 알려주시면 감사하겠습니다.


Java 가장 많이 쓰이는 언어 중 하나이면서직업 구하기 쉽다

Python : 자바로 못하는(또는 적당하지 않은) 영역을 보완하면서 두루두루 쓰기 좋음.  

C : 꼭 말할 필요 있나요?  

JavaScript : 웹세상을 지배하는 언어, 웹의 C  

Ruby : 이건 저도 설명이 힘든데, 프로그래밍이 기계를 다루는 작업이 아닌, 생각을 풀어내는 작업이란 생각이 듭니다. 새로운 경험?  

Closure, Erlang : 둘 다 실무에서 사용되는 함수형 언어입니다. 함수형 언어는 무어의 법칙이 깨지고 대안으로 병렬처리가 대두되면서 관심을 받는 언어 패러다임입니다.  

Scala : 여러 최신 언어 개념을 기막히게 잘 융합한 언어입니다. 어렵지만 아름답습니다. 



하여간 개발자들에게 난해한 질문이라는 것을 이야기 해주고 싶어요~



 

이때부터 제가 질문을 잘 못 한 것일까???”라는 의심을 시작하였습니다. 


저는 아직 경험이 많이 부족한지라, 어떤 이유에서 어떤 언어를 추천한다! 라고 말하기가 부끄럽습니다. 다만 한 가지, ‘흥미있는 것을 만들기 위해 익히기 가장 빠르고 구현하기 편한 언어를 공부하라고 말하고 싶어요. 특히 시작하는 사람일수록!!! 유행이나 다른 사람들 말에 이끌려서 이해가 잘 되지 않는 언어를 처음 접하면 지레 겁부터 먹고 그만둘 수 있지요. 흥미가 있는 언어, 본인에게 좀더 쉬운 언어라면 무엇이든 추천합니다. 그를 위해서 2~1달 안에 대강 뭐라도 해볼 수 있도록 예제를 다뤄볼 수 있음 좋겠어요. 


뭐가 전망이 좋은지 잘모르겠네요~ 그래서 대답을 쓰기가 곤란하다는... 어떤 분야의 개발자가 되길 원하느냐에 따라 추천해 드릴 수 있는 언어가 달라질 것 같습니다.

웹 개발자가 되고 싶다면 Java와 JavaScript를 추천합니다. 서버 개발자가 되고 싶다면 기본적인 Shell Script와 요즘 뜨는 Node.js와 같은 스크립트 언어를 추천하고 싶습니다. 클라우드 개발자가 되고 싶다면 오픈스택 개발 언어인 Python을 추천합니다. 응용 애플리케이션 개발자가 되고 싶다면 C#.net C++.net을 추천합니다.

일단 어떤 개발자가 되고 싶은지 먼저 생각해 보시고, 관심있는 분야의 언어를 공부하다면 그것이 바로 여러분의 미래가 될 것이라고 말해주고 싶습니다.

 

이때 확실히 제 질문이 잘 못되었다는 것을 깨닫고 사과 드리고, 제 질문의 의도를 다시 설명드리게 되었습니다.


의도치 않게 애매모호한 질문으로 인해 물의를 일으켜 죄송합니다.

우선, 제가 질문을 드린 의도는 이제 막 프로그래밍에 관심이 생기고 공부를 해나가려고 하는데 어떤 것부터 시작해야 할지 모르는 사람들(특히 학생들)에게 추천해주고 싶은 언어를 묻고자 했던 것입니다. “전망이 좋은이라고 표현했던 이유는 지금 학생이기 때문에 향후 5년정도 뒤에 사회생활이나 회사생활을 하게 될텐데, 그때 유용할 듯한 언어를 여쭤보자는 것이 그런 표현이 되었네요~ 물론 언어라는 것이 하고자 하는 것, 환경에 따라 모두 다르다는 것을 알고 있습니다.

제가 드린 질문은 (언제가 그렇듯이) 정답을 원하는 것도 아니고, 좋고 나쁘고를 여쭤보는 것도 아닙니다. 이번에 저도 또 많이 배웠습니다. 프로그래머들께 질문을 할 때는 조금 더 구체적이고 분명하게 해야 어떤 식으로든 답을 얻을 수 있다!!! 여러 가지 항상 감사합니다.


물의는 아니고요. 그냥 어찌 대답할지 몰라서 답을 못했어요.

개발이야 항상 그렇지만, 유행 따라 가면 당장은 빛이 날지 모르지만, 주기가 너무 빨라서 답이 없는 듯 하더라고요. 유행 보다는 하나를 깊이 공부해서 자기 것을 잘 만들고, 필요한 것을 계속 채워야 하지 않을까 싶어요.

어린 친구들에게는(나도 어린데…) 어려운 말인지 모르겠는데요. 일단 이것저것 기웃거려서 재미있는 것, 흥미로운 것을 찾고, 그것을 아주 잘하면 좋겠다 싶어요. 나이가 많아지고, 경력이 쌓이니까 오랫동안 써먹을 수 있는 게, network, os 이런 것들인 듯 하더라고요. 사용하는 법 말고, 만드는 방법을 기준에 두고요.

잔소리 좀 더 하자면, 학벌 상당히 중요해요. 무언가 제대로 하는 rnd같은 곳 가려면요. 무언가 it를 연구하고 싶다면, 좋은 학교를 가시는 걸 추천하고 싶네요. 실력 있다는 소리 들어도 기업체 이력서조차 못 내는 경우가 많아요.

당장 하고 싶은 것도 좋은데, 나이 먹고도 꾸준히 즐겁게 할 수 있으려면, 기본에 충실 하는 게 좋겠어요. 기본은 뭐 국영수, 국사 정도이려나??? (농담~) 


여전히 웹과 JavaScript에 한 표!!!

여전히 제 대답은 교육의 본질은 재미라고 생각하기 때문입니다.

이제껏 거의 10년 가까이 교육을 해보고 있지만 교육을 받아들이는 사람들이 재미있어 할 때가 가장 교육 효과가 높았었거든요. 

그래서, 본인들 스스로가 재미를 느끼기 시작하는 것까지가 교육의 범위라고 생각하고 그 다음은 그들 스스로 공부해 나가기 시작할 거기 때문에 일단 재미있게 여러 가지를(심지어는 C로만 할 수 있다 생각했던 임베디드까지!!!) 컴파일의 번거로움 없이 손쉽게 해볼 수 있는 웹과 JavaScript 에 한 표를 던져요!



JavaScript, 저도 한 표!!! 이제, 서버나 클라이언트나 둘 다 작성 가능한 자바스크립트 천하가 될 가능성도 농후해졌다고 생각해요~




저는 그래도 C언어를 추천합니다. C언어 문법은 만물의 기본이요 Java C#이든 Javascript이든 모든 것의 시작입니다. 첫째 아이에게 기본을 알려주었더니 아두이노에서 LED도 점멸하고 모터도 돌리고 잘 놀더라고요. Back to the basic, 저는 C언어입니다.


뻔뻔강사님과 같은 의견입니다. 이제 막 입문하려는 친구들에게 뭐가 되었건 만드는 재미를 얻을 수 있는 일을 하라고 말해 줍니다. 그리고 늘 궁금해하고 겸손 하라고 말합니다. 그러면 나머지는 알아서 됩니다.

 


세세한 사항들을 다 체크하고 하나하나 자기가 다 손봐야 직성이 풀리는 성격의 학생에게는 저수준의 언어가 적절할겁니다. 저수준 언어로 만드는 것은 대체로 작고 튼튼하고 활용도가 높은 그런 것이니, 빠르게 변화하는 세상 하나하나 다 쫓아가는 것에 크게 관심이 없고 내 손으로 만들었다는 데서 느껴지는 기쁨을 즐긴다면 추천합니다. 물론 저수준 언어에 숙달된 프로그래머를 찾는 회사가 별로 없는 것이 현실이지만 5년 뒤는 아무도 모르는 일이니까요. 꼭 취직을 해야 하는 것도 아니고요.

개방적이며 변화를 즐기고 새로운 것을 공부하는 것이 즐겁다면 나온지 얼마 안 된 프로그래밍 언어를 공부하는 것이 좋겠습니다. 이 경우 미래를 내다본다기보다는 항상 현시점에서, 나온지 얼마 안 되고 토론이 활발하게 이루어지고 있는 프로그래밍 언어가 무엇인지 관찰하고 그곳에 참여하는 자세가 필요할겁니다. , 시대를 너무 앞서가게 되어 시장에서는 매우 멀어질 수 있으니 이점 유의하셔야 할 것 같고요.

무엇을 하더라도 모국어 공부를 게을리해서는 안 됩니다. 3 수험생들을 가르치는 분으로부터 요새 학생들의 모국어 능력이 심각하다는 이야기를 들은 적이 있는데요, 국어능력을 빼놓고 논리적 사고능력이 높아지기를 기대하기는 어렵습니다. 튼튼한 국어능력이 뒷받침 되어야 외국어 학습도 잘되고 프로그래밍 학습도 수월해진다고 믿습니다.

프로그래밍 언어를 먼저 선택하기보다는 그것으로 무엇을 할 것인지 먼저 결정한 뒤 해당 작업에 맞는 언어를 고르는 것은 어떨까요? 영어 공부로 비교해보면 좋을 것 같은데, 영어 자체만을 공부한다면 영어선생님이 되거나 언어학자가 될 겁니다. 영문학을 전공하더라도 문학을 알아야 하고요, 영어로 외국인과 비즈니스를 하려면 그 나라의 문화와 비즈니스 세계를 먼저 알아야 합니다. 외국인 이성친구를 만드는 것이 목표라면 언어 이전에 플랫폼(이성)에 대한 이해가 선행 되야 할 겁니다.

 


개인적으로는 참 어려운 질문이었어요.




뭐랄까.. 여성분들에게 어떤 명품백이 최고냐는 질문과 비슷한지도...