[Swift] 함수형 프로그래밍이 나타난 배경

Uno·2021년 8월 9일
1

각 시대마다 그 시대를 이해하는 "인식체계 == 패러다임"이 존재합니다.
프로그래밍에서도 이러한 패러다임이 변화하며 지금까지 발전해왔습니다.

과거부터 지금까지의 패러다임에 대해서 간략히 설명해보겠습니다.

1. 최적화 - 적은 메모리로 해결하라.


과거에는 메모리가 상당히 제한되어 있었습니다.

지금의 임베디드분야만 봐도 메모리 관리에 심혈을 기울이며 프로그래밍합니다.

이처럼 메로리가 제한된 상황에서는 "최적화" 가 가장 중요한 프로그래밍의 패러다임일 것입니다.

2. 재사용 - 똑같은 일을 반복하지 말아라


이제 시대가 흘러 어느정도 메모리에 여유가 생겼습니다.

물론 메모리에 여유가 생기더라도 최적화가 필요없어지는 것은 아닙니다.

이처럼 하나의 패러다임에서 다음 패러다임으로 시프트 하더라도, 이전 패러다임을 폐기하거나 하진 않습니다.

보통의 경우는 공존하곤 하죠.

메모리가 여유가 생긴 시점에서는 "재사용" 을 위해서 "추상화" 개념에 관심을 가지기 시작합니다.

이때 해결책으로 제시된 것이 OOP 패러다임 입니다.

3. 동시성 - 최대한 빠르게, 최대한 많이


현재 패러다임이 여기까지 온 것 같습니다.

지금 아이폰만 봐도 메모리가 많죠. 갤럭시진영은 말할 것도 없구요.

지금 모바일기기가 이정도인데, 다른 하드웨어는 더 메모리가 많아졌을 것입니다. (ex. computer)

현재 "동시성" 개념이 가장 주목받는 패러다임입니다.

왜냐하면, 더 빠른 속도로 더 많은 데이터를 처리하고자 하기 때문이죠.

다양한 산업 분야에서 더 많은 생산성 혹은 속도를 외치며 발전하고 있습니다.

당장 통신분야에서도 5G의 속도 경쟁을 하고 있구요.

기존의 패러다임인 OOP를 통해서도 물론 동시성을 적용할 수 있습니다.

"세마포어" 를 통해서 원본 데이터 혹은 자원에 동시 접근을 제한을 통해서 말이죠.

여러가지 해결책들이 있는데 이 해결책들은

근본적으로 "데이터를 변경하지 않는다.(Immutable)" 을 목표로 합니다.

여러 프로그램 혹은 로직에서 데이터를 변경하지 않고 원본 데이터를 복사하여 사용한다든지 말이죠.

이렇게 원본 데이터에 영향없도록 프로그래밍을 한 상태를

"Side-Effect" 가 없다.

라고 말합니다.

FP가 동시성 문제를 해결하는데 적합한 패러다임이므로 현재 주목받는 패러다임이 된 것입니다.

참고자료


profile
iOS & Flutter

0개의 댓글