Functional Programming, 왜 때문입니까?

최근 Functional Programming (이후 FP) 이 많이 주목받고 있습니다. 최신 트랜드라고 합니다. 그렇다면 FP이 최신 기술인가요? 아닙니다
FP은 1950년대 후반 John McCarthy 의 Lisp 에서부터 출발합니다. 1950년대부터 있었다면 왜 이제서야 주목을 받게 되었을까요?
리얼리즘 프로그래머로써 FP을 훑어보려고 합니다.

FP이 생기기 시작할 즈음에 Object-Oriented Programming (이후 OOP) 도 나타났습니다. 하지만 지금까지 널리 쓰였던 것은 OOP이었습니다.
OOP이 더 뛰어나서? 그렇다면 요즘 FP이 다시 주목받는 것과 모순이 됩니다.
저는 시대적 요구에 따라 선택되었다고 생각합니다. OOP가 널리 쓰이게 된 이유는 당시대의 시대적 요구가 OOP와 잘 맞았기 때문인거죠.
프로그램이 대량으로 생산되어야 하는 시대에 재사용성과 추상화가 요구되었고, OOP가 잘 맞아떨어졌던 것 뿐입니다.

그럼 왜 이제와서 FP이 주목받나요? 시대적 요구가 달라진거죠. 멀티 쓰레드, 멀티 코어로 여러 프로그램들이 동시에 실행하고 분산 컴퓨팅으로 프로그램들이 비동기적으로 수행되는 시대 상황에서 FP 방식이 더 적합한 겁니다.
FP을 철저하게 연구하시는 분들은 거봐라 결국 이 방식이 옳았던 것이 아니냐 라고 말할 수도 있겠습니다. 최근에 생겨나는 Modern Programming Language들도 FP들을 지원하고 있습니다. 그래도 학자들 눈으로 볼 때는 성에 차지 않을 수도 있겠습니다.

제가 볼 때는 FP이 요즘 환경에서 적합한 요소들이 있어 취사 선택되었을 뿐이라고 생각합니다. 언어는 그다지 중요하지 않습니다. 태생부터 Object-Oriented을 기반으로하는 Java로도 FP을 할 수 있습니다. FP의 이론과 그에 충실한 언어들은 사이언티스트들에게 맡기고, 리얼리즘 프로그래머인 저로써는 FP을 이해하고 장점만 적용할 수 있으면 그만입니다.

제가 생각하는 FP의 장점들은 몇 가지로 요약할 수 있습니다.

  • 데이터 불변성
  • 순수 함수
  • 함수 합성
  • 고차 함수
  • (1급 개체)

천천히 이 장점들을 하나씩 포스팅 해보겠습니다.