mingg IT

[함수형 프로그래밍] 1장 쏙쏙 들어오는 함수형 코딩에 오신 것을 환영합니다 본문

FrontEnd

[함수형 프로그래밍] 1장 쏙쏙 들어오는 함수형 코딩에 오신 것을 환영합니다

mingg123 2023. 9. 17. 20:26

1장  쏙쏙 들어오는 함수형 코딩에 오신 것을 환영합니다

 

함수형 프로그래밍

 

  • 수학 함수를 사용하고 부수 효과를 피하는 것이 특징인 프로그래밍 패러다임
  • 순수 함수만 사용하는 프로그래밍 스타일

 

부수 효과

 

  • 함수 리턴값 이외에 하는 모든 일
  • ex) 이메일 보내기, 파일 읽기, 불빛을 깜빡이기, 웹 요청하기, 자동차에 브레이크 밟기 

 

함수형 프로그램에서 중요한 것은 액션, 데이터, 계산을 구분 하는 것이다. 

 

액션

 

  • 호출하는 시점과 횟수에 의존함 
  • ex) sendEmail, saveUserDB, getCurrentTime()

 

 

계산

 

  • 계산은 입력 값을 계산해 출력하는 것
  • 같은 입력값은 항상 같은 출력값이 옴
  • 어디서 계산해도 결과는 같고 외부에 영향을 주지 않음
  • 테스트가 쉬움. 언제든지 몇번을 불러도 안전함 
  • ex) sum(numbers), string_lengt(str)

 

 

데이터

 

  • 이벤트에 대한 사실을 기록한 것 
  • 실행하지 않아도 데이터 자체로 의미가 있음 
  • ex) [1, 10, 2, 45], {"firstname": "Eric"}

 

액션, 계산, 데이터 구분 예시

 

유저가 작업 완료를 표시하면 서버에서 이메일을 보내주는 서비스 

  • 1단계: 사용자가 작업 완료 표시를 함 => 액션 (실행 횟수에 의존 하기 때문)
  • 2단계: 클라이언트가 서버로 메세지를 보냄 => 메세지를 보내는건 액션. 메세지는 데이터 
  • 3단계: 서버가 메세지를 받음 => 액션 (메세지를 받는 것은 횟수에 의존하기 때문)
  • 4단계: 서버가 데이터베이스를 변경 => 액션 (내부 상태를 바꾸는 것)
  • 5단계: 서버가 누구에게 알림을 보낼지 결정 => 계산 (입력값이 같다면 서버는 항상 같은 결정을 내림) 
    • 아니 이건 좀 의문인게 부르는 시점에 따라 알림을 보내고 말고가 달라질 수도 있지 않나? 
  • 6단계: 서버가 이메일로 알림을 보냄 => 이메일 보내는 것은 액션

 

액션, 계산, 데이터 구분시 장점

 

  • 함수형 프로그래밍은 분산 시스템에 잘 어울림 
  • 시간에 따라 바뀌는 값을 모델링할 때 실행시점이나 횟수에 의존하는 코드를 없에면, 코드를 더 쉽게 이해할 수 있음 
  • 액션은 실행 시점과 횟수에 의존하기 때문에 문제가 되지만, 코드 전체에 영향을 주지 않도록 격리 시키면 됨 

 

 

 

 

 

Comments