brunch

You can make anything
by writing

C.S.Lewis

by 한상훈 Aug 13. 2017

우리가 배워야할 프로그래밍 언어

2017년에 우리는 어떤 미래를 보고 있을까?

차기 언어가 가져야할 자질은 무엇일까? 불변할 것이라 믿는 미래를 전제로 이야기를 해보고자 한다. 


80억명의 사용자

2025년까지 페이스북, 구글, 스페이스X에서는 지구상 어떤 위치에서든 초당 1Mb 이상의 연결 속도를 만들 계획을 가지고 있다. 이를 바탕으로 예상되는 인구수인 80억명 모두가 언제던 인터넷을 쓰는 세계를 만들 것이다. 이것은 아직까지 인터넷 접속인구가 37억명으로 집계되었다. 앞으로 7년 이내에 사용자 수가 43억명이 늘어난다면, 그리고 그전까지는 인터넷이 존재하지 않았던 곳이라면 그곳에서 사용하게 될 웹서비스를 위한 두번째 닷컴 버블을 예상한다.

프로그래밍 관점에서 보자.  그전까지는 웹에 사용되는 언어와 그렇지 않은 언어가 분리된 형태였다면 앞으론 웹에 대한 엄청난 수요로 인해서 앞으로의 언어는 모든 디바이스와 웹을 호환하는 진정한 풀스택 언어로 거듭나야 한다. 비전공자도 알고 있는 HTML을 바탕으로 데스크탑 앱과 모바일, 그리고 웹을 모두 만들 수 있으나 모두 알고 있듯 한계와 어려움이 존재한다. 즉 웹을 호환하지 못하거나(적합하지 않거나), 여러 상황에 사용될 수 있지 않다면 프로그래머들의 사랑에서 멀어지게 될 것이다. 

위의 스택오버플로우 링크를 참조해보자. 방금 이야기했던대로 웹 개발자는 전체의 72.6%를 차지하고 있다. 이러한 트렌드는 줄어들 수 없을 것이다. 특히 우리가 IoT라고 불리는 새로운 시장이 열리고 있고, 80억명의 잠재적 인터넷 사용자를 생각해본다면 말이다. 

http://redmonk.com/sogrady/2017/06/08/language-rankings-6-17/

프로그래밍은 엔지니어링과 사이언스의 영역을 가지고 있다. 나는 많은 프로그래머가 엔지니어에 가깝다고 생각한다. 엔지니어는 생산성을 중요하게 여기며, 협업에서 생기는 라이브러리, 플러그인, 프레임워크를 고려하지 않을 수 없다. C#을 쓰는 자마린처럼 하나의 코드로 여러 곳에 재사용할 수 있다고 해도, 퍼포먼스가 떨어지거나 여러 경우에 대해 답을 찾기 어려운 경우는 대중적으로 쓰이기 어렵다. 결국 언제나 프로그래밍 언어 랭킹에는 스택오버플로우의 트렌드를 반영할 수 밖에 없다. 트렌드의 관점과 기술적인 관점에서 우리는 웹으로 모든걸 다할 수 있고, 하고 싶은 시대로 접어들고 있다. 우리는 이전보다 더 웹 개발을 바탕으로 모든걸 할 것이다. 모바일에서 쓰고, IoT에도 쓰고, 서버도 만들고, 미들웨어도 만들고, 데이터베이스와 데스크탑앱과 임베디드에도 사용하고 싶어질 것이다. 어린시절부터 듣던 유비쿼터스가 열리는 것이다.


구글과 Kotlin

사실 어제가 되서야 2017 구글 I/O를 보았다. 5월에 열렸으니 꽤 오래전이다. 구글은 이번에 안드로이드의 기반언어를 정했는데, 가장 많은 사람들이 쓰는 Java가 아닌 Kotlin이었다. 구글이 자체적으로 진행하던 GO가 애플의 대항하는 구도로 성장할 것을 기대했지만 남의 자식 젯브레인의 Kotlin이 선택받았는데, Kotlin이 가진 강점에 대해서 간략하게 나열하면 다음과 같다.


- Android, iOS, Desktop, full-stack Web

- 여러 환경에서 동작 Kotlin/JVM, Kotlin/js, Kotlin/Native

- Null point exception 안정성

- 강력한 Java to Kotlin 변환

- 간결함과 편리함

