[Dart] Stream 이란?
·
Flutter/Basic Knowledge
Dart 언어의 비동기 프로그래밍에서 Future와 함께 중요하게 사용되는 개념 중 하나인 Stream에 대하여 알아보고자 한다. Future와 Stream의 차이점은 아주 간단 명료 하다. "단일 값" vs "다중 값". Future는 단일 비동기 작업에 대해 단일 값 혹은 단일 오류를 처리하는데에 사용되는 개념이고, Stream은 다중 비동기 작업에 대해 다중 값 혹은 다중 오류를 처리하는데에 사용되는 개념이다. 또한 Stream은 Future로 불가능한 작업 중 하나인 실시간 데이터 리스닝이 가능하다. 이를 이해하기 위해, 전통적인 Data Pulling 방식을 생각해보자 전통적인 Data Pulling 방식 Flow 1. 초기에 필요한 데이터를 Database로 부터 받아온다. 2. 새로고침 혹은..
[Dart] Asynchronous & Future
·
Flutter/Basic Knowledge
Dart 언어는 비동기 프로그래밍을 지원하고 이때 주요하게 쓰이는 개념으로 Future, Stream, await, async 등이 있다. 이번 포스팅에서는 Dart 언어에서의 비동기 프로그래밍의 기본 방식과 Future, await, async 키워드에 대해 다뤄 볼 예정이다. 어떤 프로그래밍을 하던 Data Fetching, Writing, Reading 이 존재하는 분야라면 비동기 처리 방식이 중요할 수 밖에 없기 때문에 이에 대해서 정리를 해보고자 한다. 아래의 내용은 Dart 공식 도큐먼트 내용을 기준으로 발췌하고 정리하였다.  Asynchronous Programming: Futures, async, await 비동기 작업이 대표적으로 사용되는 부분네트워크에서 데이터를 불러오는 작업데이터베이스..
[Dart] 단일 상속과 Mixin
·
Flutter/Basic Knowledge
이번 포스팅은 아래의 실습 코드를 가지고 내용을 작성해본다. 단일 상속 현재 위의 코드에서 Animal과 Dog, Cat은 단일 상속 관계이며, Dart 언어에서 다중 상속은 지원하지 않는다. 때문에 다중 상속이 필요한 경우, 즉 코드 재사용을 원하는 경우에는 Mixin이라는 개념을 통해 다중 상속을 구현하도록 한다. Mixin 상속의 경우 extends라는 키워드를 사용하고, Mixin의 경우 with이라는 키워드를 사용한다. 위의 fish와 duck 클래스를 보자. fish는 swimmer를 Mixin 하였다. duck은 Animal Class를 단일 상속받으며 swimmer를 Mixin 하였다. 나는 여기까지 실습해보면서, 그럼 도대체 단일 상속하고 Mixin의 차이점이 뭐지? 라는 생각이 들었다...
[Dart] AOT(Ahead-Of-Time) 과 JIT(Just-In-Time) 컴파일러
·
Flutter/Basic Knowledge
Dart 언어는 AOT, JIT 두 가지 컴파일 모드를 지원한다. 나는 개인적으로 해당 컴파일 방식이 매우 Cool 하다고 생각함 ! 이렇게 컴파일러를 분리한 이유는 개발자 친화적인 방식으로 개발 환경의 편의성을 늘려주기 위함에 있는 것 같다 :) 내가 Dart 언어를 사용하면서 가장 크게 좋다고 느꼈던 부분 중 하나이기 때문에 내용을 작성해보기로 했다. 1. JIT (Just-In-Time) 컴파일러: 실행 시간 컴파일: JIT 컴파일러는 애플리케이션이 실행 중일 때 코드를 컴파일한다. 따라서 개발자가 코드를 수정하고 다시 실행할 때 마다 최신 코드로 빠르게 반영된다. (매우 매우 매우 Cool!) 인터프리터와 컴파일러 혼합: 코드를 인터프리터로 빠르게 실행하면서, 동시에 컴파일을 진행하여 최적화된 코..
[Dart] Garbage Collection 이란?
·
Flutter/Basic Knowledge
Dart에서 기본적으로 제공하는 Garbage Colletion 은 메모리를 조금 더 효율적으로 사용할 수 있게 제공하는 메모리 관리 프로세스이다. 이전에 공부한 경험이 있는 언어인 Swift에서는 ARC(자동 참조 카운팅)를 활용해 자동으로 메모리를 관리해주었는데 Dart에서는 해당 역할을 Garbage Collection이 수행하는 것 같다. 아래는 Garbage Collection에 대해서 알아본 바를 작성하고, ARC와 어떤 점이 다른지 비교해보았다. Garbage Collection의 작동원리 1. 객체 생성 : Dart에서는 객체가 동적으로 생성될 때 메모리가 할당된다. 2. 참조 관리 : 객체는 다른 변수나 객체에 의해 참조 되어진다. 이러한 참조들을 통해 객체에 접근할 수 있다. 3. 사용..
[Dart] Dart 란?
·
Flutter/Basic Knowledge
Dart는 구글에서 개발한 객체지향 프로그래밍 언어로, 주로 모바일 애플리케이션 개발 및 웹 개발에 사용한다. 아래는 Dart 언어의 주요 특징과 특성을 간략하게 설명한 것이다. 1. 객체지향 프로그래밍 (OOP) Dart는 객체지향 프로그래밍 언어로, 코드를 클래스와 객체로 구성된다. 이는 상속, 다형성, 캡슐화와 같은 객체지향 개념을 효과적으로 활용할 수 있게 해준다. 2. 가비지 컬렉션 (Garbage Collection) 메모리 관리를 자동으로 처리하는 가비지 컬렉션을 제공하여, 개발자가 메모리를 명시적으로 관리할 필요가 없다. 이로써 코드가 더 간결하게 유지된다. 3. 단일 상속 및 믹스인 (Single Inheritance and Mixins) 단일 상속을 지원하며, 동시에 믹스인을 통해 다중..