최근 정부를 비롯해 기업에서도 많은 관심을 기울이고 있는 것이 바로 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"을 참고하는 것도 괜찮을 것 같다. 


필자는 본인의 전공 분야에 관한 좋은 원서를 읽고 책 내용을 번역 해서 개인 블로그에 포스팅 하고 있었다. 



  • 번역해서 포스팅을 하는 과정에서 훨씬 정리도 잘 되고 
  • 나중에 다시 찾아보기도 좋고
  • 그리고 영어에 고통 받는 많은 학생들에게 조금이나마 도움이 되고자 시작한 일이었다. 




그런데 포스팅을 하면서 뭔가 항상 마음 한구석이 찜찜했는데..

이거 혹시 불법 아니야? 

원작자의 허락도 없이 마음대로 이래도 되는 건가? 

이런 불안감이 문득 문득 엄습하곤 했다. 


결국 불안감을 떨치지 못하고 관련 내용에 대한 구글링을 착수





결과는...



저자의 허락 없이 원서를 번역하여 포스팅(posting) 하는 것은 역시나 불법이었다!! 





그런데 비영리 블로그면 괜찮지 않을까? 

광고 같은거 안 달아서 수익 발생하지 않으면 괜찮지 않을까? 

번역한 내용을 출판한다거나, 판매한다거나 하지 않으면 괜찮지 않을까? 



와 같은 생각이 들 수도 있다. 

그러나 위의 물음도 전부 괜찮지않다.!




재미있게도 필자와 똑같은 생각을 가지고 쿼라(Quora)에 다음과 같은 질문을 올린 중국인으로 추정되는 사람이 있었다. 


원서를 번역해서 온라인에 올리는 것은 불법인가요? 

Is it illegal to translate a book and post the translation online?



아래는 관련 질문의 링크이다. 

https://www.quora.com/Intellectual-Property-Is-it-illegal-to-translate-a-book-and-post-the-translation-online



아래는 질문의 내용 캡쳐 화면





요약하자면

내가 좋은 원서(English)를 봤는데, 아직 중국어로 번역된 것이 없는 것 같다. 그래서 이 좋은 책의 내용을 중국어로 번역해서 나의 개인 블로그에 올리고 싶다. 난 이 번역한 내용을 출판하지도 않을 거고, 어디에 팔지도 않을거며 내 개인 블로그에는 광고도 달지 않고 어떠한 이익도 취하지 않을거다. 그래도 이게 불법인가? 저자가 날 고소하려나? 




이에 대한 답변이 10개 정도 달렸는데.. 그 중에 Best 답변은 이렇다. 






당연히 당신과 같은 행동은 미국 저작권법에 위배 되는 행동이다. 

미 저작권법 title 17, chapter 1, section 106에 의하면 원서를 번역하는 행동은 파생작(derivative work)을 만드는 행동인데, 이러한 파생작을 만들기 위한 권리는 원작자에 독점권(exclusive right)이 있다. 라고 되어있다. 


만약 책이 저작권(copyright registration)에 등록되어 있다면, 저작권을 가진 사람은 당신에게 법정손해배상(statutory damages)을 청구할 권리가 있다. 법정 재량에 따라 $750~$150,000(한화로 약 90만원 ~ 1억 8천)의 손해배상금을 청구할 수 있다.

흠....




그래서 제가 미국 저작권법을 실제로 찾아 봤습니다. 답변 내용이 맞는 것 같긴 하네요. 아래는 링크 주소..


https://www.copyright.gov/title17/92chap1.html#106







포스팅 잘못 했다가 재산 탕진 할 수도 있겠군요;;



그러나 답변 말미엔 실질적인 내용을 언급했는데

대부분의 경우는 번역 포스팅에 대한 피해 정도가 그리 심각하지 않고, 원저자가 이러한 사항들을 일일이 확인할 수 없기에 법정까지 가는 상황은 거의 없다고 합니다. 그러나 어디까지나 "아마도"라고...

원저자가 고소 하고 싶으면 고소 하는 거고.. 



어쨋든 결론은 

원서 번역해서 포스팅하고 싶으면


  • 저작권이 없는 책이거나 
  • 저작권이 만료된 책이거나(일반적으로 저자 사후(死後


    ) 70년 이후 만료)
  • 저작권자의 허락을 받거나
  • 번역해서 혼자만 볼 수 있게끔 비공개로 하던가
  • 아니면 배짱 부리고 안들키길 기도하던가




저작권법을 찾아 공부한 후에, 원래 보던 원서의 앞 페이지를 다시 보니.. 평소엔 절대로 보이지 않을 것 같은 다음의 글귀가 보이네요.



All rights reserved. No part of this book may be reproduced, in any form, or by any means, without permission in writing from the publisher. 




포스팅에 대한 인식을 좀 바꿔야 겠습니다 ^^


'이것 저것' 카테고리의 다른 글

어떤 프로그래밍 언어가 가장 널리 사용될까?  (0) 2017.04.16

+ Recent posts