함수형 프로그래밍 FP

moontag·2022년 4월 13일
0

CS

목록 보기
2/3

함수형 프로그래밍 FP(Functional Programming)란 ?

프로그래밍 패러다임(Programming Paradigm)이다. 해당 프로그래밍 패러다임의 사고방식으로 코딩을 작성하는 스타일인 것이다.
side effect 피해서 순수함수로 표현하는 방식으로, 함수단위의 코드 재사용이 용이하다. 여기서 순수함수란 인풋만을 사용하여 아웃풋을 리턴하는 것이다

특징

  1. map.reduce.filter같은 고차함수 사용
    고차함수란? 인풋으로 다른함수를 받거나/ 아웃풋으로 다른함수를 반환하는 것이다. for문, while문 대신에 고차함수를 사용한다.

  2. immutable 불변성으로 의도치 않은 버그를 막을 수 있다
    모든데이터를 불변데이터로 생각하여 map,filter,reduce로 새로운 데이터를 반환하여 사용한다

  3. 영속 데이터 구조
    데이터의 사본이 계속 생겨 효율이 떨어지는 문제가 있었다
    => 구조 공유 방식. 트리구조 , map , hashmap으로 이를 개선한다
    유명라이브러리 : mori, immutable.js, ramda, lodash, underscore





1. 명령형 프로그래밍

: 어떻게(How)의 관점에서 프로그래밍 하는 것

  • 절차지향 프로그래밍
    ex) C, C++
  • 객체지향 프로그래밍
    ex) C++, Java, C#


2. 선언형 프로그래밍

: 무엇(What)의 관점에서 프로그래밍 하는 것

  • 함수형 프로그래밍

<함수형 프로그래밍 지원 언어>

  • Lisp 리스프
  • Scalar 스칼라
  • Closure 클로저 : JVM,CLR, 자바스크립트 엔진에서 실행
  • haskell 하스켈 등...




명령형 vs 선언형 코드 비교

명령형 imperative 코드

  • 원하는 결과값에 어떻게(How) 도달하느냐.
  • 요구사항에 필요한 단계를 하나씩 적는 것
  • 코드가 길어져서 가독성이 안좋다. 그래서 버그나 실수 있을 수도 있고, 동료가 이해하기 어려울 수 있다.
function spaceToHeart(text) {
  let result = "";
  for (let i = 0; i < text.length; i++){
  	if(text[i] === " "){
    	result += "💔";
    } else {
    	result += text[i];
    }
  }
  return result;
}



선언형 declarative 코드

  • 함수형 프로그래밍
  • 원하는 결과값이 무엇(What)인가.
  • 가독성이 좋아진다
  • .filter .replaceAll 처럼 함수명을 알고 있어야 한다는 단점이 있다
function spaceToHeart(text) {
	return text.replaceAll(" ", "💔");
}






참고

Woldan Blog
인프런 - 자바스크립트로 알아보는 함수형 프로그래밍 (ES5)

An introduction to functional programming -Mary Rose Cook

[프로그래밍] 함수형 프로그래밍(Functional Programming) 이란? - [MangKyu's Diary:티스토리]

함수형 프로그래밍이란?

profile
터벅터벅 나의 개발 일상

0개의 댓글