핵심 요약
- 한 해외 개발자가 '함수형 프로그래밍 언어'나 '빠른 언어'라는 말은 일종의 범주 오류이며 세상에 존재하지 않는 개념이라는 주장을 펼쳤습니다.
- 언어 자체가 함수형이거나 빠른 것이 아니라 개발자가 짠 '프로그램'이나 개별 '실행 결과'가 그러한 특성을 지닐 뿐이라는 새로운 관점을 제시했습니다.
- 루비로도 함수형 코드를 짤 수 있고 하스켈로도 명령형 코드를 짤 수 있듯, 언어는 단지 함수형 작성을 권장하거나 돕는 도구일 뿐이라고 덧붙였습니다.
요약 해외 개발자 커뮤니티에서 유명 개발자 필 하겔버그(Phil Hagelberg)가 작성한 블로그 글이 화제를 모았습니다. 작성자는 "함수형 프로그래밍 언어라는 것은 세상에 존재하지 않는다"라는 도발적인 한마디로 글을 시작하며 시선을 사로잡았습니다.
작성자의 주장에 따르면, '함수형 프로그래밍'은 업계에서도 단일한 정의로 쉽게 합의되지 않는 개념입니다. 어떤 개발자들은 일급 함수(First-class function)를 인자로 전달하는 방식을 함수형이라고 부르고, 다른 사람들은 수학적 함수처럼 순수하게 인자를 결과값으로 변환하는 순수 함수 구조만을 함수형으로 봅니다. 하지만 작성자는 이를 이분법적으로 판단하기보다는 '함수형의 연속적인 스펙트럼(spectrum of functionalness)'으로 이해해야 한다고 짚었습니다.
즉, 함수형 프로그래밍이란 언어의 고유한 본질이 아니라 '개발자가 수행하는 행위나 코딩 방식'이며, 그 결과로 만들어진 개별 프로그램이 얼마나 함수형에 가까운지 스펙트럼 어딘가에 위치할 뿐이라는 것입니다. 언어 자체가 프로그램에 함수형 작성을 강제하는 경우는 극히 드물며, 대부분은 함수형 방식을 더 편하게 혹은 더 어색하게 작성할 수 있도록 지원하는 도구에 불과합니다. 예컨대 객체지향 언어로 꼽히는 루비(Ruby)에서도 함수형 코드를 작성할 수 있고, 대표적인 순수 함수형 언어로 알려진 하스켈(Haskell)에서도 명령형 프로그램이 존재합니다.
작성자는 이러한 논리가 흔히 쓰이는 '빠른 프로그래밍 언어'라는 표현에도 똑같이 적용된다고 설명했습니다. 언어 자체가 빠른 것이 아니라 실행되는 프로그램이 빠를 뿐이며, 엄밀히 말하면 특정 런타임 환경에서 수행된 개별 실행 결과가 빠를 뿐이라는 지적입니다. 실제로 스킴(Scheme)이나 루아(Lua) 역시 어떤 컴파일러나 JIT 엔진에서 구동하느냐에 따라 실행 속도가 천차만별로 갈립니다. 결국 작성자는 용어를 지적하며 잘난 척하려는 것이 아니라, 당연하게 받아들이던 개발 개념을 새로운 시각에서 다시 평가해보자는 취지라며 글을 맺었습니다.
Sponsored · 광고