함슬람에게 묻습니다.


(프로책팔이) #1

함수형이랑 OOP 랑 비교하는 건 사과랑 오렌지 비교하는 수준이라고 느껴지는데…
틀린 건가요?

함수형이면 함수가 있고 선언하고 나서 변수가 안 바뀌는거에 결과값이 일정하다는 건데…
OOP는 object 를 만들고 그 object 에 해당하는 기능을 넣는 건데…


(L) #2

함수형은 immutable object라는걸 씁니다. 객체지향에서는 객체의 값을 직접 편집할 수 있지만(메모리상의 해당 영역을 다른 값으로 변경), 함수형에서는 그냥 객체를 새로 만드는 것으로 해결합니다.

그리고 객체지향에서는 함수에 값을 입력할 때마다 다른 결과가 나올수도 있지만, 순수 함수형에서는 그런 일이 없습니다. 같은 입력에 대해 항상 같은 출력을 보장합니다. 여기서 "그런 일"을 side effect라고 합니다.

immutable object와 side effect가 없는 함수의 장점은 나중에 멀티스레드 프로그래밍 하실 때 느끼실 수 있을겁니다. 복잡하게 고려해야 할 것이 사라지거든요.


(프로책팔이) #3

그럼 객체지향에서 의도적으로 객체에 다른 값을 집어넣는 것을 막는다고 해서 함수형이 되지는 않는데, 이거는 어떻게 되는 건가요? (혹은 이런 경우에는 함수형으로 치나요?) (예시: rust 같은 경우 mutable 없이는 변경 불가)


(L) #4

그건 그냥 const같은 개념입니다.
쉽게 생각하시려면, 함수형에서는 모든 값이 상수라고 보면 됩니다.