함수형 프로그래밍이란 ?

유승완·2023년 1월 15일
0

Today I Learned

목록 보기
11/11

원티드 프리온보딩 백엔드 챌린지 1일차

자바스크립트를 더 심도있게 공부하고 싶어 책을 읽는데 궁금한 것들이 생겨 구글링중에 우연치 않게 원티드에서 프리온보딩 백엔드 챌린지 신청공고를 보게되었다.

현재 이미 재직중이고, 이직도 딱히 크게 고려하지 않고 있지만 공부하는 내용이 나의 기술스택과 (Nodejs, Nestjs) 맞는 내용이고 과정이 도움이 될거같아 신청하게 되었다.

함수형 프로그래밍이란 ?

함수형 프로그래밍은 여러 프로그래밍 패러다임 중 하나이다.

프로그래밍 패러다임을 크게 나누면,

  • 명령형 프로그래밍
    • 절차지향 프로그래밍: 수행되어야 할 순차적인 처리 과정을 포함하는 방식
    • 객체지향 프로그래밍: 객체들의 집합으로 프로그램의 상호작용을 표현
  • 선언형 프로그래밍
    • 함수형 프로그래밍: 순수 함수를 조합하고 소프트웨어를 만드는 방식

함수형 프로그래밍의 특징

  • 함수형 프로그래밍은 과정(Process)보다 결과(Result)에 관심이 많다.
  • 무엇(What)이 실행될 지를 강조한다.
  • 데이터는 불변(immutable)하다.
  • 함수형 프로그래밍은 문제를 함수로 분해(Decompose)한다.
  • 함수형 프로그래밍은 수학적 함수의 개념에 기반한다.

함수형 프로그래밍 예시

  • BAD
  • add 함수가 num을 참조하므로 순수함수가 아니기 때문에 함수형 프로그래밍이 아니다.
const init = 0;
const add = (number) => {
	return number + init;
};
add(3);
  • GOOD
const add = (number + init) => {
	return number + init;
};
add(3, init);
add(3);
  • BAD
  • 원본배열(num)을 변경하여, 데이터의 불변성을 지키지못하므로 함수형 프로그래밍이 아니다.
const num = [1, 2, 3]
const head = (arr) => {
	return arr.shift();
};

head(num);   // 1
  • GOOD
const num = [1, 2, 3]
const head = (arr) => {
	if (arr.length < 1) {
		return undefined;
	}

	return arr[0];
};

head(num);   // 1
profile
나를 위한 기록

0개의 댓글