티스토리 뷰
인프런 / [무료] 자바스크립트로 알아보는 함수형 프로그래밍 / 섹션1.
함수형 프로그래밍 정의, 순수함수
함수형 프로그래밍의 정의들 (마이클 포커스 [클로저 프로그래밍의 즐거움])
- 함수형 프로그래밍은 어플리케이션, 함수의 구성요소, 더 나아가 언어 자체를 함수처럼 여기도록 만들고, 이러한 함수 개념을 가장 우선순위에 놓는다.
- 함수형 사고방식은 문제의 해결 방법을 동사(함수)들로 구성(조합)하는 것
함수형 프로그래밍: 성공적인 프로그래밍을 위해 부수 효과를 미워하고 조합성을 강조하는 프로그래밍 패러다임.
- 부수효과 > 순수함수를 만든다.
- 조합성을 강조 > 모듈화 수준을 높인다.
순수함수: 값을 다루거나 변형할 때 외부의 값(인자 or 변수 값)들을 변경하지 않으면서 값을 다루는 함수.
- ex) function add(a,b) { return a + b; }
일급함수
일급함수: 변수에 함수를 담을 수 있고 함수가 함수를 인자값으로 받을 수 있다.
- ex) var f1 = function add(a,b) { return a + b; }
*결국 순수함수들을 많이 만들고 이 순수함수들을 조합해서 프로그래밍 하는 것을 함수형 프로그래밍이라고 하고 이런 형태의 패러다임이 권장되어진다고 함.
최신 개발 현황
요즘 개발되는 어플리케이션의 경우 아래의 기능들을 모두 담고 있는 경우가 많다고 함.
재미 / 실시간성: 라이브 방송, 실시간 댓글, 협업, 메신저 등
독창성 / 완성도: 애니메이션, 무한 스크롤 등
동시성: 비동기 I/O, CSP, Actor 등
반응성 / 고가용성: ELB, Auto Scaling, OTP Supervisor 등
대용량 / 정확성 / 병렬성: MapReduce, Clojure Reducers 등
복잡도 / MSA: 많아지고 세밀해지는 도구들
=> 함수형 프로그래밍이 중요시 됨
- 향상된 하드웨어 성능, 컴파일러, 함수형 프로그래밍 기술, 성공적인 적용 사례와 영향 등
함수형 프로그래밍 vs 객체지향 프로그래밍
함수가 먼저나오느냐, 객체가 먼저나오느냐에 따라 나뉨.
객체지향 프로그래밍은 데이터를 먼저 구성하고 그 데이터에 맞는 메서드를 구성함.
함수형 프로그래밍은 함수를 먼저 구성하고 그 함수에 맞게 데이터를 구성함.
예를 들어, 위와 같은 경우 객체지향 프로그래밍은 동물을 왼쪽, 오른쪽으로 이동시키는 클래스를 만들고 오리와 강아지그 해당 클래스를 상속받아서 사용한다면, 함수형 프로그래밍은 moveLeft()와 moveRight()를 구성해놓고 그 안에 이동시킬 동물의 데이터를 넣어서 사용함.