본문 바로가기

하고 싶은 거 하는 개발/기타 IT

[JAVA] 프로그래밍을 처음 접하는 사람을 위한 언어 추천

728x90

[글쓴이의 주관적 생각이 담긴 글입니다]


프로그래밍 언어 공부를 시작하려는 사람들에게 가장 고민되는 것은 "어떤 언어를 선택해야 할까?" 일 것입니다. 


IT기술의 발전에 따라 기존의 프로그래밍 언어 역시 끊임없이 진화하고 있으며 강력하고 편리한 새로운 언어 또한 생겨하고 있는 상황에서 수 많은 언어 중 하나를 선택하는 것은 쉬운 일이 아닙니다.


이러한 결정에 도움이 될 수 있도록 티오베(TIOBE)에서 프로그래밍 언어별 인기도를 나타내는 지수를 매달 공개하고 있습니다.



[티오베(TIOBE) 홈페이지]

https://www.tiobe.com/tiobe-index/




2020년 10월 티오베 지수




올해(20년) 10월에 티오베에서 공개한 프로그래밍 언어 상위 10위입니다.



C, JAVA, Python, C++ 등 익숙한 프로그래밍 언어가 보이실 겁니다. 



【올해의 프로그래밍 언어



2010년 이후 각 년도 별로 높은 점수를 받은 프로그래밍 언어 목록입니다. 


여기에서도 익숙한 언어가 보이실 겁니다. 



위의 지수들을 보시면 어떤 프로그래밍 언어를 선택해야 될 지 어느 정도 감이 오실겁니다.


C, JAVA, Python 중 하나.


저는 그 중에서 JAVA를 추천드리고 싶습니다. 





JAVA의 장점


첫번째, 자바는 대표적인 객체지향 프로그래밍 언어(Object-Oriented) 중 하나입니다. 객체지향에 대해 이해하기 위해서는 먼저 객체지향과 대비되는 개념인 절차지향에 대해서 먼저 알아야 합나다.


절차지향이란?


절차지향은 어떠한 행위를 순차적(절차적)으로 수행해야 합니다. 땅콩버터 샌드위치 만들기를 예를 들겠습니다.

이 순서는 변할 수 없습니다. 또한, 각 단계를 수행하기 위해 빵의 크기, 버터의 양, 칼의 크기 등을 고려해야 하고, 아주 작은 빵을 선택하거나 땅콩버터 대신 딸기잼을 선택하는 등 잘못된 선택을 할 수도 있습니다. 단순히 땅콩버터 샌드위치를 만드는데도 많은 것을 고려해야 합니다. 이러한 "땅콩버터 만들기"에 비유해 코딩 교육을 시도한 사례가 있습니다.




위 영상에서 샌드위치를 만드는 것과 같이 시간 순서대로 코딩을 하는 것을 절차적 프로그래밍이라고 합니다. 절차적 프로그래밍은 여러 명이 개발하는 대규모 프로그램 또는 자주 수정이 되는 프로그램을 만들 때는 복잡해지는 경향이 있습니다. 

초기 프로그래밍 언어는 대부분 절차적 프로그래밍 언어였습니다. C언어 바로 절차적 프로그래밍 언어입니다. 


그렇다면 객체지향은 무엇일까요?


객체지향이란?


객체지향은 모든 사물을 객체(object)로 표현합니다. 절차지향을 설명할 때 예로 들었던 땅콩버터 샌드위치를 살펴보면 빵, 버터칼, 버터가 모두 객체입니다. 객체는 변수와 메소드로 구성되어 있습니다. 



객체지향은 절차지향과 달리 시간의 흐름이 아닌, 독립된 객체간의 소통을 중시합니다. 메소드를 통해 객체 간 데이터를 주고 받으며 동작을 수행합니다. 프로그램이 복잡해지더라도 객체 단위로 수정이 용이하며, 오류 발생 시 문제가 있는 부분을 중심으로 원인을 파악하면 해결하기 쉽습니다. 


절차지향과 객체지향에 대해 간단하게 알아봤습니다. 어떤게 더 익히기 수월하다고 생각하시나요? 아마 객체지향일 것입니다. 그런 이유로 절차지향 언어인 C언어보다 객체지향 언어인 JAVA와 Python, 특히 JAVA를 추천드립니다.


 

 

두번째, 자바 아키텍쳐는 중립적(architecture neutral)입니다. 소스코드를 기계어인 Assembly 언어로 직접 컴파일해주는 C와 C++ 컴파일러와는 달리 JAVA 컴파일러는 소스코드를 바이트 코드로 만들어내며, 이 바이트 코드는 다양한 플랫폼(Windows, Mac OS 등)에 설치된 자바 인터프리터에 의해 해석되기 때문에 어떠한 플랫폼에서도 실행가능합니다.

 

