Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[노예찬] 챕터 1: 쏙쏙 들어오는 함수형 코딩에 오신 것을 환영합니다 #8

Merged
merged 1 commit into from
May 22, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
55 changes: 55 additions & 0 deletions 챕터_1/노예찬.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
# 1.쏙쏙 들어오는 함수형코딩에 오신 것을 환영합니다.

## 함수형 프로그래밍은 무엇인가요?

함수형 프로그래밍을 무엇이라고 정의내리는 것은 쉽지 않다. 또한 많은 자료가 학계에서 만든 것이기 때문에 일반 개발자가 이해하기 어렵고 실용적이지 않은 측면이 있다. 하지만 본 책은 실무에서 쓸 수 있는 내용을 다루고자 한다.

그럼에도 함수형 프로그래밍을 한번 정의해보자. 위키피디아에서는 다음과 같이 함수형 프로그래밍을 정의한다.

- 수학 함수를 사용하고 부수 효과를 피하는 것이 특징인 프로그래밍 패러다임
- 부수효과 없이 순수함수만 사용하는 프로그래밍 스타일
- 부수효과 : 함수가 리턴하는 값 이외에 하는 모든 일을 말한다.
- 순수함수 : 인자에만 의존하고 부수 효과가 없는 함수이다.

## 실용적인 측면에서 함수형 프로그래밍 정의의 문제점

위에서 우리는 함수형 프로그래밍의 정의를 살펴봤다. 하지만 위외같은 정의는 실용적인 측면에서 3가지 문제점이 존재한다.

1. 부수효과는 필요하다 : 부수 효과는 소프트웨어를 실행하는 이유다. 부수 효과는 필요할 때는 반드시 사용해야만 한다.
2. 함수형 프로그래밍은 부수 효과를 잘 다룰 수 있다 : 함수형 프로그래머는 순수하지 않은 함수도 사용한다. 그리고 순수하지 않은 함수를 잘 다룰 수 있는 기술이 많이 있다.
3. 함수형 프로그래밍은 실용적이다 : 함수형으로 만들어진 좋은 소프트웨어가 많이 존재한다.

## FP를 학문이 아닌 기술과 개념으로 보기

함수형 프로그래밍의 중요한 개념은 패러다임이나, 언어를 가리지 않고 모든 영역에서 적용할 수 있다. 그 함수형 프로그래밍의 중요한 핵심 개념은 다음의 3가지다

- 액션
- 계산
- 데이터

## 액션과 계산, 데이터 구분하기

### 함수형 프로그래머는 부를 때 조심해야 하는 코드(액션)를 구분한다

액션은 호출하는 시점과 횟수에 의존한다. 그래서 호출할 때 조심해야한다.

### 함수형 프로그래머는 실행하는 코드와 그렇지 않은 코드를 구분한다

- 계산이나 데이터는 둘 다 부르는 시점이나 횟수가 중요하지 않ㄴ다.
- 계산과 데이터의 차이는 실행 여부에 있다. 계산은 실행 가능하지만 데이터는 그렇지 않다. 데이터는 정적이고 보이는 그대로이다. 계산은 실행하기 전까지 어떻게 동작할 지 알 수 없다.
- 함수형 프로그래머는 코드를 액션과 계산, 데이터로 구분한다.

## 액션, 계산, 데이터를 구분하면 어떤 장점이 있나?

- 시간에 따라 바뀐는 값을 모델링할 때 동작 방법을 이해하는 것은 중요하지만 쉽지 않다. 실행 시점이나 횟수에 의존하는 코드를 없애면, 코드를 더 쉽게 이해할 수 있다. 그리고 심각한 버그를 막을 수 있다.
- 데이터와 계산은 실행 시점이나 횟수에 의존하지 않는다. 그래서 코드를 데이터와 계산으로 바꿀수록 분산 시스템에서 생기는 여러가지 문제를 해결할 수 있다.
- 액션은 여전히 문제점을 가지고 있지만, 해당 영역이 코드 전체에 영향을 주지 않도록 격리시키면 된다.

## 함수형 사고란 무엇인가?

함수형 사고는 함수형 프로그래머가 소프트웨어 문제를 해결하기 위해 사용하는 기술과 생각을 말한다. 크게 중요한 2가지 개념이 존재한다.

1. 액션과 계산, 데이터
2. 일급 추상

이 2가지 개념이 함수형 프로그래밍의 근간이 되는 개념이다. 이것을 이해함으로써 우리는 전문적인 함수형 프로그래머로 거듭날 수 있다.
Loading