함수형 프로그래밍이란? 절차지향과 뭐가 다른가

 프로그래밍을 공부하다 보면 ‘절차지향 프로그래밍’과 ‘함수형 프로그래밍’이라는 용어를 자주 듣게 됩니다. 처음에는 그 차이가 단순히 문법적인 것으로 보이지만, 사실 이 둘은 코드를 바라보는 철학 자체가 다릅니다.


절차지향이 ‘어떻게 동작할 것인가’에 초점을 맞춘다면, 함수형 프로그래밍은 ‘무엇을 할 것인가’에 집중합니다. 즉, 함수형 프로그래밍은 코드를 명령어의 집합이 아니라 수학적 함수들의 조합으로 보는 사고 방식이라고 할 수 있습니다. 이번 글에서는 함수형 프로그래밍이란 무엇인지, 절차지향과 어떤 차이가 있는지를 구체적인 예시를 통해 살펴보겠습니다.





1. 절차지향 프로그래밍이란 무엇일까



절차지향 프로그래밍(Procedural Programming)은 이름 그대로 ‘절차’, 즉 프로그램이 실행되는 순서를 중심으로 구성된 방식입니다.

프로그램을 여러 단계의 명령으로 나누어 위에서 아래로 차례대로 수행합니다.


예를 들어 요리를 한다고 가정해 봅시다.

절차지향 프로그래밍은 레시피처럼 “재료 준비 → 손질 → 조리 → 완성”의 흐름을 코드로 옮긴 것과 같습니다.

이 방식은 명확하고 직관적이지만, 프로그램이 커질수록 함수나 변수들이 서로 얽히기 쉬워 유지보수가 어려워집니다.


간단히 말해 절차지향은 ‘작동 순서’를 중심으로 사고하는 프로그래밍 방식입니다.





2. 함수형 프로그래밍의 핵심 개념



함수형 프로그래밍(Functional Programming)은 함수를 중심으로 프로그램을 구성하는 방식입니다.

여기서 말하는 ‘함수’는 단순히 코드를 묶는 도구가 아니라, 입력이 주어지면 항상 같은 출력을 내는 수학적인 함수 개념에 가깝습니다.


함수형 프로그래밍은 다음 세 가지 원칙으로 요약할 수 있습니다.


  1. 불변성(Immutable Data)
    데이터는 한 번 만들어지면 변경하지 않습니다.
    새로운 결과를 얻기 위해서는 기존 데이터를 바꾸는 대신, 새로운 데이터를 만들어냅니다.
  2. 순수 함수(Pure Function)
    같은 입력값이 주어지면 항상 같은 결과를 반환해야 합니다.
    함수 외부의 변수나 상태에 의존하지 않습니다.
  3. 고차 함수(Higher-Order Function)
    함수를 인자로 받거나, 함수를 반환하는 함수를 말합니다.
    함수를 데이터처럼 다루기 때문에 코드의 재사용성이 높아집니다.



이 세 가지 원칙 덕분에 함수형 프로그래밍은 버그가 적고, 예측 가능한 코드 구조를 만들 수 있습니다.





3. 절차지향과 함수형 프로그래밍의 차이



같은 문제를 절차지향과 함수형 방식으로 접근하면 사고방식이 완전히 달라집니다.


절차지향은 “이렇게 동작하라”고 명령을 내리는 반면,

함수형은 “무엇을 계산할지”를 선언하는 방식에 가깝습니다.


예를 들어 리스트 안의 짝수만 더한다고 가정해봅시다.

절차지향에서는 for문을 사용해 하나씩 조건을 검사하고 더하는 과정이 필요하지만,

함수형 프로그래밍에서는 filter와 reduce 같은 함수를 조합해 단 한 줄로 해결할 수 있습니다.


즉, 절차지향은 ‘과정’ 중심, 함수형은 ‘결과’ 중심의 사고 구조를 가지고 있습니다.





4. 함수형 프로그래밍의 장점



  1. 코드가 예측 가능하다.
    외부 상태에 의존하지 않기 때문에, 같은 입력에는 항상 같은 결과가 나온다.
  2. 버그 발생 확률이 낮다.
    변수를 변경하지 않기 때문에, 어디서 데이터가 바뀌었는지 추적할 필요가 없다.
  3. 코드 재사용성이 높다.
    작은 단위의 함수를 여러 조합으로 재활용할 수 있다.
  4. 병렬 처리에 유리하다.
    함수들이 독립적으로 동작하므로 여러 작업을 동시에 수행하기 쉽다.



이런 장점 덕분에 함수형 프로그래밍은 최근 데이터 처리, 인공지능, 백엔드 등 다양한 분야에서 활용되고 있습니다.





5. 함수형 프로그래밍의 단점과 현실적인 사용



물론 함수형 프로그래밍이 항상 정답은 아닙니다.

모든 변수를 불변으로 유지하려면 복잡한 구조를 만들어야 하고,

순수 함수만으로 모든 문제를 해결하기 어렵습니다.


그래서 많은 현대 언어들은 절차지향과 함수형 방식을 함께 사용하는 하이브리드 구조를 채택하고 있습니다.

대표적으로 파이썬, 자바스크립트, 코틀린 등이 이런 언어에 속합니다.

즉, 상황에 따라 절차지향적인 코드도 사용하고,

필요할 때는 함수형 사고로 구조를 단순화하는 방식이 실무에서는 일반적입니다.





6. 왜 배워야 할까



함수형 프로그래밍을 배우면 단순히 문법을 익히는 것이 아니라 사고방식 자체가 달라집니다.

절차지향은 “명령형 사고”를, 함수형은 “선언형 사고”를 훈련시킵니다.


이는 문제를 더 명확하게 정의하고, 복잡한 시스템을 단순한 조합으로 나누어 바라보는 능력을 길러줍니다.

결국 함수형 프로그래밍은 프로그래머의 사고를 한 단계 성장시켜 주는 철학적인 학습 과정이라고 할 수 있습니다.





마무리



함수형 프로그래밍은 단순히 “다른 문법 스타일”이 아니라, 코드를 바라보는 새로운 관점입니다.

절차지향이 “단계별로 일하는 사람”이라면, 함수형 프로그래밍은 “결과를 설계하는 사람”에 가깝습니다.


코드의 복잡성이 커질수록, 이런 선언적이고 예측 가능한 구조가 중요해집니다.

초보자라면 처음에는 낯설게 느껴지겠지만, 함수형 사고를 익히는 순간 프로그래밍의 본질이 한층 더 명확해질 것입니다.


댓글

이 블로그의 인기 게시물

게임 UX와 뇌과학: 몰입형 인터페이스 설계

클라우드 게임 스트리밍 기술 해부

대규모 Crowd Simulation 알고리즘 연구