iOS/RxSwift

iOS(Swift) Functional Programming(함수형 프로그램) 이란?

crazydeer 2022. 8. 26. 20:59
반응형

 

 

Mastering RxSwift for iOS Reactive Programming for Developers

Reactive Programming Using Swift Programming Language

www.udemy.com

 

새로운 Udemy 강의를 시작했고 (또 다른 강의지옥에 빠졌다)

Functional Programming. 즉, 함수형 프로그램에 대해 정리하며 시작한다.

 

Functional Programming

Immutability: 어떤 것으로도 바꿀 수 없는 것 (불변의)

 

var 변수는 변화가 가능하고 특정 함수가 전역 변수로 만들어진 var 변수를 변화하게 하는 것은

Functional Programming이 아니라고 강사는 설명한다.

 

함수형 프로그래밍(Functional)에서는 이제까지 모든 것이 불변의 상태(Immutable State)였다.

 

또한 동시성 문제(Concurrency Problem)도, 교착 문제(Deadlock) 갖고 있지 않다.

 

Concurrency Problem, 동시성 문제(병행성)

Concurrency Problem

 

 

병행성 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 병행성(concurrency)은 컴퓨터 과학에서 여러 계산을 동시에 수행하는 시스템의 특성으로, 잠재적으로는 서로 상호 작용이 가능하다. 병행 시스템의 계산이 그들

ko.wikipedia.org

 

Deadlock, 교착 상태

교착 상태(deadlock)란 두 개 이상의 작업이 서로 상대방의 작업이 끝나기 만을 기다리고 있기 때문에 결과적으로 아무것도 완료되지 못하는 상태를 가리킨다.

 

교착 상태 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 데드락은 여기로 연결됩니다. 다른 뜻에 대해서는 데드락 (동음이의) 문서를 참고하십시오. 교착 상태(膠着狀態, 영어: deadlock)란 두 개 이상의 작업이 서로 상

ko.wikipedia.org

 

함수형 프로그래밍에서는 First-ClassHigher-Order Functions 이 있다.

Function은 받아 오고(Take) 또 다른 것을 반환(Return)한다.

우리는 많은 예를 볼 수 있다: Fliter, Map, Reduce

 

함수형 프로그래밍은 Pure Function이다.

이것은 함수는 항상 같은 입력 값에는 같은 출력 값을 만든다는 것을 의미한다.

또한 외부로 Side Effect를 발생시키지 않는다.

다시 말해 함수형 프로그래밍은 상태(State)가 변하도록 허락하지 않는다.

 

정리

정리하자면 함수형 프로그래밍은

  1. Immutability 속성을 가진다.
  2. 동시성(Concurrency), 교착(Deadlock) 문제가 없다.
  3. Take and Return
  4. Pure Function
  5. Zero Side Effect

여기서 마무리하고 다음 게시글은 반응형 프로그래밍(Reactive Programming)에 대해 정리할 것이다.

 

 

반응형