다트(Dart) 프로그래밍 언어 소개

출처 : dart.dev

다트 언어란?

구글에서 JavaScript를 대체하기 위하여 2011년 개발한 웹프로그래밍 언어이다. 모바일 앱, 웹, 데스크탑 등 어떤 플랫폼에서든 빠르게 앱을 개발할 수 있다. 크로스 플랫폼 개발을 위해 가장 생산적인 프로그래밍 언어를 제공하는 것을 목표로 하고 있다. 다트 가상머신(DVM)에서 동작하거나 네이티브 컴파일링을 통해 모바일 앱, 데스크탑, 웹브라우저에서 어플리케이션 실행이 가능하다. 구글에서 제작한 크로스플랫폼 프레임워크인 Flutter가 이 언어를 사용하고 있다. 공식적으로 지원하고 있는 IDE는 안드로이드 스튜디오, IntelliJ IDEA, VS Code등 이며 플로그인을 추가하여 개발 할 수 있다.
공식 사이트는 https://dart.dev 이며 아직 한국어는 지원하고 있지 않다.

언어적 특징

  1. Type Safe
    변수의 값이 항상 그 변수의 Static 유형과 일치하는지 확인한다. 이를 사운드 타이핑이라고도 한다. 자바스크립트처럼 변수의 타입을 정해주지 않아도 됩니다. var키워드를 통해 타입을 지정하지 않고 변수만 선언하면 그 변수의 유형을 알아서 처리한다.
  2. Null Safety
    Dart는 정적 코드 분석을 통해 NullException으로 부터 사용자를 보호한다. Null 이 될 수 있다고 선언하지 않은 한 Null이 될 수 없다. 다른 null-safe 언어와 다르게 Dart는 변수가 null을 허용하지 않는다고 판단하면 해당 변수는 항상 null을 허용하지 않는다.

풍부한 라이브러리

Dart는 일상적인 프로그래밍 작업에 필요한 풍부한 핵심 라이브러리 세트를 가지고 있다. 이 때문에 Flutter 프레임워크로 프로그래밍을 할 때 Dart의 다양한 라이브러리를 사용하여 간편하게 개발 할 수 있게 해준다.

  • dart:core : 내장된 type, collection 및 기타 핵심 기능
  • dart:collection : 큐, 연결 목록, 해시맵 및 이진트리 등의 보다 풍부한 collection 타입들
  • dart:convert : JSON 및 UTF-8을 등 서로 다른 데이터 포멧 간 변환을 위한 인코더 및 디코더
  • dart:math : 수학적 상수, 함수, 난수 생성
  • dart:io : 웹이 아닌 응용 프로그램을 위한 파일, 소켓, HTTP 및 기타 I/O 처리
  • dart:async : Future 및 Stream과 같은 클래스를 사용하여 비동기 프로그래밍 지원
  • dart:typed_data : 고정 크기 데이터 및 SIMD 숫자 유형을 효율적으로 처리하는 리스트
  • dart:ffi : C 스타일 인터페이스를 제공하는 다른 코드와의 상호 호환성을 위한 외부 함수 인터페이스
  • dart:isolate : 스레드와 유사하지만 메모리를 공유하지 않고 메시지를 통해서만 통신하는 독립 작업자를 사용한 동시 프로그래밍
  • dart:html : 웹 기반 응용프로그램을 위한 HTML 요소 및 기타 리소스

핵심 라이브러리 외에도 characters, intl, http, crypto, markdown 과 같은 패키지를 제공한다. 또한 써드파티 제조사와 커뮤니티에서 XML, SQLite, compresstion, windows 와 같은 수천 개의 패키지를 개시한다.

다양한 플랫폼 지원

유연한 컴파일러 기술을 통해 다양한 플랫폼에서 Dart 코드를 실행할 수 있다.

  • Dart Native : 모바일 및 데스크탑 등의 디바이스를 대상으로 하는 프로그램의 경우 Dart Native를 이용한다. Dart VM은 증분 재컴파일, 라이브 메트릭 컬렉션 및 디버깅이 포함된 JIT(Just-In-Time Compiler)를 제공한다.
  • Dart Web : 웹을 대상으로 하는 프로그램의 경우 Dart Web를 사용한다. Dart Web을 사용하면 JavaScript로 구동된느 웹 플랫폼에서 Dart코드를 실행할 수 있다.

이상으로 Dart에 언어적 특징, 풍부한 라이브러리, 플랫폼 지원에 대하여 살펴 보았다.

Leave a Comment