프로그래밍 패러다임은 소프트웨어 설계와 구현 방법론을 구체화하는 개념이며, 각 패러다임은 문제 해결 접근 방식에 따른 특징과 이점을 갖는다. 다양한 패러다임이 존재하며, 아래와 같이 체계적으로 분류할 수 있다.
- 명령형 프로그래밍 (Imperative Programming)
컴퓨터에게 수행해야 할 작업을 명령어의 순차적 집합으로 지시하는 방식이다.- 절차적 프로그래밍 (Procedural Programming): 명령형 프로그래밍의 한 갈래로, 작업을 함수나 서브루틴 단위로 나누어 순차적으로 수행한다. 예를 들어, C 언어와 Pascal이 이에 해당한다.
- 구조적 프로그래밍 (Structured Programming): 코드의 흐름을 제어 구조(조건문, 반복문 등)를 통해 명확하게 구성함으로써 가독성과 유지보수를 향상시킨다.
- 객체지향 프로그래밍 (Object-Oriented Programming, OOP)
데이터를 객체 단위로 캡슐화하여, 객체 간의 메시지 전달을 통해 문제를 해결한다.
클래스, 상속, 다형성과 같은 개념을 활용하며, 복잡한 시스템의 모듈화와 재사용성을 높인다. Java, C++, Python 등이 대표적이다. - 함수형 프로그래밍 (Functional Programming)
함수를 일급 시민으로 취급하고, 부수 효과를 최소화하며 순수 함수를 기반으로 문제를 해결한다.
불변성과 고차 함수를 강조하여 코드의 예측 가능성과 병렬 처리 효율을 높인다. Haskell, Lisp, Scala 등이 대표적이다. - 논리형 프로그래밍 (Logic Programming)
사실과 규칙을 명시하고, 논리적 추론을 통해 문제의 해답을 도출하는 방식이다.
Prolog가 대표적이며, 선언적 접근을 통해 복잡한 문제를 자연스럽게 표현할 수 있다. - 선언형 프로그래밍 (Declarative Programming)
어떤 결과를 도출할 것인지를 기술하며, 구체적인 실행 방법은 언어나 시스템에 위임한다.
SQL, HTML과 같이 결과 중심의 기술이 이에 해당하며, 코드를 단순화시키고 유지보수를 용이하게 한다. - 이벤트 기반 프로그래밍 (Event-Driven Programming)
시스템 내에서 발생하는 다양한 이벤트(사용자 입력, 시스템 신호 등)에 반응하여 동작하는 방식이다.
주로 UI 개발과 웹 애플리케이션에서 사용되며, 이벤트 핸들러를 통해 비동기적으로 처리된다. - 동시성 및 병렬 프로그래밍 (Concurrent / Parallel Programming)
여러 작업을 동시에 처리하여 효율성을 극대화하는 기법이다.
멀티스레딩, 비동기 프로그래밍, 분산 시스템 등이 포함되며, 하드웨어 자원을 최적으로 활용할 수 있다. - 반응형 프로그래밍 (Reactive Programming)
데이터 흐름과 변화에 반응하는 프로그래밍 모델로, 비동기 데이터 스트림을 관리하는 데 초점을 둔다.
복잡한 이벤트 흐름을 단순화하고, 실시간 데이터 처리에 효과적이다. - 측면 지향 프로그래밍 (Aspect-Oriented Programming)
공통 관심사를 핵심 로직에서 분리하여 모듈화하는 방식이다.
로깅, 보안, 트랜잭션 관리와 같은 횡단 관심사를 독립적으로 관리함으로써 코드의 응집도를 높인다.
프로그래밍 패러다임은 특정 문제 상황이나 프로젝트 요구사항에 따라 유연하게 선택할 수 있으며, 반드시 하나만 선택하여 프로그래밍하지 않는다.
각 패러다임의 특성을 이해함으로써 보다 효율적이고 유지보수하기 쉬운 소프트웨어를 설계할 수 있다.
'CS > 프로그래밍 패러다임' 카테고리의 다른 글
스프링 + 비동기 프로그래밍 (0) | 2025.03.09 |
---|---|
동기/비동기 관점에서 바라본 Java IO vs Java NIO (0) | 2025.03.09 |