[Dart] 0. Why Dart?

Speedwell🍀·2023년 9월 7일
0
post-thumbnail

[출처] Nomadcoders - Dart 시작하기

  1. UI에 최적화 (Optimized for UI)
  2. 생산적인 개발환경 (Productive development)
    • 멋진 개발자 경험, 훌륭한 개발 문서 및 혁신적인 기능을 갖춘 진정한 객체 지향 언어
    • 유저 인터페이스 생성의 필요에 맞게 특별히 설계되고 최적화된 익숙한 구문을 가짐 ⇒ 배우기 쉬움
    • 아주 빠름
  3. 모든 플랫폼에서 빠름 (Fast on all platforms)
    • 엄청나게 많은 플랫폼에 컴파일 가능 (자동차같은 사물인터넷에도 가능)

  1. just-in-time 컴파일과 ahead-of-time 컴파일 둘 다 있기 때문 ⇒ 모바일 개발에 아주 좋은 언어
    1. 빠른 피드백, 최종 앱은 컴파일되어 빠름
    2. JIT로 인해 개발자 경험 좋음
  2. dart, flutter는 둘 다 구글에서 만들어졌기 때문에, 구글은 flutter를 위해 dart 최적화 가능
    1. ahead-of-time toolchain이 없었는데 flutter를 위해 만듦 ⇒ 맞춤형

Dart는 진정한 객체지향 언어

Flutter도 객체지향 프레임워크 ⇒ 항상 class 사용

flutter에서 모든건 class



image

  • 두 개의 컴파일러 존재
    1. dart native
      • 작성한 dart 코드를 여러 CPU의 아키텍쳐에 맞게 변환해주는 컴파일러
    2. dart web
      • dart로 작성한 코드를 javascript로 변환해주는 컴파일러

  • JIT(Just-in-time) / AOT (Ahead-of-time) 컴파일러

    • AOT (컴파일 먼저, 그 결과인 바이너리를 배포)
      • e.g. C, C++, Rust, Go로 코딩한다면 컴파일할 때 아키텍쳐를 지정해줘야 함
      • 만약 Windows에 배포하고 싶다면 코드를 Windows 바이너리(CPU가 이해할 수 있는 기계어)로 컴파일 해줘야 함. 그리고 이 바이너리를 제공함.
      • 한 아키텍쳐를 위해 컴파일한다는 건 시간이 오래 걸림
        • 컴파일러는 아주 많은 최적화를 해야 하고, 코드를 기계어로 바꾸는 등 할 일이 많음
        • UI를 만들 때, 개발 모드일 때 이 방식은 최적의 방법이 아님
          • 무언가 변경할 때마다 결과를 보기 위해 전체 프로젝트를 컴파일해야 한다면 개발경험 좋지 않을 것
    • JIT
      • dart VM이 JIT 컴파일러 제공 w/ 풍부한 디버깅 지원
      • 코드 결과를 바로 화면에 보여줌
        • 코드가 가상머신에서 작동하고 있는 것이기 때문에 조금 느릴 것
        • 하지만 오직 개발중일때만 사용하는 것
      • 배포를 할 때는 JIT가 아닌 AOT 컴파일러 사용
        • native ARM이나 x64 기계어로 컴파일
  • null safety 제공

    • 안전한 프로그램을 빌드할 때 아주 중요
    • Java, C++ 등 많은 프로그래밍 언어에서 관련된 문제 있음 - 개발자가 null값 참조하면 모든 게 고장남

0개의 댓글