+ All Categories
Home > Documents > ITWorld How To “실력 중심의 유행”

ITWorld How To “실력 중심의 유행”

Date post: 30-Nov-2021
Category:
Upload: others
View: 2 times
Download: 0 times
Share this document with a friend
16
본 PDF 문서는 IDG Korea의 자산으로, 저작권법의 보호를 받습니다. IDG Korea의 허락 없이 PDF 문서를 온라인 사이트 등에 무단 게재, 전재하거나 유포할 수 없습니다. 무단 전재 재배포 금지 프로그래밍도 유행에 따라 뜨고 지는 트렌드가 있다. 하지만 바람처럼 왔다가 사라지는 유행이 아니라 더 높은 효율성과 유연한 맞춤 구성, 사용 편의성을 기반으로 한 철저한 실력 중심이다. 2018년 새로운 시대 변화에 따른 뜨고 지는 프로그래밍 언어들을 살펴보고 자신이 배워야 할 언어는 어떤 것인지 파악해보자. “실력 중심의 유행” 2018 프로그래밍 트렌드 따라잡기 프로그래밍, 21가지 뜨는 트렌드와 지는 트랜드 지금 배워야 하는 프로그래밍 언어 일부러 배울 필요는 없는 프로그래밍 언어 5가지 ITWorld How To │ 2018 프로그래밍 트렌드
Transcript

본 PDF 문서는 IDG Korea의 자산으로, 저작권법의 보호를 받습니다.

IDG Korea의 허락 없이 PDF 문서를 온라인 사이트 등에 무단 게재, 전재하거나 유포할 수 없습니다.

무단 전재

재배포 금지

프로그래밍도 유행에 따라 뜨고 지는 트렌드가 있다. 하지만 바람처럼 왔다가 사라지는 유행이 아니라 더 높은 효율성과

유연한 맞춤 구성, 사용 편의성을 기반으로 한 철저한 실력 중심이다. 2018년 새로운 시대 변화에 따른 뜨고 지는

프로그래밍 언어들을 살펴보고 자신이 배워야 할 언어는 어떤 것인지 파악해보자.

“실력 중심의 유행” 2018 프로그래밍 트렌드 따라잡기

프로그래밍, 21가지 뜨는 트렌드와 지는 트랜드

지금 배워야 하는 프로그래밍 언어

일부러 배울 필요는 없는 프로그래밍 언어 5가지

I T W o r l d H o w T o │ 2018 프로그래밍 트렌드

How To

│20

18 프

로그

래밍

트렌

IDG Korea 1

프로그래밍, 21가지 뜨는 트렌드와 지는 트랜드

Peter Wayner | InfoWorld

프로그래머들은 유행이 바람처럼 왔다가 사라지는 패션 세계를 비웃곤 한다. 스커트 길

이가 짧아졌다가 길어지고, 넥타이가 두꺼워졌다가 다시 얇아진다. IT 세계에서는 이런

유행보다는 엄격함, 과학, 수학, 그리고 정밀함이 더 중요하다.

그렇다고 프로그래밍이 유행과 동떨어진 직업은 결코 아니다. 프로그래밍 세계에서 유행을

이끄는 힘은 패션 세계와는 달리 더 높은 효율성, 더 유연한 맞춤 구성 기능, 그리고 사용 편의성

이라는 점이다. 이 가운데에서 하나 이상을 제공하는 새로운 기술은 이전 세대 기술을 밀어내

고 그 자리를 차지한다. 기발함 중심이 아닌 철저한 실력 중심이다.

다음은 현재 프로그래머 사이에서 뜨는 기술과 지는 기술 목록이다. 각각의 목록에 대해 동

의하지 않는 사람도 물론 있다. 결국 빠른 변화, 치열한 논쟁, 그리고 뜻밖의 복귀는 프로그래머

라는 직업이 매력적인 이유이기도 하다.

뜨는 중: 프리프로세서(Preprocessors)

지는 중: 풀 랭귀지 스택(Full language stacks)

예전만 하더라도 새 프로그래밍 언어를 만들려면 코드를 반도체 칩이 알아듣는 비트로 바꿔

주는 모든 것을 직접 만들어야 했다. 그러다 이전 작업을 그대로 이용할 수 있다는 사실이 드러

났다. 이제 사람들은 좋은 아이디어가 떠오르면 그냥 프리프로세서를 작성한다. 이 프리프로세

서는 새 코드를 풍부한 라이브러리와 API 집합을 갖춘 기존의 무언가로 바꿔준다.

파이썬 또는 자바스크립트와 같은 스크립팅 언어는 한때 소규모 프로젝트에 제한적으로 사

용됐지만 지금은 중차대한 작업의 기반으로 사용된다. 자바스크립트를 좋아하지 않았던 사람

은 번거로운 구두점 없이 코딩할 수 있게 해주는 프리프로세서인 커피스크립트(CoffeeScript)

를 만들었다. 현재 각기 다른 방식으로 구문을 나누고 자르는 수십 가지의 변형이 있다.

동적 타이핑을 좋아했던 사람은 지긋지긋한 구두점이 없는 자바의 더 간소한 버전인 그루비

(Groovy)를 만들었다. JVM에서 실행되는 언어는 그루비, 스칼라(Scala), 클로저(Clojure), 코틀

린(Kotlin) 등 10여 가지에 이르지만 JVM은 하나다. 닷넷의 VM에서도 많은 언어를 실행할 수

있다. 이미 있는 것을 굳이 다시 만들 필요가 없다.

How To

│20

18 프

로그

래밍

트렌

2 IDG Korea

뜨는 중: 서버리스(Serverless)

지는 중: 도커(Docker)

사실 도커 컨테이너는 모든 곳에 사용된다. 서버

는 쉴 새 없이 컨테이너를 올리고 내린다. 그러나

도커 컨테이너는 필요에 비해 덩치가 너무 커졌다.

잘 생각해 보면 지금 배포하고 있는 마이크로서

비스를 위한 실질적인 의사 결정 코드는 수십 줄

