'함수형 프로그래밍'은 코드 작성 '스타일'이다.
함수형 프로그래밍 개념을 어떤 프로그래밍 언어에도 사용가능하다.
clojure와 scala는 아예 함수형 프로그래밍으로 설계된 언어이고 빌트인 기능이 있어 함수형 코드를 작성하기 쉽다.(cf, Clojure, F#, Elixir, Erlang)
함수형 프로그래밍을 배우면, 프로그래밍 문제를 해결할 때 유용한 새로운 관점과 접근 방식을 얻을 수 있다.
함수형 방식에서는 버그 자체가 발생하기 어렵다.
왜 함수형프로그래밍이 좋을까?
이 이유를 알려면 명령형(imperative) 코드, 선언형(declarative) 코드간의 차이를 살펴야 한다.
*선언형 코드
원하는 결과를 표현하기 위해 코드가 작성(ex, '토스트를 만들어줘')
원하는 결과를 얻기 위해 필쵸한 지침에 따라 코드가 작성(ex, '빵을 가져오고, 토마토를 가져오고, 햄을 가져와서 합쳐줘')
선언형 코드의 예시
css - 선언형 언어(원하는 결과만 작성하면 된다.)
선언형 코드는 원하는 결과값을 선언하는 것.
명령형 코드는 결과값에 어떻게 도달하느냐에 관한 것.
js에는 filter, replaceAll 등과 같은 선언형 코드 형태의 함수가 있다.
텍스트 문자열에서 공백을 제거하고, 다른 문자로 대체하는 작업을 한다고 가정할 경우,
명령형(imperative) 코드에서는 아래와 같이 작업
function spaceToHeart(text) {
let result = "";
for (let i=0; i<text.length; i++) {
if (text === " ") {
result += "♥"
} else {
result += text[i]
}
}
return result;
}
선언형 코드에서는 아래와 같이 작업
text.replaceAll(" ", ♥);
명령형 코드는 요구사항을 충족하는데 필요한 모든 단계를 하나씩 적는다.
선언형 코드가 읽기가 더 쉽고, 함수가 무슨 역할을 하는지 이해하기가 편하다.
그리고 요구사항의 구현이 개발자에게 달려있는데, 코드를 원하는 대로(명령형 식으로) 작성하다 보면 버그나 실수가 더 생길 수 있고, 동료들이 이해하는데 어려울 수 있다.
모든 선언형 코드는 명령형코드 위에 쓰여진다고 말할 수 있다.
선언형 코드를 간혹 싫어하는 경우도 있는데, replaceAll, filter과 같은 함수들의 작동방식을 미리 알아야 하기 때문이다.
'기타' 카테고리의 다른 글
[next.js] npm i 하다 발생하는 문제 (0) | 2024.01.08 |
---|---|
24년 1주차 회고(24.1.1 ~ 1.5) (0) | 2024.01.05 |
백기선님 개발자 고민 상담 1회 (0) | 2021.12.28 |
[ 연봉 앞자리 바뀌는 개발자 이직 포트폴리오 ] (0) | 2021.09.08 |
[현대오토에버, 면접관의 눈] (0) | 2021.06.28 |