함수형 언어로하는 개발은 재밌다. 함수형의 재미가 떠오를 때면 오래된 내 코드를 뒤적이고는 한다.
https://cs.brown.edu/~sk/Publications/Books/ProgLangs/2007-04-26/
PLAI: Lisp의 재미를 잘 살려서 언어 자체를 설계하는 과제를 중심으로 전개되는 이 책은 프로그래밍 언어를 바뀔 수 없는 것으로 생각하던 내 마음을 계몽했다.
프로그래밍은 한계 위에서 움직인다. 그 한계의 원인은 모든 연산이 메모리의 내의 전자 데이터로 치환된다는 사실에서 온다. 우리의 뇌는 메모리의 작은 연산 하나하나를 기억하고 인지할 수 있는 구조가 아니므로 단순히 전자 현상을 문자로 옮긴 프로그래밍 언어(초기의 프로그래밍 언어가 이랬다)로 다루면 잘 다루기 어렵다.우리는 일상에서 쓰는 언어 만큼의 혹은 그 이상의 추상화를 필요로 한다. 핸드폰 앱을 사용할 때 메모리 스택의 이동 따위를 알 필요가 없듯이, 시스템의 물리적 한계는 프로그래밍을 할 때에도 몰라도 되는 순간이 알아야 하는 순간보다 많다.
소설가의 글을 보면 표현이 좋다고 느낀다. 내가 느끼는 문장이 좋다는 의미는 들여다 보면, 곧 의미 전달은 풍부하면서도 필요 없는 상세 사항이 없이 간결하다는 의미이다. 소설가의 언어가 보통보다 뛰어난 전달력을 가지듯이 마찬가지로 프로그래밍 언어도 같은 행위를 할 때 (다른 언어보다) 표현이 좋고 간결할 수 있는 것이다. 모든 사람이 정확하면서도 간결하게 표현할 수 있는 언어는 현실 세계에서는 어렵지만, 프로그래밍 언어에서는 가능하다. 프로그래밍 언어에서는 규칙을 지키지 않는 언어를 거부할 수 있는 힘이 컴파일러에 부여되기 때문이다. 마치 언제나 맞춤법 검사기를 통과한 언어만 말할 수 있는 상태인데 그 규칙 안에서의 아름다움이 함수형 언어의 매력이다.