"Dart (프로그래밍 언어)"의 두 판 사이의 차이

내위키
3번째 줄: 3번째 줄:
 
[[자바스크립트]]는 간단한 문법으로 진입장벽이 낮은 편이지만 코드가 복잡해지면 단점도 많은 언어다. 원래 웹 페이지에 간단한 동적 기능을 부여하기 위해서 만들어졌던 스크립트 언어였지만 [[AJAX]]가 대박이 나고 [[JIT 컴파일]] 덕택에 처리 속도로 엄청나게 빨라지면서 활용 폭이 엄청나게 넓어졌다. 여기에 jQuery라든가 Angular, 리액트 같은 프레임워크까지 등장하면서  활용 폭이 더더더욱 확대되고, 웬만한 데스크톱이나 모바일 프로그램 뺨칠 정도로 복잡하고 긴 코드들을 개발할 일이 많아졌다. 그러다 보니 전에는 별거 아니었던 [[자바스크립트]]의 단점들이 부각되었다.변수의 유형을 지정하지 않고 서로 다른 유형의 데이터들을 연산하려고 해도 어떻게든 변환해서 이상한 값으로라도 결과를 낸다든지, [[자바스크립트]] 개발자들의 머리를 쥐어뜯게 만드는 콜백 지옥 문제라든가... 물론 [[자바스크립트]]도 개량을 거치면서 프로미스(promise)와 같은 방법으로 콜백 지옥을 해소시키는 지원책들이 나오고 있지만 언어의 근본적인 한계점이 있는지라 이를 넘기 위해 새로운 언어들이 여럿 제안되었다. 이 방면의 원조격이라 할 수 있는 커피스크립트라든가, 요즘 사용자층이 넓어져서 구글에서 내부 공식 개발 언어 중 하나로 지정할 정도까지 이른 [[타입스크립트]] 같은 게 그 사례. Dart 역시 그런 목적을 가지고 있었다.
 
[[자바스크립트]]는 간단한 문법으로 진입장벽이 낮은 편이지만 코드가 복잡해지면 단점도 많은 언어다. 원래 웹 페이지에 간단한 동적 기능을 부여하기 위해서 만들어졌던 스크립트 언어였지만 [[AJAX]]가 대박이 나고 [[JIT 컴파일]] 덕택에 처리 속도로 엄청나게 빨라지면서 활용 폭이 엄청나게 넓어졌다. 여기에 jQuery라든가 Angular, 리액트 같은 프레임워크까지 등장하면서  활용 폭이 더더더욱 확대되고, 웬만한 데스크톱이나 모바일 프로그램 뺨칠 정도로 복잡하고 긴 코드들을 개발할 일이 많아졌다. 그러다 보니 전에는 별거 아니었던 [[자바스크립트]]의 단점들이 부각되었다.변수의 유형을 지정하지 않고 서로 다른 유형의 데이터들을 연산하려고 해도 어떻게든 변환해서 이상한 값으로라도 결과를 낸다든지, [[자바스크립트]] 개발자들의 머리를 쥐어뜯게 만드는 콜백 지옥 문제라든가... 물론 [[자바스크립트]]도 개량을 거치면서 프로미스(promise)와 같은 방법으로 콜백 지옥을 해소시키는 지원책들이 나오고 있지만 언어의 근본적인 한계점이 있는지라 이를 넘기 위해 새로운 언어들이 여럿 제안되었다. 이 방면의 원조격이라 할 수 있는 커피스크립트라든가, 요즘 사용자층이 넓어져서 구글에서 내부 공식 개발 언어 중 하나로 지정할 정도까지 이른 [[타입스크립트]] 같은 게 그 사례. Dart 역시 그런 목적을 가지고 있었다.
  
