우리는 함수형 프로그래밍을 배워야 할까?

2013-07-30 10:05

임백준님이 함수형 프로그래밍이라는 유령( http://www.cnet.co.kr/view/18272 )이라는 좋은 글을 써 주셨다. 함수형 프로그래밍에 대한 중요성이 높아지고 생각하고 있기는 하지만 실무에서 사용할 기회가 거의 없다 보니 깊이 있게 학습은 못하고 있는 실정이다. 어쩌면 이 글에서 이야기하듯이 함수형 프로그래밍이 좋은 것은 알겠는데 그 필요성을 내가 뼈속 깊이 깨닫지 못하고 있을 수도 있다.

우리는 이 같은 변화에 어떻게 대응해야할까? 지금 현실은 객체 지향 프로그래밍이 주도권을 잡고 있는 상황에서 함수형 프로그래밍이라는 새로운 패러다임을 학습해야 할까? 이 패러다임이 우리의 미래가 맞는 것인가? 맞다면 어디서 어떻게 시작하는 것이 좋을까?

혹시 함수형 프로그래밍에 대해 자신만의 생각을 가진 프로그래머들이 있다면 그네들의 이야기를 듣고 싶다.

0개의 의견 from FB

2개의 의견 from SLiPP

2013-07-30 10:30

명령형에 찌든 구식 개발자 입장에서 보건데 함수형 프로그래밍이 부상되는 동인은 분명히 multi-core crisis 때문입니다.

http://smoothspan.wordpress.com/2007/09/06/a-picture-of-the-multicore-crisis/

명령형 언어 -> 절차형 언어 -> 모듈화 -> OOP로 진화하는 과정이 software crisis에 대한 반응 때문이었다면, 무어의 법칙이 깨지고 숙명적으로 애플리케이션이 동시성을 다뤄야 하는 상황에 그 복잡성을 다루려면 함수형에서 추구하는 부작용 없는(side effect free) 프로그래밍이 필요해진 것이지요.

저는 결코 함수형 언어가 주류 언어가 될 수 있을 것 같지는 않습니다. 기존 언어에 영향을 주는 정도로 끝날 것으로 생각한달까요? 이미 많은 언어들이 함수형 언어의 특징을 차용하고 있기도 하고요.

물론 함수형 언어를 좋아하는 분들은 이런 시각에 동의하지 못할 수 있습니다. 함수형 언어는 더 많은 가치가 있다고 생각하시겠죠. 증명을 쌓아 가듯이 개발할 수 있다는 점도 매력이고, 복잡한 문제가 재귀를 사용하면 의외로 간단하게 풀리는 경험도 무시할 수 없고, persistent data structure 같은 개념 때문에 생각보다 메모리 효율성도 좋다는 생각이 듭니다.

이건 딴 얘기인데, 얼마 전에 erlang vm을 보면서 이에 비해 JVM 개발자들은 정말 고생했다는 생각이 들더군요. 그만큼 상태와 reference 없이 값만 있는 세계는 많은 복잡한 문제를 단순화하는 것 같습니다. erlang의 erlang hot swapping은 정말 서버 개발자로서 매력적인 특징이 아닐 수 없습니다. 이 또한 불변 값만 있기 때문에 가능한 일이지요.

의견 추가하기