iBetter Books
수정

이미 다른 언어를 알고 있다면

프로그래밍을 처음 배우는 것이 아니라면, 새로운 언어를 배울 때 자연스럽게 "내가 아는 언어와 뭐가 다르지?"라는 질문을 하게 됩니다. Dart는 여러 언어의 좋은 점을 가져온 언어이기 때문에, 비교를 통해 배우면 훨씬 빠르게 이해할 수 있습니다.

Dart vs JavaScript

JavaScript를 알고 있다면 Dart의 문법이 꽤 익숙하게 느껴질 것입니다. 둘 다 C 스타일 문법을 사용하고, 비동기 프로그래밍에 async/await를 쓰며, 함수를 일급 객체로 다룹니다.

// Dart
void main() {
  var name = "Dart";
  print("Hello, $name!");
}
// JavaScriptfunction main() {  let name = "JavaScript";  console.log(`Hello, ${name}!`);}

하지만 중요한 차이가 있습니다.

특징 Dart JavaScript
타입 시스템 정적 타입 (타입 추론 지원) 동적 타입
Null Safety Sound Null Safety (컴파일 타임 보장) 없음 (optional chaining만 존재)
클래스 완전한 OOP (추상 클래스, 믹스인, 인터페이스) 프로토타입 기반 (class는 문법적 설탕)
실행 환경 VM, 네이티브 컴파일, JS 컴파일 브라우저, Node.js
패키지 관리 pub (pub.dev) npm (npmjs.com)

가장 큰 차이는 타입 시스템입니다. JavaScript에서는 숫자와 문자열을 더해도 에러가 나지 않지만, Dart에서는 컴파일러가 즉시 알려줍니다. 이 차이가 큰 프로젝트에서는 버그를 크게 줄여줍니다.

Dart vs TypeScript

TypeScript를 알고 있다면 Dart로의 전환이 가장 수월합니다. 둘 다 정적 타입 언어이고, 타입 추론을 지원하며, null 안전성을 제공합니다.

// Dart
String greet(String name) {
  return "안녕하세요, $name님!";
}
// TypeScriptfunction greet(name: string): string {  return `안녕하세요, ${name}님!`;}
특징 Dart TypeScript
타입 표기 위치 타입이 앞에 (String name) 타입이 뒤에 (name: string)
Null Safety Sound (컴파일 타임 완전 보장) Strict 모드에서만, 완전하지 않음
컴파일 대상 네이티브 바이너리, JS JS만
클래스 기능 믹스인, named 생성자, factory 없음 (JS의 class를 확장)
독립 실행 Dart VM으로 직접 실행 Node.js 필요

핵심 차이는 Sound Null Safety입니다. TypeScript의 strict 모드도 null을 검사하지만, 런타임에서 여전히 null 에러가 발생할 수 있습니다. Dart는 타입 시스템 레벨에서 null을 완전히 추적하여, 컴파일이 통과하면 null 에러가 발생하지 않음을 보장합니다.

Dart vs Kotlin

Kotlin과 Dart는 모바일 개발에서 자주 비교됩니다. Kotlin은 Android 네이티브 개발의 공식 언어이고, Dart는 Flutter(크로스플랫폼)의 언어입니다.

// Dart
class User {
  final String name;
  final int age;

  User(this.name, this.age);
}
// Kotlindata class User(val name: String, val age: Int)
특징 Dart Kotlin
주요 용도 크로스플랫폼 (Flutter) Android 네이티브
플랫폼 지원 iOS + Android + Web + Desktop Android (+ KMP로 확장 중)
Null Safety Sound Null Safety Null Safety
데이터 클래스 레코드 (Dart 3) data class
코루틴/비동기 Future, async/await, Isolate Coroutines

두 언어 모두 현대적이고 Null Safety를 지원합니다. 선택의 기준은 "어떤 플랫폼을 지원할 것인가"입니다. Android만 개발한다면 Kotlin이, iOS까지 동시에 지원해야 한다면 Flutter(Dart)가 효율적입니다.

Dart vs Swift

Swift는 iOS/macOS 개발의 공식 언어입니다. Dart와 Swift는 문법 스타일이 비슷한 부분이 많습니다.

특징 Dart Swift
주요 용도 크로스플랫폼 (Flutter) Apple 생태계 네이티브
타입 추론 지원 (var) 지원 (let, var)
Null Safety ? 문법 Optional (? 문법)
패턴 매칭 Dart 3에서 도입 초기부터 강력한 지원
프로토콜/인터페이스 implicit interface + abstract protocol

어떤 언어를 이미 알고 있든 괜찮습니다

Dart는 Java, JavaScript, TypeScript, Kotlin, Swift 등 주요 언어의 좋은 점을 가져왔기 때문에, 어떤 언어를 알고 있든 배움의 장벽이 낮습니다. Python이나 C만 경험해본 분도 걱정하지 마세요. 이 책은 Dart의 모든 개념을 처음부터 차근차근 설명합니다.

다음 챕터에서는 Dart 생태계 전체를 한눈에 살펴보겠습니다.