본문 바로가기

단순용어정리/web

[단순용어] 자바스크립트에서 함수형 프로그래밍의 정의/장점/단점

반응형

함수형 프로그래밍이란?

프로그램을 함수들의 집합으로 생각하고 이러한 함수들을 조합하여 프로그램을 작성하는 프로그래밍 패러다임입니다.

 


함수형 프로그래밍의 예

위의 코드에서 square() 함수는 입력값 x에 대한 출력값만을 반환하므로 순수 함수입니다. add() 함수는 함수를 반환하는 고차 함수로서, 함수형 프로그래밍에서는 자주 사용됩니다. filter() 함수와 map() 함수는 배열을 다루는 함수 중에서 가장 자주 사용되며, reduce() 함수는 배열의 값을 하나의 값으로 축약하는 데 자주 사용됩니다. 이러한 함수들은 부작용이 없는 순수 함수로 구현되어 있어, 함수형 프로그래밍에서 주로 사용됩니다.

// 순수 함수 예시
function square(x) {
  return x * x;
}

// 고차 함수 예시
function add(a) {
  return function(b) {
    return a + b;
  }
}

// filter() 함수 예시
const numbers = [1, 2, 3, 4, 5];
const evenNumbers = numbers.filter(function(num) {
  return num % 2 === 0;
});

// map() 함수 예시
const names = ["Alice", "Bob", "Charlie"];
const upperCaseNames = names.map(function(name) {
  return name.toUpperCase();
});

// reduce() 함수 예시
const numbers = [1, 2, 3, 4, 5];
const sum = numbers.reduce(function(acc, num) {
  return acc + num;
}, 0);

함수형 프로그래밍의 장점과 단점

함수형 프로그래밍의 장점과 단점은 다음과 같습니다.

장점:

  1. 코드의 간결성: 함수형 프로그래밍은 함수를 조합하여 코드를 작성하기 때문에 코드의 간결성이 높아집니다. 또한, 코드 중복을 줄이고, 가독성이 좋아집니다.
  2. 재사용성: 함수는 독립적인 모듈로써, 다른 코드에서 쉽게 재사용할 수 있습니다. 함수형 프로그래밍에서는 함수의 입력과 출력만 신경쓰면 되므로, 함수를 재사용하는 것이 용이합니다.
  3. 병렬처리: 함수형 프로그래밍은 상태를 변경하지 않는 순수 함수를 사용하므로, 여러 개의 함수를 동시에 실행하더라도 결과가 일관성 있게 나올 수 있습니다. 이러한 특성 때문에 병렬처리를 쉽게 할 수 있습니다.
  4. 디버깅: 함수형 프로그래밍은 부작용이 없는 함수를 사용하므로, 디버깅이 쉬워집니다. 순수 함수는 입력값과 출력값만 고려하면 되므로, 함수 내부에서 발생한 문제를 추적하는 것이 용이합니다.

단점:

  1. 학습곡선: 함수형 프로그래밍은 명령형 프로그래밍과는 다른 개념과 기술을 사용하기 때문에, 처음에는 적응하는 데 어려움이 있을 수 있습니다.
  2. 성능 문제: 함수형 프로그래밍은 객체를 변경하지 않고 새로운 객체를 생성하는 것이 일반적이기 때문에, 이로 인해 성능 문제가 발생할 수 있습니다.
  3. 모든 문제에 적용이 불가능: 함수형 프로그래밍은 모든 문제에 적용이 가능한 것은 아닙니다. 특히, 입력과 출력이 복잡한 문제에는 적용하기 어려울 수 있습니다.
  4. 디버깅: 함수형 프로그래밍은 순수 함수를 사용하므로, 함수 내부에서 발생한 문제를 추적하기 위해서는 함수 외부의 상태를 이해해야 하는 경우가 있습니다. 이는 디버깅을 어렵게 만들 수 있습니다.
반응형