프로그래밍언어론

2018년 가장 핫한 프로그래밍 언어 탑10

plas 2019. 2. 16. 15:17

프로그래밍 언어는 프로그램을 작성하는 도구다. 어떤 문제를 어떤 환경에서 해결해야 하는가에 따라 개발자들이 프로그래밍 언어에 원하는 바가 달라진다. 특히 최근에는 서버와 데스크탑 뿐 아니라 모바일과 임베디드, 엣지 등 급격하게 컴퓨팅 환경이 다양화되면서 각 환경마다 적합한 언어가 있고 또한 여러 시스템 사이에 연결해주는 역할도 매우 중요하다. 환경에 따라 프로그램이 해주어야 하는 역할이 달라지고 그에 따라 선택되는 언어도 달라진다. 거대한 규모의 시스템을 구축하고 성능이 어느 정도 나와야 하는 환경이라면 C나 자바 같은 전통적인 언어가 더 바람직할 것이다. 모바일 환경에서는 그에 적합한 Kotlin이나 Swift 같은 언어를 사용해야 한다. 웹 환경에서는 PHP나 자바스크립트 같은 언어가 다른 선택의 여지가 없이 지배적이다. 그런가 하면 가벼운 빠른 프로토타입 개발이나 시스템 간의 연결 같은 목적이라면 Python이 적합하다. 또는 특수한 환경, 예를 들면 AI 도구나 데이터 분석 도구들에서는 Python 이나 다른 특수 언어가 사용된다. (2020년 가장 핫한 프로그래밍 언어)

"The Pragmatic Programmer"라는 유명한 책에 개발자의 팁으로 Tip #8 "Invest Regularly in Your Knowledge Portfolio"라는 절이 있다.

매년 새로운 언어를 적어도 한 개씩 배워라. 다른 언어는 같은 문제를 다른 방식으로 푼다. 
다른 접근방법을 배움으로써 생각의 폭을 넓힐 수 있고 막다른 길에 막히는 것을 피할 수 있다. 
새로운 언어를 배우는 것은 오늘날은 인터넷과 프리 소프트웨어의 덕으로 결코 어려운 일이 아니다.
그것은 뭔가 새로운 목표를 추구하는 것이 아니다. 
이전에 사고하던 방식을 벗어난 다른 길을 고려해 보는 것이다.

옛말에 "망치 눈에는 모든 것이 못으로 보인다"라는 속담이 있다. 
좀 다른 새로운 기술을 가진다면 새로운 해법을 발견할 수 있다. 
그러나 찾지 않는다면 결코 그런 길은 가능하지 않다.

그럼 몇 가지 질문이 떠오를 것이다. 왜 새로운 언어가 계속 등장하는 걸까? 왜 어떤 언어는 사라지고 다른 언어가 떠오르는 것일까? 또한 성공하는 언어는 어떤 언어인가? 어떤 언어가 왜 특정 환경에서 적합하고 많이 사용되는가?

새로운 언어를 배우는 것은 상당한 시간과 노력을 요구한다. 그러나 이제 언어는 더이상 내가 한 두개 선택하여 배워두면 되는 것이 아니다. 새로운 언어는 새로운 환경과 도구와 컴퓨팅 방법을 모은 기술의 집약체다. 그러므로 새로운 언어를 배우는 것은 우리가 가진 스킬셋(skill set)을 확장하는데 핵심적인 부분이 된다.

이렇게 프로그래밍 언어가 다양화되고 그 중요성이 높아지고 있는 상황에서 언어를 배우는 능력이 매우 중요하다. 사실 대부분의 언어들이 기본적인 구조에서는 같은 기능들을 가져 공통적인 점이 많다. 그러나 언어마다 다른 여건과 필요에 의해 선택되는 차이도 크다. 그래서 어떤 언어가 언제 많이 사용되는가, 그리고 그것들이 왜 많이 선택되고 있는가를 이해하는 것이 중요하다. 깃허브에서는 일년에 한번씩 지난 일년간 깃에서 가장 많이 사용된 기술과 언어를 발표하는데 여기서 2018년 가장 많이 쓰인 프로그래밍 언어 10개가 발표되었다. 아래 글은 그것을 정리한 기사를 번역한 것이다. 

출처 : https://www.businessinsider.com/the-10-most-popular-programming-languages-according-to-github-2018-10

깃허브는 개발자들이 자신들의 코드를 관리하고 공개하여 다른 개발자들에게 기여할 수 있는 소프트웨어 프로젝트의 허브다. 310만 개발자들과 210만 조직들이 참여한 2018년도의 annual Octoverse 리포트는 소프트웨어 개발자의 세계에서 무슨 일이 벌어지고 있는지를 보여주는 최고의 정보를 제공한다.

