728x90
반응형
- 함수형 프로그래밍만을 위한 함수형에 특화된 언어도 있고, 자바 스크립트, 자바, 코틀린, 고, C++ 등... 객체지향+함수형 지원하는 언어도 있다.
- 1958년 LISP 라는 첫번째 함수형 언어가 나왔다. 객체지향언어보다 일찍 나왔다.
- 수학의 원리와 밀접하게 연관이 있어서 배우는데 시간이 걸리고 난해할 수 있다.
- 그래서 사람의 사고방식과 가장 가까운 절차지향프로그래밍, 객체지향 프로그래밍이 더 보편적으로 쓰였다.
- 하지만 요즘은 방대한 데이터를 빠르게 다뤄야하고(비트코인 등) 그러다보니 함수형 프로그래밍 언어가 다시 주목을 받기 시작했다.
함수 - INPUT 넣으면 FUNCTION(처리과정) 통해 OUTPUT이 나온다.
외부와 내부(function)은 이어져있지 않다.
함수형 프로그래밍 특징, 조건
- 순수 함수 - 언제 선언되었는지, 어떤값을 넣었는지에 영향을 받지 않아야 한다.
- 비상태 불변성 - 전달된 데이터 자체를 변경하는 것이 아니라 새로운 버전의 새로운 대상을 만들어서 반환해야 한다. (외부의 것을 건들지 않음. 불변성. 멀티 쓰레딩 환경에서도 안정적으로 작동할 수 있다.)
- expressions Only - if, switch, for 등 쓰지 않아야 한다. for로 배열을 하나하나 돌지 않는다. map으로 순회한다. <- 왜?
- 일급함수, 고차함수 - 함수를 변수에 할당하거나, 함수에 인자로 전달하는 등의 일을 할 수 있는 일급함수 / 함수 자체를 인자로 전달하거나 함수에서 또 다른 함수를 리턴하는 고차함수 이 두가지 속성을 갖고 있어야 한다.
함수형 프로그래밍에서 가장 중요한 Monad ... !
클래스, 함수형 - 목적에 따라, 또는 여러가지를 병합하여 사용하는게 맞다.
영상을 봤는데 일단 왜 저런 특징이나 조건을 갖게 되었는지가 궁금하다. 특히 if, switch, for 등을 쓰지 않아야 한다는 것? 사실 Expressions Only 라는 말 자체가 와닿지 않는다. 그리고 일급함수, 고차함수의 두가지 속성을 꼭 가지고 있어야 한다는 것인지...? 그러면 조건에 맞추기가 어렵지 않나? 이유도 궁금하다.
C++을 배울땐 다 클래스 형식으로 했는데, 부트캠프와서 자바스크립트를 배울 땐 전부 함수형이었던 것 같다. 근데 저 조건을 맞춰서 사용하고 있는 것 같진 않다... 그리고 자료를 찾다보면 거의 다 클래스형으로 되어있는데, 난 클래스형을 아직 잘 다루지 못한다는 문제도 있다. 일단 근본적인 차이를 잘 모르겠다. 아예 OOP에 대한 개념이 제대로 잡혀있는 것 같지가 않다. C++에서부터 진짜 중요시 여기던 개념인데 아직도 정립이 안됐다니 .. .ㅠ_ㅠ OOP부터 공부해보자...!
728x90
반응형
'프론트엔드✏️ > 개인공부' 카테고리의 다른 글
공통 컴포넌트 만드는 중 (0) | 2022.09.05 |
---|---|
[react-query] 리액트 쿼리 (0) | 2022.09.01 |
[알고리즘] 최소직사각형 (0) | 2022.08.20 |
부트캠프 84일차, 팀 프로젝트 발표날 (0) | 2022.08.03 |
에러잡기 (0) | 2022.08.02 |