입문자에게, Java냐.. Python이냐.. 그것이 문제로다..



Python VS Java 를 이야기 하자는 것이 절대 아닙니다.


둘은 상호 보완을 할 수 있는 언어이고, 각자의 장점이 있는 언어이지 절대 비교할 수 있는 주제는 아니라고 생각합니다. 둘은 명백한 차이점이 있고, 둘은 명백한 장단점이 있습니다. 그리고 같은 점도 있습니다.


2019년 SlashData (https://www.slashdata.co/) 에 따르면 가장 많이 사용하는 프로그래밍 언어 순위는 다음과 같습니다.

  1. JavaScript (1170만명)
  2. Python (820만명)
  3. Java (760만명)


아래는 보고서 원문 발췌분 입니다.

JavaScript is and remains the queen of programming languages. Its community of 11.7M developers is the largest of all languages. In 2018, 2.5M developers joined the community: the highest growth in absolute numbers and more than the entire population of Swift, Ruby, or Kotlin developers, amongst others. New developers see it as an attractive entry level language, but also existing developers are adding it to their skillset. Even in software sectors where Javascript is least popular like machine learning or on-device code in IoT, over a quarter of developers use it for their projects.

 Python has reached 8.2M active developers and has now surpassed Java in terms of popularity. It is the second fastest growing language community in absolute terms with 2.2M net new Python developers in 2018. The rise of machine learning is a clear factor in its popularity. A whopping 69% of machine learning developers and data scientists now use Python (compared to 24% of them using R). 

Java (7.6M active developers), C# (6.7M), and C/C++ (6.3M) are fairly close together in terms of community size and certainly well established languages. However, all three are now growing at a slower rate than the general developer population. While they are not exactly stagnating, they are no longer the first languages that (new) developers look to.

보고서 PDF 링크


위에 나타나듯 Python 이나 Java를 또는 둘 다 할줄 아는 사람이 많다는 것은 것은 사실입니다. 이 데이터에 한국 데이터도 들어간 것으로 보입니다. 설문조사에는 영어, 중국어, 스페인어, 포르투갈어, 베트남어, 러시아어, 일본어, 한국어로 진행되었습니다. 한국 같은 Java 제국이 또 있을지는 모르겠지만, Java를 많이 사용하는 것은 확실합니다.

그리고, Java 와 Python 둘다 매우 유용한 언어임에도 확실합니다. 사용자 수가 증명하고 있는 것 처럼요.



1. Python 과 Java의 차이점

인기순위는 위에서 보았던 것처럼, 둘이 비슷합니다. 이 정도 차이면 거의 같다고 봐도 무방합니다. Python은 오픈소스 이고, Java는 Oracle에 메인으로 개발하고 유지보수 중인 언어입니다. 물론 Open JDK도 있습니다. 


속도면에서 차이는 분명 있습니다. GIL(Global Interpreter Lock)을 가지고 있는 인터프리터 언어인 Python은 속도의 한계점을 분명이 가지고 있습니다. 언어의 속도는 그 언어를 실행시키는 속도만 으로 계산되는 것이 아니라, 각종 라이브러리의 속도, 다른 시스템과 결합 되었을때 실행하는 속도 등이 전부 포괄적으로 설명합니다.  컴파일 언어 중 하나인 Java는 Python 보다 거의 모든 부분에서 우수한 속도를 자랑합니다.


컴파일 언어와 인터프리터 언어의 차이점은 딩그르르의 다른 글에서도 확인할 수 있습니다.






GIL(Global Interpreter Lock):

우리가 보통 Python이라고 부르는 Python은 CPython을 의미합니다. CPython이 메모리를 관리하는 방법이 Thread-safe 하지 않아서 하나의 thread 만 접근할 수 있도록 제한하는 것 입니다.


또 다른 가장 큰 차이점 중 하나는, Java  정적타입 언어이며 파이썬은 동적타이핑, 덕타이핑 언어입니다. 이게 큰 차이점이 아니라도 생각될지 모르겠지만, 막상 개발을 하다보면, 정적타이핑 언어로 개발 중엔 동적타이핑 언어가, 동적타이핑 언어로 개발 중엔 정적타이핑 언어가 그리워 집니다. 

파이썬의 최대 강점인 '영어 같은' 문법은 비교적 못생긴 Java 보다는 읽기 편하고 쓰기 편하고, 배우기 편합니다. 게다가 파이썬은 괄호를... 정확히 말하면 {} 콧수염 괄호를 사용하지 않고 인덴트(4개의 스페이스 또는 1 Tab)을 문법으로 사용합니다. 그래서, 누가 개발하던 비슷한 모양이 나오게 됩니다. 


연봉은 사실 비슷합니다. 하지만, 구인/구직 수는 다릅니다. 파이썬은 데이터 엔지니어와 인공지능 부분에서 훨씬 많은 수요가 있고, 서버 개발에는 Java 를 더 많은 수요가 있어 보입니다.

사람인 기준 단순 조회 정보입니다.

  • 자바 : 5,182건
  • 파이썬: 2,370건


사실 한국은 Java Empire 입니다. 표준언어가 되면서, 국가기관, 은행, 증권사, 보험사 기타 많은 기업들이 Java를 채택 했고, 그 일자리 수요를 채우기 위해 많은 Java 엔지니어를 양성 했으며, 또 그 많은 엔지니어들에 기대며 또 다른 많은 Java 프로젝트들이 생겨났습니다. 편안한 취업을 원한다면, Java를 할 줄 알아야 합니다. 특히 우리나라에서는요. 해외 취업이라면 모르지만, 우리나라에서 취업 하실려면, 자바를 할 수 있고, 없고의 문제는 생존의 문제가 될 수도 있습니다.

딜리버리 히어로, 뱅크샐러드, 엑시아 소프트, 고팍스 등 파이썬을 쓰는 큰 기업들이 많이 생기고 있으며, 생산성을 위해 스타트업이 파이썬을 많이 쓰고 있는데, 스타트업은 신입을 뽑지 않는 다는 것을 기억하세요.



2. 웹서버 개발

Python에는 Django, Flask, FastAPI 등을 필두로한 믿을만한 그리고 강력한 웹프레임 워크가 있습니다. Java에도 Spring과 Blade가 있으나, Spring이 압도적으로 사용되고 있습니다. 



자바는 Spring이 압도적으로 사용되는 만큼 매우 큰 생태계가 형성되어 있습니다. 문제가 생겨서 몰라도 일단 시작하면 인터넷 어딘가에는 해답이 있다고 보시면 됩니다. 물론 파이썬도 마찬가지지로 방대한 웹프레임워크 생태계가 형성되어 있고 Django나 Flask처럼 Spring이 현대 유행을 따라가는 중이라고 말하기는 어렵지만, 확실히 안정적이고 파워풀한 백엔드를 만드는 프레임워크임에는 확실합니다. 




3. 게임 개발

게임 개발에는 C++와 C#이 강경하게 버티고 있기 때문에 Java나 Python으로 프로덕션 레벨의 게임을 만드시는 분들은 없겠지만, 그래도 게임을 만들수 있는 프레임워크가 있습니다.


Python 에는 Pygame, Cocos, Panda3d, 그리고 파이썬과 비슷한 GD Script를 쓰는 Godot가 있고, Java 에는 JMonkeyEngine이 있습니다.


여전히, Unreal 또는 Unity 엔진에서 사용되는 C++ / C#을 따라 가려면 한참 멀었지만, 어쨌든 게임을 만드는 재미를 느껴볼 방법은 있습니다. 파이썬의 경우는 C++나 C#을 사용하여 게임을 만든다 하여도 부수적인 스크립트가 필요할 시 많이들 사용하고 있습니다. 



4. 머신 러닝 

파이썬은 문법이 매우 쉽고, 크로스 플랫폼 언어이기 때문에 머신 러닝을 실험하고 각 분야에 AI를 사용하고 싶어하시는 분들께 매우 인기가 있는 것은 사실입니다. AI와 머신러닝이 파이썬과 함께 성장해왔다고 생각해도 과언이 아닐만큼, 데이터 관련 분야에서는 Python이 더 많이 사용되고 있습니다. 빠르게 테스트 작성 가능하고, 빠르게 테스트 할 수 있는 Python이 이 분야에서는 강점을 가질 수 밖에 없습니다. TensorFlow, Keras, PyTorch 등 멋진 라이브러리도 있습니다.

그래서, Java는 머신러닝에 약한가..? 절대 아닙니다. 이미 많은 분이 Java로도 기계학습을 하고 계십니다. Weka, Mallet, DL4, MOA 등 멋진 라이브러리도 있습니다.



결론..

파이썬을 할 줄 아신다면, 또는 Java를 할 줄 아신다면, 다른 하나를 배우는데 어렵지 않을 것입니다. 파이썬은 입문하기 쉽습니다. 파이썬은 덕타이핑 언어 (덕타이핑 알아보기 - 위키피디아) 이고 동적타이핑 언어 라서, 깊이 들어가면 들어갈 수록 정적타이핑 언어에서는 볼 수 없는 오묘함이 있습니다. 누구나 중수 까지는 갈 수 있지만, 고수가 되기는 쉽지 않은 언어 입니다. 

자바는 처음 시작 하기가 파이썬 보다는 어렵습니다. 고수가 되는 것은 어느 분야나 어렵지만, 오묘하고, 정답이 없는 파이썬 처럼 어이없는 경우는 자바가 훨씬 적습니다. 

둘 다 배워보세요! 둘 다 하시면 우선 취업은 바로 될 것입니다. 몸 값도 빠르게 오를 것이고요!

시간이 없다고요? 아닙니다. 아닐거에요! 주간에는 일을 하고 밤에는 아이 둘을 돌보고 주말에는 가족과 함께 시간을 보내는 유부남 엔지니어도 2주면 다들 다른 언어를 배워옵니다. 마음에 문제가 아닐까 생각합니다. 지금은 힘들지만, 두 언어는 각각의 장점이 분명히 있기 때문에, 시도 할 만한 가치가 충분히 있다고 생각합니다.








  • [[a.original_name]] ([[a.file_size | fileSizer]])
좋아요[[ postLike | likePlus ]]
공유
라이언

“Lead Python Engineer”

댓글 [[totalCommentCount]]
[[ comment.author__nick_name ]] [[ comment.datetime_updated | formatDate]] (수정됨)

[블라인드 처리된 글 입니다.]

답장
[[ sub.author__nick_name ]] [[ sub.datetime_created | formatDate ]] (수정됨)

취소
댓글을 남겨주세요.
'데브옵스' 관련 최신 포스트
[[ post.title ]]
[[ post.datetime_published_from | DateOnly ]]