함수형 프로그래밍과 대비되는 프로그래밍 방식이 바로 C로 대표되는 명령형 프로그래밍이다. 명령형 방식은 개발하는 모든 작업을 직접 개발자가 작성해야하며 각 과정에 문제가 없는지 확인하는 작업이 필요하다. 또한 명령형 방식은 쉽게 코드가 장황해질 수 있으므로 가독이 힘들 수도 있다.
example
String targetMemberName = "pkch";
boolean found = false;
for (String name : names) {
if (targetMemberName.equals(name)) {
found = true;
break;
}
}
System.out.println("target member is found? " + found);
위와 같은 방식이 명령형 방식이다. 매우 세세하게 코딩이 되어 있으며 장황하다. 이를 선언적으로 바꾸면 더욱 가독이 좋고 간결한 코드로 바꿀 수 있다.
String targetMemberName = "pkch";
System.out.println("target member is found? " + members.contains(targetMemberName));
위 코드가 선언적인 코드의 예시이다. 우리가 찾고자 하는 이름인 pkch
를 찾는 과정을 contains로 선언하여 보다 간결하고 깔끔한 코드가 완성되었다.
위와 같이 선언적으로 프로그래밍을 하게 되면 다음과 같은 이점을 얻을 수 있다.
- 난잡한 가변 변수 사용 방지
- loop 코드 래핑
- 어수선한 코드 사용을 막아준다.
- 코드가 명확해지고 가독이 좋아짐
- Side Effect를 방지하여 오류 발생 확률을 줄여준다.
- 이해하기 쉽고 유지보수에 유리
- 프로그램의 예측성을 높여 컴파일러가 효율적으로 실행되는 코드를 만들도록 해줌
때문에 현재 복잡한 프로그램을 개발할 때 선언적 프로그래밍의 대표격인 함수형 프로그래밍이 성행하고 많은 곳에서 사용되고 있다.
함수형 프로그래밍은 선언적으로 표현하는 장점 이외에도 일급 함수, lazy evaluation의 특징도 가지고 있다.