과거라면 컴퓨터를 보다 수월하게 사용할 수 있도록 간단한 몇 가지 프로그램을 혼자서 짜는 것이 어렵지 않았다. 하지만 새로운 컴퓨터 환경에서 자신에게 맞는 프로그램을 짤라치면 새로 배워야 할 것이 무어의 법칙보다도, 황의 법칙보다도 가파른 기울기의 생성속도를 가진 언어들과 마주친다.
웹사이트 개발이 진척되면서 스크립팅 언어들이 나왔고, 스페이스피케이션 언어, SQL등의 퀴리 언어, 4세대 프로그래밍 언어 4GL, 설정파일 포맷 INI파일 등이 연이어 개발되며 프로그래머들을 괴롭힌다.
그 뿐이면 책 몇권과 수 일의 시간을 들여 익숙해질만 하다. 그러나 이제는 스마트폰이 나오면서 또 다른 언어들이 개발자들을 괴롭힌다. 애플의 Xcode나 아이폰 개발을 위한 SDK까지 나왔다. 이쯤되면 이제까지 익혀왔던 언어들은 잊어도 무방하다. 언제나 새로 공부해야 했고, 앞으로도 공부해야 하니까.
기대되는 새로운 컴퓨터 언어들전세계(미국이 중심이 되지만)에 걸쳐 수십개 프로그래밍 언어들을 창조해낸 ‘악동’들이 또 새로운 언어를 개발했다. 이들 역시 새로운 언어를 개발했을 때 맞닥뜨리는 반응들, “또 야? 왜? 왜? 왜?”라는 원망어린 소리를 예상한다. 그래서인지 언어 창조자들은 왜 이런 새로운 언어가 필요한지에 대해 열심히 설명하는데 시간을 아끼지 않는다.
이번에 개발된 언어들은 웹 어플리케이션과 모바일 디바이스를 보다 파워풀하게 만들 수 있도록 디자인돼 있다. 지난 주 미국 오레곤 주 포틀랜드에서 제안된 프로그램들은 오'랠리 오픈 소스 컨벤션(OSCON, O'Reilly Open Source Convention)의 새 언어 캠프(Emerging Languages Camp)에서 첫 선을 보였다.
캠프에 모인 디자이너들 중에는 취미삼아 그들의 개발력을 시험하려는 사람들이나 차세대 컴퓨팅에 영향을 주려는 학계 인사들, 마이크로소프트나 구글 등 어플리케이션과 컴퓨터 인프라에 널리 쓰여질 새로운 도구를 개발하려는 회사의 연구자들이 포함돼있다.
각자 집약적으로 20분 동안 프리젠테이션을 마치면, 디자이너들은 그들이 만든 언어의 세부사항들에 대한 의견을 나눈다. 모든 디자이너들은 보통 10여년간 노력을 들여 과거 프로그래밍 언어들이 점차 쓸모없게 됐고, 기술 산업이 크게 확대됐다고 주장했다.
구글의 엔지니어로 구글에서 개발된 프로그래밍 언어 GO의 공동디자이너 롭 파이크(Rob Pike)는 “지금은 랭귀지 디자인의 르네상스”라고 말한다. 그는 새로운 프로그래밍 언어가 만들어져야 하는 이유에 대해 “지금 존재하는 주류 언어는 사람들이 풀기 원하는 문제들조차 해결할 수 없는 수준이기 때문”이라고 지적한다.
멀티코어 컴퓨팅 플랫폼, 어떻게 관리할까
페이스북이나 아마존, 구글 등의 대형 회사들의 가장 큰 관심과 문제 중의 하나는, 분산되는 데이터들의 폭발하듯 증가하는 복잡성이나 데이터 센터와 클라우드 네트워크와 같은 멀티코어 컴퓨팅 플랫폼을 어떻게 제대로 관리할 수 있겠느냐는 것이다.
구글의 GO 랭귀지는 지난 2009년 말 C++의 대안으로 선보였다. 파이크에 따르면 GO는 프로그래머들이 현대적인 병렬 컴퓨팅 아키텍쳐의 장점을 쉽게 사용할 수 없도록 만들었다. 파이크는 “구글과 다른 여러 곳에서 널리 쓰이는 메인 시스템 랭귀지 C++는 이제 20살이나 됐다”며 “언어는 그 자체가 소프트웨어 디자인 아이디어를 바꾼다. 현재 우리는 우리의 하드웨어와 네트워킹에 대해 이해하는 지식의 상당부분으로 언어를 디자인하지 못하고 있다”고 말했다.
구글에 있어, 파이크와 그의 팀원들은 C++가 컴파일에 수 분에서 몇 시간을 들여야 하기 때문에 생산성이 떨어진다고 봤다. (컴파일은 사람이 읽을 수 있는 소스코드를 컴퓨터 CPU가 실행할 수 있는 바이너리 기계어로 번역하는 것을 말한다.) GO는 컴파일을 하는데 드는 잉여 시간을 줄이는데, 이는 프로그램이 수 초만에 실행할 준비를 마칠 수 있는 것을 의미한다. 파이크는 GO가 지배적인 언어인 C++를 밀쳐낼 수 있을거라고 생각하지는 않지만, “우리는 단지 어느 정도의 경쟁이 필요하다고 생각했다”고 말한다. 그러나 “GO는 이미 구글 내부에서 ‘실제’ 프로젝트에 사용돼 왔다”고 덧붙였다.
전통에서 벗어난 환경지향 프로그래밍또 다른 컴퓨팅의 진화하는 분야에는 무선 네트워크 “ad hoc”에서 링크돼 모바일 디바이스에서 실행되는 프로그램들이다. 벨기에 브뤼셀 Vrije Universiteit에서 온 톰 반 커츰(Tom Van Cutsem)은 실험적인 언어 엠비언트톡(AmbientTalk)을 선보였다. 이 언어는 ‘환경지향 프로그래밍(ambient-oriented programming)’이라고 부르는 새로운 패러다임을 적용한다. 이는 두 가지 면에서 전통적인 컴퓨터 적용법에서 벗어난다.
첫째로 이는 컴퓨터의 중앙 인프라에 의존하지 않는다. CUP를 거치지 않고 주변기기나 일부 보드에서 실행되고 만다는 것이다.
둘째로, 이는 네트워크 연결이 휘발성이 있고 예측불가능하다는 점을 전제로 한다. (이는 각기 네크워크의 범위 안팎을 지나가는 모바일 디바이스의 경우를 말한다.) 반 커츰은 “엠비언트톡은 네크워크 연결이 끊어지거나 신호를 잃거나, 연결을 회복했을 때에도 메세지를 전달할 수 있을 만큼 스마트해서 마치 아무것도 일어나지 않았을 때와 같이 메세지를 보낼 수 있다”고 설명했다.
엠비언트톡 어플리케이션의 한가지 실험을 보면, 두개의 스마트 폰은 무선으로 각자의 음악 라이브러리를 교환해 서로에게 추천하는 노래를 제공할 수 있다. 만약 한 사람이 이 동기화된 프로세스 중에 접속 범위 밖으로 걸어나가면, 어플리케이션은 이 연결을 끊거나 다른 기기와의 연결과 부딪히지 않는다. 다른 언어들도 이런 기능을 잘 수행할 수 있지만, 엠비언트톡은 기본값으로 네트워크 분산을 기대하거나 받아들이는 등 랭귀지로 들어오는 방법을 스스로 구축한다. 별도로 프로그래밍하는 노력없이도 이같은 어플리케이션이 만들어 질 수 있도록 한다는 것이다.
마이크로소프트의 FUSE 랩의 매츠 맥라우린(Matt MacLaurin)이 내놓은 언어 Kodu는 ‘스펙트럼 양 끝에 관한 문제(a problem on the opposite end of the spectrum)’를 제기하고 있다. 전문가와 비전문가간의 수준격차를 의미하는 문제로, 어떻게 프로그래밍에 관심이 있는 젊은 사람들을 처음으로 프로그래밍의 세계로 모을 수 있느냐는 문제다. 맥라우린은 “우리의 작업 이론은 프로그래밍이 본질적으로 낱말 맞추기나 스도쿠처럼 매혹적이고 재미있다는 것”이라며 “우리는 아이때부터 시작해 무엇이 프로그래밍인지 등에 대한 문화적 인식을 바꾸려고 한다”고 말했다.
Kodu는 Xbox 360과 윈도우 피씨에 비디오 게임 형식으로 만들어져 프로그래밍의 개념을 소개할 수 있도록 무료로 탑재되는 비쥬얼 프로그래밍 언어다. 문자언어로 입력되는 변수와 문자와 같은 추상적인 개념을 사용하는 대신에, Xbox게임의 콘트롤러나 키보드, 마우스 등을 통해 만들 수 있는 애니메이션 캐릭터로 3차원게임의 배경을 만들어준다.
사과를 따먹거나 적과 전투를 하는 것과 같은 쉽게 이해할 수 있는 행위를 게임으로 만들 수 있게 하는데, 모든 맵에서 행동하는 이들 객체들은 쉽게 만들어지지만, 실제 프로그래밍 컨셉과 직접적으로 연결된다.
Kodu는 철학적인 논리를 실행하는 능력으로 언어를 만들게 되는데, 언어를 배우고 익히는데 드는 불필요한 시간을 생략하게 만든다. 교실이나 컴퓨터 선생없이도 아이들이 프로그래밍을 할 수 있도록 하는 것이 Kodu의 실제 목표다.
- 박상주 객원기자
- utopiapeople@naver.com
- 저작권자 2010-08-04 ⓒ ScienceTimes
관련기사