만 쓰면 된다. 그러나 Node.js든 무엇이든 도커에

서 제대로 가동되도록 하려면 방대한 양의 구성 코

드를 집어넣어야 한다. 물론 모두 규격화된 표준 구문이지만 요점은 그게 아니다.

새로운 서버리스 아키텍처를 사용하면 실제 의사 결정을 실행하는 몇 개의 if-then-else 문

만 넣으면 된다. 그 외의 모든 것은 서버리스 플랫폼을 임대해주는 쪽에서 알아서 할 일이다.

물론 몇 년이 지나면 종속과 맞춤 구성의 부족에 대해 불평하겠지만 지금은 서버리스 옵션이

모든 데브옵스와 구성으로부터의 달콤한 구원으로 보인다.

뜨는 중: 자바스크립트 MV* 프레임워크(JavaScript MV* frameworks)

지는 중: 자바스크립트 파일(JavaScript files)

오래 전에는 모두가 경고 상자를 팝업으로 띄우기 위해, 또는 양식의 이메일 주소에 @ 기호

가 포함되었는지 여부를 확인하기 위해 자바스크립트를 배웠다. 지금은 HTML AJAX 앱이 워

낙 잘 되어 있어서 처음부터 새로 시작하는 사람은 거의 없다. 정교한 프레임워크를 가져와 글

루 코드(glue code)를 약간 써서 비즈니스 로직을 구현하는 편이 더 간단하다.

지금은 켄도(Kendo), 센차(Sencha), j쿼리 모바일(jQuery Mobile), 앵귤러JS(AngularJS), 엠

버(Ember), 백본(Backbone), 메테오 JS(Meteor JS) 등 수십 가지 프레임워크가 존재하며 모두

웹 앱과 페이지를 위한 이벤트나 콘텐츠를 처리할 수 있다.

이는 단순한 웹 앱일 뿐이다. 또한 스마트폰/태블릿 세상을 위한 크로스 플랫폼 개발에 맞게

튜닝된 것도 있다. 네이티브스크립트(NativeScript), 폰갭(PhoneGap), 아파치 코도바(Apache

Cordova), 리액트 네이티브(React Native)는 HTML5 기술로 앱을 만들기 위한 여러 가지 옵션

가운데 일부다.

뜨는 중: CSS 프레임워크(CSS frameworks)

지는 중: 일반 CSS(Generic CSS)

한때 웹 페이지에 활기를 불어넣으려면 CSS 파일을 열고 font-style:italic과 같은 새로운 명

령을 집어넣었다. 그렇게 파일을 저장하고 힘든 오전 일을 마친 후 점심을 먹으러 갔다. 현재 웹

페이지는 상당히 복잡해 이런 단순한 명령으로 파일을 채우기가 불가능하다. 색상 하나 바꾸

려고 했을 뿐인데 모든 곳에서 어긋난다. 음모론과 생태학에서 흔히 말하듯이, 모든 것이 연결

되어 있다.

How To

│20

18 프

로그

래밍

트렌

IDG Korea 3

SASS나 그 사촌인 컴파스(Compass)와 같은 CSS 프레임워크가 이 부분에서 탄탄한 기반을

마련했다. CSS 프레임워크는 실변수(real variables), 중첩 블록(nesting blocks), 믹스인(mix-

in)과 같은 프로그래밍 구조를 제공함으로써 읽기 편하고 안정적인 코딩을 장려한다. 프로그래

밍 계층에서는 그다지 새로운 이야기가 아닐지 몰라도 설계 계층에서는 큰 진전이다.

뜨는 중: 캔버스(Canvas)의 SVG(Scalable Vector Graphics)

지는 중: 플래시(Flash)

플래시는 몇 년 전부터 공공의 적으로 취급됐지만 아티스트들은 항상 플래시의 결과물을 좋

아했다. 안티앨리어싱(anti-aliased)이 적용된 렌더링은 보기 좋고 많은 재능있는 아티스트가

세련된 화면 전환과 애니메이션을 위해 깊은 플래시 코드 스택을 구축했다. 가벼운 게임의 인

기도 계속되고 있다. 웹에서 플래시의 생명력은 끈질기다.

자바스크립트 계층이 플래시와 거의 동일한 작업을 할 수 있게 된 지금, 브라우저 업체와 개

발자들은 플래시의 종말에 힘을 싣는 중이다. SVG와 같은 새로운 형식은 DOM 계층과의 통합

에 더 유리하다. SVG와 HTML은 웹 개발자가 사용하기 쉬운 방대한 태그 모음을 형성한다. 또

한 비디오 카드의 힘으로 캔버스 개체 상에서 정교한 드로잉을 제공하는 API가 있다. 이 둘을 합

치면 플래시를 사용할 이유는 거의 남지 않는다.

뜨는 중: 유사 빅데이터(하둡없는 분석)

지는 중: 빅데이터(하둡 있음)

모두가 조직에서 돋보이는 사람이 되길 원한다. 그렇지 못하다면 자신이 돋보일 수 있는 적

당한 크기의 조직을 물색한다. 그렇게 보면 "빅데이터"라는 용어가 중역실까지 흘러 들어가 높

으신 분들이 마치 요트나 고층 건물을 구입하듯 가장 크고 가장 강력한 빅데이터 시스템이 무

엇이냐고 묻기 시작한 것은 자연스러운 수순이다.

재미있는 점은 굳이 가장 웅장한 빅데이터 솔루션을 사용해야 할 만큼 큰 문제는 별로 없다

는 것이다. 물론 구글 또는 야후와 같은 기업은 모든 사람의 웹 탐색을 추적하고, 페타바이트 또

는 요타바이트 단위의 데이터 파일을 보유하고 있다. 그러나 대부분의 기업이 보유한 데이터

는 기본형 PC의 RAM에 다 들어가는 정도다. 필자는 이 글을 16GB RAM이 장착된 PC에서 쓰

는 중이다. 몇 바이트짜리 이벤트 10억 개도 들어가는 용량이다. 대부분의 알고리즘에서는 데

