함수형 프로그래밍
프로그래밍의 여러 종류 중 하나이며, 함수(function)을 이용해 프로그래밍을 하는 것 입니다.
=> 함수로만 이수어진 프로그램이라고 생각하면 편할 것 같습니다.
함수형 프로그래밍의 특징
함수형 프로그램은 다음과 같은 특징을 가지고 있습니다.
- 불변 데이터(Immutable Data)
- 1급 함수(First-Class Function)
- 순수 함수(Pure Function)
불변 데이터(Immutable Data)
함수형 프로그래밍을 가능하게 하는 요소 중 하나가 바로 Immutable Data입니다.
한번 정해진 값은 바뀌지 않습니다.
List를 하나 만들어 항목을 추가/삭제 할때 추가가 필요하면 추가항목이 입력 된 List를 만들고 삭제가 필요하면 삭제항목이 제거 된 List를 만드는 식입니다.
이러한 자료구조를 Persistent Data Structure라고 부릅니다.
1급 함수(First-Class Function)
- 컴퓨터 과학자 Christopher Strachey가 만든 조어
- 함수가 런타임에도 생성
- 함수의 인자로 전달되고 함수의 결과로서 리턴되며, 변수에 할당
- 함수도 데이터처럼 구성이 가능해짐(Composability)
자바에서는 메서드가 1급으로 처리되지 않기에, 메서드만 따로 생성하거나, 메서드 자체를 생성자나 변수나 파라미터등에 전달 할 수 없습니다.
반면 자바스크립트에서는 아래와 같은 코드가 가능합니다.
function someFunc(){ ... } otherFunc(someFunc) //함수 자체를 파라미터로 전달 가능 var a = someFunc; // 함수를 변수에 할당 가능
즉 자바스크립트에서는 함수를 1급으로 처리하고 있습니다
순수함수(Pure Function)
주어진 입력으로 계산하는 것 이외의 프로그램의 실행에 영향을 미치는 부수 효과(Side Effect)가 없는 함수를 순수 함수라고 합니다.
예를들면 count, length 함수는 임의 문자열이나 배열에 대해서 길이를 반환하며, 그 외의 일은 일어나지 않습니다.
Side Effect (부수효과)
입력받은 값의 결과를 돌려주는 것 이외의 다른 어떤 일을 수행하는것
- 변수를 수정 - 자료 구조를 제자리에서 수정 - 객체의 필드를 설정 - 예외(Exception)를 던지거나 오류를 내면서 실행 중단 - 콘솔에 출력하거나 사용자의 입력을 읽어들임 - 파일에 기록하거나 파일에서 읽어들임 - 화면에 출력
함수형 프로그래밍의 장점
- 순수 함수들로 작성하면 모듈성이 증가
- 모듈성으로 인해 생기는 장점
- 검사(Test)가 쉬워짐
- 재사용
- 병렬화
- 일반화
- 분석이 쉬워짐
- 버그가 생길 여지가 적다
- 가독성과 유지 관리 편의성이 향상
- 함수를 사용하기 때문에 반복되는 개발이 쉬워진다
왜 함수형 프로그래밍인가?
- 멀티 코어가 기본이 되면서 ‘동시성’ 처리에 함수형 프로그래밍이 강점을 보임
- 불변값을 주로 다루기 때문에 Side Effect가 적어 동시성 처리가 쉬워짐
- 코드 이해하기 쉬움
- 유지보수 쉬움
역시 글보다는 코딩하면서 배우는게 최고인 것 같습니다 :)
출처: https://blog.sonim1.com/113
'소소한 개발 이야기' 카테고리의 다른 글
AJAX란 무엇인가 ? (1) | 2021.03.03 |
---|---|
비동기 프로그래밍 ( Asynchronous ) ? (0) | 2021.03.02 |
OOP와 함수형 프로그래밍의 차이점 (0) | 2021.02.23 |
OOP ( 객체지향 프로그래밍) 이란 ? (1) | 2021.02.18 |
브라우저 렌더링 과정 (0) | 2021.02.17 |