명령형 프로그래밍은 '어떻게' 할 것인가에 초점을 맞춘다.
개발자는 원하는 결과를 얻기 위해 수행해야 하는 단계별 명령을 명시적으로 작성한다.
public class Factorial {
public static int factorial(int n) {
int result = 1;
for (int i = 1; i <= n; i++) {
result *= i;
}
return result;
}
public static void main(String[] args) {
System.out.println(factorial(5)); // 120 출력
}
}
선언형 프로그래밍은 '무엇을' 할 것인가에 초점을 맞춘다.
개발자는 원하는 결과를 선언(묘사)하는 방식으로 코드를 작성한다.
public class StreamExample {
public static void main(String[] args) {
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
int sum = numbers.stream()
.filter(x -> x % 2 == 0) // 짝수만 선택
.sum(); // 합계 계산
System.out.println(sum); // 6 출력
}
}
| 기준 | 명령형 프로그래밍 | 선언형 프로그래밍 |
|---|---|---|
| 초점 | "어떻게" 할 것인가 | "무엇을" 할 것인가 |
| 코드 스타일 | 명령 직접 작성 | 결과 선언 |
| 프로그램 상태 | 명시적 변경 | 추상적 표현 |
| 예시 언어 | C, C++, Java, Python | Haskell, Prolog, SQL |