어떤 프로그래밍 언어가 가장 널리 사용될까?
최근 정부를 비롯해 기업에서도 많은 관심을 기울이고 있는 것이 바로 4차 산업혁명이다. 이 4차 산업혁명을 의미하는 키워드들을 간략히 언급하자면 다음의 것들이 있다.
인공지능(Artificial Intelligence), IoT(Internet of Things), 3D-Printer, 로봇(Robotics), AR(Augmented Reality), VR(Virtual Reality), 빅데이터(Big-Data), 웨어러블로봇(Wearable Robotics), 자율주행차(Autonomous Driving Car), 드론(Drone), ...
관련 전공자가 아니더라도 한 번쯤은 들어봤던 단어들일 것이다.
위에 나열한 키워드들을 보면 공통적으로 요구되는 기술이 있다. 바로 소프트웨어(Software)기술이다. 위에 나열된 그 어떠한 것도 소프트웨어 없이는 구현될 수 없다. 정부에서도 이러한 소프트웨어의 중요성을 인식하고 2018년부터 관련 교육을 의무화 한다고 공표하였다. 그 만큼 중요하다.
그렇다면 전 세계적으로 어떠한 소프트웨어들이 사용되고 있을까? 또한 어떠한 소프트웨어들이 존재하는 것일까? 소프트웨어 관심을 가진 사람이라면 한 번쯤 이러한 생각을 해본 적이 있을 것이다. 이번 포스팅에서는 세상에 존재하는 수 많은 프로그래밍 언어들이 얼마나 인기가 있고 널리 사용되는지에 대해 알아보고자 한다.
1. TIOBE index
Fig. 1 TIOBE Ranking. 검색엔진의 쿼리와 웹페이지 정보를 기반으로 Ranking을 정한다. (2017년 4월 기준)
전 세계 사람들이 가장 많이 사용하는 프로그래밍 언어는 무엇일까? 이와 관련된 정보를 제공해주는 회사가 네덜란드에 위치한 TIOBE(https://www.tiobe.com/)이다. 이 회사에서 제공하는 서비스 중 한 가지는 프로그래밍 언어에 대한 Ranking을 제공한다. Google, Yahoo, Baidu, Wikipedia, Youtube 외에 사람들에게 널리 사용되는 검색엔진들의 검색 쿼리(queries)와 관련 웹페이지들을 수집하여 쿼리와 웹페이지에 포함된 각 프로그래밍 언어의 단어 숫자들의 통계치를 기반으로 순위를 매기는 방식이다. 이 index는 한 달에 한 번 업데이트 되며, 무료로 볼 수 있다. 그러나 긴 기간동안의 특정 통계치는 팔기도한다.
주의해야 할 것은 이들이 제공하는 Ranking은 최고의 프로그래밍 언어(Best Programming Language)에 대한 Ranking이 아니며, 가장 많은 수의 line이 작성된 언어도 아니다. 단지 인터넷에서 많이 회자되는 언어를 기반으로 전세계에서 가장 많이 사용되는 프로그래밍 언어를 추정한 추정치이다. 프로그래밍 관련 순위를 보려면 아래 링크로 접속하면 된다.
https://www.tiobe.com/tiobe-index//
2017년 4월 기준으로 Java가 1위이며, C와 C++, C#, python등이 뒤를 잇는다. 순위에 따른 점유율(Ratings)을 제공하며, 그간의 순위 변동을 그래프로 볼 수도 있다.
2. PYPL index
Fig. 2 PYPL Ranking. Google trends데이터를 기반으로 Ranking이 정해진다. 프로그래밍 언어 뿐만 아니라 통합개발환경(IDE), DB언어 등에 대한 Ranking도 제공한다. (2017년 4월 기준)
PYPL(PopularitY of Programming Language) index는 Google trends의 통계데이터를 기반으로하며, 사용자들이 각 프로그래밍 언어의 튜토리얼(tutorial)을 얼마나 검색하는지에 대한 통계치를 기반으로 Ranking을 매긴다. 프로그래밍 언어 뿐만 아니라 visual studio 등과 같은 통합개발환경 IDE(Integrated Development Environment), ODE(Online Integrated Development Environment), 그리고 SQL과 같은 DB언어에 대한 Ranking도 보여준다. 아래 링크에서 순위를 볼 수 있다.
http://pypl.github.io/PYPL.html
이들이 주장하는 바로는 TIOBE index는 단순히 웹페이지에 포함된 프로그래밍 언어 단어들을 기반으로 추정치를 산출하기 때문에 정확하지 않다고 한다. 단순히 웹페이지나 쿼리에 프로그래밍 언어와 관련된 단어가 존재한다고 해서 그것을 사람들이 사용하거나 공부한다고는 할 수 없으며, 관련 튜토리얼을 검색한 사람이 적극적인 유저라고 할 수 있기 때문에 자신들이 더 정확하다고 주장한다. 뭐 어느 정도는 일리있는 것 같긴 하다. 2017년 4월을 기준으로 1위는 Java로 TIOBE의 Ranking과 같으며, python, php, C#, Javascript가 뒤따른다. 순위가 약간 다르다.
3. RedMonk index
Fig. 3 RedMonk Ranking. Github와 StackOverflow의 자료를 기반으로 Ranking을 정한다. (2017년 4월 기준)
RedMonk의 프로그래밍 언어 Ranking은 Github와 Stackoverflow자료를 기반으로 제공된다. Github에 각 프로그래밍 언어로 작성된 소스코드들의 Pull Request(소스코드가 변경되었다고 Github와 다른 사용자들에게 알리는 행위)의 숫자를 수집하고, Stack Overflow사이트에서 주고 받는 질문과 답변, 그리고 태그 정보들을 수집하여 이 둘을 조합하여 순위를 매기는 방식이다. TIOBE나 PYPL index와 달리 실제 소스코드에 대한 지표를 고려한다는 점에서 차별화 되어있다. RedMonk의 Ranking은 아래의 링크에서 확인할 수 있다.
http://redmonk.com/sogrady/category/programming-languages/
4. 마치며
위에서 언급한 사이트 이외에도 다양한 Ranking사이트들이 존재한다. 그러나 가장 널리 알려진 것은 위의 세개 정도이며, 나머지 Ranking index에 관한 내용은 여기에서 간략히 볼 수 있다.
사실 어떤 지표가 더 낫다, 더 정확하다고 자신있게 얘기할 순 없다. 각기 다른 기준의 지표를 사용하고 있으며 각자가 주장하는 합리적 근거가 있기 때문에 그저 개인의 판단에 맡기는 수밖에 없을 것 같다. 세부적으로는 순위에 약간씩 차이가 있긴 하지만, 높은 순위에 Rank되는 언어들은 비슷한 양상을 보인다. Java계열 언어는 거의 독보적 1위를 차지하고 있으며 python과 C계열 언어, PHP등이 높은 순위에 올라와있다. 약간씩 다른 기준과 지표들을 활용하고 있지만, 결과적으로는 비슷한 양상을 보이기 때문에 너무 어느 한 쪽을 맹신하거나 혹은 불신하거나 하지는 않아도 될 것 같다. 개인적으로는 튜토리얼 검색 기반의 PYPL방식이 가장 좋아보이기는 한다. 그리고 IDE나 DB언어의 Ranking을 함께 제공해주는 것도 가장 마음에 든다. 어디까지나 개인적인 의견일 뿐이지만.
사실 필자도 이렇게나 많은 언어가 존재하는지는 몰랐다. Java가 너무 우위를 점하고 있어서 Java를 배울까 하는 생각을 아주 잠깐 하기도 했었지만, 어떤 언어를 다루는지는 사실 그렇게 중요하지 않을 수 있다. 중요한건 문제 파악 능력과 해결 능력이 아닐까.
참고로 프로그래밍 입문자나 새로운 프로그래밍 언어를 배워보고자 하는 사람이 있다면 "Which Programming Language should I learn first"을 참고하는 것도 괜찮을 것 같다.