커피스크립트나 [[타입스크립트]]가 컴파일을 통해 [[자바스크립트]]를 결과물로 내놓아서 호환성을 유지하는데 반해, Dart는 아예 '대체'를 목표로 했다. 즉 웹 브라우저가 Dart 실행 엔진을 가지고 Dart를 바로 실행하는 것. 그러나 이 전략은 실패로 끝났고, 같은 구글에서 만든 크롬 말고논 Dart를 직접 지원하는 웹 브라우저가 없다. [[자바스크립트]]가 단점은 있지만 그렇게 나쁜 언어인 것도 아니며<ref>사실 어떤 프로그래밍 언어든 단점이 없을 리 없다.</ref>, 이미 많은 개발자를 가지고 있으며 jQuery, 리액트를 비롯한 풍부한 프레임워크도 가지고 있다. 여기에 타입스크립트 같은 것을 쓰면 [[자바스크립트]]의 단점을 피해갈 수도 있다. [[자바스크립트]] 자체도 개선을 거쳐서 여러 가지 새로운 기능들을 추가했기 때문에 과거의 문제점 중에 여러 가지가 해소되기도 했다. 그러니 구글을 제외한 웹 브라우저 제작자들로서는 [[자바스크립트]] 엔진의 속도 경쟁에도 정신 없는데 굳이 Dart 엔진을 또 만들 이유가 없는 것. Dart를 컴파일해서 [[자바스크립트]]로 변환하는 방법도 있긴 하지만 이쪽은 [[타입스크립트]]가 대세를 장악한 상태다.
+
커피스크립트나 [[타입스크립트]]가 컴파일을 통해 [[자바스크립트]]를 결과물로 내놓아서 호환성을 유지하는데 반해, Dart는 아예 '대체'를 목표로 했다. 즉 웹 브라우저가 Dart 실행 엔진을 가지고 Dart를 바로 실행하는 것. 그러나 이 전략은 실패로 끝났고, 같은 구글에서 만든 크롬 말고논 Dart를 직접 지원하는 웹 브라우저가 없다. [[자바스크립트]]가 단점은 있지만 그렇게 나쁜 언어인 것도 아니며<ref>사실 어떤 프로그래밍 언어든 단점이 없을 리 없다.</ref>, 이미 많은 개발자를 가지고 있으며 jQuery, 리액트를 비롯한 풍부한 프레임워크도 가지고 있다. 여기에 타입스크립트 같은 것을 쓰면 [[자바스크립트]]의 단점을 피해갈 수도 있다. [[자바스크립트]] 자체도 개선을 거쳐서 여러 가지 새로운 기능들을 추가했기 때문에 과거의 문제점 중에 여러 가지가 해소되기도 했다. 그러니 구글을 제외한 웹 브라우저 제작자들로서는 [[자바스크립트]] 엔진의 속도 경쟁에도 정신 없는데 굳이 Dart 엔진을 또 만들 이유가 없는 것. Dart를 컴파일해서 [[자바스크립트]]로 변환하는 방법도 있긴 하지만 이쪽은 [[타입스크립트]]가 대세를 장악한 상태다. 심지어 구글도 내부 공식 개발 언어로 [[타입스크립트]]를 사용할 정도니 웹 프론트엔드 쪽으로는 사실상 Dart를 포기했다고 봐도 과언은 아니다.
  
사정이 이렇다 보니 거의 쓰레기 취급을 받아 왔다. 배울 가치가 없는 언어, 최악의 언어 랭킹을 뽑을 때 최소 상위권이고 정상에 등극하는 일도 종종 있다. 하지만 구글이 누군가. 포기하지 않고 꾸준히 밀어준 끝에 사용자가 상당히 늘어난 편이다. 원래 목적이었던 웹 프론트엔드 쪽에서는 여전히 천덕꾸러기 신세지만 모바일 개발 쪽에서 세를 불려 나가고 있 다. 그 이유는 역시 [[Flutter]]. 구글에서 들고 나온 크로스플랫폼 개발 프레임워크인 [[Flutter]]를 사용하면 안드로이드와 iOS용 앱을 동시에 개발할 수 있다. 모바일을 위한 크로스플랫폼 프레임워크로는 이미 아파치 코르도바나 리액트 네이티브, [[자마린]] 같은 것들이 있지만 Flutter는 네이티브급 성능을 내면서도 양쪽 OS 모두에서 똑같은 인터페이스를 보장한다는 면에서 주목 받고 있다. 자세한 내용은 [[Flutter]] 참조.
+
사정이 이렇다 보니 거의 쓰레기 취급을 받아 왔다. 배울 가치가 없는 언어, 최악의 언어 랭킹을 뽑을 때 최소 상위권이고 정상에 등극하는 일도 종종 있다. 하지만 구글이 누군가. 포기하지 않고 꾸준히 밀어준 끝에 사용자가 상당히 늘어난 편이다. 원래 목적이었던 웹 프론트엔드 쪽에서는 여전히 천덕꾸러기 신세지만 모바일 개발 쪽에서 세를 불려 나가고 있 다. 그 이유는 역시 [[Flutter]]. 구글에서 들고 나온 크로스플랫폼 개발 프레임워크인 [[Flutter]]를 사용하면 안드로이드와 iOS용 앱을 동시에 개발할 수 있다. 모바일을 위한 크로스플랫폼 프레임워크로는 이미 아파치 코르도바나 리액트 네이티브, [[자마린]] 같은 것들이 있지만 Flutter는 네이티브급 성능을 내면서도 양쪽 OS 모두에서 똑같은 인터페이스를 보장한다는 면에서 주목 받고 있다. 게다가 웹 버전까지 나와서 다시 웹 프론트엔드 개발에 Dart를 밀고 있다. 자세한 내용은 [[Flutter]] 참조.
  
 
{{각주}}
 
{{각주}}

2019년 6월 11일 (화) 07:26 판

