TIL 2021-04-29 (함수형 프로그래밍, 웹 프로토콜, 비동기 프로그래밍)

nyongho·2021년 4월 29일
0

오늘 배운 내용

목록 보기
4/40

TIL


What I Learn?

1) 함수형 프로그래밍(Function Programming) 이란?

함수형 프로그래밍은 순수한 함수 (이하 순수 함수) 를 작성하고, 변경 가능한 데이터 및 부작용 (Side Effect) 를 피하여 소프트웨어를 작성하는 하나의 프로그래밍 패러다임이다.

함수형 코드는 객체지향 코드보다 간결하고 예측하기 쉬우며 테스트 또한 쉬워진다.

함수형 프로그래밍에서 가장 중요한 핵심은 함수는 부작용이 없어야 한다 는 점이다.

즉, 함수는 동일한 입력에 있어서는 동일한 출력을 내야 한다는 것이다.

1-1. 함수형 프로그래밍과 객체지향 프로그래밍의 차이?

결론부터 말하자면 데이터(상태) 를 다루는 개념과, '간결한 코드 작성' 에 대한 관점의 차이이다.

객체지향이 함수의 동작부를 캡슐화해서 코드를 이해할 수 있게 한다면, 함수형은 동작부를 최소화해서 코드를 이해할 수 있게 한다.


2) 웹 프로토콜이란?

웹에서 쓰이는 하나의 통신 규약이다. 예를들어 A 라는 요청에는 항상 B 라는 요청을 보내야 한다. 와 같은 것이다.

2-1. HTTP 통신?

웹 프로토콜 중 가장 많이 쓰이는 통신 규약으로 인터넷에서 데이터를 주고 받을 수 있는 통신 규약이다.


3) 비동기 프로그래밍(Asynchronous) 이란?

일단 코드들은 기본적으로 동기적, 즉 순서대로 실행된다.

예를 들어 A => B => C 의 단계에 걸쳐 코드를 실행하고 싶다고 가정했을 때

B 의 단계에서 외부 API 를 호출하는 과정이 지연된다면 코드는 내 예상과 다르게

A => C => B 의 순서대로 실행될 수 있다.

이러한 문제를 막기 위해 해당 코드가 완전히 끝나기 전에는 다음 코드를 실행시키지 않고 대기하는, 비동기 프로그래밍을 사용한다.

3-1. AJAX?

자바스크립트를 이용해 비동기적으로 서버와 브라우저가 데이터를 교환할 수 있는 통신 방식이다.

보통은 서버로부터 웹 페이지가 반환되면 해당 페이지 전체를 반환해야 하지만, AJAX 를 사용하면 일부분만

갱신하는 것이 가능해지고 이는 곧 부드러운 UX 또한 기대할 수 있다.

3-2. 자바스크립트의 Callback 과 Promise 의 차이점

일단 Promise 가 등장하기 전, 자바스크립트의 비동기 처리 방식은 Callback 이라는 형식으로 처리할 수 있었다.

Callback 은 클로저에서 다뤘던 개념처럼 함수안에 함수를 넣는 형식으로 이루어진다.

하지만 함수의 처리 순서를 보장하기 위해 함수를 중첩해서 사용하게 되는 경우가 발생하기도 하고 (이를 흔히 콜백 헬 이라고 한다.) 이에 따라 에러처리 또한 힘들다는 단점이 존재했다.

이와 같은 단점을 보완하기 위해 나온 것이 바로 Promise 라는 것이다.

이는 ES6 부터 등장한 개념이며 비동기 처리 성공시 resolve, 실패시 reject, 다음 단계로 넘어갈 수 있게 하는 then, 그리고 에러를 잡기 위한 catch 가 존재한다.

특히 then 의 등장으로 메소드 체이닝을 통한 콜백헬 문제를 해결할 수 있게 됐다.

3-3. Async Await 은 무엇인가?

위 Promise 를 더욱 편리하게 사용할 수 있게 ES7 부터 도입된 문법이다.

함수의 이름 앞에 async 키워드를 추가하고 함수 내부에서 비동기 처리할 부분의 앞에 await 키워드를 사용한다.

그리고 에러를 잡기 위해 try 와 catch 를 사용해야 한다.

Promise 방식에 비해 훨씬 직관적이다.

profile
두 줄 소개

0개의 댓글