롸?

함수형 프로그래밍 본문

WEB/JavaScript & jQuery

함수형 프로그래밍

허니버터새우깡 2020. 3. 2. 14:17

함수형 프로그래밍

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

함수형 코드에서는 함수의 출력값은 그 함수에 입력된 인수에만 의존하므로 인수 x에 같은 값을 넣고 함수 f를 호출하면 항상 f(x)라는 결과가 나온다. 부작용을 제거하면 프로그램의 동작을 이해하고 예측하기가 훨씬 쉽게 된다.

 

명령형 프로그래밍

  함수형 프로그래밍에 반대되는 개념으로 전통적인 C, C++, Java 등이 이에 속한다.

  프로그래밍의 상태와 상태를 변경시키는 구문의 관점에서 연산을 설명하는 프로그래밍 패러다임의 일종이다. 자연 언어에서의 명령법이 어떤 동작을 할 것인지를 명령으로 표현하듯이, 명령형 프로그램은 컴퓨터가 수행할 명령들을 순서대로 써 놓은 것이다.

  명령형의 함수는 프로그램의 상태의 값을 바꿀 수 있는 부작용이 생길 수 있다. 이 때문에 명령형 함수는 참조 투명성이 없고, 같은 코드라도 실행되는 프로그램의 상태에 따라 다른 결과값을 낼 수 있다.

 

 

"명령형 프로그래밍은 어떻게 할 것인가(How)를 표현하고,
                                                                                       선언형 프로그래밍은 무엇을 할 것인가(What) 표현한다."

 

 

 

명령형 프로그래밍 코드 예제

int x = 1;
int y = 2;
if (y < 3)
    x = x + 4;
else
    x = x - 5;

 

  명령형 프로그래밍은 실제 컴퓨터가 작동하는 방식과 유사하다. 프로그램을 실행할 때 컴퓨터의 메모리라고 생각할 수 있는 어떤 상태(state)가 존재하고, 코드를 실행하면서 그 상태를 변경해나간다. 위 프로그램의 실행 과정은 다음과 같다.

  1. x와 y 모두 초기화되지 않은 상태

  2. x는 1이고 y는 초기화되지 않은 상태

  3. x는 1이고 y는 2인 상태

  4. 현 상태에서 y < 3이 true이므로 다음 줄로 이동

  5. x는 5이고 y는 2인 상태

 

 

함수형 프로그래밍 코드 예제

let x = 1 in
  let y = 2 in
    if y < 3 then x + 4 else x - 5

  대표적인 함수형 언어 중 하나인 OCaml 코드이다. 프로그램은 하나의 식이며, 실행 결과는 그 식을 계산한 결과이고, 실행할 때 상태는 필요하지 않다. 위 프로그램의 실행 과정은 다음과 같다.

  1. x는 1일 때, let y = 2 in if y < 3 then x + 4 else x - 5 계산

  2. x는 1, y는 2일 때, if y < 3 then x + 4 else x - 5 계산

  3. x는 1, y는 2일 때 y < 3을 계산하면 true이므로 if true then x + 4 else x - 5 계산

  4. x는 1, y는 2일 때, x + 4 계산

  5. 5

 

 


참고 

1.  위키피디아 명령형 프로그래밍

2.  위키피디아 함수형 프로그래밍

3.  https://velog.io/@kyusung/%ED%95%A8%EC%88%98%ED%98%95-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-%EC%9A%94%EC%95%BD

'WEB > JavaScript & jQuery' 카테고리의 다른 글

자바스크립트 화살표 함수  (0) 2020.03.12
jQuery  (0) 2020.03.12
자바스크립트 이벤트 핸들링  (0) 2020.03.11
자바스크립트 스코프 호이스팅  (0) 2020.03.10
일급 함수  (0) 2020.03.02
Comments