어떤 프로그래밍 언어를 배울 것 인가?
가끔 XETown에도 간간히 올라오는 질문이 있습니다. 프로그래밍을 하고 싶은데 어떤 프로그래밍 언어를 배워야 하나요?
이 질문에 사실 정해진 정답이 없습니다. 이유는 질문자분께서 질문을 하실 때 답변자는 무엇이 목적인지 모르기 때문입니다. 취업? 취미? 사업? 사업이라면 어떤 아이템을 이용하고 싶은지에 대한 정보를 우리는 모르고 있습니다.
그래서 그 질문에 “파이썬 쓰세요”, “HTML CSS부터 하세요” 라고 답변한다면 그 것은 잘못 답변하는 것입니다.
이 질문에 올바르게 답변 드리자면 질문자 분께서도 충분한 배경지식을 알아야 합니다. 그래서 어떻게 답변 드리자면 제가 예시로 말씀드리는 프로그래밍 언어를 가지고 이 언어를 왜 사용하는지, 배우면 어떤 곳에 취업하는지 등을 말씀드려 볼께요.
시작전 알아야할 개념
바로 처음에 말씀드릴 언어가 C, C++입니다. 우리는 C, C++언어를 언매니지드(Unmanaged) 언어라고 부릅니다. 언매니지드언어는 프로그래밍을 통해서 메모리할당부터 메모리 사용량 등등을 직접 관리하고 제어하기 때문에 하드웨어를 직접 관리한다고 생각하면 됩니다. 예를들어 수동기어 자동차를 생각하시면 됩니다. 기어변속을 직접 관리하여 엔진의 RPM을 직접 제어하여 속도나 언덕길 올라갈때 효율적으로 기어를 관리하죠. 이렇게 관리하는 것을 언매니지드 언어입니다.
그러면 언매니지드 언어와 반대되는 개념은 뭘까요?
바로 매니지드(Managed) 언어입니다. 매니지드언어는 C#, JAVA, Python, javascript, PHP등 있습니다. 언매니지드 언어가 직접 차량의 기어를 제어하여 효율적으로 운행을 쉽게할 수 있다면 매니지드 언어는 오토차량입니다. 지가 알아서 기어변속하는거죠. 그래서 언덕길 올라갈때 잘못 기어가 물려있을 경우 차량이 힘을 못쓰기도 합니다. 이와 마찬가지입니다. 매니지드 언어는 프로그래머가 직접 메모리를 관리하지 않고 프로그래밍언어가 알아서 하게 됩니다. 따라서 매니지드 언어는 코드가 간결하고 이쁘게 보이기도 합니다.
C, C++ 언매니지드 언어
이 언어는 하드웨어에 아주 가까운 언어입니다. 하드웨어라고 하면 우리가 사용하는 컴퓨터본체 부품과 스마트TV, 냉장고, 차량내 소프트웨어 등에 사용됩니다. 그리고 이 언어는 메모리(램)을 직접 제어를 하기 때문에 adobe 프리미어 프로, 3D게임(언리얼엔진, 유니티)등 다양한 분야에서 사용됩니다. 이 언어를 배울경우 대부분 하드웨어를 제어하는 기기들을 생산하는 업종이나 회사에 많이 취직하게 됩니다. adobe, EA와같은 각종 게임회사와 같이 큰 회사쪽에 취직할 수 있고, 주로 하는 일은 그래픽렌더링 프로그래머가 되거나 스마트기기 소프트웨어 개발자로 활동하게 됩니다.
JAVA 매니지드 언어
자바는 아시다 시피 한국에서 많이 유명합니다. 주로 정부, 기업, 은행에서 많이 다루고 있죠. 자바는 최근 기업용 웹어플리케이션을 빌드하는데 많이 쓰고 있어서 취업에 유리하기도 합니다. 그래서인지 자바 프로그래머 채용이 많은 편입니다. 그러나 빠르게 변하는 스타트업에서는 자바 개발자는 많이 없고, 대신 큰 기업이나 오래된 레거시 시스템과 작업해야하는 기관에서 자바개발자들이 많이 있습니다. 그래서 은행과 대부분의 정부 관련 기관에서 자바를 사용하고 있습니다. 그리고 자바를 배우게 되면 안드로이드 어플리케이션을 만들수도 있습니다. 안드로이드 스튜디오라는 프로그램을 무료로 제공하고 있으며 해당 프로그램으로 안드로이드 앱을 만들수 있죠. 큰 기관에서 안정적인 일을 하고, 급격하게 변하는 다른 언어들이 싫으시면 자바를 공부하는 편이 좋을 수도 있겠습니다.
Python 매니지드 언어
요즘 급격하게 뜨고 있는 프로그래밍 언어이죠. 제 개인적인 생각은 초보자들이 선택하기에 가장 쉬운 언어인 것 같습니다. 이 언어를 사용하면 아주 다양한 일을 처리할 수 있어요. 컴퓨터를 해킹한다던지, 머신러닝, 데이터 사이언스, 데이터 비쥬얼라이션, 웹 스크래핑, 웹사이트제작 등 아주 다양한 분야의 범위를 이 언어로 할 수 있습니다. 파이썬은 정말 간결하게 코드를 짤 수 있습니다.
하지만 저는 파이썬을 좋아하지 않습니다. 그 이유는 오늘주제와 맞지 않으므로 다음에 설명드리죠.
HTML, CSS, JAVAScript 매니지드 언어
XE, Rhymix, 워드프레스, 혹은 파이썬으로 웹사이트 빌드, C# asp.net 코어, jsp.net 코어 등을 활용하여 웹사이트 제작하실 경우 이 언어는 필수로 알아야 합니다. 웹사이트를 만들고 싶으면 무조건 알아야 합니다. 이 언어는 백그라운드 언어를 무엇을 쓰더라도 모두 공통적으로 사용되는 언어입니다. 즉 웹사이트 제작 프로그래머를 하시려면 이거 모르면 안될정도입니다. 이 언어들은 웹브라우저에서 처리하여 사이트의 모양을 보여주는 프론트앤드 언어들입니다. 서버와 통신이후 브라우저에서 모양을 잡고, 일부 동작에 변화를 주는 역할을 이 언어들이 수행합니다. 그래서 웹프로그래머 하시려면 무조건 필수입니다. 자바스크립트를 잘 다루게 된다면 나중에 자바스크립트를 백앤드 서버로 두어 데이터를 관리할 수 있습니다. 예를들어 nodeJS 와 같은 것들이 자바스크립트인거죠.
PHP 매니지드 언어
PHP는 제가 주로 다루고 있는 언어이기도 합니다. PHP는 백앤드 서버를 빌드하기 위한 언어입니다. 현재 존재하는 대부분의 일반 사이트들은 대부분 PHP를 이용하고 있습니다. 그리고 PHP자체 커뮤니티도 외국 뿐만 아니라 국내에서도 많이 활성화 되어있고 국내에서는 XE와 그누보드에서 사용되는 언어이기도 하죠. 그리고 일부 해외 쇼핑몰들은 워드프레스로 제작하는 경우도 있습니다. 그래서 세계적으로 웹사이트를 제작할 경우 많이 사용되고 있으며 매 년 패치도 지속적으로 하고 있습니다. CMS를 이용하거나 일반 웹사이트를 타겟으로 사업을 하고 싶으시면 PHP를 선택하세요.
선택지는 여러분들께 제공 해드렸습니다. 이제 여러분들이 답변할 차례입니다.
무슨 프로그래밍언어를 사용하고 싶으신가요?
결론은 "뭘 하고 싶은데?"를 먼저 물어봐야 한다는 거군요.
중국어를 배울까? 러시아어를 배울까? 스페인어를 배울까? 같은 질문도 마찬가지로... 내가 어느 나라에 여행을 가고 싶은지, 우리 회사가 어느 나라와 거래할 일이 많은지를 따져봐야겠지요. 프로그래밍 언어도 마찬가지가 아닐까요?
파이썬은 웹에서는 존재감이 없지만 이공계 대학, 연구소 등에서 시장점유율이 무진장 높아요. 제가 대전 카이스트 근처에 사는데 아마 이 동네 애들 아무나 붙잡고 파이썬 몇 줄 보여주면 꽤 높은 확률로 알아들을 겁니다. 사실상 인류의 미래를 책임지고 있는 언어라고 할까요? ㅋㅋㅋ