이터를 메모리로 읽어 들일 필요가 없다. SSD에서 스트리밍하는 것만으로 충분하기 때문이다.

병렬로 실행되는 하둡 클라우드 내 수십 개 시스템의 빠른 응답 시간이 필요한 경우도 있지

만, 많은 경우 조율이나 통신에 신경 쓸 필요 없이 단일 시스템으로 충분히 굴러간다.

뜨는 중: 스파크(Spark)

지는 중: 하둡(Hadoop)

하둡이 식었다기보다는 아파치 스파크가 뜨겁다는 편이 정확하다. 스파크로 인해 하둡 모델

이 구식처럼 보인다. 스파크는 대량의 데이터에서 의미를 추출하는 하둡 접근 방식에서 가장

How To

│20

18 프

로그

래밍

트렌

4 IDG Korea

좋은 부분을 차용한 다음 여기에 코드 실행 속도를 대폭 높이는 개선을 더해 업데이트했다. 가

장 큰 부분은 스파크가 모든 요소를 분산 파일 시스템에 쓰고 읽을 필요 없이 빠른 메모리 안에

데이터를 보관한다는 것이다.

물론 많은 사람은 하둡의 분산 파일 시스템에 저장된 데이터에 스파크의 처리 속도를 사용하

는 식으로 두 가지 방법을 합친다. 하둡과 스파크는 경쟁 상대보다는 파트너에 가깝다.

뜨는 중: 데이터베이스 구성(Database configuration)

지는 중: 소프트웨어 프로그래밍(Software programming)

오래 전, 프로그래머들은 다음 세기의 프로그래밍이 어떤 형태가 될지는 모르지만 이름은 분

명 포트란(Fortran)일 것이라는 우스개 소리를 즐겨 했다. 너무 웃겨서 의자에서 굴러 떨어져 다

쳤다는 전설도 있다. 그리고는 자리로 돌아가 데이터베이스 구성 작업에 몰두했다.

우리는 지금도 데이터베이스를 구축하고 있지만, 지금 개념의 "데이터베이스"는 과거보다

훨씬 더 정교하고 강력하다. 범용 데이터베이스는 여러 대륙에 걸쳐 스스로를 동기화하면서 일

관성과 속도 사이에서 유연한 균형점을 제공한다. 파이어베이스(Firebase)와 같은 일부 클라우

드 서비스는 모바일 클라이언트에서 실행되는 웹 앱까지 새로운 데이터를 푸시한다.

서버리스 혁명(serverless revolution)의 대부분은 이제 클라우드 데이터 저장소의 상당수

가 아주 강력해 if-then-else 문 몇 개만 쓰면 멋진 웹 앱을 만들 수 있다는 인식에 그 기반을 두

고 있다.

뜨는 중: 게임 프레임워크(Game frameworks)

지는 중: 네이티브 게임 개발(Native game development)

한때 게임을 개발하려면 개발자를 많이 채용해 모든 것을 처음부터 C로 작성했다. 물론 많은

비용이 들었지만 보기에 그럴듯했고 잘 굴러갔다. 지금 맞춤형 코드는 아무도 감당할 수 없는

사치다. 대부분의 게임 개발자는 오래 전에 자부심을 포기했으며 이제는 유니티(Unity), 코로나

(Corona), LibGDX와 같은 라이브러리를 사용해 시스템을 구축한다. 이들이 작성하는 C 코드의

양은 라이브러리에 대한 지침보다도 적다.

자부심을 갖고 일일이 수작업으로 게임을 만들지 않고 동일한 엔진을 사용해 찍어낸다는 것

이 과연 수치스러운 일일까? 아니다. 대부분의 개발자에게 이는 구원이다. 세세한 면에 신경 쓸

필요가 없으므로 게임 플레이, 이야기의 전개, 캐릭터와 아트에 집중할 수 있게 됐다.

뜨는 중: 정적 웹사이트 생성기(Static website generators)

지는 중: 단일 페이지 웹 앱(Single-page web apps)

URL이 가리키는 웹 페이지가 정적 테스트와 이미지만으로 구성됐던 시절을 기억하는가? 그

이후 동적 단일 페이지 웹 앱이 등장했다. 데이터를 검색하는 하나의 똑똑한 웹 앱이 이런 웹 페

이지를 모두 대체했다.

How To

│20

18 프

로그

래밍

트렌

IDG Korea 5

그런데, 시계추가 되돌아와서 지금은 다시 모든 애들이 정적 사이트 생성기를 만들고 있다.

수십 가지나 된다. 하이브리드와 같다. 모든 데이터를 한 곳에 쌓은 다음 이 데이터를 템플릿에

붙이는 코드를 쓴다. 따라서 각 정적 URL마다 하나의 HTML 파일이 있고, 이는 데이터 테이블

의 각 행에서 가져온다.

신입 개발자들은 이런 정적 사이트가 초고속이라고 생각하는데, 실제로도 빠르다. 다만 이

들에게 대놓고 말하기는 좀 그렇지만, 워드프레스(WordPress)와 드루팔(Drupal)같은 기존의

동적 시스템도 최신 데이터를 사용해 생성된 정적 페이지로 채워진 캐시를 보관함으로써 거의

같은 방식으로 동작했다.

뜨는 중: 그래프QL(GraphQL)

지는 중: REST

REST도 죽진 않았다. 다만 사람들은 API로 더 많은 일을 하고 싶어하고, 그래프QL이 그 방법

을 제공할 뿐이다. 그래프QL은 REST와 마찬가지로 JSON으로 데이터를 반환한다. 그래프QL

은 REST 호출과 마찬가지로 HTTP POST로 시작한다. 그래프QL 구문의 장점은 극히 복잡한

쿼리를 아주 간단하게 지정할 수 있다는 점이다. 덕분에 프로그래머는 원하는 것을 간단히 요

청할 수 있다. 또한 아주 약간 다른 API가 필요할 때 해야 하는 서비스 측 작업의 양도 줄어든다.

