강의의 중반부를 들으며 궁금증이 생겨 이리저리 찾아보다가 이제서야 이 강의의 주제인 <함수형 프로그래밍> 이 뭔지에 대한 개념이 적립되어 반성하며 이제서야 글을 써본다.
"함수형 프로그래밍"이 뭐지? 라는 근본적인 의문을 품기 전에
그냥 막연히 "함수로 묶는건가? 최대한 함수를 많이 쓰는건가?" 하는 이런 안일한 생각을 했던 것 같다.
위키백과에서는 함수형 프로그래밍을 다음과 같이 정의한다.
함수형 프로그래밍(Functional Programming)
자료 처리를 수학적 함수의 계산으로 취급하고 상태와 가변 데이터를 멀리하는 것
명령형 프로그래밍과 비교하면 이해하기 쉬운데, 먼저 이러한 프로그래밍 패러다임들에 대해 간단하게 이해해보자.
프로그래밍 패러다임(Programming Paradigm)
코드를 작성할 때 따르는 규칙의 집합
JavaScript는 다중 패러다임 언어이며 다양한 프로그래밍 패러다임에 따라 작성될 수 있다.
프로그래밍 패러다임은 크게 명령형 프로그래밍과 선언형 프로그래밍으로 나눌 수 있다.
◎ 명령형 프로그래밍 : How? (What?(X))
컴퓨터가 수행할 명령들을 순서대로 써 놓음.
○ 절차 지향 프로그래밍
○ 객체 지향 프로그래밍
◎ 선언형 프로그래밍 : What? (How?(X))
○ 함수형 프로그래밍
명령형 프로그래밍에서는 프로그램의 상태 값을 바꿀 수 있는 위험이 높다. (외부에서 값이 변경될 확률)
따라서 명령형 함수는 참조 투명성이 없고, 같은 코드라도 실행되는 프로그램의 상태에 따라 다른 결과값을 낼 수 있다.
이와는 반대로 함수형 코드에서는 함수의 출력값이 함수에 입력된 인수에만 의존한다. (인수x에 같은 값을 넣고 함수f를 호출하면 항상 f(x)라는 결과가 나옴.)
부작용을 제거하면 프로그램의 동작을 이해하고 예측하기 훨씬 쉬워지므로 이점이 함수형 프로그래밍으로 개발하려는 핵심 동기이다.
도움이 되었던 글 링크를 첨부하며 마무리 지어본다.
What is Functional Programming? A Beginner's JavaScript Guide
JavaScript is a multi-paradigm language and can be written following different programming paradigms. A programming paradigm is essentially a bunch of rules that you follow when writing code. These paradigms exist because they solve problems that programme
www.freecodecamp.org