함수 프로그래밍
수학 함수와 같은 원리의 함수들로 프로그램을 구성하는 기법
코드를 간결하게 작성할 수 있어 개발 시간이 단축된다.
함수는 부작용(Side Effects)을 발생시키지 않고 단지 입력을 받아들여 출력을 구한다.
함수형 프로그래밍 언어의 특징
불변성(Immutability)
변경 가능한 상태를 최대한 제거하려고 한다.
순수 함수를 지향하는 프로그래밍 언어이다. 즉, 부작용이 없는 함수이다.
* 순수 함수 : 내부 상태를 갖지 않아, 같은 입력에 대해 항상 같은 출력이 보장되는 함수이다.
- 프로그램의 검증이 쉽다
오직 입력 값의 영향만 받기 때문에 테스트 코드를 작성하기 쉽고, 개발자가 예측하지 못하는 시점에 변경될 수 있는 내부 상태가 없기 때문에 프로그램이 예측 가능해진다.
- 최적화가 가능하다.
결과가 함수의 호출 순서와는 관계 없이 오로지 함수의 입력 값에만 의존하기 때문에, 필요한 경우 런타임이 자발적으로 코드의 실행 순서를 변경하여 성능을 향상시킬 수 있다.
- 동시성 프로그램을 작성하기 쉽다
동시성 프로그램은 여러 스레들이 프로그램 상태를 공유하기 때문에 작성하기 어렵지만, 함수형 프로그래밍 언어는 변경 가능한 상태를 배제하기 때문에 유용하다.
First-class, higher-order functions
변수에 할당할 수 있고, 다른 함수의 인자로 전달할 수 있으며, 다른 함수의 결과 값으로 반환될 수 있는 함수이다.
함수를 하나의 값처럼 다룰 수 있기 때문에 함수를 재사용 할 수 있고, 핵심 코드를 boilerplate 없이 간단하게 표현할 수 있다.
고차 함수(Higher-order function)의 표현을 가능하게 한다.
* 고차 함수 : 인수로 전달된 함수를 이용하여 만든 새로운 함수. 부분 적용(partial application)이나 커링(currying)을 가능하게 만들어 프로그래머가 프로그램을 간결하게 작성할 수 있게 한다.
Lazy evaluation(지연 연산)
어떤 값이 실제로 쓰이기 전까지 그 값의 계산을 최대한 미루는 것
값을 미리 계산하여 저장하지 않기 때문에 공간을 절약할 수 있다
값이 꼭 필요할 때만 계산하기 때문에 프로그램의 성능 향상에 도움이 된다.
무한수열을 표현할 수 있는 장점도 있습니다.
- 메모이제이션과 함께 사용되어 다음에 해당 값이 필요할 때는 계산하지 않고 캐싱해 놓았던 값을 재사용한다.
-출처
http://www.kocw.net/home/cview.do?cid=3ae6cf7ccc7033c2
프로그래밍언어론
많은 종류의 프로그래밍 언어들이 있고, 제마다 특징들이 있다. <br/><br/>본 강좌에서는 프로그래밍 언어들의 공통사항을 공부하여 응용에 적합한 언어를 선택할 수 있게 하며, 새로운 언어를 쉽
www.kocw.net
'CS' 카테고리의 다른 글
Stack vs Queue (0) | 2022.09.23 |
---|---|
MVC 패턴 (0) | 2022.09.16 |
TDD (0) | 2022.09.16 |
RESTFul API (0) | 2022.09.16 |
객체 지향 프로그래밍 (0) | 2022.09.16 |