명령형 VS 선언형
명령형 프로그래밍과 선언형 프로그래밍은 소프트웨어를 개발하는 두 가지 주요 프로그래밍 패러다임입니다. 이 두 방식은 문제를 해결하는 방법과 코드를 작성하는 방식에서 차이가 있습니다.
명령형 프로그래밍
1. 특징
(1) 어떻게(How) 문제를 해결할지 명시
- 문제를 해결하기 위해 명령(명령어의 순서)을 명시적으로 작성합니다.
- 프로그램의 실행 흐름을 상세히 제어합니다.
(2) 프로세스 중심
- 상태 변경과 실행 순서가 중요합니다.
- 변수, 루프, 조건문 등을 사용하여 동작을 기술합니다.
(3) 전통적인 프로그래밍 방식
- C, Java, Python 같은 언어에서 기본적으로 사용하는 방식
2. 예제
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
List<Integer> evenNumbers = new ArrayList<>();
for (Integer number : numbers) {
if (number % 2 == 0) {
evenNumbers.add(number);
}
}
System.out.println(evenNumbers); // 출력: [2, 4]
- 프로그래머가 직접 for 반복문과 조건문으로 데이터 처리 과정을 상세히 명령
- 데이터를 어떻게 필터링하고 저장할지 단계별로 작성
선언형 프로그래밍
1. 특징
(1) 무엇(What) 문제를 해결할지 명시
- 목표를 명시하고, 구현 세부사항은 추상화합니다.
- 어떻게 처리할지는 언어나 라이브러리에 맡깁니다.
(2) 결과 중심
- 코드가 실행되는 방법보다는 원하는 결과에 집중합니다.
- 명령어보다 데이터와 규칙을 기술하는 방식
(3) 함수형 프로그래밍 언어와 관련
- SQL, React, Haskell, JavaScript(ES6+) 등이 선언형 프로그래밍의 대표적인 예입니다.
2. 예제
(1) Java
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
List<Integer> evenNumbers = numbers.stream()
.filter(n -> n % 2 == 0) // 짝수만 필터링
.collect(Collectors.toList());
System.out.println(evenNumbers); // 출력: [2, 4]
- "짝수만 필터링해서 리스트로 저장"이라는 의도만 표현
- 반복문이나 조건문 같은 세부 동작은 Stream API가 처리
(2) SQL
SELECT * FROM users WHERE age > 30;
- "나이 30 이상인 사용자를 가져와"라는 결과만 표현.
- 데이터 검색의 세부 동작(루프, 조건 검사)은 SQL 엔진이 처리.
(3) HTML
<div>
<p>Hello, World!</p>
</div>
- "웹 페이지에 'Hello, World!'를 보여줘"라는 의도만 표현
- 브라우저가 이를 렌더링하는 과정을 처리
출처
OpenAI의 ChatGPT (https://openai.com)
반응형
'CS > CS' 카테고리의 다른 글
버퍼 (Buffer) (0) | 2025.01.04 |
---|---|
메서드 체이닝(Method Chaining) (0) | 2024.12.05 |
레이어드 아키텍처 응용 (Layered Architecture) (0) | 2024.12.03 |
TDD (Test-Driven Development) feat. JUNIT (0) | 2024.12.02 |
Software Architecture (소프트웨어 아키텍처) (0) | 2024.11.26 |