프로그래밍을 할 때, 같은 결과를 만들어도 다양한 방법으로 결과를 도출 할 수 있다. 순차,분기,반복 그리고 참조 등 4가지 요소를 적절히 사용하여 패러다임을 만드는 것이다.
객체지향 프로그래밍은 객체(object)를 통해 데이터와 메서트를 묶고 객체간 메시지를 통해 통신하며 프로그램을 작동시키는 방식이다.
함수형 프로그래밍은 데이터를 함수로 발전시켜나가며 결과값을 얻어내는 데이터 파이프라인 형식으로 프로그램을 작동한다.
함수형 프로그래밍의 대표적 장점은 대표적을 이러하다
그렇다고 장점만 있느냐? 또 그렇것은 아니다. 단점들은 이러하다
N개의 숫자가 공백없이 입력되었을 때, 숫자의 합을 출력하는 예제를 보자.
ex) "12345" -> 10
function StringNumber(string){
this.string = string;
}
StringNumber.prototype.calculate = function (){
const stringNumber = "12345";
this.sum = 0;
for(let i=0; i< stringNumber.length;i +=1 ){
this.sum += stringNumber[i] - "0";
}
};
const stringNumber = new StringNumber("12345");
const printer = new Printer();
stringNumber.calculate();
printer.log(stringNumber.sum);
단순한 결과임에도 코드가 좀 길다.
const stringNumber = "12345";
console.log(stringNumber.split('').map(x=>parseInt(x)).reduce((x,y)=>x+y,0));
함수형은 둘줄만에도 끝난다.
const stringNumber = "12345";
let sum = 0;
for(let i=0;i<stringNumber.length;i++){
sum += stringNumber[i] - "0';
}
우리가 생각하는 방식대로 흘러가는 절차자형이 가장 접근하기 쉬운 방식인 것 같다.(단, 간단할 때)