뜨는 중: 클라우드 IDE(Cloud IDEs)

지는 중: 로컬 IDE(Local IDEs)

오래 전 사람들은 명령줄 컴파일러를 사용했다. 그러다가 누군가 명령줄 컴파일러를 편집기

및 기타 툴과 통합해 IDE(Integrated Development Environment)라는 것을 만들었다. 이제

IDE는 코드, 심지어 작업 중인 시스템의 코드까지 편집할 수 있게 해주는 브라우저 기반 툴로 대

체될 시점이다. 워드프레스의 작동 방식이 마음에 들지 않는 사람을 위해 코드를 그 자리에서

바로 변경할 수 있는 내장 편집기가 제공된다. 마이크로소프트 애저는 포털에서 자바스크립트

글루 코드를 바로 작성할 수 있게 해준다. 이런 시스템은 최적의 디버깅 환경을 제공하지는 않

으며 프로덕션 코드 편집에 따르는 위험성도 있다. 그러나 그 개념은 유효하다.

AWS 클라우드9, 코드엔비(Codenvy), 모질

라의 웹 IDE로 시작할 수 있지만 계속 더 탐구

해야 한다. 웹 기반 툴은 점점 더 강력해지고

있다. 예를 들어 마이크로소프트 애저 웹 사이

트에서 완전한 빅데이터 분석 프로젝트를 구

축하는 것도 가능하다. 서버리스 옵션 쪽으로

시선을 돌리면 웹 페이지의 양식 요소에 모든

코드를 쓸 수 있다는 사실을 발견할 수 있다.

페이스북에서 친구를 업데이트할 때 사용하

는 양식과 별 차이도 없다.

How To

│20

18 프

로그

래밍

트렌

6 IDG Korea

뜨는 중: GPU

지는 중: CPU

소프트웨어가 단순하고 명령어가 한 줄에 가지런히 배열되던 시절에는 CPU가 모든 무거운

작업을 다 처리했으므로 컴퓨터의 왕이었다. 지금의 비디오 게임은 병렬로 실행되는 광범위한

그래픽 루틴으로 꽉 차 있다. 이제는 그래픽 카드가 주인공이다. 괜찮은 그래픽 카드의 가격은

500, 600달러를 훌쩍 넘고, 열혈 게이머들은 그래픽 카드를 두 개 이상 사용하기도 한다. 이 경

우 그래픽 카드 가격만 기본적인 데스크톱 가격의 두 배 이상이다.

게이머만 GPU 카드에 집착하는 것도 아니다. 컴퓨터 과학자들도 현재 많은 병렬 애플리케이

션을 변환해 GPU에서 수백배 더 빠른 속도로 실행하고 있다. 데이터 과학자들은 GPU가 빼곡

히 들어찬 서버를 사용해 머신러닝 모델의 개발 속도를 높인다.

뜨는 중: 깃허브(GitHub)

지는 중: 이력서(Resumes)

물론 중학교 바둑 동아리 부회장 이력을 포함한 시시콜콜한 성취 목록을 읽는 것으로 구직자

에 대해 알아볼 수도 있다. 그러나 그 사람이 작성한 실제 코드를 보는 것이 훨씬 더 유익하고 많

은 정보를 얻는 방법이다. 주석은 충실히 작성하는가? 별 기능도 없는 자잘한 클래스로 각종 항

목을 분할하느라 너무 많은 시간을 소비하는가? 확장의 여지가 있는 실질적인 아키텍처가 있

는가? 코드만 훑어보면 이런 모든 질문에 대한 답을 구할 수 있다.

구직을 위해 오픈소스 프로젝트에 참여하는 것이 점점 더 중요해지는 이유이기도 하다. 사

유 프로젝트의 코드는 공개적으로 올리기 어렵지만 오픈소스 코드는 어디든 게시할 수 있다.

뜨는 중: 임대(Renting)

지는 중: 구매(Buying)

아마존은 블랙 프라이데이를 맞아 컴퓨터를 비롯한 전자제품 할인에 돌입했지만 정작 아

마존 클라우드 할인은 행사에 포함하지 않았다. 기다리면 그런 날도 올 것이다. 얼마 전까지만

해도 기업들은 자체 데이터센터를 열고, 직접 구매한 컴퓨터를 운용할 자체 직원을 채용했다.

지금 기업들은 컴퓨터, 데이터센터, 직원, 심지어 소프트웨어까지 시간 단위로 임대한다. 누

구도 무언가를 소유하거나 서버를 관리하는 데 따르는 골치 아픈 문제를 떠안고 싶어하지 않는

다. 다 좋은 아이디어다. 적어도 웹 사이트가 갑자기 폭발적인 인기를 끌고 문득 모든 비용을 클

릭 기준으로 지불하고 있음을 인지하기 전까지는.

뜨는 중: 클라우드 복잡성(Cloud complexity)

지는 중: 클라우드 단순성(Cloud simplicity)

클라우드 컴퓨팅의 초기, 업체들은 버튼을 클릭해 시스템을 가동하는 것이 얼마나 쉬운 지를

강조했다. 단순성이 최고의 미덕이었다.

지금은 코드를 쓰는 시간보다 적절한 시스템을 선택하고 적절한 할인 프로그램을 찾는 데 더

How To

│20

18 프

로그

래밍

트렌

IDG Korea 7

많은 시간이 걸릴 수 있다. 수십 가지 시스템 프로필이 있고 대부분의 클라우드 제공업체는 몇

가지 기존 모델을 지원한다. 제공하는 성능 수준은 제각각이므로 벤치마크를 통해 비용대비 효

과가 가장 높은 상품을 선택해야 한다. 예를 들어 RAM을 줄이고 시간당 12센트를 절약할 가치

가 있는가? 한꺼번에 100개의 시스템을 한달 동안 가동한다면 가치가 있을 것이다.

게다가 클라우드 업체들은 선불 또는 대량 구매를 조건으로 할인을 해주는 여러 가지 옵션을

