Dart 언어의 특징과 main 함수, 변수기초

플러터를 활용해 간단한 앱을 개발해보고 싶어서 하나하나 준비해봅니다. (온라인 강좌, 챗GPT)

Dart는 구글e에서 개발한 오픈소스 프로그래밍 언어로, 특히 Flutter 프레임워크에서 모바일 및 웹 애플리케이션 개발에 널리 사용됩니다. 이번 글에서는 Dart의 주요 특징, main 함수의 역할, 변수와 자료형, 그리고 dynamic 타입에 대해 살펴보겠습니다.

Dart 언어의 주요 특징

Dart는 정적 타입 언어이지만 유연한 타입 시스템을 제공하며, 다음과 같은 특징을 갖고 있습니다:

  1. JIT(Just-In-Time) 및 AOT(Ahead-Of-Time) 컴파일 *JIT와 AOT도 공부해야 하네요.;;;;
    • 개발 중에는 JIT 컴파일을 사용해 빠른 코드 실행과 핫 리로드(Hot Reload)를 지원합니다.
    • 실제 배포 시에는 AOT 컴파일을 통해 최적화된 성능을 제공합니다.
  2. 객체지향 언어
    • 모든 것이 객체(Object)이며, 클래스(Class)와 상속(Inheritance)을 지원합니다.
  3. Null Safety 지원
    • null 값을 허용하지 않는 강력한 타입 시스템을 제공하여, NPE(Null Pointer Exception)를 방지할 수 있습니다.
  4. 비동기(Asynchronous) 프로그래밍 지원
    • FutureStream을 사용하여 비동기 작업을 효과적으로 처리할 수 있습니다.
  5. 간결하고 직관적인 문법
    • var, final, const 등 키워드를 사용하여 가독성이 높은 코드를 작성할 수 있습니다.

Dart의 main 함수

Dart 프로그램의 진입점(Entry Point)은 main 함수입니다. 모든 Dart 프로그램은 main() 함수에서 실행이 시작됩니다.

void main() {
  print("Hello, Dart!");
}

main 함수 특징

  • main 함수는 반환값이 없는 void 타입입니다.
  • 프로그램 실행 시 가장 먼저 호출됩니다.
  • 비동기 작업이 필요한 경우 async 키워드를 사용할 수 있습니다.
void main() async {
  await fetchData();
}

변수와 자료형

Dart에서는 정적 타입 언어이지만, 타입 추론이 가능하여 var 키워드를 통해 자동으로 자료형을 결정할 수도 있습니다.
var 키워드를 잘 활용하면 좋지만 초반에 언어를 배울 때는 자료형 별로 키워드를 사용하는 것이 좋을 것 같습니다.

변수 선언 방식

void main() {
  // 명시적 타입 지정
  int number = 10;
  double price = 99.9;
  String name = "Dart";
  bool isActive = true;

  // 타입 추론 (var 사용)
  var message = "Hello"; // message는 String 타입으로 결정됨
  
  // final과 const
  final String finalValue = "변경 불가";
  const double pi = 3.1415;
}

finalconst의 차이

키워드특징
final한 번만 할당 가능하지만, 실행 중 결정 가능
const컴파일 타임에 상수로 결정됨
final now = DateTime.now(); // 실행 중에 값이 할당됨
const value = 10; // 컴파일 타임에 값이 확정됨

dynamic 타입

Dart에서 dynamic 타입은 런타임에 자료형이 결정되는 변수를 선언할 때 사용됩니다.

dynamic value = "Hello";
value = 42; // 다른 타입으로 변경 가능
value = true; // 또 다른 타입으로 변경 가능

dynamic vs var

키워드특징
var한 번 타입이 정해지면 변경할 수 없음
dynamic모든 타입을 가질 수 있으며 변경 가능
var name = "Dart";
// name = 42; // 오류 발생 (String으로 결정됨)

dynamic age = 25;
age = "스물다섯"; // 정상 작동 (타입 변경 가능)

하지만 dynamic을 과도하게 사용하면 타입 안정성을 해치고 오류를 유발할 가능성이 높아지므로, 특별한 경우가 아니라면 명확한 타입을 지정하는 것이 권장됩니다. dynamicvar 는 말로만 보면 상당히 헷갈리는데 실제로 코드를 넣어보면 아주 단순합니다.

dart 가 쉬운 언어라고들 하던데 저같은 문과생이 보기엔 모든 프로그램 언어가 낯서네요.ㅜㅜ 조금만 더 버텨 보겠습니다!!!

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다