Introduction to Kotlin (Google I/O '17)

그렇다면 Kotlin이 우리가 배워야할 언어일까? Java의 나라인 우리나라에선 앞으로 반드시 배워야 하는 언어가 될 것이다. 그러나 우리가 주목해야할 점은 구글이 Kotlin을 선택한 이유이다. 풀스택, 호환성, 기존 언어와의 연결고리 등의 요소가 반영된 결과이다. 


https://c1.staticflickr.com/5/4111/5201275209_d20346c3ec_b.jpg

위의 그래프는 혁신 확산 모델이다. 이 그래프는 너무도 완벽해서 안쓰이는 곳이 없는데, 프로그래밍 언어에서도 비슷한 패턴을 보인다. 근 10년을 살펴보면 JS가 가지는 위상의 변화가 마치 이와 같다. JS가 초기엔 웹에서 효과나 주는 용도로 사용되었으나 현재 서버사이드까지도 해결하고, 이것이 당연한 상황이 되었다. 강력한 프레임워크와 셀 수 없이 많은 라이브러리를 보면 평생봐도 볼 수 없는 수준에 이르렀다. Kotlin이나 다른 언어들 역시 나온지는 몇 년이 되었고, 지금자체로도 뛰어나지만 앞으로 개발자들의 마음을 끌어 대중성을 갖출지는 알 수 없다. 그러나 예상할 수 있는 점은 풀스택, 호환성, 그리고 기존 언어와의 연결고리일 것이다.



Swift

Swift는 핫하다. 애플을 부모님으로 둔 자식답다. 나온지 몇 년이나 되었다고 벌써 상당히 상위권(RedMonk 2/4분기 11위)에 랭크된 것은 아이폰의 성장과 일맥상통하다. 그러나 약간 행보가 다르다. Swift는 오픈소스가 되었다. 범용언어가 되었다는 것은 애플의 폐쇄정책과 어긋나지만 이제 Swift를 통해 리눅스와 윈도우 앱을 개발하게 되었다. 이 점에 있어서 호환성이 강해졌고, C++에 비빌 수 있는 빠른 속도와 간결함 역시 개발자들에게 매력적이다. 컴파일과 인터프리터를 모두 가능하다는 점 역시 좋다. 

그러나 Swift는 애플 밖으로 나온지 얼마 되지 않았다. 기존 언어와의 연결고리는 Third-party 지원과 직결된다. Swift의 성장 속도와 애플의 위상을 생각해본다면 Third-party와의 호환되는 부분 역시 빠르게 채워질 것이고, 이미 많이 이뤄지고 있을지 모른다.  


JavaScript

스택오버플로우 자료에 따르면 지구상에서 가장 많은 개발자는 웹 개발자이며, 그 중에서도 풀스택과 프론트의 비중이 높다. 프론트의 영역에 펼쳐진 JS의 위상과 수없이 많은 프레임워크를 생각해보면 JS를 안하는 것은 불가능해 보인다. 페이스북의 React.js와 ReactNativ, 구글의 Angular.js, 서버 사이드의 Node.js와 npm, Bootstrap, jQuery 등의 라이브러리들. 그 밖에 많은 이야기를 추가로 할 수 있지만 과거 글 중 하나를 링크한다.

ECMAScript를 통한 표준화와 W3C에서 계속 진행 중인 여러 API 발전은 앞으로 웹이 어디까지 진화할지 궁금하게 만든다. 또한 JS를 부모로 둔 스크립트 언어들 역시 잘나가는 친구들이다. npm의 보안 이슈가 터지긴 했지만 JS를 웹에서 밀어내는 그림은 쉽게 그려지지 않는다.


A.I

미래를 이야기하면서 A.I를 이야기 안할 수 없다. 프로그래머의 입장에서 A.I는 활용의 대상이지 대체될 대상이 되어서 안된다. 아래의 링크를 따르면 현재 가장 핫한 A.I 개발 언어는 파이썬이다. 

IT 거인들은 모두 A.I를 주목하고 있다. 그 중에서도 앨런 머스크와 피터 틸 등이 후원하고 있는 오픈AI, 구글의 오픈소스 AI 프로젝트인 TensorFlow 역시 파이썬이 사용된다. 



파이썬은 쉽다. 엄청 쉽다. 이러한 쉬움 뿐 아니라 가장 첨단을 달리는 A.I에서의 영향력은 간과하기 어렵다. 그러나 위에서 이야기했듯 풀스택으로써의 파이썬, 호환성, 그리고 타 언어들과의 연결을 생각해보면 따로 존재하는 것처럼 보인다. 특히 파이썬은 연구 용도로 쓰이는 언어로도 유명하다. 그런 점에서 웹의 세상이 더 넓어질때 파이썬은 어떤 포지션으로 존재하게 될지는 궁금하지만 쉽다는 장점, 컴퓨터 사이언스 분야에서의 입지를 생각해볼 때 파이썬에 투자하는 것은 후회하지 않을 것이다.

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari