TIL

Dart 문법 강의 1주차 입니다요!

kimw746 2024. 10. 28. 21:03

Dart 프로그래밍 1주차
1-1 ~ 1-6
일단은 프로그래밍에 대해서 설명을 해야하는데요
Dart 에 대해 설명하자면~

 - Google 이 개발한 오픈소스 프로그래밍 언어입니다

 - Flutter 프레임워크의 기반이 되는 프로그래밍 언어
그래서 Flutter를 쓰려면 Dart에 대해서 먼저 배우고 익혀야 합니다

 - 다양한 클라이언트(ex. WEP, Mobile, Desktop) 애플리케이션 개발에 최적화된 언어 입니다
간결하고, 읽기 쉬운 문법을 가지고 있어요

 - Dart 는 C 나 JavaScript 등에 영감 받아서 만들었기 떄문에 이 언들과 문법이 비슷하면서,
이 언어들의 단점을 보완하고자 했기 때문에 더 간결한 문법을 가지고 있어요!
그래서 다른 프로그래밍 언어 들을 배울 때보다 시간이 덜 걸리는 장점이 있다는 사실!
물론 저는 프로그래밍 자체가 처음이라 비교 대상이 없네여..ㅠㅠ

 - 2가지 컴파일 기술을 가지고 있다.
AOT 컴파일 을 통해 고성능 애플리케이션을 개발할수있고,
JIT 컴파일을 통해 실시간으로 확인하면서 효율적으로 개발할수있습니당

 - 현대적인 프로그래밍 언어 기능을 지원한다.
1. 객체 지향 프로그래밍
2. 함수형 프로그래밍
3. 비동시 프로그래밍

 - Type Safe
안전한 타입 체계를 가지고 있다는 뜻이라네요
타입(Type)?
프로그래밍 할 때 다루는 데이터의 형태를 타입 이라고 해요
왜 필요할까라는 생각이 들텐데 컴퓨터가 생각보다 멍청(?) 해서 하나하나
알려줘야 하는데 물론 데이터를 보았을 때 숫자인지 문자인지 사람은 바로 알수
있지만, 컴퓨터한테는 '나 이런 형태의 데이터를 다룰께?' 라고 미리 알려줘야 합니다
종류는 1.숫자형( int, Double) 2.문자형(String) 3.컬렉션형( List, Set, Map )

 - Null Safe
null 에 대해 안전한 상황을 만들어 준다는 뜻입니다
데이터가 null 값을 가질수 있도록 설정하지 않는 한, 절대 null 값을 가질수 없다는 뜻입니당

그리고
Dart sdk에 대해 알아보고 Dart 개발 환경을 설정하는 방법을 배웠어요!
SDK 는 뭘까요? Sofware Development Kit 의 줄임말이라고 합니다!
음.. 줄임말말고 설명하자면 특정 플랫폼에서 프로그램을 만들고, 테스트하고, 배포하는 과정에서
필요한 도구를 제공하는 패키지입니다!
총 다섯가지로 구성 되어 있는데요
컴파일러
라이브러리
디버깅 및 테스트도구(디버그,디버깅)
문서 및 샘플코드(물건을 사면 그 물건의 설명서가 함께오는 그런 느낌!)
패키지관리자(외부라이브러리 나 패키지 를 설치하고, 관리 할수 있도록 도와주는 도구)
외부라이브러리(SDK가 라이브러리를 제공해주는데 다른 필효한것들을 설치할수있게 도와줘요!)

종류는 어떤게 있을까?
-Android SDK
    Android 애플리케이션을 개발할 때 필요한 도구의 모음
    Android Studio, Android Emulator, API 등이 포함되어 있어요 !
- iOS SDK
    iOS 애플리케이션을 개발할 때 필요한 도구의 모음
    Xcode, iOS Simulator, API 등이 포함되어 있어요 !
- Unity SDK
    게임 (2D, 3D) / 가상현실 (VR) / 증강현실 (AR) 애플리케이션을 개발할 때 필요한 도구의 모음
    Unity Editor, API 등이 포함되어 있어요 !
- Dart SDK
    Dart 를 사용하여 애플리케이션을 개발할 때 필요한 도구의 모음
    - 더 자세한 내용은 5분 뒤에 -