제공하므로 계산이 더욱 복잡해진다. 할인도 스프레드시트에 정리해둬야 한다. 클라우드 비용

계산을 주제로 한 온라인 강의라도 들어야 할 판이다.

뜨는 중: 모바일 웹 앱(Mobile web apps)

지는 중: 네이티브 모바일 앱(Native mobile apps)

예를 들어 좋은 모바일 콘텐츠 아이디어가 있다고 치자. 바로 iOS, 안드로이드, 윈도우 10 모

바일용으로(시간이 난다면 블랙베리 OS까지) 별도의 버전을 만들 수 있다. 각 버전에는 서로 다

른 프로그래밍 언어를 사용하는 개별 팀이 필요하다. 그 다음 각 플랫폼의 앱 스토어가 요구하

는 터무니없는 조건을 받아들여야 비로소 앱을 사용자에게 제공할 수 있다.

아니면 HTML 앱을 하나 만들어 이를 모든 플랫폼에서 구동되는 웹 사이트에 올리는 방법

이 있다. 변경 사항이 있을 때 앱 스토어에 버그 수정을 빨리 검토해 달라고 조를 필요도 없다.

HTML 계층이 더 빨라지고 칩 속도도 더 빨라진 지금 이 접근 방법은 복잡한 상호작용 앱에서

도 네이티브 앱과 대등하게 경쟁할 수 있는 수준까지 발전했다.

뜨는 중: 안드로이드

지는 중: iOS

불과 몇 년 전만 해도 애플 스토어 앞에 사람들이 뱀처럼 줄지어 서 있던 광경을 볼 수 있었다.

시대가 변했다. 아이폰과 아이패드는 여전히 풍부하고 정교한 UI를 좋아하는 굳건한 팬층을 보

유하고 있지만 순수 판매 수치를 보면 계속 안드로이드로 기우는 중이다. 판매되는 폰의 80%

이상이 안드로이드라는 언론 보도도 있다.

그 이유는 단순하다. 바로 비용이다. iOS 디바이스는 변함없이 상당히 비싼 반면 경쟁 업체들

이 넘쳐나는 안드로이드 세계에서 생산되는 태블릿 중에는 가격이 애플 대비 1/5에 불과한 경

우도 있다. 가격이 싸다는 것은 언제나 강력한 매력이다.

오픈소스도 또 다른 요인이다. 안드로이드 시장에서는 누구나 경쟁할 수 있다. 크고 작은 온

갖 안드로이드 태블릿이 있다. 안드로이드 카메라, 안드로이드 냉장고도 있다. 누구도 혁신을

위해 사전에 구글에 허락을 받을 필요가 없다. 아이디어만 있으면 그대로 실천하면 된다.

뜨는 중: Node.js

지는 중: 자바 EE(Java EE), 루비 온 레일즈(Ruby on Rails)

지금까지 서버 세계는 프로그래머의 고집스럽고 비효율적이고 무절제한 행동을 운영체제가

다 받아주도록 하는 스레드 모델 위에서 번창했다. 이상한 루프, 과도한 계산, 프로그래머가 무

How To

│20

18 프

로그

래밍

트렌

8 IDG Korea

엇을 코딩하든 운영체제는 스레드 사이를 왔다갔다하면서 성능의 균형을 맞춰준다.

그런데 자바스크립트 콜백 프로그래밍 모델을 갖춘 Node.js가 등장했고 코드의 실행 속도가

빨라졌다. 한때 경고 상자용으로 사용됐던 장난감같은 이 언어에서 이 정도 속도가 가능할 것

이라고는 누구도 예상하지 못했다. 새 스레드에 수반되는 오버헤드가 명확히 드러났고 Node.

js가 떴다. 프로그래머가 잘못 행동할 경우 문제가 발생하지만 이 책임성은 대체로 프로그래머

에게 긍정적으로 작용했다. 프로그래머에게 리소스 제약이 명확하게 제시되면 보통 프로그래

머는 더 빠른 코드를 생산한다.

브라우저와 서버 간의 조화도 Node.js 세계에는 이득이다. 동일한 코드가 양 쪽 모두에서 실

행되므로 개발자는 손쉽게 기능을 살펴보고 복제할 수 있다. 결과적으로 Node.js 계층은 지금

인터넷에서 가장 뜨는 스택이 됐다.

뜨는 중: PHP 7.2

지는 중: 기존 PHP

과거 PHP는 동적 웹 페이지를 뚝딱 만들어 내기 위한 간편한 수단이었다. 다양성이 좀 필요

하다 싶을 때 HTML 태그 사이에 간단한 코드만 집어넣으면 됐다. 기초적이라 웹 개발자는 어렵

지 않게 수용할 수 있었지만 속도가 느린 탓에 하드코어 프로그래머들은 시큰둥했다.

하지만 다 지난 이야기다. 워드프레스, 페이스북 등 곳곳의 PHP 애호가들이 한때 자바를 고

성능 솔루션으로 만들었던 JIT(Just-in-Time) 컴파일러 기술을 채택함으로써 PHP 코드를 예전

보다 훨씬 더 빠르게, 경쟁적으로 실행하고 있다. 현재 힙합(HipHop) 가상 머신, PHP 7.2와 같

은 툴은 이전 버전에 비해 2배 더 빠른 속도를 제공한다. Node.js와 자바는 경계해야 할 것이다.

뜨는 중: 적시 교육(Just-in-time education)

지는 중: 4년 선행 투자(Four years up front)

컴퓨터 매개 교육 과정은 더 이상 새롭지 않다. 누구나 동영상 강의를 보면서 버튼으로 속도

를 높이고 낮추고 방금 들은 부분을 반복 재생하기도 한다. 온라인 포럼 역시 말빨 좋은 한 명이

토론을 지배할 수 있었던 과거의 세미나 룸에 비해 개선된 개념이다.

그러나 교육 업계를 뒤흔드는 요소는 온라인 교육 과정의 기반 기술만이 아니다. 언제, 어디

서나 필요할 때 학습할 수 있는 유연함도 있다. 덕분에 사람들은 더 이상 자신의 삶에 중요할지