따라서 새로운 기계라도 자바 인터프리터만 설치되어 있으면 바이트 코드를 해석할 수 있습니다.

 

 

 

세번째, 자바는 이식성이 높습니다(portable). 기존의 언어는 각각의 플랫폼마다 수치 연산 문제 등으로 인하여 약간씩 다른 코드를 사용합니다. 그러나 자바는 이식성이 강하여 다른 운영 체제, 다른 CPU에서도 같은 코드를 사용할 수 있습니다. 이식성이 높을 때의 단점은 각각의 시스템의 특성을 고려하지 않기 때문에 최적의 성능을 얻어낼 수 없는데, 자바는 이러한 것을 극복한 언어입니다.

 

 

이러한 장점 외에도 JAVA는 많은 장점이 있습니다.

 

 

 

JAVAPython은 둘 다 객체지향 언어이고 각각의 특성이 뚜렷합니다. 특히 Python의 경우, 초보자들을 위한 언어라는 말도 있을 정도입니다. 그럼에도 JAVA를 특히 추천드리는 이유는 몹시 현실적인 이유입니다. 

 

 

JAVA가 취업을 하는데 도움이 됩니다.

 

 

 

 

 

 

현재(20년 11월 04일) 기준, 프로그래머스에 등록된 신입 채용 공고는 총 127개입니다. 

 

혹시 프로그래머스를 처음 보시는 분들을 위해 간단하게 설명을 하고 넘어가겠습니다.

대부분의 IT회사는 채용 과정 중 코딩테스트를 치뤄야합니다. 프로그래머스는 코딩테스트를 연습할 수 있는 사이트입니다.

난이도 별, 주제 별로 알고리즘 문제를 풀 수 있고, 주기적으로 대회도 여는 등 활성화가 잘되어 있습니다.

더 관심이 있으신 분들은 포탈 사이트에서 프로그래머스를 검색하시거나, 아래의 URL을 통해 접속하시면 되겠습니다.

 

[프로그래머스(programmers) 홈페이지]

 

https://programmers.co.kr/

 

 

프로그래머스에 등록된 신입 채용 공고 중 JAVA 관련 공고는 몇 개나 될까요?

 

 



127개의 신입 공고 중 JAVA 관련 공고는 20개가 검색되었습니다.

 

JAVA를 알면 쉽게 배울 수 있는 JAVASCRIPT는 몇 개의 공고가 검색되는지 검색해보겠습니다.

 

 

 

 

34개의 공고가 검색되었습니다.

 

JAVA는 또한 어플리케이션을 개발할 수 있는 안드로이드 스튜디오에서 사용됩니다. 안드로이드를 검색해보겠습니다.

 

 

 

20 + 34 + 9 = 63개의 공고가 JAVA 관련 공고입니다.

 

물론 중복으로 검색된 공고가 존재하기 때문에 실제 JAVA 관련 공고는 이보다 적을 것입니다. 하지만 중복을 감안하더라도 상당히 많은 공고가 조재한다는 것을 알 수 있습니다.

 

 

그렇다면 Python은 몇 개의 공고가 존재할까요?

 

 

28개의 공고가 검색되었습니다.

 

 

프로그래머스에 등록된 공고만 보더라도 JAVA가 Python보다 수요가 더 많다는 것을 확인할 수 있습니다.

 

또한, 한국의 경우 특히 JAVA의 수요가 높습니다.  흔히 접하는 공공기관(대법원, 우체국 등)의 시스템은 JAVA로 구현되어 있다고 해도 과언이 아닙니다.

 

삼성 SDS, LG CNS, SK C&C와 같은 아웃소싱을 하는 기업은 입사 시 JAVA를 교육하는 과정이 따로 존재하기도 합니다.

 

 

 

최근 정부에서는 한국판 뉴딜 정책(디지털 뉴딜, 그린 뉴딜, 안전망 강화)를 펼치며 분야별 투자 및 일자리 창출을 주도하고 있습니다. 이런 사실을 기사로 접하고 프로그래밍에 관심을 가지시는 분들이 많으실 겁니다.

 

어떤 언어를 선택할 지 고민하실텐데 그런 고민에 도움이 되고자 준비해보았습니다.

 

JAVA를 추천드리기는 했지만 Python을 선택하셔도 좋습니다. 객체지향 언어라는 큰 틀 안에서 비슷한 면이 많은 언어이기 때문에 잘 알아보시고 본인이 좀 더 수월하게 다룰 수 있겠다고 느끼시는 언어를 선택하시면 됩니다.

 

요즘에는 인강이나 책, 국비지원 교육도 많으니까 어느 언어를 선택하시든 배움에는 무리가 없으실겁니다.

 

 

 

문의사항 있으시면 댓글 달아주시기 바랍니다.

 

감사합니다.

반응형