Enjoy Programming

[Dart] what is dart? 다트가 뭐야? 본문

Dart

[Dart] what is dart? 다트가 뭐야?

LEETAEEON 2022. 12. 10. 15:16

드디어 시간을 내어 flutter를 공부하기로 한다.

근데 flutter는 javascript가 아닌 dart라는 구글이 만든 언어로 개발을 해야한다.

 

https://dart.dev/

 

Dart programming language

Dart is a client-optimized language for fast apps on any platform

dart.dev

 특징을 살펴보면 다트는 두개의 컴파일러를 가지고 있다 (두개?!)

먼저 dart web - dart로 쓴 언어를 자바스크립트로 변환해주는 컴파일러와 dart native - 각 cpu아키테처에 맞게 기기에 맞춰서 변환해주는 컴파일러 이렇게 두개이다.

 

dart native는  just-in-time  and  ahead-of-time 방식의 compile을 지원한다.

ahead-of-time 방식은 c , c++, go 등등 언어로 로 코드를 작성하고서 컴파일할 때 아키텍쳐를 지정해줘야 한다.

컴파일을 먼저하고 그 결과인 바이너리를 배포하는 것. 이 방식은 개발단계에서 매우 느리다.

이유는 수정 ->  확인이 이루어 지거나 추가가 이루어질때 처음부터 전부 다시 컴파일 되어야 하기 때문이다. 

생각해보자 react를 개발하면서 hot-reloading이 지원되지 않는다면.. 얼마나 불편할 것인가...

 

이때 필요한 것이  just-in-time 컴파일이다. 그래서 개발 중에도 개발주기에 빠른 순회가 이루어지도록 hot reloading과 rich debugging을 지원한다고 한다. 

 

그러니 이거다 개발단계에서는 just-in-time  q배포단계에서는 ahead-of-time 인 것이다.

 

그리고 다른 특징중에는 null safety라는 것이 있다.

null safety는 안전한 프로그램을 빌드할 때 아주 중요하다.

 

상기의 이유로 flutter는 dart를 채택했다. 그리고 결정적으로 둘다 구글에서 맹글었다.

엄청난 장점이 될 수 있는게 react 팀이 javascript를 react에 맞춰서 수정을 할 수는 없다.

하지만 dart는  flutter에 맞춰 수정 및 업데이트가 가능하다는 것이다. 공식 문서에도 dart는 기존에 ahead-of-time방식의 컴파일을 제공하지 않았다. 하지만 flutter에 맞춰서 차 후 해당 compiler를 제공해 준 것이다.

 

이 얼마나 유연한 상관관계인가... 아무튼 이제 배워보도록 하자.

 

 

 

 

'Dart' 카테고리의 다른 글

[Dart] Mixins  (0) 2023.01.31
[Dart] Class  (0) 2023.01.19
[Dart] Function  (0) 2023.01.01
[Dart] variables  (0) 2023.01.01
[Dart] data type  (0) 2023.01.01