어떨지도 모르는 광범위한 교육 과정 모음에 4년이라는 어처구니 없는 시간을 투자할 필요가

없어졌고, 이로 인해 교육 역학이 바뀌고 있는 것이다.

실제로 컴파일러를 다루게 될지 여부를 알기도 전에 컴파일러 교육 과정을 들을 필요가 있는

가? 사장이 관계형 데이터베이스에서 NoSQL 엔진으로 전환하고자 하면 그때 현대적 데이터

저장소에 대한 과정에 시간을 투자하면 된다. 필요할 때 최신 정보를 습득하므로 빠른 속도로

부식하는 지난 개념으로 머리를 어지럽힐 일도 없다.

How To

│20

18 프

로그

래밍

트렌

IDG Korea 9

지금 배워야 하는 프로그래밍 언어Andrew C. Oliver | InfoWorld

프로그래밍 언어 배우기는 어렵지 않다. 경험만 있다면 24시간 이내에 기본은 익힐 수 있

다. 구직 시장에서 경쟁력을 높이기 위해 새로운 프로그래밍 국제 공용어를 찾는 중이

라면 지금 사용하는 언어도 감안해 선택해야 한다.

다음 중에서 이미 알고 있는 언어를 기반으로 새로운 언어를 선택해 익힐 것을 권한다.

자바에 익숙한 사람이 선택할 만한 언어

자바에 익숙한 사람은 더 이상 참신한 인재는 아니다. 대부분의 비즈니스 소프트웨어가 자바

로 작성된 것은 사실이지만 웃돈을 주고라도 자바 개발자를 모셔가던 시절은 진작에 끝났다. 자

바 개발자가 선택할 만한 다음 단계는 무엇일까? 다음 언어 가운데서 선택해 보자.

•스칼라(Scalar) : 스칼라는 함수형 자바와 같다. 순수한 함수형을 추구하는 사람들은 스칼라

를 무척 선호하는데, 사실 자바에서 스칼라까지의 거리는 상당히 짧다. 더구나 AI와 머신러닝이

주목받고 아파치 스파크도 스칼라로 작성되는 요즘이라면 고민할 필요도 없어 보인다.

•자바스크립트(Javascript) : 대형 아웃소싱 업체에서 일하는 경우를 제외하고 대부분의 자

바 개발자는 통계적으로 35세 이상이 대부분이다. 이들이 기억하는 자바스크립트는 'DHTML'

을 만들고 "자바"라는 단어를 갖다 붙이기 위해(그만큼 자바가 인기있었으므로) 넷스케이프 브

라우저에 집어넣었던 저급한 스크립트에 머

물러 있을 것이다.

그러나 자바스크립트는 바뀌었고 서버

측 소프트웨어도 바뀌었다. 이미 자바를 알

고 있으니 함수형 구조를 익혀야 한다. 자바

스크립트는 서버 측과 클라이언트 측 언어가

됐고 '임기응변' 스크립팅 언어가 필요한 거

의 모든 곳에 사용된다. 자바스크립트는 개

발자의 도구 상자에 넣어두면 쓸모가 있는

언어다.

How To

│20

18 프

로그

래밍

트렌

10 IDG Korea

•C : C를 배운 적이 없는 사람도 있겠지만 C는 요즘 다시 부상 중이다. 게다가 프로그램에 C를

사용하지 않는다 해도 자바의 작동 원리, 동시성 문제 및 경합 조건과 같은 중대한 문제를 디버

그하는 방법을 이해하는 데 도움이 된다.

C#에 익숙한 사람이 선택할 만한 언어

C#에 익숙한 사람은 섬세한 사람이다. 예전에는 빌 게이츠가 세운 마이크로소프트를 경외했

겠지만 이제는 세상이 바뀌었다. 그러니까 여러분도 다음 언어를 하나 이상 익혀 마이크로소프

트 세계 안팎에서 모두 스스로의 시장성을 높여야 한다.

•자바스크립트 : 앞서 언급했지만 예전의 자바스크립트가 아니다. 또한 모든 곳에 사용된다.

자바스크립트는 서버 측 명령줄(CLI) 앱을 위해 가장 접근성이 뛰어난 언어이며, 마이크로소프

트가 몇 년 전에 갑자기 내놓은 J스크립트(JScript)를 사용할 필요가 없다. 자바스크립트에는 그

보다 더 나은 닷넷 바인딩이 있기 때문이다.

또한, C#으로 클라이언트 앱을 만들어왔다면 Node.js나 비슷한 런타임을 시도하거나 순수

웹 앱 만들기를 시도해보는 것도 좋다.

•F# : 한때의 기대처럼 세계를 바꿔 놓지는 못했지만 F#은 여전히 함수형 프로그래밍에 깊숙

이 들어가 데이터 과학을 본격적으로 접하기에 좋은 방법이다. AI나 머신러닝 분야를 파고 있거

나 단순히 복잡한 계산을 위한 더 깔끔한 방법을 원한다면 F#이 적격이다.

•C : 이 목록에 자바가 포함될 것이라고 생각했겠지만 아니다. 자바 개발자와 마찬가지로 C#

프로그래머는 더 깊이 들어가서 런타임이 실제로 어떻게 작동하는 지를 이해해야 한다. 즉, C를

이해해야 한다. C를 배워 두면 좋다.

•파워셸(PowerShell) 또는 배시(Bash) : 마우스로 여기저기 클릭해 원하는 작업을 하는 것

은 사용자의 몫이다. 개발자는 모든 따분한 작업을 자동화할 수 있어야 한다. 여러 운영체제에

서 제공되는 마이크로소프트 파워셸과 배시 터미널은 이러한 자동화를 위해 가장 광범위하게

사용되는 툴이다.

자바스크립트에 익숙한 사람이 선택할 만한 언어

이력서에 "풀 스택 개발자"라는 문구를 넣지 않는가? 그러나 여러분은 백엔드보다 프론트엔

