함수형 프로그래밍 패러다임은 문제와 그것을 푸는 데 사용되는 도구에 관한 사고의 틀이라고 할 수 있다. 많은 현대 언어들은 폴리패러다임(혹은 멀티패러다임)이다. 이들은 객체지향, 메타프로그래밍, 함수형, 절차형 등 몇 가지 서로 다른 프로그래밍 패러다임을 지원한다. 메타프로그래밍은 언어와 주요 라이브러리에 새로운 기능을 더할 수 있게 해준다.

함수형 피라미드

컴퓨터 언어 종류는 주로 두 축을 기준으로 나눌 수 있다. 한 축은 강한 타이핑 또는 약한 타이핑이고, 다른 축은 동적 타이핑 또는 정적 타이핑이다.

정적 타이핑은 변수나 함수형의 자료형을 사용 전에 확정해야 함을 의미하고, 동적 타이핑은 이것을 미룰 수 있게 함을 의미한다. 강한 타입 변수는 자신의 타입을 ‘알고’ 있기 때문에 리플렉션이나 인스턴스 검사가 가능하다. 약한 타이핑 언어는 이런 의식이 덜하다.

하지만 함수형이 타이핑 시스템을 좌우하지는 않는다. 불변성에 의존하는가에 따라서, 언어들의 주요 차별점은 동적이냐 정적이냐가 아니고 명령형이냐 함수형이냐 이다.

즉 폴리글랏이란 현대식 런타임을 사용하여 플랫폼은 바꾸지 않고 여러 언어를 적절하게 섞어서 사용하여 애플리케이션을 만드는 것을 의미한다는 것이다.

Reference

함수형 사고