언어(Language)/Java

[Java] 명령형 프로그래밍과 선언형 프로그래밍의 차이

잇트루 2023. 1. 4. 23:52
반응형

명령형 프로그래밍

명령형 프로그래밍은 실행할 동작을 구체적으로 명시하는 것으로 컴퓨터가 수행할 명령들을 순서대로 코드로 작성하는 것을 의미한다.

명령형 프로그래밍은 특정 문제를 어떻게(how) 해결할 것인가를 중점으로 프로그래밍한다.

이를 절차적 프로그래밍이라고도 한다.

 

명령형 프로그래밍 예제

public class Example {
    public static void main(String[] args){
        List<Integer> numbers = List.of(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
        int sum = 0;

        for(int number : numbers){
            if(number % 2 == 0){
                sum += number;
            }
        }

        System.out.println(sum);
    }
}

1부터 10까지의 숫자가 담겨 있는 List에서 짝수만 추출하여 더하는 코드이다.

반복문(for 문)을 통해 List에 순차적으로 접근하여 조건문(if 문)을 통해 짝수에 맞는 숫자들만 추출하여 더한다.

 

 

선언형 프로그래밍

선언형 프로그래밍은 명령형 프로그래밍과는 달리 목표를 선언하는 것으로 프로그래밍한다

선언형 프로그래밍은 특정 문제를 두고 무엇(What)을 해야 할 것인지를 중점으로 프로그래밍한다.

 

선언형 프로그래밍 예제

public class Example {
    public static void main(String[] args){
        List<Integer> numbers = List.of(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);

        int sum =
                numbers.stream()
                        .filter(number -> (number % 2 == 0))
                        .mapToInt(number -> number)
                        .sum();

        System.out.println(sum);
    }
}

자바의 대표적인 선언형 프로그래밍 방식에는 Stream API가 있다.

명령형 프로그래밍의 예제 코드와 동일한 처리를 하며, 결과도 똑같다.

Stream의 내부 반복자가 반복문(for 문)을 대체하고 있으며, filter() 메서드를 통해 조건문(if 문)을 대신하여 특정 조건에 만족하는 숫자를 필터링한다.

선언형 프로그래밍 방식은 필요한 동작들을 단순 선언만 하고 있으며, 구체적인 동작은 따로 작성하지 않았음을 알 수 있다.

반응형