본문 바로가기
프로그래밍언어 & 프레임워크/JavaScript

[노마드코더]반드시 "함수형 프로그래밍"을 알아야 할까?

by 공부하는개미 2022. 3. 27.
반응형

 

참고자료

  • 유튜브 노마드코더 채널 [반드시 "함수형 프로그래밍"을 알아야 할까?] => 링크

 

 


 

 

 

😎 개발자는 반드시 함수형 프로그래밍을 배워야 한다!

  • '함수형 프로그래밍'은 코드 작성 '스타일'이라고 할 수 있다.
  • 함수형 프로그래밍을 배우고 컨셉과 아이디어를 좋아한다면, 해당 개념을 좋아하는 언어에 적용할 수 있다.
  • Clojure와 Scala는 함수형 프로그래밍으로 아예 설계된 언어이다.
  • 배워두면 무슨 언어로 코드를 작성하든 도움이 된다!
  • 이미 좋은 기술과 경력을 갖춘 시니어 개발자들은 점진적으로 함수형 언어를 사용하게 된다.
    => 점차 커리어가 발전함에 따라서 함수형 언어를 사용
  • 함수형 방식에서는 버그 자체가 발생하기 어렵다.
    => 함수형 코드에서는 버그가 쉽게 숨겨지지도 않는다.

 

 

 

😀 함수형 프로그래밍은 일종의 새로운 사고방식을 배우는 것이다.

  • 코드를 쓰고 설계하는 새로운 관점
  • 배워두면 더 나은 개발자가 될 것이다.
  • 니꼬쌤은 시작부터 함수형 프로그래밍에 따라 코딩을 쓰는 것이 더 깔끔하다고 생각

 

 

 

😶 명령형(imperative) 코드와 선언형(declarative) 코드의 차이

 

선언형 코드

Make em a sandwich 🥪

 

  • 원하는 결과를 표현하기 위해 코드가 작성된다.
  • 선언형 언어의 예시로 CSS가 있다.
  • 선언형 코드는 원하는 결괏값을 선언하는 것이다.
  • 필요한 것을 달성하는 과정을 하나하나 기술하는 것보다 필요한 것이 어떤 것인지 기술하는 데 방점을 두고
    애플리케이션의 구조를 세워 나가는 프로그래밍 구조입니다.

 

 

선언형 코드 예시(JS)

function spaceToHeart(text) {
	return text.replaceAll(" ", "💜");
}
  • 명령 함수와 동일한 결과를 갖지만, 읽기가 더 쉽다
  • 함수가 무슨 역할을 하는지 이해하기 편하다.

 

 

 

 

 

명령형 코드

1. 🍞 toast
2. 🧀  + 🍅 + 🥓 + 🥗
3. combine
4. done!!! 🥪
  • 원하는 결과를 얻기 위해 필요한 지침에 따라 코드가 작성된다.
  • 요구사항을 충족하는데 필요한 모든 단계를 하나씩 적어야 함.
  • 명령형 프로그래밍은 무엇을 어떻게 할 것인가에 가깝다.
  • 코드로 원하는 결과를 달성해 나가는 과정에만 관심을 두는 프로그래밍 스타일

 

 

명령형 코드 예시(JS)

function spaceToHeart(text) {
	let result = "";			 // 1. 최종 결과를 보유할 변수 선언 및 초기화
    for (let i = 0; i < text.length; I++) {	 // 2. 지우려는 텍스트의 각 문자 내부의 살펴보기
    	if (text[i] === " ") {			 // 3. 문자가 공백인지 여부 체크
        	result += "💜";                 // 4. 문자에 공백이 있다면 하트를 추가
        } else {
        	result += text[i];		// 4. 문자에 공백이 없다면 text의 i번째 문자 추가
        }
    }
    return result;				// 5. 완료 후 결과 리턴
}

 

명령형 코드의 단점

  • 코드가 길어진다.
  • 요구사항의 구현이 개발자인 우리에게 달려있기 때문에 버그나 실수가 더 생길 수 있다.
  • 팀 동료들이 이해하기 어려울 수 있다.
  • 함수가 정확히 무엇을 하려고 하는지 한 줄 한줄 자세히 읽어야 한다.

 

 

 

🤔 느낀 점 혹은 생각

  • 선언적 접근 방식이 읽기 쉽고 더 직관적이라고 느꼈습니다.
  • 함수형 프로그래밍에 대해 1도 모르고 있었다는 것을 알게 되었습니다.
  • 둘 다 공부를 하면서 작성했던 코드들이라는 것을 알게 되었습니다.

 

반응형