당근먹는하니
귀엽고 행복해
당근먹는하니
전체 방문자
오늘
어제
  • 분류 전체보기 (274)
    • 다람쥐🐿 (26)
    • C++ 공부빵야 (7)
    • 공부👻 (5)
    • 프론트엔드✏️ (228)
      • 코드캠프 (120)
      • 팀 프로젝트✨ (31)
      • 개인공부 (67)
    • 프론트엔드 - 바닐라js (7)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • next.js
  • 코딩 부트캠프
  • CSS
  • 리액트
  • 프로그래머스
  • 배열
  • algorithm
  • javascrpit
  • 부트캠프
  • 배포
  • refreshtoken
  • 공통 컴포넌트
  • ssg
  • graphql
  • 알고리즘
  • HTML
  • 코딩
  • 팀플
  • JS
  • javascript
  • typescript
  • 프론트엔드
  • 팀 프로젝트
  • 회고
  • emotion
  • React-hook-form
  • 코드캠프
  • 자바스크립트
  • 팀프로젝트
  • react

최근 댓글

최근 글

티스토리

250x250
반응형
hELLO · Designed By 정상우.
당근먹는하니

귀엽고 행복해

프론트엔드✏️/개인공부

함수형 프로그래밍?

2022. 7. 27. 23:47
728x90
반응형

 

  1. 함수형 프로그래밍만을 위한 함수형에 특화된 언어도 있고, 자바 스크립트, 자바, 코틀린, 고, C++ 등... 객체지향+함수형 지원하는 언어도 있다. 
  2.  1958년 LISP 라는 첫번째 함수형 언어가 나왔다. 객체지향언어보다 일찍 나왔다.
  3.  수학의 원리와 밀접하게 연관이 있어서 배우는데 시간이 걸리고 난해할 수 있다.
  4.  그래서 사람의 사고방식과 가장 가까운 절차지향프로그래밍, 객체지향 프로그래밍이 더 보편적으로 쓰였다. 
  5. 하지만 요즘은 방대한 데이터를 빠르게 다뤄야하고(비트코인 등) 그러다보니 함수형 프로그래밍 언어가 다시 주목을 받기 시작했다. 

 

함수 - INPUT 넣으면 FUNCTION(처리과정) 통해 OUTPUT이 나온다. 
외부와 내부(function)은 이어져있지 않다. 

 

함수형 프로그래밍 특징, 조건

  1. 순수 함수 - 언제 선언되었는지, 어떤값을 넣었는지에 영향을 받지 않아야 한다.
  2. 비상태 불변성 - 전달된 데이터 자체를 변경하는 것이 아니라 새로운 버전의 새로운 대상을 만들어서 반환해야 한다. (외부의 것을 건들지 않음. 불변성. 멀티 쓰레딩 환경에서도 안정적으로 작동할 수 있다.)
  3. expressions Only - if, switch, for 등 쓰지 않아야 한다. for로 배열을 하나하나 돌지 않는다. map으로 순회한다.  <- 왜?
  4. 일급함수, 고차함수 - 함수를 변수에 할당하거나, 함수에 인자로 전달하는 등의 일을 할 수 있는 일급함수 / 함수 자체를 인자로 전달하거나 함수에서 또 다른 함수를 리턴하는 고차함수 이 두가지 속성을 갖고 있어야 한다. 

 

함수형 프로그래밍에서 가장 중요한 Monad ... ! 

 

클래스, 함수형 - 목적에 따라, 또는 여러가지를 병합하여 사용하는게 맞다. 

 

 

 

 영상을 봤는데 일단 왜 저런 특징이나 조건을 갖게 되었는지가 궁금하다. 특히 if, switch, for 등을 쓰지 않아야 한다는 것? 사실 Expressions Only 라는 말 자체가 와닿지 않는다. 그리고 일급함수, 고차함수의 두가지 속성을 꼭 가지고 있어야 한다는 것인지...? 그러면 조건에 맞추기가 어렵지 않나? 이유도 궁금하다. 

 C++을 배울땐 다 클래스 형식으로 했는데, 부트캠프와서 자바스크립트를 배울 땐 전부 함수형이었던 것 같다. 근데 저 조건을 맞춰서 사용하고 있는 것 같진 않다... 그리고 자료를 찾다보면 거의 다 클래스형으로 되어있는데, 난 클래스형을 아직 잘 다루지 못한다는 문제도 있다. 일단 근본적인 차이를 잘 모르겠다. 아예 OOP에 대한 개념이 제대로 잡혀있는 것 같지가 않다. C++에서부터 진짜 중요시 여기던 개념인데 아직도 정립이 안됐다니 .. .ㅠ_ㅠ OOP부터 공부해보자...! 

 

 

https://youtu.be/4ezXhCuT2mw

 

728x90
반응형
저작자표시 비영리 동일조건 (새창열림)

'프론트엔드✏️ > 개인공부' 카테고리의 다른 글

공통 컴포넌트 만드는 중  (0) 2022.09.05
[react-query] 리액트 쿼리  (0) 2022.09.01
[알고리즘] 최소직사각형  (0) 2022.08.20
부트캠프 84일차, 팀 프로젝트 발표날  (0) 2022.08.03
에러잡기  (0) 2022.08.02
    '프론트엔드✏️/개인공부' 카테고리의 다른 글
    • [react-query] 리액트 쿼리
    • [알고리즘] 최소직사각형
    • 부트캠프 84일차, 팀 프로젝트 발표날
    • 에러잡기
    당근먹는하니
    당근먹는하니

    티스토리툴바