깃허브 사용자들이 택한 탑10 프로그래밍 언어의 리스트는 다음과 같다. 수천개의 프로그래밍 언어가 있지만 많은 개발자들이 주로 믿고 쓰이는 언어는 그 중 몇 개다.

깃허브는 최근 마이크로소프트에 75억달러에 팔렸고 지금도 빠르게 성장하고 있다. 2018년에만 8백만의 유저가 새로 증가햇다. 이것은 깃허브의 최초 6년간의 증가 수치와 맞먹는다. 또한 깃허브는 중국, 인도, 싱가포르, 브라질 등 빠르게 전세계적으로 퍼져나가고 있다. 사실 기존의 가장 큰 프로그래머의 커뮤니티였던 페이스북과 대등한 수준으로 성장했다.

다음은 깃허브에서 선정한 2018년 10개의 톱 언어다.

#10 : 루비

Ruby는 단순성이 가장 큰 장점인 다이나믹한 오픈 소스 프로그래밍 언어다. 우리가 오늘날 매일같이 쓰는 몇몇 앱이 루비로 개발되었다. Ruby on Rails는 대표적인 웹 어플리케이션 프레임워크로 Ruby로 구현되었다. Twitch, SoundCloud, Hulu, Zendesk, Square and GitHub이 Ruby on Rails로 개발되었다. 

루비는 DB와 웹 분야에서 쉽고 빠르게 프로그램을 개발할 수 있는 여러 가지 기능을 제공한다. 강력한 라이브러리와 똑똑한 엔진이 많은 일(자동 코드생성)을 해주어 개발자가 직접 해야 하는 코딩의 양을 크게 줄여준다. 그 결과 다른 언어로 개발하는 것에 비해 10배 정도로 빠른 개발 속도를 보일 수 있다. 그러므로 엔간한 웹사이트 만드는 것은 개발자 한 명이 며칠이면 충분하다. 문제는 이렇게 개발된 결과물은 아무래도 미리 만들어진 템플릿을 이용한 자동생성이다 보니 원래 지원되지 않는 방식으로 커스터마이징하는 것은 난이도가 높다. 또한 성능의 측면에서 문제가 생길 수 있다. 데이타가 많아지고 사용자가 늘어나면 확장성(scalability)이 크게 떨어져서 큰 사이트는 루비로 개발하는 것이 바람직하지 않다고 알려져 있다.

#9: C

C는 가장 오래된 언어이자 좋은 언어기도 하다. 1970년대에 만들어진 가장 오래된 언어 중 하나다. 그러나 오늘날까지도 가장 널리 사용되는 프로그래밍 언어의 자리를 여전히 지키고 있다.

C는 주로 마이크로소프트 비쥬얼스튜디오나 리눅스 환경의 gcc에 의해 컴파일되어 네이티브 코드로 생성된다. 이것은 엄청나게 빠른 속도를 보장하므로 어느 언어나 환경도 C의 속도와 성능을 따라올 수 없다. 그렇기 때문에 운영체제나 디바이스 드라이버 등 낮은 수준의 시스템 프로그램이나 이미지, 동영상 등 계산량이 많은 경우, 그리고 데이터가 커지고 계산량이 많아져야 하는 프로그램의 경우 C/C++이 아직도 최선의 선택인 경우가 많다. C 언어의 간결함을 아직도 많은 개발자들이 사랑한다(컴파일러가 몇 K 바이트고 컴파일된 실행파일도 놀라울 정도로 가볍다). 단점이라면 네이티브 코드가 가지는 문제점, 특정 플랫폼에서만 동작한다는 점과 보안에 대한 통제가 어렵다는 점을 들 수 있다. 또한 이 프로그래밍 언어가 1970년대에 만들어져서 새로운 버전으로 계속 발전했지만 기본적인 언어의 기반이 컴퓨터과학의 여러 발전된 개념(객체지향, 반복자, 람다 등)을 담지 못하고 있어 프로그래머가 코딩에 더 많은 노력과 시간을 들여야 하고 오류의 가능성(테스트로 오류를 발견하지 못할 가능성)이 높다.

#8: Shell

쉘 스크립트는 운영체제에게 특정 명령을 실행하도록 지시하기 위해 설계된 컴퓨터 프로그램이다. 쉘 스크립트는 파일을 다루거나 프로그램을 실행시키는 등의 일을 할 수 있다. 

