본문 바로가기
프로그래밍 언어/JavaScript

[함수형 코딩] Intro

by zieunee 2023. 1. 23.
반응형

함수형 프로그래머는 코드를 세가지로 분리한다.

  1. 액션
  2. 계산
  3. 데이터
  • 호출하는 횟수나 호출하는 시점이 중요하다. (의존하고 있기 때문)
  • 계산 (sum함수)는 실행이 가능하나 데이터는 그렇지않다. 하지만 횟수는 중요하지 않음
  • 함수형 프로그래머는 코드를 액션과 계산, 데이터로 구분한다.
  • 함수형 프로그래밍은 데이터 > 계산 > 액션 순으로 선호한다.

액션

  • 실행 시점이나 횟수 또는 둘다에 의존함
  • 외부 세계에 영향을 주거나 받는다.

계산

  • 입력값으로 출력값을 만드는 것. 같은 입력값을 가지고 계산하면 항상 같은 결과값이 나온다.
  • 외부 세계에 영향을 주거나 받지 않고 실행시점이나 횟수에 의존하지 않는다.

데이터

  • 이벤트에 대해 기록한 사실
  • 사실은 변하지않기 때문에 영구적으로 기록할 수 있다.

분산 시스템

함수형 프로그래밍은 분산 시스템에 잘 어울린다.

분산 시스템 규칙은 1) 메세지 순서가 바뀔수 있고, 2)한번이상 도착할 수 있고, 도착하지 않을 수도있으며, 3)응답을 받지 못하며 무슨일이 생겼는지 알수 없다

함수형 사고란?

  1. 액션과 계산 데이터를 구분 해서 생각하는 것
  2. 일급 추상 이라는 개념

계층형 설계

가장 아래쪽 객체나 배열 잘 바뀌지 않는 것, 가운데는 바뀔수 있지만 자주 바뀌지 않는것 , 가장 위쪽에는 메뉴와 같이 자주 바뀐는 것

액션은 실행 순서에 의존하기 때문에 실행 순서가 중요하다.

타임라인을 서로 맞추지 않은 분산 시스템은 예측 불가능한 순서로 실행된다.

타임라인 커팅

타임라인 커팅은 여러 타임라인이 동시에 진행 될 때 서로 순서를 맞추는 방법이다. 타임라인 커팅은 고차동작으로 구현한다.

반응형