브라우저 / 애플리케이션

구글 다트, 새로운 개발 언어에 웹 개발자 관심 고조

Neil McAllister | InfoWorld 2011.10.17
구글의 새로운 클라이언트 웹 프로그래밍 언어 다트(Dart)에 관한 소문이 처음으로 돌기 시작했을 때 다트는, "근본적인 결함"이 있다고 평가되는 기존 언어를 대신하기 위한 "자바스크립트 킬러"로 알려졌다. 마이크로소프트와 같은 방식으로 구글이 오픈 자바스크립트 표준을 침해할 것이라는 우려에서부터 환영하는 사람들에 이르기까지 웹 개발자 커뮤니티는 다트에 관한 초기의 소문과 관련해 여러 반응을 보였다. 
 
지난 주 구글은 덴마크 아르후스에서 개최된 연례 고투(GoTo) 컨퍼런스의 기조 연설에서 다트를 공식적으로 공개했다. 다행스럽게도 다트는 많은 이들의 관심을 불러 일으켰고, 다트와 관련한 우려가 많이 줄어드는 반응이 나타나고 있다. 사실, 현재까지 제공된 문서와 툴을 보면 다트는 여러 클라이언트 웹 개발자들이 여태까지 기다려왔던 것이 될 수 있을 것이다. 
 
그러나 또 다른 구글 언어?
구글은 "자바 킬러"가 될 것이라고 많은 사람들이 생각한 새로운 언어 고(Go)를 발표한 적이 있다. 그러나 구글이 개발자 컨퍼런스에서 몇 가지 발표를 수행한 것을 제외하고, 공개 이후 고에 관한 소식은 많이 들리지 않고 있다. 다트는 더 나은 행보를 보일 수 있을까?
 
아마도 그럴 수 있을 것이다. 고와 다트는 각각 서로 다른 목적으로 동시에 개발됐다는 점이 중요하다. 고는 프로세서 네이티브 머신 코드로써의 바이너리를 생성하는 전통적인 컴파인 언어이다. 그런 의미에서 고는 자바스크립트와 같은 동적 언어 혹은 자바보다는 C나 C++와 좀 더 유사하다고 할 수 있다. 고는 가비지 컬렉션과 병렬성 지원 등 몇 가지 현대적인 기능이 있고, 범용 사용을 목적으로 하는 시스템 프로그래밍 언어를 지향한다. 
 
반면에 다트는 처음 알려졌던 것과는 달리 자바스크립트와 공통점이 많은 VM 기반 언어이다. 이번 발표에서 알려진 새로운 사실은 Node.js를 통해 서버 상에서 자바스크립트를 실행하는 것과 매우 유사하게 다트는 브라우저뿐만 아니라 독립 VM을 통해 서버에서도 실행될 수 있다는 것이다. 아직까지, 대부분의 다트 코드는 클라이언트측이 될 것으로 보이고, 한 동안 다트의 실행법은 최신 웹 브라우저(크롬, 파이어폭스, 사파리 등)에서 실행될 수 있는 자바스크립트로 다트를 컴파일하는 방식이 될 것이다. 
 
그렇다면 의문이 생긴다. 만약 다트 애플리케이션이 어쨌든 자바스크립트 코드로 실행된다면, 자바스크립트 코드를 사용하면 되지 왜 다트를 이용해야 할까? 
 
"구조화된 웹 프로그래밍을 위한 언어"라는 구글의 설명이 이 질문에 대한 답이 될 수 있다. 이전까지는 다트와 같은 것이 없었다. 물론, 개발자들이 웹 애플리케이션을 개발할 수 있도록 해주는 서버측 언어는 많이 있지만, 그러한 기능을 제공하는 클라이언트측 언어는 자바스크립트(또는 본질적으로 같다고 할 수 있는 액션스크립트)밖에 없다. 
 
초기에 자바스크립트는 웹 페이지에 단순한 상호작용성을 제공하는 것으로 출발해 시간이 지남에 따라 유기적으로 성장해왔다. 자바스크립트의 목표는 구글 문서도구와 같은 대규모 웹 애플리케이션을 개발하는 것이 아니었다. 다트의 목표는 자바스크립트가 성공을 거둘 수 있었던 측면은 유지하면서 자바스크립트가 가지고 있는 결점을 해결하는 것이다. 
 
다트의 자바스크립트 개선점
예를 들어, 자바스크립트는 숫자 문자열을 정수로 처리한 후 계산을 수행할 수 있도록 해주는 동적 약형(weakly typed) 언어이다. 그렇기 때문에 자바스크립트는 어느 변수가 어떤 타입의 값을 가져야 하는지를 추적하는 것이 쉽지 않아 데이터 충돌과 추적 오류가 발생할 수 있다. 구글은 다크를 강형(strongly typed) 언어로 개발함으로써 그런 문제들을 해결했을 것이라고 생각할 수 있지만, 그렇지는 않다. 대신, 구글은 자바스크립트의 유연성을 유지한 채로 좀 더 쉽게 디버깅할 수 있도록 충분한 수준의 타입 안정성을 추가했다. 
 