윈도우 환경의 파워쉘이 대표적인 쉘 언어다. 쉘 명령어를 통해 파일을 다루거나 인터넷에서 데이터를 가져다가 파일이나 DB에 넣거나 원하는 데이터를 어딘가로 보내는 명령을 한 줄로 작성하는 것이 가능하다. 즉 프로그램(실행가능한 모듈)을 조합하고 연결하여 데이터를 변경하고 처리하고 넘기는 기능을 몇 개의 연속된 명령어로 하게 된다. 변수를 이용할 수 있고 간단한 자료구조(리스트)도 지원된다. 이것은 운영체제가 직접 처리해 주는 명령어들이므로 성능도 매우 좋고 할 수 있는 일도 강력하고 많다. 단점이라면 운영체제를 직접 다루는 일이고 여러 개의 프로그램을 설치하고 다루는(환경설정) 일에 능숙해야 하며, 테스트나 디버깅 등이 어려우므로 경험이 충분한 아주 고급의 개발자라야 잘 쓸 수 있다. 그런 이유로 쉘프로그래머가 미국에서 가장 높은 연봉을 받는 언어 중 하나로 손꼽힌다.

#7: TypeScript

TypeScript는 흔히 월등한 자바스크립트라고들 한다. 자바스크립트와 비슷한 구문과 의미를 가지고 매우 밀접한 관계를 가지지만 대규모의 어플리케이션을 개발하기에 적합하다. 이 언어는 마이크로소프트가 만든 것으로 인기는 매년 점점 더 올라가고 있다. (작년에 11위에서 올해 7위로 올라왔다.) 이 언어는 자바스크립트와의 유사성 때문에 더 인기를 누리고 있다. 그것을 만든 개발자는 "자바스크립트의 근본적인 강점을 우리 것으로 만들 수 있었다."라고 말했다.

TypeScript - JavaScript that scales

타입스크립트는 자바스크립트가 쓰이는 자리에 모두 쓰일 수 있는 언어다. 자바스크립트는 현재 가장 많이 쓰이는 언어 1위를 점하고 있는데, 그에 비해 그 언어의 문제점(타입 검사를 못하고 이름의 바인딩 규칙이 이상함)이 워낙 커서 몇천, 몇만 줄의 소스를 개발하는데 적합하지 않다는 문제가 계속 지적되고 있다. 이런 문제를 해결해서 언어에 타입과 클래스, 모듈의 개념을 보강하고 디버깅과 테스트 가능한 개발환경을 제공하여(Visual studio) 개발하기 좋은 언어로 바꾼 것이 타입스크립트다. 이 언어는 개발 결과를 자바스크립트로 변환하여 사용할 수 있다. 마이크로소프트의 전적인 지원을 받으며 빠르게 확산되고 있는 언어로 향후 몇 년간 더욱 떠오를 것이 기대되는 유망한 기술로 손꼽히고 있다.

#6: C#

C#은 마이크로소프트에 의해 만들어졌고 자바와 비슷한 언어다. 엔터프라이즈 어플리케이션을 개발하는데 주로 쓰인다.

C#은 자바 진영에 대응하여 마이크로소프트에서 만든 언어이자 닷넷 개발 플랫폼의 핵심이다. C++이 가진 장점인 메모리 관리와 성능(네이티브 코드)의 장점을 최대한 살리고 자바의 플랫폼 독립성과 객체지향의 장점을 결합하여 만든 언어로 언어의 기능과 구현에 관련된 모든 것을 망라한 기술의 집합이라고 할 수 있다. 그러나 문제는 너무 많은 것을 욕심내다 보니 언어 자체로는 좋은 평을 받지 못하고 있다는 점이다. 언어도 너무 복잡하고 실행환경도 너무 거대하여 실제로 윈도우 환경 이외에는 거의 쓰이지 않고 있다. 그러나 닷넷 환경을 선택한 서버 개발 등에서는 여전히 많이 선택되고 있으며 앞으로 마이크로소프트가 모바일이나 IoT 환경에서 새로운 강자로 떠오른다면(그럴 가능성은 충분하다) 다시 주목받을 수도 있다. 

#5: C++

C++은 1970년대에 만들어져 많은 대학에서 첫 언어로 가르쳐지고 있다. C++은 여전히 가장 널리 쓰이는 언어 중 하나로 운영체제와 브라우저, 게임 등을 개발하는 핵심 언어다.

C++은 C와 대부분의 장점을 같이 한다. 네이티브 코드로 컴파일되어 성능이 매우 우수하고 오래된 언어여서 이 언어로 개발된 시스템이나 라이브러리가 압도적으로 많다. 임베디드나 그래픽스 등 특정 환경에서는 C/C++을 써야 하는 경우가 많다. 또한 C로 된 프로그램과는 같은 언어나 다름없이 취급된다. 그러나 자바에 비해 배우기 어려운 언어다. 특히 메모리관리와 템플릿 등은 자바 개발자들에게는 이해하기 어려운 복잡도를 가진다. 

#4: PHP

