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

  프로그래밍을 공부하다 보면 ‘절차지향 프로그래밍’과 ‘함수형 프로그래밍’이라는 용어를 자주 듣게 됩니다. 처음에는 그 차이가 단순히 문법적인 것으로 보이지만, 사실 이 둘은 코드를 바라보는 철학 자체가 다릅니다. 절차지향이 ‘어떻게 동작할 것인가’에 초점을 맞춘다면, 함수형 프로그래밍은 ‘무엇을 할 것인가’에 집중합니다. 즉, 함수형 프로그래밍은 코드를 명령어의 집합이 아니라 수학적 함수들의 조합으로 보는 사고 방식이라고 할 수 있습니다. 이번 글에서는 함수형 프로그래밍이란 무엇인지, 절차지향과 어떤 차이가 있는지를 구체적인 예시를 통해 살펴보겠습니다. 1. 절차지향 프로그래밍이란 무엇일까 절차지향 프로그래밍(Procedural Programming)은 이름 그대로 ‘절차’, 즉 프로그램이 실행되는 순서를 중심으로 구성된 방식입니다. 프로그램을 여러 단계의 명령으로 나누어 위에서 아래로 차례대로 수행합니다. 예를 들어 요리를 한다고 가정해 봅시다. 절차지향 프로그래밍은 레시피처럼 “재료 준비 → 손질 → 조리 → 완성”의 흐름을 코드로 옮긴 것과 같습니다. 이 방식은 명확하고 직관적이지만, 프로그램이 커질수록 함수나 변수들이 서로 얽히기 쉬워 유지보수가 어려워집니다. 간단히 말해 절차지향은 ‘작동 순서’를 중심으로 사고하는 프로그래밍 방식입니다. 2. 함수형 프로그래밍의 핵심 개념 함수형 프로그래밍(Functional Programming)은 함수를 중심으로 프로그램을 구성하는 방식입니다. 여기서 말하는 ‘함수’는 단순히 코드를 묶는 도구가 아니라, 입력이 주어지면 항상 같은 출력을 내는 수학적인 함수 개념에 가깝습니다. 함수형 프로그래밍은 다음 세 가지 원칙으로 요약할 수 있습니다. 불변성(Immutable Data) 데이터는 한 번 만들어지면 변경하지 않습니다. 새로운 결과를 얻기 위해서는 기존 데이터를 바꾸는 대신, 새로운 데이터를 만들어냅니다. 순수 함수(Pure Function) ...

정렬 알고리즘은 왜 중요한가 (버블·선택·삽입 정렬 쉽게 이해하기)

  프로그래밍을 배우다 보면 꼭 등장하는 주제가 있습니다. 바로 정렬 알고리즘입니다. 많은 초보자들이 정렬을 “단순히 숫자나 문자열을 순서대로 나열하는 과정” 정도로만 생각하지만, 실제로 정렬은 프로그래밍의 사고력을 키워주는 핵심 개념입니다. 정렬을 이해한다는 건 단순히 데이터를 정리하는 것이 아니라, 어떻게 문제를 구조적으로 해결할지를 배우는 과정이기도 합니다. 이번 글에서는 정렬 알고리즘이 왜 중요한지, 그리고 대표적인 세 가지 정렬 방식인 버블 정렬, 선택 정렬, 삽입 정렬을 쉬운 예시로 함께 살펴보겠습니다. 1. 정렬이 중요한 이유 정렬은 거의 모든 프로그램에서 기본적으로 사용됩니다. 예를 들어 인터넷 쇼핑몰에서는 가격순 정렬, 학교 성적표는 점수순 정렬, 파일 탐색기에서는 이름순 정렬이 필요합니다. 이처럼 데이터를 빠르게 찾고, 효율적으로 관리하기 위해서는 정렬이 전제되어야 합니다. 만약 데이터가 정렬되어 있지 않다면, 원하는 값을 찾기 위해 처음부터 끝까지 하나씩 비교해야 하므로 비효율적입니다. 또한 정렬 알고리즘은 프로그래밍의 기본 논리를 훈련시킵니다. 문제를 단계별로 나누고, 비교하고, 교환하고, 반복하는 과정을 통해 컴퓨터 사고력을 키울 수 있습니다. 2. 버블 정렬 (Bubble Sort) 버블 정렬은 가장 기본적인 정렬 알고리즘입니다. 리스트의 인접한 두 데이터를 비교해 큰 값을 뒤로 보내는 방식으로, 마치 거품이 위로 올라오듯 큰 숫자가 점점 뒤로 밀려납니다. 예시로 숫자 5, 3, 8, 4가 있을 때 첫 번째 비교에서 5와 3을 바꾸면 3, 5, 8, 4가 됩니다. 다음 비교에서 8과 4를 바꾸면 3, 5, 4, 8이 되고, 이 과정을 반복하면 최종적으로 3, 4, 5, 8이 됩니다. 버블 정렬은 구조가 단순하지만, 비교 횟수가 많아 비효율적입니다. 데이터가 많을수록 시간이 오래 걸리기 때문에 실제 대형 시스템에서는 잘 사용되지 않지만, 알고리즘의 기본 개념을 익히는...