자바 파이썬 JS C++ C# 비교 - 10년차 CS 프로그래머 입장
- 블라블라
- 2019. 3. 11.
언어를 비교하는 건 시대를 불문하고 꾸준히 있었던 일인데요. 웹 프로그래머, CS 개발자 등 언어를 바라보는 관점은 다릅니다. 흔히 웹 개발자들은 CS 개발자들 업무를 보고 "그거 어떻게 해? 어려워 보여"라고 이야기합니다. 반대로 CS 개발자들은 웹 프로그래머들을 보며 "그거 어떻게 해? 어려워 보여"라고 이야기합니다.
서로 업무가 다르다 보니 웹 <-> CS <-> 모바일을 바라보는 관점이 다릅니다. 옳다 그르다, 맞다 틀리다 문제라기보단 분야가 다르다 보니 시야가 다른 건데요. 오늘은 그 이야기를 조금 해보려고 합니다.
모 개발자 게시판에서 읽은 글인데, 다른 분이 적은 글은 회색 바탕이며, 제 의견은 그 아래 흰 바탕글입니다.
▷ Java
안드로이드 쪽 하다가 넘어오는 사람에겐 익숙해서 좋음. 범용 언어라서 특정 환경에서 쓰기 위해서는 다른 언어들에 비해 덜 함축적이고 군더더기가 있음. 한국에서도 전자정부프레임워크 빼면 점유율 엄청 낮음. SI 업계 가면 몇 년 야근으로 등골 쪽 빨릴 위험 매우 큼.
자바를 배우는 이유엔 여러 가지가 있으나, 가장 큰 장점은 분야 다양성입니다. 자바를 배워 JSP 같은 웹으로 진출할 수 있고, 자바 프레임워크 기반의 솔루션 업체에 갈 수도 있고, 전자 정부 프레임워크 분야로 갈 수도 있습니다.
때로는 자바를 활용한 임베디드 솔루션에도 프로그래머로 입사할 수 있습니다. 자바 장점이 바로 이런 점입니다. 전자 정부 프레임워크 빼면 점유율 낮다는 건 동의할 수 없습니다. SI 분야에서만 사용하지도 않으며, 오히려 분야별로 지원하는 라이브러리가 달라서 호환이 안 되는 문제가 있습니다.
자바! 하면 떠오르는 게 JVM! 입니다. JVM 또한 환경별로 천차만별이며 JAVE EE 는 업계 반대에도 불구하고 클라우드 분야로 업그레이드되고 있습니다.
또한, 안드로이드 분야도 최근 코틀린으로 넘어가며 안드로이드 경험자가 무조건 자바 분야에서도 활용되리란 보장도 없습니다. 지금은 그럴 수 있는데, 이후는 어떻게 될지 모르는 상황입니다.
▷ Python
쉬움. 편함. 처음 프로그래밍 익히는 사람도 쉽게 적응함. 다양한 라이브러리와 풍부한 생태계로 개발속도가 빠름. 각종 커뮤니티 잘 발달해있음. 스크립트 언어라서 성능이 중요한 프로젝트에는 적합하지 않음.
개발 단계에선 좋지만, 상용화를 염두에 두면 고민 좀 해야 함. 간혹 c로 포팅하는 경우도 봄. 라이브러리에 너무 의존하는 경향이 있기 때문에 신입 개발자가 깊은 내공을 쌓기 힘듬.
파이썬 == 스크립트 언어? 라고 생각하는 분들이 있어요. 당연합니다. 아직 파이썬을 스크립트 언어라고 부르는 것에 거부감을 느끼는 분들도 있어요.
일반적으로 파이썬은 인터프리터 라고 합니다.
또한, 중요한 프로젝트에 적합한 면이 많은데, 특히 웹 크롤링 분야에선 성능이 좋아 보급이 많이 된 상황입니다. C언어로 포팅하는 것도 금시초문입니다. 프로그래머가 라이브러리에 의존하는 건 어떤 언어든 마찬가지입니다.
▷ Js / node
웹개발자에서 시작한 사람에게 적합. 파이썬과 마찬가지로 패키지 기반의 개발이 주를 이루고 가장 빠르게 확장하는 생태계를 지니고 있음.
내가 필요로 하는 건 이미 누군가가 만들어 놨으니 잘 검색하는 기술이 중요.
Js의 태생적인 문제 때문에 ecma typescript coffeescript 등으로 개선하려는 노력이 다방면으로 이루어지고 있으나 하위 호환 때문에 바벨을 통해 변환하며 근본적인 문제가 해결되기 어려움. 파이썬 처럼 스크립트 언어라서 성능이 다소 낮음. 다만 개발의 편의성 때문에 웹 업계에서의 점유율은 어마어마함.
스타트업 시장에서 가장 핫한 언어. 하나를 배우면 10개의 새로운 기술이 나온다는 말이 있을 정도로 여러 방면에서 발전이 빠르기 때문에 철밥통이 어려운 언어.
제가 동경하는 부분입니다. 자바스크립트, 노드 JS, 이 둘은 제가 정말 배우고 싶습니다.
확장성도 높고 적용 분야도 많아 점유율 높습니다. CS 프로그래머 제가 생각하기에 C# 만큼 발전 속도가 빠릅니다. 단일 스레드 특징이 장점이자 단점이기도 한데, CS 프로그램과 연동하는 경우도 많습니다.
파이썬 처럼 성능이 낮다는 것도 맞는데, 파이썬 강사님들은 장난으로 C++ 보다 100배가 아니라 1억 배 느리다는 말씀도 하십니다. 장.난.으.로.
▷ C / C++
메모리 관리를 직접 할 수 있는 언어. 위의 언어들보다 성능이 압도적으로 높음. 다만 각종 라이브러리의 생태계가 잘 발달해있지 않아서 직접 개발해야 하는 부분이 많고 난이도가 높음.
가장 기본적인 언어지만 이걸 못하는 개발자가 너무나 많음. 다른 말로 말해서 이걸 못해도 개발자는 할 수 있음. (다만 하이레벨로 올라가려면 어느 정도는 할 수 있어야 함. 분야에 따라서는 몰라도 무방할 수 있음.) 웹서버 하나를 만든다고 해도 node로 2분이면 만드는 내용을 c로 하려면 종일 걸릴 수도 있음.
대부분의 스크립트 언어에서 서브 프로세스로 다른 프로그램을 동작시킬 수 있기 때문에 성능이 중요한 부분을 c로 만들어서 클러스터링 하기도 함.
웹 서버 비교를 왜 했는지 의문입니다. C++을 웹 분야와 직접 비교하는 건 맞지 않습니다. 과도로 회를 썰 수는 있죠. 하지만, 과도의 원래 용도를 생각하면 과도로 회를 썰 수는 없습니다. 그런 맥락입니다.
또한, C++ 11 이후 C++ 에는 대대적인 변화가 생겼으며 현재 C++ 17 까지 발표되었습니다. 라이브러리 생태계는 너무나도 잘 발달해 있습니다. 간혹 MFC를 C++ 전부라고 생각하는 분들이 있는데, MFC는 이제 C++과 별개라 생각할 수 있을 정도로 동떨어졌습니다.
MFC는 1999년 이후 지원이 끊겼으며, 2019년 현재 20년이 지난 상황입니다. MFC를 기준으로 C++을 논할 시대는 아닙니다. 과거와 현재의 C++ 공부 방법은 많이 바뀌었습니다. C++을 주로 다루는 저는 C++ 11 전후를 기준으로 프로그래머 공부 방법이 다르다고 장담합니다.
▷ C#
마소에서 밀고 있긴 하지만 점유율은 꽤 낮음. 유니티가 c#으로 작성되기 때문에 게임 업계에서는 필수적. 유니티 아니었으면 사장되었을 거 같음.
C# 도입하는 업체가 많습니다. 대표적인 곳이 갈라파고스라 비난받던 FA 분야입니다. 특히 반도체 FA 분야는 MFC로 도배되어 신입 프로그래머에겐 안 좋은 환경이라는 이야기가 많았어요. 하지만 요즘은 C# 으로 대체하는 경우가 많습니다.
MFC 특유의 낮은 생산성, 유지 보수에 필요한 많은 시간 소요 등을 C#으로 대체하면 해결할 수 있습니다. 예전에는 이런 점을 업계 아저씨들이 이해를 못 했지만, 꾸준히 FA 분야에서 개발자 인력이 빠져나가다 보니 이를 수용한 것으로 보입니다.
CCTV 업계는 UI를 C#, 엔진을 C++로 제작하는 경우도 있어요. 최근엔 리눅스 / 윈도우 환경을 위해 Qt를 도입하는 경우도 많죠.
관련 글
▷ JAVA, C, C++, C# 언어 선택 고민하는 신입과 경력자분에게
▷ [IT 회사] 연봉 비교, 프로그래머 vs gui 디자이너, 누가 높을까
▷ Solid State Drive SSD HDD 장단점과 차이점 비교
ⓒ written by yowon009
자바 파이썬 JS C++ C# 비교, CS 프로그래머 입장