구글에서 개발하고 관리하는 프로그래밍 언어. 자바스크립트의 단점을 보완해서 웹 개발, 특히 웹 프론트엔드 개발의 편의성을 도모하기 위해서 만들어진 언어다.

자바스크립트는 간단한 문법으로 진입장벽이 낮은 편이지만 코드가 복잡해지면 단점도 많은 언어다. 원래 웹 페이지에 간단한 동적 기능을 부여하기 위해서 만들어졌던 스크립트 언어였지만 AJAX가 대박이 나고 JIT 컴파일 덕택에 처리 속도로 엄청나게 빨라지면서 활용 폭이 엄청나게 넓어졌다. 여기에 jQuery라든가 Angular, 리액트 같은 프레임워크까지 등장하면서 활용 폭이 더더더욱 확대되고, 웬만한 데스크톱이나 모바일 프로그램 뺨칠 정도로 복잡하고 긴 코드들을 개발할 일이 많아졌다. 그러다 보니 전에는 별거 아니었던 자바스크립트의 단점들이 부각되었다.변수의 유형을 지정하지 않고 서로 다른 유형의 데이터들을 연산하려고 해도 어떻게든 변환해서 이상한 값으로라도 결과를 낸다든지, 자바스크립트 개발자들의 머리를 쥐어뜯게 만드는 콜백 지옥 문제라든가... 물론 자바스크립트도 개량을 거치면서 프로미스(promise)와 같은 방법으로 콜백 지옥을 해소시키는 지원책들이 나오고 있지만 언어의 근본적인 한계점이 있는지라 이를 넘기 위해 새로운 언어들이 여럿 제안되었다. 이 방면의 원조격이라 할 수 있는 커피스크립트라든가, 요즘 사용자층이 넓어져서 구글에서 내부 공식 개발 언어 중 하나로 지정할 정도까지 이른 타입스크립트 같은 게 그 사례. Dart 역시 그런 목적을 가지고 있었다.

커피스크립트나 타입스크립트가 컴파일을 통해 자바스크립트를 결과물로 내놓아서 호환성을 유지하는데 반해, Dart는 아예 '대체'를 목표로 했다. 즉 웹 브라우저가 Dart 실행 엔진을 가지고 Dart를 바로 실행하는 것. 그러나 이 전략은 실패로 끝났고, 같은 구글에서 만든 크롬 말고논 Dart를 직접 지원하는 웹 브라우저가 없다. 자바스크립트가 단점은 있지만 그렇게 나쁜 언어인 것도 아니며[1], 이미 많은 개발자를 가지고 있으며 jQuery, 리액트를 비롯한 풍부한 프레임워크도 가지고 있다. 여기에 타입스크립트 같은 것을 쓰면 자바스크립트의 단점을 피해갈 수도 있다. 자바스크립트 자체도 개선을 거쳐서 여러 가지 새로운 기능들을 추가했기 때문에 과거의 문제점 중에 여러 가지가 해소되기도 했다. 그러니 구글을 제외한 웹 브라우저 제작자들로서는 자바스크립트 엔진의 속도 경쟁에도 정신 없는데 굳이 Dart 엔진을 또 만들 이유가 없는 것. Dart를 컴파일해서 자바스크립트로 변환하는 방법도 있긴 하지만 이쪽은 타입스크립트가 대세를 장악한 상태다. 심지어 구글도 내부 공식 개발 언어로 타입스크립트를 사용할 정도니 웹 프론트엔드 쪽으로는 사실상 Dart를 포기했다고 봐도 과언은 아니다.

사정이 이렇다 보니 거의 쓰레기 취급을 받아 왔다. 배울 가치가 없는 언어, 최악의 언어 랭킹을 뽑을 때 최소 상위권이고 정상에 등극하는 일도 종종 있다. 하지만 구글이 누군가. 포기하지 않고 꾸준히 밀어준 끝에 사용자가 상당히 늘어난 편이다. 원래 목적이었던 웹 프론트엔드 쪽에서는 여전히 천덕꾸러기 신세지만 모바일 개발 쪽에서 세를 불려 나가고 있 다. 그 이유는 역시 Flutter. 구글에서 들고 나온 크로스플랫폼 개발 프레임워크인 Flutter를 사용하면 안드로이드와 iOS용 앱을 동시에 개발할 수 있다. 모바일을 위한 크로스플랫폼 프레임워크로는 이미 아파치 코르도바나 리액트 네이티브, 자마린 같은 것들이 있지만 Flutter는 네이티브급 성능을 내면서도 양쪽 OS 모두에서 똑같은 인터페이스를 보장한다는 면에서 주목 받고 있다. 게다가 웹 버전까지 나와서 다시 웹 프론트엔드 개발에 Dart를 밀고 있다. 자세한 내용은 Flutter 참조.

각주

  1. 사실 어떤 프로그래밍 언어든 단점이 없을 리 없다.