일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 백준알고리즘
- algorithmTest
- C
- 자바
- 재테크
- algorithmtraining
- 알고리즘 공부
- 돈
- Java
- 책알남
- 독서
- C++
- 서평
- 주식
- 책을알려주는남자
- 경제
- JavaScript
- 다독
- 성분
- 지혜를가진흑곰
- 프로그래머스 알고리즘 공부
- 알고리즘공부
- algorithmStudy
- 투자
- 자바스크립트
- 프로그래밍언어
- 화장품
- 채권
- 알고리즘트레이닝
- 독후감
- Today
- Total
탁월함은 어떻게 나오는가?
함수형 프로그래밍(functional programming or FP) 이란? 본문
함수형 프로그래밍(functional programming or FP) 이란?
Snow-ball 2021. 3. 17. 00:15함수형 프로그래밍(functional programming)
함수형 프로그래밍은 자료 처리를 수학적 함수의 계산으로 취급하고 상태와 가변 데이터를 멀리하는 프로그래밍 패러다임의 하나이다. 명령형 프로그래밍에서는 상태를 바꾸는 것을 강조하는 것과 달리, 함수형 프로그램은 함수의 응용을 강조한다. 프로그래밍이 문이 아닌 식이나 선언으로 수행되는 선언형 프로그래밍 패러다임을 따르고 있다.
함수형 프로그래밍은 1930년대에 계산가능성, 결정문제, 함수정의, 함수응용과 재귀를 연구하기 위해 개발된 형식체계인 람다 대수에 근간을 두고 있다. 다수의 함수형 프로그래밍언어들은 람다 연산을 발전시킨 것으로 볼 수 있다.
결국, 사이드이펙트(버그)가 없는 순함수형 프로그래밍(functional programming)이다.
함수형 프로그래밍은 자료 처리를 수학적 함수의 계산으로 취급하고 상태와 가변 데이터를 멀리하는 프로그래밍 패러다임의 하나이다. 명령형 프로그래밍에서는 상태를 바꾸는 것을 강조하는 것과 달리, 함수형 프로그램은 함수의 응용을 강조한다. 프로그래밍이 문이 아닌 식이나 선언으로 수행되는 선언형 프로그래밍 패러다임을 따르고 있다.
함수형 프로그래밍은 1930년대에 계산가능성, 결정문제, 함수정의, 함수응용과 재귀를 연구하기 위해 개발된 형식체계인 람다 대수에 근간을 두고 있다. 다수의 함수형 프로그래밍언어들은 람다 연산을 발전시킨 것으로 볼 수 있다.
결국, 사이드이펙트(버그)가 없는 순수 함수와 동작의 결과를 강조하는 프로그래밍의 신 패러다임이다.
순수함수는 동일한 인자를 넣었을 때 동일한 출력값을 반환하므로 안정성과 생산성을 높일 수 있다.
더불어서 OOP와 비교하여 함수의 동작부가 간결해 지기 때문에, 코드 이해도와 가독성에 큰 장점을 가지고 있다.
여기서, 순수 함수(Pure Function)이란, 동일한 입력값을 넣었을 때 항상 동일한 리턴값을 반환하며 외부에 영향을 받지 않는 함수이다.
함수형프로그래밍(FP)은 순수함수(pure function)를 조합하고 공유 상태(shared state), 변경 가능한 데이터(mutabble data) 및 부작용(side-effects)을 피하는 기본 원칙에 따라 소프트웨어를 구성하는 프로그래밍 패러다임이다.
- 객체지향은 동작하는 부분을 캡슐화해서 이해할 수 있게 하고, 함수형 프로그래밍은 동작하는 부분을 최 소화해서 코드에 대한 이해를 돕는다.
함수형 프로그래밍은 명령형이 아닌 선언전 방식으로 구현되며 흐름 제어를 명시적으로 기술하지 않고 프로그램 로직이 표현되다는 것을 의미한다.
- 명령형 프로그램은 원하는 결과를 얻기 위해 특정 단계를 설명하는 코드 라인을 사용
> for, if 에 따른 로직과 특정기느능의 메서드 호출(명령)하는 형식.
- 선언적 프로그램은 흐름 제어를 추상화하고 데이터 흐름을 설명하는 코드 라인을 사용
> 데이터가 입력으로 주어지고 데이터를 다루는 과정(흐름)을 정의하는 형식.
1급 객체(First object, First class citizen)
1급 함수라고도 하며 보통 자바스크립트를 배울때 많이 나오는 개념이며 함수형 프로그래밍의 전제 조건이기도 합니다. 일반적으로 다음과 같은 조건을 만족하는 객체를 말합니다.
- 변수나 데이터 구조안에 넣을 수 있다.
- 파라미터로 전달 할 수 있다.
- 동적으로 프로퍼티 할당이 가능.
- 리턴값으로 사용할 수 있다.
자바스크립트의 경우 함수는 객체이므로 함수가 1급객체가 되는 것이며 자바의 경우 함수형 인터페이스(추상메서드가 하나인 인터페이스)를 통해 구현이 가능하다.
함수형 프로그래밍 조건
일반적으로 함수형 프로그래밍에서는 다음 세가지 조건을 만족시켜야 한다.
1. 순수 함수(pure function)
- 순수 함수란 같은입력에 대해 항상 같은 출력을 반환하는 함수로 다음과 같은 조건을 만족하는 함수를 말한다. 멀티 쓰레드에서도 안전하며 병렬처리 및 계산도 가능하다.
1) 동일한 입력에 대해 항상 같은 값을 반환.
2) 부작용(다른 요인에 따른 결과 변경)이 없는 결과를 생성 -> 함수에서 인자를 변경하거나 프로그램의 상태를 변경 하지 않음
2. 고차 함수(High Order Function)
- 1급 함수의 서브셋으로 다음 조건을 만족하는 함수를 말한다.
1) 함수의 인자로 함수를 전달할 수 있다.
2) 함수의 리턴값으로 함수를 사용할 수 있다.
3.익명 함수(Anonymous function)
- 이름이 없는 함수를 말하며 람다식으로 표현되는 함수 구현을 말한다.
함수형 프로그래밍의 4대원칙
1. Pure Functions
2. First-Class Functions
3. Immutable Data
4. Referential Transparency
'[Snow-ball]프로그래밍(컴퓨터) > 프로그래밍 및 컴퓨터 개론 이론' 카테고리의 다른 글
ScaleUp(스케일업)과 ScaleOut(스케일아웃)의 차이 (0) | 2021.04.15 |
---|---|
stateless(무상태) 란? (0) | 2021.04.15 |
Window에서 이미 사용중 에러가 뜨는 8080포트 에러해결 (kill) (0) | 2021.03.15 |
웹페이지들을 돌아다니다보면 cmm 들어가있는 경우가 있다. (0) | 2021.03.10 |
상수(constant)와 리터럴(literal) 이란 (0) | 2021.03.10 |