드 개발자로서 훨씬 더 뛰어나므로, 지금까지 그 말을 믿는 사람은 별로 없을 것이다. 솔직히 이

제는 "풀 스택"이라는 주장의 근거를 마련할 때다.

•R : R이라고? 데이터 과학자와 통계학자가 쓰는 언어 아닌가? 그렇다. 하지만 데이터로 손쉽

게 시각화를 생성할 수 있는 비교적 간단한 언어이기도 하다. R 스튜디오를 선택해 하버드, 또

는 굳이 고집한다면 마이크로소프트가 제공하는 온라인 강좌를 들어보자(참고로 하버드 과정

이 마이크로소프트보다 더 저렴하다. 직접 확인해보라).

•SQL : NoSQL을 잘 쓰고 있는데 왜 SQL인가? 다른 어떤 언어보다 SQL을 아는 사람의 수가

더 많은 것은 거의 확실하기 때문이다. 또한, SQL은 사라질 일이 없는 언어이며 데이터를 올바

른 방법으로 생각하는 데도 많은 도움이 된다.

How To

│20

18 프

로그

래밍

트렌

IDG Korea 11

•파이썬(Python) : 파이썬은 배우기 간단치 않지만 예를 들어 자바나 스칼라보다는 유의미

한 뭔가를 할 수준까지 배우기는 더 쉽다. 또한, 루비(Ruby)는 인기가 떨어지는 중이라서 몇 년

뒤면 효용성을 장담할 수 없고 따라서 열성적인 추종자가 아니라면 루비를 추천하기는 어렵다.

루비에 익숙한 사람이 선택할 만한 언어

코딩 교육에서 루비를 배웠다면 지금쯤 그게 돈낭비였다는 생각이 들 수도 있다. 그렇다면

이제 어디로 가야 할까?

•자바스크립트 : 이미 프론트엔드에서 자바스크립트의 맛은 본 적이 있을 것이다. 더 깊이 들

어가서 자바스크립트를 배워라. 또한, 앵귤러(Angular) 또는 비슷한 프레임워크를 함께 배우면

좋다. Node.js 또는 비슷한 백엔드 런타임도 익히자.

•파이썬 : 파이썬은 데이터를 다루는 사람들에게 인기가 있지만 웹 앱에도 쓸모가 있다. 더 다

재다능하고 시장성 있는 인력이 되고자 한다면(즉 돈을 더 벌고 싶다면) 파이썬부터 시작할 것

을 권한다.

•R : 자바스크립트 개발자에게 했던 조언과 똑같다. 비교적 간단한 언어인 R을 배워라. 시각화

를 생성할 수 있고 데이터에 대한 생각을 바꾸게 해주는 언어다.

C나 C++에 익숙한 사람이 선택할 만한 언어

C 또는 C++로 프로그래밍을 한다면 임베디드, 드라이버 또는 저수준 프로그램을 다루는 사

람이거나 그냥 나이가 많은 사람이다. 핵심은 관리되는 메모리를 사용하는 언어를 적어도 하나

는 배워야 한다는 것이다.

•D : D를 배워도 취직에는 도움이 되지 않고 실용성도 거의 없다. 그러나 D는 익숙한 툴을 버

리거나 C 라이브러리를 잃지 않고도 관리되는 메모리와 온갖 "새로운" 개념을 맛볼 수 있는 편

리한 방법이다.

•자바스크립트 : 웹의 언어, 자바스크립트를 배워라. 백엔드 언어나 프론트엔드 언어, 또는 두

가지 모두의 용도로 배우면 좋다. 요즘 자바스크립트를 정확히 배우려면 어느 정도 함수형으로

배워야 한다. 처음에는 D를 배우는 편이 더 빠를 것이다.

•R : 다시 말하지만 이 간단한 언어가 데이터에 대한 사고 방식을 바꾸게 해준다. 또한, R은 시

각화를 만들 수 있으므로 배우는 즉시 실제로 써먹을 수 있다. 개발자라면 당연히 어디선가 로

그 데이터를 디버그해야 한다. R이 도움이 될 것이다.

펄(Perl)에 익숙한 사람이 선택할 만한 언어

펄 개발자라면 수염을 길게 기르고 여전히 카멜과 이리저리 꼬인 논리에 대한 믿음이 확고

한 사람일 것이다. 텍스트 처리는 예전의 그 텍스트 처리가 아니고, 한때 놀라웠던 정규표현식

(REGEX)의 내장도 예전만큼은 아니다. 그러니 다음 언어 가운데 한 가지 이상을 배우자.

•R : 반복해서 말하지만 R은 배우는 즉시 쓸모가 있고 간단한 언어이며 대부분의 펄 프로그래

머가 쉽게 배울 수 있는 좋은 선택이다.

How To

│20

18 프

로그

래밍

트렌

12 IDG Korea

•자바스크립트 : 자바스크립트를 만져본 경험은 있겠지만 더 깊게, 함수형으로 들어가라.

•C : 지금까지 CPAN(Comprehensive Perl Archive Network) 모듈의 그늘 아래 수십년 동안

C를 사용했을 것이다. 그러니 이제 네이티브 C로 직접 CPAN 모듈을 작성해 보라. 정확하게 하

지 않으면 대부분의 플랫폼에서 설치하려고 할 때 빌드가 충돌하는 모습을 보게 된다. C를 배우

면 이런 정확함을 이해하게 된다. C는 꽤 긴 여정이지만 이미 여러분에게는 C의 가장 어려운 부

분, 즉 빌드를 디버그한 경험이 있을 것이다.

지금 배우면 안 되는 언어

다음에 소개하는 언어가 붐을 일으킬 때, 배우지 않았다면 지금 뒷북을 칠 필요는 없다. 유능

한 개발자들로 가득 차지 않았거나 개발자 수가 줄고 있는 다른 언어를 찾아보자.

•자바 : 숙련된 자바 개발자이거나 위프로(Wipro) 또는 인포시스(Infosys)와 같은 코딩 공장