- Flutter SDK
    멀티 플랫폼 (Mobile, Web, Desktop) 애플리케이션을 개발할 때 필요한 도구의 모음
    Dart SDK, Flutter 프레임워크 및 위젯 등이 포함되어 있어요 !
- AWS SDK
    - 클라우드 기반의 애플리케이션을 개발할 때 필요한 도구의 모음
    - API, 라이브러리, CLI (명령줄 인터페이스) 등이 포함되어 있어요 !
- Reactive Native SDK
    - 멀티 플랫폼 (Mobile) 애플리케이션을 개발할 때 필요한 도구의 모음
    - 라이브러리 (React, JavaScript) 와 Native 모듈 (iOS, Android) 등이 포함되어 있어요 !
- TensorFlow SDK
    - Machine Learning 애플리케이션을 개발할 때 필요한 도구의 모음
    - 라이브러리, 모델, 데이터셋 등이 포함되어 있어요 !

Dart 기본 문법을 알아볼건데

변수, 데이터 타입, null, 연산자(Opearators), 조건문, 반복문, 주석(Comments)

변수는 쉽게 데이터를 담는 상자인 변수에 데이터를 담고, 필요할 때 그 데이터를 꺼내서
쓸수 있어요
프로그램 실행중(런타임) 에 값 변경가능여부에 따라 크게2가지가 나뉘는데
프로그램 실행 중에 값을 변경할수있는 변수
- [타입] [변수 이름] = [값];

int age = 30;
String name = 'Bob';
bool isStudent = true;



- var [변수 이름] = [값];

var name = 'Bob';



프로그램 실행 중에 값을 변경 할수없는 변수
상수라고 불리고,
- final [타입] [변수 이름] = [값];

final firstCurrentTime = DateTime.now(); // 타입 명시하지 않은 경우
final DateTime secondCurrentTime = DateTime.now(); // 타입 명시한 경우

 

(타입 추론이 가능하기 때문에 [타입] 은 생략해도 괜찮아요 !
참고로, DateTime.now() 는 실행 시점의 현재 시간을 가져오는 코드랍니다 )

- const [변수 이름] = [값];

const pi = 3.14159; // 타입 명시하지 않은 경우
const int age = 30; // 타입 명시한 경우

 

마찬가지로 타입 추론이 가능하기 때문에 [타입] 은 생략해도 괜찮아요 !

final 과 const 이렇게 2가지로 나누는 이유가 있을까 궁금했는데

final String name = 'Bob';
name = 'Alice'; // Error: Can't assign to the final variable 'name'.

const int age = 25;
age = 30; // Error: Can't assign to the const variable 'age'.

 

(안돼네요.. 오류가 나요..)

아!  한가지가 더있네요
late 변수라는 친구 인데요
- 선언 후에 초기화되는 NonNullable 한 변수
- 변수가 사용되는 시점에 초기화 (지연 초기화) 되는 변수

- late [타입] [변수 이름];

late String name;
(late 변수는 final 변수, const 변수처럼 [타입] 생략 불가능)


이 변수는 선언할 당시에는 넣어줄 값을 아직 특정하기 어려울 때 쓴다고 해요!

late String description;

void main() {
  description = '설명입니다.';
  print(description); // 설명입니다.
}


근데 선언할때 넣어줄 값을 특정 하기 어려울때 null 을 쓰면 된다고 했는데..?
이 놈의 컴퓨터는 null을 싫어 하기 때문에 late 변수를 사용해 null 을 허용하지
않으면서도 변수에 null 을 넣어준 것과 비슷한 역할을 한다고 하네요!

만약에 값을 넣지 않은 상태로 변수를 쓰면?
당연히 오류가 나니 사용전에는 무조건 값을 넣어줘야 해요!

'TIL' 카테고리의 다른 글

Dart문법1주차이자 4일차!!  (0) 2024.10.30
Dart 프로그래밍 1주차 이자 2일차!  (3) 2024.10.29
Flutter 앱 개발 4일차!  (0) 2024.10.24
Flutter 앱 개발 3일차!  (0) 2024.10.23
Flutter 앱 개발 강의 2일차...!  (1) 2024.10.22