함수형 프로그래밍에 대해

Mincho·2023년 8월 20일
0
post-thumbnail

javaScript의 패러다임

  웹 개발을 시작하고 프론트엔드 개발에 뛰어들며, 언어에 대해 선택해야했고 브라우저에 특화된 JS를 사용하게 되었습니다. JS를 배우며 여러 프레임워크를 적용하며 개발을 했지만 근간이 되는 JS에 대해 공부를 할 필요성을 느꼈습니다. 이에 딥다이브 스터디를 진행하여 공부하고 JS에 대해 전문성을 높여갔습니다.

많은 프로그래밍 패러다임 가운데 객체지향 프로그래밍이 당연시 되는 시대가 되었습니다. 하지만 JS에서는 객체지향을 적용하기에는 애매한 위치입니다.

 자바스크립트에 대해 좀 더 알아보고 함수형 프로그래밍에 대해 알아보겠습니다.


JavaScript의 역사

 자바스크립트에서 객체지향을 살펴보기 전에 자바스크립트가 생기게 된 이유에 대해 정리해보겠습니다.

자바스크립트의 탄생

 처음 자바스크립트가 탄생하게 된 이유는 웹 브라우저의 보조적인 기능을 수행하기 위함이였습니다. 웹의 보조적인 기능을 위한 언어로 경량 프로그래밍 언어를 도입하기로 결정되었던 것이였습니다. 이것이 바로 자바스크립트입니다. 간단한 보조 프로그래밍 언어이었기 때문에 초창기 자바스크립트는 C나 JAVA처럼 개발을 위한 언어의 느낌은 아니였습니다.

자바스크립트의 표준화와 성장

 초창기 자바스크립트는 표준화되어있지 않아 브라우저 마다 호환이되지 않는 문제가 발생하였습니다. 즉, 크로스 브라우징이 발생하였습니다. 이에 ECMAScript로 명명되며 해마다 버전을 업그레이드하며 여러 문법들이 추가 되었습니다.

 앞서 살펴보았던 것과 같이 웹의 보조적인 부분을 담당했던 자바스크립트는 단순 렌더링하는 수준이였습니다. 하지만 기술의 발전에 따라 Ajax를 통한 비동기 통신, JQuery를 이용한 개발, 브라우저 이외의 환경에서도 개발이 가능하게 한 Node.js의 개발 그리고 우리가 알고 있는 React,Angular,Vue등의 SPA프레임워크의 개발로 큰 범용성을 나타내게 되었습니다.

자바스크립트의 특징과 객체지향

 자바스크립트는 함수형과 프로토타입 기반의 객체지향을 지원하는 멀티 패러다임 언어입니다. 하지만 엄연히 말하자면 객체기반이 아닌 프로토타입의 기반을 상속으로 하는 언어입니다.javascript를 창시한 Brendan Erich는 언어를 개발할 당시 유행하던 객체지향에 한계를 느끼고 함수형 프로그래밍에 관심을 가지고 있었기에 함수형 프로그래밍의 형태로 언어를 만들고 싶어 했습니다. 그렇기 때문에 es5에서는 클래스 없이도 생성자 함수를 통해 객체지향 언어의 상속을 구현하였습니다.

let animal = {
  eats: true
};
let rabbit = {
  jumps: true
};

rabbit.__proto__ = animal; // 

// 프로퍼티 eats과 jumps를 rabbit에서도 사용할 수 있게 되었습니다.
alert( rabbit.eats ); // true 
alert( rabbit.jumps ); // true

 그러나 이후 클래스 기반 언어에 익숙한 프로그래머들에게 혼동을 줄이기 위해 class문법이 js에 추가되기도 하였지만, 이것은 함수기반으로 이루어진 문법적 설탕에 불과하였습니다. 그렇기 때문에 js는 함수형 패러다임을 기반으로한 객체지향 문법을 사용한다고 할 수 있습니다.

 이러한 이유로 js의 근간이라 볼 수 있는 함수형 프로그래밍에 대해 더 공부할 필요성이 있다고 느꼈습니다.


쏙쏙 들어오는 함수형 코딩

 프론트엔드 테오님의 블로그 글을 읽어보고 쏙쏙 들어오는 함수형 코딩이라는 책을 알게 되었습니다. 이 책을 추천하는 이유로는 다소 난해한 용어들을 쉽게 풀어 설명하며 실제 업무에서 적용할 수 있도록 도움을 준다는 점이 저에게 꼭 읽어야 한다는 생각을 갖게 만든 것 같습니다.

 앞으로 도서를 읽어나가며 배운점들에 대해 포스팅해 나갈 예정입니다.


Reference
https://velog.io/@teo/functional-programming#%EC%9A%B0%EB%A6%AC%EA%B0%80-%ED%95%98%EB%8A%94-%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-%EC%96%B8%EC%96%B4%EB%8A%94-%EB%A9%80%ED%8B%B0-%ED%8C%A8%EB%9F%AC%EB%8B%A4%EC%9E%84-%EC%96%B8%EC%96%B4

👍올바른 피드백은 언제든지 환영입니다~!

profile
www.mincho130.xyz <-- 블로그 이사했습니당

0개의 댓글