다트에서 데이터 타입을 선언하는 것은 선택사항이다. 그러나 데이터 타입을 선언하게 되면 다트는 잠재적인 문제점을 경고하는 컴파일 타임 경고 기능(오류가 아니다)을 제공한다. 그리고 다트 코드는 오류를 생성하고 타입 충돌이 발생하는 경우 런타임 실행을 중단하는 디버그 모드로 실행될 수 있다. 이런 방식은 자바스크립트와 마찬가지로 빠른 속도로 코드를 작성하고, 코드의 규모가 커지고 성숙해짐에 따라 차후에 타입 선언을 추가할 수 있다는 장점이 있다. 
 
다트는 객체 지향 구문에서도 자바스크립트와 차별점을 갖는다. 자바스크립트는 C++와 자바 등의 언어를 사용해 본 경험이 있는 개발자들에게 익숙하지 않은 프로그래밍 스타일인 프로토타입 기반 언어이다. 다트에서의 객체들은 좀 더 전통적인 클래스로 정의되기 때문에 다른 언어보다 개발자들이 학습하기가 용이하다. 
 
다트의 또 다른 차이점들은 특히 대규모 애플리케이션과 개발팀에서 클라이언트측 코드를 관리하고 유지하기 쉽도록 설계됐다는 것이다. 예를 들어, 동일한 HTML 페이지에서 서로 다른 <script> 태그로 로딩된 자바스크립트 코드는 단일 네임스페이스 내에 존재하고 한 스크립트에서 참조된 객체와 변수들은 서로서로에 의해 수정될 수 있다. 다트는 그런 방식을 허용하지 않고, 각각의 스트립트가 자체 상태에 대한 모든 컨트롤을 갖는다. 
 
또한, 자바스크립트는 가능한 빠른 시간 내에 실행할 수 있는 모든 코드를 실행하려고 하는 반면, 다트 코드는 완전히 애플리케이션 스타일로 실행된다. 다트는 DOM이 실행되기 위해 완전히 로딩될 때까지 대기하고, 각 애플리케이션은 C에서처럼 main() 함수가 실행되면서 실행된다. 이런 기능들을 통해 프로그래머는 자바스크립트와 차원이 다른 클라이언트측 애플리케이션을 개발할 수 있다. 
 
개발자들이 다트를 사용할까?
현재까지 다트는 대체적으로 꽤 인상적이다. 여러 가지 측면에서 다트는 구글(다른 어떤 업체보다 자바스크립트 기반 애플리케이션에 노력을 쏟아 부었던 업체로써)에 기대했던 바로 그것이라는 점에서 그다지 놀랍지 않다. 한 가지 궁금한 점은 다트가 관심을 불러일으킬 것인가 아니면 고와 같은 길을 걷게 될 것인가이다. 
 
몇몇 개발자들은 다트 코드를 자바스크립트로 컴파일한다는 점에 실망했을 수도 있지만, 그것은 올바른 선택이었다. 기존 브라우저에 다트 애플리케이션을 실행하기 위한 플러그인을 설치해야 한다는 것은 성공을 포기하는 것이나 다름없다. 머지 않아 구글은 크롬에 네이티브 다트 VM을 내장할 것이고, 다트는 오픈소스이기 때문에 다트가 어느 정도 보급된 이후에는 다른 업체들도 그렇게 할 것이다. 
 
새로운 클라이언트측 웹 프로그래밍 언어가 진정한 답이 될 수 있는가에 대한 의구심이 들지 않을 수 없다. 구글은 자바스크립트에 대한 제약을 해결하기 위해 다트 프로젝트를 시작했다. 자바스트립트가 발표된 지 15년이 흘렀다. 물론 15년 후에는 다트도 오랜 역사를 갖게 될 것이다. 필자는 좀 더 개방적이고 언어 중립적인 VM을 웹 브라우저에 내장하기 위한 노력이 펼쳐져 클라이언트측 개발자들이 자신이 선택한 언어를 사용하여 코드를 작성할 수 있기를 기대하고 있다. 
 
그것은 희망적인 생각일 수 있다. 좀 더 실용적인 접근법은 현재의 자바스크립트를 개선할 수 있는 툴을 개발하는 것이다. 다트를 통해 구글은 이런 목적을 훌륭하게 달성하고 있다.  editor@itworld.co.kr

회사명 : 한국IDG | 제호: ITWorld | 주소 : 서울시 중구 세종대로 23, 4층 우)04512
| 등록번호 : 서울 아00743 등록발행일자 : 2009년 01월 19일

발행인 : 박형미 | 편집인 : 박재곤 | 청소년보호책임자 : 한정규
| 사업자 등록번호 : 214-87-22467 Tel : 02-558-6950

Copyright © 2024 International Data Group. All rights reserved.