최근 바뀜
통계
임의의 문서로
도움말
문서
토론
원본 보기
역사 보기
로그인
Dart (프로그래밍 언어) 문서 원본 보기
내위키
←
Dart (프로그래밍 언어)
이동:
둘러보기
,
검색
문서 편집 권한이 없습니다. 다음 이유를 확인해주세요:
요청한 명령은 다음 권한을 가진 사용자에게 제한됩니다:
사용자
.
문서의 원본을 보거나 복사할 수 있습니다.
<source lang="dart"> void main() { print("You're watching NeWiki."); } </source> [[구글]]에서 개발하고 관리하는 프로그래밍 언어. [[자바스크립트]]의 단점을 보완해서 웹 개발, 특히 웹 프론트엔드 개발의 편의성을 도모하기 위해서 만들어진 언어다. [[자바스크립트]]는 간단한 문법으로 진입장벽이 낮은 편이지만 코드가 복잡해지면 단점도 많은 언어다. 원래 웹 페이지에 간단한 동적 기능을 부여하기 위해서 만들어졌던 스크립트 언어였지만 [[AJAX]]가 대박이 나고 [[JIT 컴파일]] 덕택에 처리 속도로 엄청나게 빨라지면서 활용 폭이 엄청나게 넓어졌다. 여기에 jQuery라든가 Angular, 리액트 같은 프레임워크까지 등장하면서 활용 폭이 더더더욱 확대되고, 웬만한 데스크톱이나 모바일 프로그램 뺨칠 정도로 복잡하고 긴 코드들을 개발할 일이 많아졌다. 그러다 보니 전에는 별거 아니었던 [[자바스크립트]]의 단점들이 부각되었다.변수의 유형을 지정하지 않고 서로 다른 유형의 데이터들을 연산하려고 해도 어떻게든 변환해서 이상한 값으로라도 결과를 낸다든지, [[자바스크립트]] 개발자들의 머리를 쥐어뜯게 만드는 콜백 지옥 문제라든가... 물론 [[자바스크립트]]도 개량을 거치면서 프로미스(promise)와 같은 방법으로 콜백 지옥을 해소시키는 지원책들이 나오고 있지만 언어의 근본적인 한계점이 있는지라 이를 넘기 위해 새로운 언어들이 여럿 제안되었다. 이 방면의 원조격이라 할 수 있는 커피스크립트라든가, 요즘 사용자층이 넓어져서 구글에서 내부 공식 개발 언어 중 하나로 지정할 정도까지 이른 [[타입스크립트]] 같은 게 그 사례. Dart 역시 그런 목적을 가지고 있었다. 커피스크립트나 [[타입스크립트]]가 컴파일을 통해 [[자바스크립트]]를 결과물로 내놓아서 호환성을 유지하는데 반해, Dart는 아예 '대체'를 목표로 했다. 즉 웹 브라우저가 Dart 실행 엔진을 가지고 Dart를 바로 실행하는 것. 그러나 이 전략은 실패로 끝났고, 같은 구글에서 만든 크롬 말고논 Dart를 직접 지원하는 웹 브라우저가 없다. [[자바스크립트]]가 단점은 있지만 그렇게 나쁜 언어인 것도 아니며<ref>사실 어떤 프로그래밍 언어든 단점이 없을 리 없다.</ref>, 이미 많은 개발자를 가지고 있으며 jQuery, 리액트를 비롯한 풍부한 프레임워크도 가지고 있다. 여기에 [[자바스크립트]]의 단점이 영 마음에 들지 않는다면 [[타입스크립트]] 같은 것을 쓰면 단점을 피해갈 수도 있다. [[자바스크립트]] 자체도 개선을 거쳐서 여러 가지 새로운 기능들을 추가했기 때문에 과거의 문제점 중에 여러 가지가 해소되기도 했다. 그러니 구글을 제외한 웹 브라우저 제작자들로서는 [[자바스크립트]] 엔진의 속도 경쟁에도 정신 없는데 굳이 Dart 엔진을 또 만들 이유가 없는 것. Dart를 컴파일해서 [[자바스크립트]]로 변환하는 방법도 있긴 하지만 이쪽은 [[타입스크립트]]가 대세를 장악한 상태다. 심지어 구글도 내부 공식 개발 언어로 [[타입스크립트]]를 사용할 정도니 웹 프론트엔드 쪽으로는 사실상 Dart를 포기했다고 봐도 과언은 아니다. 사정이 이렇다 보니 거의 쓰레기 취급을 받아 왔다. 배울 가치가 없는 언어, 최악의 언어 랭킹을 뽑을 때 최소 상위권이고 정상에 등극하는 일도 종종 있다. 하지만 구글이 누군가. 포기하지 않고 꾸준히 밀어준 끝에 사용자가 상당히 늘어난 편이다. 원래 목적이었던 웹 프론트엔드 쪽에서는 여전히 천덕꾸러기 신세지만 모바일 개발 쪽에서 세를 불려 나가고 있다. 그 이유는 역시 [[Flutter]]. 구글에서 들고 나온 크로스플랫폼 개발 프레임워크인 [[Flutter]]를 사용하면 [[안드로이드]]와 [[iOS]]용 앱을 동시에 개발할 수 있다. 모바일을 위한 크로스플랫폼 프레임워크로는 이미 아파치 코르도바나 리액트 네이티브, [[자마린]] 같은 것들이 있지만 Flutter는 네이티브급 성능을 내면서도 양쪽 OS 모두에서 똑같은 인터페이스를 보장한다는 면에서 주목 받고 있다. 게다가 웹 버전까지 나와서 다시 웹 프론트엔드 개발에 Dart를 밀고 있다.<ref>다만 이전과는 달리 [[HTML]]과 CSS까지 포함해서 아예 통으로 개발하는 방식이다.</ref> 자세한 내용은 [[Flutter]] 참조. ==기본 문법== ===변수=== Dart는 자바스크립트와 달리 정적 타이핑 언어다. 따라서 변수를 선언할 때에는 변수 유형을 써 주는 게 원칙이다. <source lang="dart"> int i = 0; </source> 그러나 유형 추적 기능이 있기 때문에 그냥 변수(variable)를 뜻하는 'var'만 불여서 다음과 같이 써도 된다. <source lang="dart"> var i = 0; </source> 그러나 변수가 일단 선언되고 나면 유형이 고정되므로 다른 유형을 대입할 수 없다. <source lang="dart"> var i = 0; i = '메롱' // Error! </source> 정적 타이핑 언어와 동적 타이핑 언어 중 뭐가 더 낫냐는 문제로 많은 논란이 여전하지만 어쨌거나 정적 타이핑 쪽을 선호해서 [[타입스크립트]]와 갈은 도구를 쓰는 사람들에게는 Dart가 좀 더 익숙할 것이다. 또한 위에서 볼 수 있듯이 [[C]]나 [[자바스크립트]]처럼 줄 끝에는 세미콜론(;)을 찍어줘야 한다. 요즘 언어들은 null 값을 쓰지 못하게 하거나, 제한을 많이 두거나, null-safe 연산자를 제공하는 경향이 있는데, Dart는 null 값을 허용하는 대신 null-safe 연산자를 제공한다. ==비동기 프로그래밍== Dart는 비동기 프로그래밍을 잘 지원한다. 어떤 함수가 비동기 코드를 사용한다면, 반환값은 Future 객체여야 한다. 이 함수를 호출한 코드가 Future 객체를 받았다면 실제로 값이 들어왔을 때 이를 처리할 코드를 then 메서드에 함수 형식으로 넘겨주면 된다. [[Flutter]]를 쓸 경우에는 FutureWidget 클래스를 써서 처리할 수 있다. [[C샵|C#]]처럼 async와 await 키워드를 써서 처리할 수도 있다. {{각주}} [[Category:프로그래밍 언어]]
이 문서에서 사용한 틀:
틀:각주
(
원본 보기
)
Dart (프로그래밍 언어)
문서로 돌아갑니다.
도구
여기를 가리키는 문서
가리키는 글의 최근 바뀜
특수 문서 목록
문서 정보