[개발 상식] 함수형 프로그래밍이란?

많이 들어본 함수형 프로그래밍. 오늘은 함수형 프로그래밍이 무엇인지 짚고 넘어갑시다.

🤔함수형 프로그래밍이란?

함수형 프로그래밍은 자료 처리를 수학적 함수의 계산으로 취급하고, 상태와 가변 데이터를 멀리하는 프로그래밍 패러다임의 하나입니다.

프로그래밍 패러다임?

프로그래머에게 프로그래밍의 관점을 갖게 해주고, 결정하는 역할을 합니다.

구조적 프로그래밍과 비구조적 프로그래밍, 명령형과 선언형, 절차적(PP)과 객체지향(OOP)과 함수형 등 여러가지가 있습니다.

🤔함수형 프로그램의 원리?

함수형 프로그래밍은 선언형 프로그래밍 패러다임을 따르고 있습니다.

계산 가능성, 결정문제, 함수정의, 함수응용과 재귀를 연구하기 위해 개발된 형식 체계인 람다 대수에 근간을 두고 있습니다. 다수의 프로그래밍 언어들은 람다 연산을 발전시킨 것으로 볼 수 있습니다.

😀함수형 프로그래밍의 장점!

  1. 불변성 : 함수형 프로그래밍은 데이터를 불변 객체로 다루고, 함수 입력에 대해 항상 동일한 출력을 반환하는 순수 함수로 작성됩니다. 부작용(side effect)를 최소화하고 예측가능성과 안정성을 높일 수 있습니다. 부작용이 없다면 디버깅과 테스트가 간편해지며 병렬 처리 최적화도 쉽게 수행합니다.
  2. 간결성 : 함수 조합을 통해 복잡한 동작을 간결하고 명확하게 표현할 수 있습니다.
  3. 재사용성 : 독립적인 함수들로 프로그램을 구성하므로 재사용성과 모듈화가 쉽습니다. 때문에 코드의 유지보수가 편리해집니다.
  4. 병렬 처리 용이 : 상태 변화가 없기 때문에 여러 스레드에서 함수를 병렬로 실행하는 것이 안전하고 쉽습니다.
  5. 스레드? 스레드(thread)란 프로세스(process) 내에서 실제로 작업을 수행하는 주체를 의미합니다. 두 개 이상의 스레드를 가지는 프로세스를 멀티스레드 프로세스(multi-threaded process)라고 합니다.

😥함수형 프로그래밍의 단점!

  1. 성능 이슈 : 일부 상황에서는 객체지향 프로그래밍 보다 성능면에서 느릴 수 있습니다. 불변 데이터를 사용할 때의 오버헤드 등이 원인이 될 수 있습니다.
  2. 오버헤드 ?: 오버헤드란 프로그램의 실행흐름에서 나타나는 현상중 하나로 예를 들어 , 프로그램의 실행흐름 도중에 동떨어진 위치의 코드를 실행시켜야 할 때 , 추가적으로 시간,메모리,자원이 사용되는 현상입니다
  3. 메모리 사용량 : 함수형 프로그래밍은 불변성을 강조하여 데이터 변경이 필요할 때마다 새로운 객체를 생성하는 경우가 많습니다. 이로 인해 메모리 사용량이 증가할 수 있습니다.
  4. 디버깅의 어려움 : 상태 변화를 최소화 하는 특성을 가진 함수형 프로그래밍의 특징 때문에 상대적으로 디버깅이 어려울 수 있습니다.

출처

 

함수형 프로그래밍 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 함수형 프로그래밍(函數型 프로그래밍, 영어: functional programming)은 자료 처리를 수학적 함수의 계산으로 취급하고 상태와 가변 데이터를 멀리하는 프로그래밍

ko.wikipedia.org

 

 

코딩교육 티씨피스쿨

4차산업혁명, 코딩교육, 소프트웨어교육, 코딩기초, SW코딩, 기초코딩부터 자바 파이썬 등

tcpschool.com

 

 

[개발용어] 오버헤드(overhead)란?

개발관련 유투브를 보다가 오버헤드란 단어가 나왔다. 뭘까? 검색해보았다. In computer science, overhead is any combination of excess or indirect computation time, memory, bandwidth, or other resources that are required to perform

donggu1105.tistory.com