총평 : 왠지 점점 개발이라는 것이.. 유지관리가 쉬워지는 쪽(사람의존성을 줄이는 방향)으로 빠르게 가고 있다. 최근에 AWS Lambda로만 어플리케이션 개발하는 것들이 심심찮게 나오는데, 앞으로 내가 생각하는 개발은 다음과 같이 변할 것 같다.
- Backend 에서 이루어 지는 모든 프로그래밍은 Function화 시킨다.
- Function화된 프로그래밍을 연결, 분기, 반복하는 작업은 Platform에서 한다. (AWS StepFunction, AirFlow 등 활용)
Functional Programming이란?
Functional Programming (FP)은 순수한 기능을 사용하여 유지 관리 가능한 소프트웨어를 만드는 소프트웨어 개발 접근 방식입니다. 즉, Function을 적용하고 구성하여 프로그램을 구축하는 것입니다.
FP는 Function을 변수, 인수 및 반환 값으로 사용하여 언어 지원을 활용하여 프로세스에서 우아하고 깔끔한 코드를 생성합니다. FP는 또한 불변 데이터를 사용하고 공유 상태와 같은 개념을 피합니다. 이는 변경 가능한 데이터와 공유 상태를 사용하는 객체 지향 프로그래밍(OOP)과 대조됩니다.
FP 언어는 명령문 실행보다는 선언과 표현식에 중점을 둡니다. 또한 Function은 first class Citizen 처럼 취급됩니다. 즉, 그 Function은 인수로 전달하면서 pass하거나, 다른 함수에서 반환하고, 이름에 연결하기 쉽습니다.
FP는 프로세스가 아닌 결과에 중점을 두는 반면 루프 문 및 조건문(예: If-Else)과 같은 반복은 지원되지 않습니다.
FP는 수학자 Alonzo Church가 1930년대에 개발한 함수 및 응용에 대한 간단한 표기법인 람다 미적분학( λ -calculus) 에서 발전했습니다. Scheme, Common Lisp(CL), Elixir를 포함한 많은 프로그래밍 언어와 dialects은 함수형 패러다임을 사용합니다.
C#, Java, JavaScript, PHP, Python을 비롯한 오늘날 최고의 프로그래밍 언어 중 다수는 함수형 프로그래밍을 지원하거나 FP에 있는 기능을 사용합니다.
함수형 프로그래밍이 중요한 이유
FP는 일반적으로 객체지향 프로그래밍에 비해 덜 인기가 있었지만, 머신러닝과 빅데이터의 등장으로 최근 몇 년간 인기가 높아졌습니다. 함수형 프로그래밍은 순수 함수를 효율적으로 병렬화하는 능력으로 유명합니다. 함수형 프로그래밍 패러다임을 사용하면 데이터 분석 워크플로 및 작업을 위한 코드를 더 쉽게 분석, 테스트 및 유지 관리할 수 있습니다.
Pure nature으로 인해 FP는 광범위한 데이터 세트와 기계 학습을 분석하는 데 이상적으로 적합합니다. Pure Function는 최종 결과에 영향을 미치는 외부 값 없이 항상 동일한 결과를 생성합니다.
FP를 사용하여 생성된 알고리즘은 오류를 빠르게 식별하고 수정할 수도 있습니다. 많은 프로그래머와 소프트웨어 개발자는 순수한 기능 때문에 디버깅하기 쉬운 프로그래밍 패러다임으로 작업하는 것을 선호합니다.
글래스고 대학의 John Hughes가 발표한 논문에서 강조한 것처럼 함수형 프로그래밍은 모듈성으로 인해 미래 기술 개발에서 중요한 역할을 합니다. 모듈화는 크고 복잡한 프로젝트를 더 간단한 모듈로 분해합니다. 모듈을 별도로 테스트할 수 있으므로 단위 테스트 및 디버깅에 소요되는 시간이 줄어듭니다.
“함수형 프로그래밍 언어는 고차 함수와 지연 평가라는 두 가지 새로운 종류의 접착제를 제공합니다. 이러한 접착제를 사용하면 새롭고 유용한 방식으로 프로그램을 모듈화할 수 있습니다.”라고 Hughes는 그의 논문에서 언급했습니다.
함수형 프로그래밍의 장점
1) 모듈성 – 앞서 언급했듯이 함수형 프로그래밍은 고도로 모듈화되어 있습니다. 이렇게 하면 결과 코드가 더 짧아지고 읽기 쉬워집니다. 모놀리식 코드를 해독하려고 시도한 사람이라면 누구나 그 단순성을 높이 평가할 것입니다.
2) 프로그램에서 람다 계산을 구현할 수 있습니다 . 이를 사용하여 복잡한 문제를 해결할 수 있습니다.
3) 많은 기능 구성을 포함합니다 . 여기에는 지연 맵, 지연 평가 및 목록이 포함됩니다.
4) 일부 프로그래밍 언어는 중첩된 함수를 지원합니다 . 이는 코드의 유지 관리 가능성을 크게 향상시킵니다.
5) 문제를 정확히 찾아내고 해결하기가 더 쉽습니다 . FP는 순수 함수에 의존하므로 디버깅과 단위 테스트가 더 쉬워집니다. 순수 6) 함수는 또한 코드에서 발생하는 혼란스러운 문제와 오류를 방지합니다.
7) 동시성을 안전하게 유지 – 두 개의 동시 프로세스가 동시에 동일한 데이터에 액세스하려고 시도하지 않으면 코드는 스레드로부터 안전합니다. 이 버그는 경쟁 조건입니다. 순수 함수는 프로그램의 다른 섹션과 상태를 공유하지 않으므로 경쟁 조건이 발생할 수 없습니다.
'Programming > 기타' 카테고리의 다른 글
| A Command Bus Solution for CQRS (0) | 2025.04.16 |
|---|---|
| Netflix 서버 API의 GraphQL로의 이관 여정 (0) | 2023.11.03 |
| 핵사고날 아키텍처의 설계와 구현 - 서비스 (0) | 2023.10.26 |
| 핵사고날 아키텍처의 설계와 구현 - 어댑터의 이해 (0) | 2023.10.25 |
| 핵사고날 아키텍처의 설계와 구현 - 유스케이스 작성 방법 (0) | 2023.10.25 |