PHP는 동적이고 상호작용 가능한 웹 페이지를 만드는데 쓰인다. 페이스북이나 야후 같은 큰 사이트는 PHP로 만들어졌다. 그러나 이 언어는 개발자들이 최악의 프로그래밍 언어라고 손꼽고 있다. "자전거는 없고 보조바퀴만 있는" 언어라고들 한다.

PHP가 그렇게 최악의 언어라고 욕을 먹으면서도 승승장구하고 있는 이유에 대해 다음 글에서 잘 설명하고 있네요. 페이스북과 워드프레스가 PHP를 굳건히 지키면서 좋은 라이브러리를 많이 만들고 기존의 코드와 호환성도 살리면서 성능도 보장하는 환경으로 자리잡았다고 하는군요. 역시 언어의 성공은 누구의 후원을 받느냐에 의해 결정되는 것 같습니다. 구글의 자바스크립트, 마이크로소프트의 C#, 페이스북의 PHP, 오라클의 자바? 자바는 사실 자바 진영이라고 할 만한 여러 조직과 회사들의 후원을 받고 있다고 봐야겠죠...

https://www.tokyobranch.net/archives/6693 

#3: Python

파이썬은 고급 프로그래밍 언어로 세계에서 가장 빠르게 성장하는 언어다. 이것은 쉽게 배울 수 있는 첫 언어로도 손꼽히지만 기계학습이나 데이터분석 같은 고수준의 프로그래밍에도 많이 쓰인다. "이러한 파이썬의 엄청난 성공은 그 언어 자체가 가진 장점 덕에 나타나는 현상이다. 파이썬은 믿을 수 없을 정도로 다재다능한 언어다."

말이 필요없이 요즘 가장 핫한 언어가 파이썬이다. 필자도 개인적으로 언어를 가르치는 입장에서 파이썬을 아주 좋아한다. 프로그래밍 언어의 개념을 깨끗하게 언어에서 구현하고 있다. 그런가하면 인공지능 분야에서의 이 언어의 중요도도 엄청나게 높아지고 있다. 그러나 이 언어가 처음에 배우기 매우 쉬운 언어지만 결코 단순한 언어는 아니다. 이 언어가 가진 장점을 내 것으로 만들기 위해서는 컴프리헨션과 이터레이터, 객체지향 등을 제대로 학습해야 한다. 또한 성능의 면에서 한계를 가져서 크고 중요한 프로그램의 개발에는 사용하기 어렵다는 평이 많다.

#2: Java

자바는 선마이크로시스템즈에서 만든 객체지향 언어이고 지금은 오라클이 인수했다. 그것은 데이터베이스나 안드로이드 앱 개발에 쓰이고, 웹의 백엔드나 데스크탑 프로그램의 개발 언어로도 쓰인다.  자바는 가장 널리 쓰이고 있는 언어고 거대한 시스템을 구축할 때 가장 안정적이고 믿을 수 있는 언어로 인정되고 있다.

자바는 현재 국내 대학의 대부분 학과에서 기본 언어로 가르치고 있다. C와 C++에 비해 배우기 쉽고 그러면서도 많이 쓰이는 언어로 프로그래밍의 기본을 습득하고 훈련하는데 자바 언어가 가장 적합하다. 자바 언어도 Java 10이 2018년 발표되면서 새로운 개념과 기능을 워낙 많이 도입하여 배우기 쉽지 않은 언어지만 이 언어를 제대로 배우고 나면 최근 주목받는 다른 언어를 배우는 것이 그리 어렵지 않다.  자바를 깊이있게 공부하고 새로운 기능들도 제대로 이해하고 내 것을 만드는 것이 중요하다.

#1: JavaScript

자바스크립트는 여전히 깃허브에서 가장 많은 사람들이 전 세계에 걸쳐 사용한 최고의 언어로 기록되었다. 자바스크립트는 웹의 많은 부분을 담당하는 언어다. 이름과는 달리 자바와는 큰 관계가 없는 언어다.

Java is to JavaScript as Car is to Carpet.

자바스크립트는 웹클라이언트 개발에서 현재로서는 선택의 여지가 없는 유일한 언어다. 이것을 대체해보려는 여러가지 시도가 있으나 아직 자바스크립트의 아성은 위협조차도 받고 있지 않다. 이 언어에 대해서는 개발자들의 호불호 차이가 굉장히 크다. 어떤 사람은 이 언어의 개방성(새로운 기능을 끊임없이 덧붙이는)과 혁신성(계속 새로운 방법이 발표되고 그를 도입하는 사이트들이 생김)에 열광하는가 하면 어떤 사람은 이 언어가 오래된 구닥다리 뼈대에 끊임없이 인테리어만 붙여나가는 괴물이라고 생각한다. 어쨌거나... 현재로선 선택의 여지가 없는 최강의 1인자다.