“뜨는 프로그래밍, 지는 프로그래밍” 15가지 주요 트렌드
Peter Wayner | InfoWorld
기술의 세계에서는 정확함, 과학, 수학, 정교성이 가장 중요하다. 하지만 그렇다고 해서 프로그래밍에 트렌드가 아주 없는 것은
아니다. 더 큰 효율성, 커스터마이제이션 향상, 사용 편의성 등을 위해 이전 세대를 대체할 희망을 안고 새로운 기술이 지속적으로
등장하고 있다. 현재 프로그래머들 사이에서 인기가 있는 것과 인기가 없을 나란히 놓고 살펴보자. 모든 사람들이 이 목록에 전적으로
동의하지는 않을 것이다. 하지만 급격한 변화, 열정적인 논의, 갑작스러운 복귀 덕분에 프로그래밍이 한 없이 매력적인 직업이 될 수
있다고 생각한다. editor@itworld.co.kr
전처리기와 전체 개발언어 스택
얼마 전까지만 하더라도 새로운 프로그래밍 언어를 개발한다는 것은 코드를 반도체 칩에 공급되는 비트로 전환하는 모든 것을 개발하는
것을 의미했다. 그런데 누군가 이전의 것에 편승하는 방법을 알아냈다. 이제 번뜩이는 아이디어가 있는 사람들은 풍부한 라이브러리와
API로 새로운 코드를 무엇인가 기존의 것으로 변환하는 전처리기(Preprocessor)를 작성하면 된다.
역동적인 키 입력을 사랑했던 사람들은 자바에서 지속적인 구두점을 제외한 더욱 단순한 버전인 그루비(Groovy)를 개발했다.
자바스크립트를 수정하고 싶어했던 사람들은 부담스러운 구두점 없이 다시 코드를 작성할 수 있는 전처리기인
커피스크립트(CoffeeScript)를 개발했다. 스칼라(Scala)나 클로져(Clojure) 등 수많은 언어들이 JVM 상에서
구동되는 것으로 보이는데, JVM은 단 하나만이 존재한다. 굳이 바퀴를 다시 발명할 필요가 있을까? Credit: Robert
Bieber via Flickr
자바스크립트의 MV* 프레임워크와 자바스크립트 파일
오래 전, 모든 사람들은 실제로 @ 기호가 포함된 형태의 이메일 주소를 보기 위해 알림 또는 체크상자를 팝업으로 표시하는
자바스크립트를 작성하는 방법을 배웠다. 이제 HTML AJAX 앱이 발전하면서 처음부터 시작하는 사람들은 거의 없다. 정교한
프레임워크를 적용하고 약간의 글루(Glue) 코드를 작성하여 비즈니스 로직을 이행하는 방법이 훨씬 쉽다. 현재 켄도(Kendo),
센차(Sencha), 제이쿼리 모바일(jQuery Mobile), 앵귤러JS(AngularJS), 엠버(Ember),
백본(Backbone), 메테오 JS(Meteor JS) 등 많은 프레임워크가 존재하며, 모두 개발자의 웹 앱과 페이지를 위한
이벤트 및 콘텐츠 처리가 가능하다. Credit: longer90 via deviantArt
CSS 프레임워크와 일반적인 CSS
한 때, 웹 페이지에 활기를 불어 넣는다는 것은 CSS 파일을 열고 font-style:italic 같은 새로운 명령을 포함시키는
것을 의미했다. 이제 웹 페이지가 너무 발전해 이런 단순한 명령으로 파일을 채우는 것이 불가능해졌다. 색상 하나만 변경해도 모든
것이 엉망이 된다. 마치 음모론과 생태학에 대해 이야기하는 것 같다. 모든 것이 연결되어 있다.
여기에서 SASS 등의 CSS 프레임워크와 그 사촌격인 컴파스(Compass)가 튼튼한 기반을 마련했다. 이것들은 실변수, 내포화
블록, 믹스인(Mix-in) 등의 프로그래밍 구조를 제공함으로써 익숙하고 안정적인 코드 작성을 가능하게 한다. 프로그램
계층에서는 그렇게 새롭게 들리지 않겠지만 디자인 계층에서는 큰 발전이라 할 수 있다. Credit: Fasenove via
deviantArt
캔버스 상의 SVG + 자바스크립트와 플래시
수 년 동안 사람들은 플래시에 열광했지만, 예술가는 결과를 좋아한다. 안티앨리어싱 렌더링은 멋있어 보이지만 예술가는 정교한 변환과 애니메이션을 제공하기 위해 플래시 코드의 깊숙한 부분을 개발했다.
이제 자바스크립트 계층이 유사한 기능을 갖게 되면서 브라우저 업체와 개발자들은 플래시의 종말을 축하하고 있다.
SVG(Scalable Vector Graphics) 등의 새로운 포맷에서 DOM 계층이 더욱 잘 통합되고 있다. SVG와
HTML은 하나의 거대한 태그 덩어리를 구성하고 웹 개발자들이 이를 이용하기가 더욱 쉬운 경우가 많다. 그리고 캔버스 객체에 종종
비디오 카드의 도움으로 정교한 그리지를 제공하는 대형 API들이 존재한다. 이런 것들을 조합하면 플래시를 사용할 이유가 거의
없게 된다. Credit: BLueFiSH.as via Wikimedia
하둡 분석 없는 유사 빅데이터와 하둡 기반 빅데이터
문제가 많다고 해서 반드시 가장 앞선 빅데이터 솔루션을 사용해야 하는 것은 아니다. 물론, 구글이나 야후 같은 업체들은 우리의
모든 웹 브라우징을 추적하며, 요타바이트(Yottabyte) 단위로 측정된 데이터 파일을 보유하고 있다. 하지만 대부분의 기업들은
기본 PC의 RAM 크기에 맞는 데이터를 보유하고 있으며, 16GB의 RAM이면 수 십억 개의 이벤트를 저장하기에 충분하다.
대부분의 알고리즘에서 데이터는 SSD로부터 스트리밍 처리가 가능하기 때문에 메모리로 읽어들일 필요가 없다.
병렬로 구동하는 하둡 클라우드에서 수십 개의 머신이 빠르게 반응해야 하는 경우가 있겠지만, 상당수는 조율이나 커뮤니케이션 문제
없이 단일 머신에 연결하는 것으로 충분할 것이다. Credit: Teipangshan102 via Wikimedia
게임 프레임워크와 네이티브 게임 개발
한 때, 게임 개발을 위해 많은 개발자를 고용하여 처음부터 C로 모든 것을 작성하던 시절이 있었다. 막대한 자금이 필요했지만
보기에 좋았던 것은 사실이다. 이제 그 누구도 맞춤형 코드의 호사를 누릴 수 없다. 대부분의 게임 개발자들은 이미 자부심을
포기했으며 유나이티(Unity), 코로나(Corona), LibGDX 등의 라이브러리를 이용해 시스템을 구축한다. C 코드를
라이브러리를 위한 지시사항보다도 적게 작성한다.
자부심을 갖고 수작업으로 게임을 개발하는 대신에 동일한 엔진을 사용한다고 해서 부끄러워해야 할까? 많은 개발자들이 세부사항을
처리할 필요 없이 게임 진행, 스토리, 캐릭터, 이미지 등에 집중할 수 있게 되면서 평안을 얻었다. Credit:
mondspeer via deviantArt
단일 페이지 웹 앱과 웹 사이트
URL이 정적 텍스트와 이미지로 채워진 웹 페이지로 연결되던 시절을 기억하는가? 개별적인 웹 페이지의 네트워크에 모든 정보를 쉽고 매력 있게 채워 넣던 것을 웹 사이트라 불렀다!
새로운 웹 앱은 콘텐츠로 채워진 거대한 데이터베이스의 프론트엔드에 위치하고 있다. 웹 앱이 정보를 원하면 데이터베이스로부터 가져와
현장의 틀에 부어 넣는다. 웹 페이지를 개발하기 위해 필요한 추가적인 웹 요소로 데이터를 수정할 필요가 없다. 데이터 계층은
프리젠테이션과 형식 계층으로부터 완전히 분리되어 있다. 여기에서 모바일 컴퓨팅의 등장은 또 다른 요소이다. 반응형 디자인을 적용한
단일 웹 페이지가 앱 처럼 동작하며, 앱 스토어의 혼란을 피할 수 있다는 장점도 있다. Credit: behrang via
Flickr
모바일 웹 앱과 네이티브 모바일 앱
어떤 모바일 콘텐츠에 관한 좋은 아이디어가 있다고 해 보자. iOS, 안드로이드, 윈도우 폰 8 등을 위해 각각의 버전을 급히
개발할 수 있다. 그 각각은 다른 프로그래밍 언어를 사용하는 다른 팀이 개발해야 한다. 그리고 각 플랫폼의 앱 스토어에서는
사용자에 앱을 제공하려면 비용을 지불해야 한다.
아니면 하나의 HTML 앱을 개발해 웹 사이트에 추가하고 모든 플랫폼에서 운용할 수도 있다. 변화가 있다면 앱 스토어로 다시
돌아가 버그 수정에 관한 리뷰를 구걸할 필요가 없다. HTML 계층은 점차 빨라지고 더욱 빠른 칩에서 구동하고 있기 때문에 이
접근방식은 더욱 복잡하고 상호적인 플랫폼에서도 네이티브 앱과 더욱 잘 경쟁할 수 있다. Credit: behrang via
Flickr
안드로이드와 iOS
풍부하면서 발전된 UI를 사랑하는 아이폰과 아이패드의 팬들은 그대로 있지만, 안드로이드의 판매량은 점점 증가하고 있다. 그 이유는
단순히 가격 때문일 수 있다. iOS 기기는 비싼 가격이 유지되는 반면에, 안드로이드 세계에는 5분의 1 가격으로 태블릿을
생산하는 경쟁 업체들이 넘쳐나고 있다. 항상 돈을 절약하고 싶은 유혹이 있게 마련이다.
하지만 오픈 소스가 또 다른 요소가 될 수 있다. 누구든 시장에서 경쟁할 수 있으며, 실제로 그렇게 하고 있다. 다양한 크기의
안드로이드 태블릿이 공급되고 있다. 안드로이드 카메라와 안드로이드 냉장고도 등장했다. 그 누구도 혁신을 위해 구글에 "입사해야
할까?"라고 생각하지 않는다. 그저 자신의 생각을 따르면 그만이다. Credit: oOkami-Rei via deviantArt
GPU와 CPU
소프트웨어가 단순하고 지시사항이 잘 정리되어 있던 시절, CPU는 모든 작업을 수행했기 때문에 컴퓨터의 왕이었다. 이제 비디오
게임에 병렬로 구동이 가능한 광범위한 그래픽 루틴이 꽉 차면서 비디오 카드가 대세가 되고 있다. 고급 비디오 카드의 가격은
500~600달러를 훌쩍 뛰어넘고, 일부 게임 매니아들은 하나 이상의 카드를 사용한다. 기본형 데스크톱보다 가격이 두 배 이상
높은 경우도 있다.
게이머들만이 GPU 카드를 구매하는 것은 아니다. 현재 컴퓨터 공학자들은 많은 병렬 애플리케이션을 변환하여 GPU에서 몇 백배 더 빠르게 운용하고 있다. Credit: halilozarslan via deviantArt
깃허브(GitHub)와 레쥬메(Résumés)
물론, 중상위권 체스 클럽의 부회장을 포함하여 많은 이력을 작성한 목록을 보면서 무엇인가를 알 수도 있다. 하지만 누군가의 실제
코드를 읽는 것은 훨씬 풍부하고 유익하다. 좋은 의견을 작성하는가? 요소들을 소규모로 분류하는데 시간을 낭비하는가? 확장할 공간이
있는 실제적인 아키텍처가 존재하는가? 이 모든 문제들은 어떤 코드를 보면 한 번에 그 답을 알 수 있다.
이 때문에 오픈소스 프로젝트 참여가 구직에 있어 점차 중요해지고 있다. 독점 프로젝트의 코드를 공유하기는 어렵지만 오픈소스 코드는 어느 곳에서든 사용할 수 있다. Credit: Steve Corey via Flickr
임대와 구매
아마존이 블랙 프라이데이를 위한 컴퓨터와 기타 전자제품의 세일을 진행할 때, 자사의 클라우드를 깜빡 잊고 누락했다. 기다려 보자.
얼마 전까지만 하더라도 기업들은 자체 데이터센터를 세우고 자체 인력을 고용하여 구매한 컴퓨터를 운용했었다. 이제는 컴퓨터,
데이터센터, 인력 그리고 심지어 소프트웨어를 시간 단위로 임대한다. 그 누구도 소유로 인한 문제를 원하지 않는다. 웹 사이트가
소문이 나고 클릭만으로 모든 것의 비용을 지불할 수 있다는 것을 깨닫게 될 때까지는 문제 없다. 아마존이 자사의
드론(Drone)으로 클라우드를 배달할 수 있는 방법을 고안해 내기면 하면, 트렌드가 바뀔 것이다. Credit: Alan
Levine via Flickr
웹 인터페이스와 IDE
예전에는 사람들이 명령어 컴파일러를 사용했었다. 그리고 누군가는 그것을 편집기 및 기타 툴과 통합하여 IDE를 개발했다. 하지만 이제 IDE는 동작 시스템의 코드를 수정할 수 있는 브라우저 기반의 툴 때문에 퇴색하고 있다.
워드프레스(WordPress)의 방식이 마음에 들지 않는다면 직접 코드를 수정할 수 있는 내장 편집기가 포함된다. 마이크로소프트의
애저를 이용해 포털 안에서 직접 자바스크립트 글루 코드를 작성할 수 있다. 이런 시스템은 최고의 디버깅 환경을 제공하지 않으며
프로덕션 코드 편집에 있어서 약간의 위험이 존재하지만, 아이디어가 앞서고 있다. Credit: Chrisitan Heilmann
Node.js와 자바EE, 루비온레일즈, PHP
서버 세계는 항상 쓰레드 모델에서 성장해 왔다. 엉성한 루프, 컴퓨팅 낭비, 다루기 힘들고 비효율적인 코드 작성 등 운영체제는 쓰레드의 전환을 통해 성능의 균형을 이룰 수 있었다.
그리고 프로그램 콜백(Callback) 모델과 함께 Node.js가 등장하면서 예상했던 것보다 빠르게 구동하는 코드가 "토이
언어(Toy Language)"에서 가능하게 되었다. 갑자기 새로운 쓰레드 작성의 간접비가 분명해지면서 Node.js가 떠올랐다.
프로그래머가 제대로 하지 않으면 문제가 발생했지만 그 책임감은 충분했다. 일반적으로 프로그래머에게 자원 제약이 명확해지면 더욱
빠른 코드를 작성하게 마련이다.
또한 Node.js 세계는 브라우저와 서버 사이의 균형을 제공하는 이점이 있다. 두 모드에서 동일한 코드를 실행하여 개발자가
기능을 손쉽게 변경하고 기능을 복제하기가 쉬워졌다. Credit: OpenClips via pixabay
해커스페이스와 대학
한 명이 4년 동안 25만 달러의 비용을 발생시킨다. 그리고 미리 지불하게 되면 크게 할인을 받아 월 약 50달러의 비용이
발생한다. 어떤 사람은 축구 경기장, 총장을 위한 멋진 집, 호화로운 기숙사, 4가지 색상의 잡지를 구매하는데 돈을 쓴다. 다른
사람은 3D 인쇄기, 오실로스코프, 납땜기를 구매한다.
해커스페이스(Hackerspaces)는 대학 산업단지의 엄청난 간접비 없이 혁신을 추구한다. 그리고 에머슨이 "속이 좁은
홉고블린(Hobgoblin)"이라 말하는 관료제와 일관성 없이 신생업체를 낳고 부를 축적하는 소셜 네트워크를 탄생시킨다. 한 한기
내내 과정을 유지할 필요도 없다. 학생들은 수업을 시작하기에 앞서 입학을 위해 1년 전부터 준비할 필요가 없다. 즉흥성이 빠르게
변화하는 세계에 더욱 잘 어울리고 있다. Credit: gfpeck via Flickr
[기사출처 : http://www.itworld.co.kr, 기사원문 : http://www.itworld.co.kr/slideshow/87785 ]