에서 일할 계획이 아니라면 여러분이 자바를 능숙하게 다루게 될 무렵 자바스크립트를 선택한

친구들은 "풀스택 개발자"로서 훨씬 더 귀한 몸이 되어 있을 것이다.

•루비 : 인기는 떨어지는 중이고 지켜줄 보호자도 없다. 루비는 조만간 괴이한 컬트 언어라는

그루비(Groovy)의 전철을 밟게 될 것이다(그루비를 폄하했으니 엄청난 욕 메일을 받을 각오는

되어 있다). 그루비는 인기 순위 50위 안에도 못 드는 언어다.

•그루비 : 이제 포기하라. 끝났다. 스칼라나 자바스크립트를 배워라. 그루비 추종자가 자신을

찾아온다면 펄을 배운 다음 전체를 대문자로 코딩해 펄 사람들을 놀려 주면 좋겠다고 말하라.

•펄 : 펄 역시 그 자체로 컬트 현상이다. 몇 년 전부터 인기는 떨어지고 있지만 아직 몇 가지 부

분에서 유용하다. 다만, 대부분이 이미 해결된 문제들이다(엉킨 CSV 파일을 처리하는 코드를

가져와 사용하면 되는데, 다시 펄을 쓸 이유가 무엇인가?).

초보자가 먼저 익혀야 할 언어

아는 프로그래밍 언어가 없다면 다음 언어부터 시작하라.

•HTML, CSS, 자바스크립트 : 프론트엔드가 끌린다면 웹의 언어인 HTML, CSS, 자바스크립

트를 배워라.

•R : 비교적 간단하면서도 차트와 시각화에서 바로 쓸모가 있으므로 배워 두면 좋은 언어다.

•C : 컴퓨터의 작동 원리에 대한 기초적인 이해는 누구에게나 필요하다. 그 목적을 기준으로

보면 C는 가장 기계에 근접한 언어다. 또한, 가장 인기 있는 언어 가운데 하나이며 사물인터넷

시대에도 도움이 될 것이다.

•배시 또는 파워셸 : 셸 스크립팅의 이해는 인생을 이해하는 것과 같다. 셸 스크립팅은 수많은

단조로운 작업을 자동화해준다. 파워셸은 마이크로소프트 생태계에 초점을 두는 반면 배시는

광범위하게 쓸모가 있다.

How To

│20

18 프

로그

래밍

트렌

IDG Korea 13

일부러 배울 필요는 없는 프로그래밍 언어 5가지

Dan Swinhoe | InfoWorld

해커랭크(HackerRank)의 최근 조사에 따르면, 고(Go), 파이썬, 스칼라, 코틀린, 루비는 프

로그래머들이 다음에 배우고 싶은 프로그래밍 언어 TOP 5에 올랐다. 그렇다면, 개발자

들이 배우지 말아야 할 프로그래밍 언어는 무엇일까?

코딩 교육 및 마켓플레이스 플랫폼인 코드멘토(CodeMentor)는 최근 개발자가 시간을 들여

배울 가치가 없다고 주장하는 프로그래밍 언어 순위를 공개했다. 코드멘토의 조사는 커뮤니티

의 참여, 구직 시장, 해당 언어를 사용하는 개발자의 증가세의 세 가지 영역을 중심으로 이뤄졌

다. 다시 말해 프로그래밍 언어 자체의 유용성이나 기능을 평가한 것은 아니다.

다트(Dart)

안타까운 다트. 코드멘토에 따르면, 구글의 '또 다른' 프로그래밍 언어인 다트가 2018년 배

울 수 있는 최악의 프로그래밍 언어로 선정됐다. 이유는? 모바일 애플리케이션과 IoT 디바이스

라는 용처가 있지만, 채택하는 사람이 없고 커뮤니티 참여도 적고 실제로 사용하는 기업은 더

없기 때문이다. 구글이 아무리 열심히 사용해도 역부족이다. 구글의 고 언어가 1위를 차지한 반

면, 다트는 목표를 완전히 잃어버렸다.

How To

│20

18 프

로그

래밍

트렌

14 IDG Korea

오브젝트-C(Objective-C)

오래 된 고전이다. 오브젝트-C는 여전히 티오베 지표(Tiobe Index) 20위 권에 있지만, 지

난 5년간 인기도는 꾸준히 떨어졌다. 한때는 애플 운영체제의 대들보였지만, 지금은 스위프트

(Swift)가 그 자리를 대체했다. 사용자 기반은 줄어들고, 다른 한편으로 많은 기업이 여전히 오

브젝트-C를 자사의 기존 소프트웨어 스택에 두고 있겠지만, 이 노장 프로그래밍 언어는 서서

히 사라질 것이다.

커피스크립트(CoffeeScript)

2009년 자바 스크립트를 루비나 파이썬처럼 만들기 위해 등장한 커피스크립트(Coffee-

Script)는 실제로 한번도 그 목표에 다가간 적이 없으며 이후 인기는 서서히 떨어지고 있다.

How To

│20

18 프

로그

래밍

트렌

IDG Korea 15

루아(Lua)

1993년 브라질 폰티피칼 카톨릭 대학에서 개발한 루아는 이번 목록에서 가장 틈새 지향적

인 프로그래밍 언어일 것이다. 아주 작은 크기 때문에 보통 임베디드 시스템이나 게이밍에 사용

한다. 루아는 하락폭이 그리 크지 않아 눈에 띄지 않는 상태로 계속 남을 가능성이 크다.

얼랭(Erlang)

또 하나의 노장 프로그래밍 언어인 얼랭은 1980년대 촉망받는 신예였다. 통신이나 뱅킹, 전

자상거래, 인스턴트 메시징 등의 실시간 환경에 여전히 사용되지만, 신생 경쟁 언어와 비교해

배우기가 너무 어렵다. 해커랭크에서는 11위를 기록했지만, 40대 이상의 프로그래머들에게는

이보다 더 인기가 많다. 그리고 코볼처럼 리거시 유지보수에나 사용될 가능성이 큰 프로그래

밍 언어다.


Recommended