절차형 프로그래밍은 'How'에 중점을 두고 프로그래밍을 하는 방식이다.
즉, 원하는 결과를 위해 코드로 달성해 나가는 과정에 중점을 두는 방식이라는 것.
절차형 프로그래밍 예시
function isMultiply(arr) { let result = []; for (let i = 0; i < arr.length; i++){ // arr의 각 요소에 하나씩 접근 result.push(arr[i] * 2) } return result }
위 예시는 함수에서 전달받은 배열의 요소들에 곱하기 2한 값들로 구성된 새로운 배열을 구하기 위해 for문을 이용하여 arr 요소 하나하나에 접근하여 계산하는 방법을 구현하고 있다.
선언형 프로그래밍은 원하는 결과를 달성하기 위해 과정 하나하나를 기술하는 것보다,
필요한 결과가 어떤 것인지를 기술하는 데에 중점을 두는 방식이다.
선언형 프로그래밍 예시
function isMultiply(arr) { return arr.map(function(el) { return el * 2 }) }
위 선언형 프로그래밍 예시는 추상화된 방식이라고 할 수 있다.
결과를 얻기 위해 어떻게 작동되야 하는지 알 필요없이 결과에 중점을 두는 방식이다.
추상화는 복잡한 어떤 것을 압축해서 핵심만 추출한 상태로 만드는 것이다.
전화기가 있는 목적은 나와 떨어져 있는 사람과 통화하기 위함인데,
우리는 그 전화기가 어떻게 작동이 되는지, 어떤 기술들이 모아져 있는지 궁금해하지 않는다.
즉, 최종 결과(목적)을 위해 핵심기능만 추출한 상태라고 생각하면 된다.
추상화로부터 생산성이 향상되는 것이다.