함수형 프로그래밍-소개
함수형 프로그래밍 언어는 기호 계산 및 목록 처리 응용 프로그램을 처리하도록 특별히 설계되었습니다. 함수형 프로그래밍은 수학 함수를 기반으로합니다. 인기있는 함수형 프로그래밍 언어로는 Lisp, Python, Erlang, Haskell, Clojure 등이 있습니다.
함수형 프로그래밍 언어는 두 그룹으로 분류됩니다.
Pure Functional Languages− 이러한 유형의 기능적 언어는 기능적 패러다임을 지원합니다. 예를 들면-Haskell.
Impure Functional Languages− 이러한 유형의 기능적 언어는 기능적 패러다임과 명령형 프로그래밍을 지원합니다. 예 : LISP.
함수형 프로그래밍 – 특성
함수형 프로그래밍의 가장 두드러진 특징은 다음과 같습니다.
함수형 프로그래밍 언어는 조건식과 재귀를 사용하여 계산을 수행하는 수학 함수의 개념에 따라 설계되었습니다.
함수형 프로그래밍 지원 higher-order functions 과 lazy evaluation 풍모.
함수형 프로그래밍 언어는 루프 문과 같은 흐름 제어와 If-Else 및 Switch 문과 같은 조건문을 지원하지 않습니다. 함수와 함수 호출을 직접 사용합니다.
OOP와 마찬가지로 함수형 프로그래밍 언어는 추상화, 캡슐화, 상속 및 다형성과 같은 인기있는 개념을 지원합니다.
함수형 프로그래밍 – 장점
함수형 프로그래밍은 다음과 같은 이점을 제공합니다.
Bugs-Free Code − 함수형 프로그래밍은 지원하지 않습니다. state, 따라서 부작용 결과가 없으며 오류없는 코드를 작성할 수 있습니다.
Efficient Parallel Programming− 함수형 프로그래밍 언어에는 변경 가능한 상태가 없으므로 상태 변경 문제가 없습니다. 하나는 "명령"과 같이 병렬로 작동하도록 "기능"을 프로그래밍 할 수 있습니다. 이러한 코드는 쉬운 재사용 및 테스트 가능성을 지원합니다.
Efficiency− 기능 프로그램은 동시에 실행할 수있는 독립적 인 장치로 구성됩니다. 결과적으로 이러한 프로그램이 더 효율적입니다.
Supports Nested Functions − 함수형 프로그래밍은 중첩 함수를 지원합니다.
Lazy Evaluation − 함수형 프로그래밍은 Lazy Lists, Lazy Maps 등과 같은 Lazy Functional Constructs를 지원합니다.
단점으로 함수형 프로그래밍에는 큰 메모리 공간이 필요합니다. 상태가 없기 때문에 작업을 수행 할 때마다 새 개체를 만들어야합니다.
함수형 프로그래밍은 동일한 데이터 세트에 대해 많은 다른 작업을 수행해야하는 상황에서 사용됩니다.
Lisp는 기계 학습, 언어 처리, 음성 및 시각 모델링 등과 같은 인공 지능 응용 프로그램에 사용됩니다.
임베디드 Lisp 인터프리터는 Emacs와 같은 일부 시스템에 프로그래밍 기능을 추가합니다.
함수형 프로그래밍과 객체 지향 프로그래밍
다음 표는 함수형 프로그래밍과 객체 지향 프로그래밍의 주요 차이점을 강조합니다.
함수형 프로그래밍 | OOP |
---|---|
불변 데이터를 사용합니다. | 가변 데이터를 사용합니다. |
선언적 프로그래밍 모델을 따릅니다. | 명령형 프로그래밍 모델을 따릅니다. |
초점은 "당신이하는 일" | 초점은 "당신이하는 방법"에 있습니다. |
병렬 프로그래밍 지원 | 병렬 프로그래밍에 적합하지 않음 |
그 기능은 부작용이 없습니다 | 그 방법은 심각한 부작용을 일으킬 수 있습니다. |
흐름 제어는 함수 호출 및 재귀 함수 호출을 사용하여 수행됩니다. | 흐름 제어는 루프와 조건문을 사용하여 수행됩니다. |
컬렉션 데이터를 반복하기 위해 "재귀"개념을 사용합니다. | "Loop"개념을 사용하여 수집 데이터를 반복합니다. 예 : Java의 For-each 루프 |
명령문의 실행 순서는 그렇게 중요하지 않습니다. | 명령문의 실행 순서는 매우 중요합니다. |
"데이터에 대한 추상화"및 "행동에 대한 추상화"를 모두 지원합니다. | "데이터에 대한 요약"만 지원합니다. |
프로그램 코드의 효율성
프로그래밍 코드의 효율성은 알고리즘 효율성 및 실행 속도에 정비례합니다. 좋은 효율성은 더 높은 성능을 보장합니다.
프로그램의 효율성에 영향을 미치는 요소는 다음과 같습니다.
- 기계의 속도
- 컴파일러 속도
- 운영 체제
- 올바른 프로그래밍 언어 선택
- 프로그램의 데이터 방식이 구성됩니다.
- 문제 해결에 사용되는 알고리즘
프로그래밍 언어의 효율성은 다음 작업을 수행하여 향상시킬 수 있습니다.
불필요한 코드 또는 중복 처리로 이동하는 코드를 제거합니다.
최적의 메모리와 비 휘발성 스토리지를 활용하여
해당되는 경우 재사용 가능한 구성 요소를 사용합니다.
프로그램의 모든 계층에서 오류 및 예외 처리를 사용합니다.
데이터 무결성과 일관성을 보장하는 프로그래밍 코드를 생성합니다.
디자인 로직 및 흐름을 준수하는 프로그램 코드를 개발합니다.
효율적인 프로그래밍 코드는 운영 환경에 대한 위험을 최소화하면서 리소스 소비와 완료 시간을 최대한 줄일 수 있습니다.