개요
컴퓨터 공학의 근간을 이루는 개념 중 하나인 추상화(abstraction)을 설명하면서 고차 함수가 추상화에 어떻게 사용되는지 살펴보겠습니다.
학습 목표
- 추상화에 대해서 이해합니다.
- 높은 수준의 추상화에대해서 학습합니다.
- 고차 함수가 추상화에 어떻게 사용하는지 이해합니다.
- 개발시 고차 함수 및 다른 이론들을 활용하여 높은 수준의 추상화로 개발합니다.
추상화
복잡한 어떤 것을 압축해서 핵심만 추출한 상태로 만드는 것입니다.
- 인간은 추상화를 당연하고 쉽게 생각하고 표현합니다.
- '-1'을 보면 -1은 0보다 1만큼 작은 수라고 쉽게 생각하고 표현할수 있습니다.
- 일상생활에서 추상화가 아닌 것을 찾아보기 힘들 정도입니다.
- 메신저를 통해 '안녕'이란 메세지를 보내면 우리의 스마트폰은 기지국과 약 20개의 메세지를 주고받습니다.
- 우리는 위의 과정을 모르지만 수신인이 메세지를 받는 다는 것은 알고 있습니다. (추상화)
- 자동차의 시동버튼, 교통카드 등 주변의 대부분이 추상화의 결과입니다.
- 자바스크립트를 비롯한 많은 프로그래밍 언어 또한 추상화의 결과입니다.
- CPU는 0과 1만 이해하지만 문법을 올바르게 사용하는 것 만으로 영어와 숫자로 코드를 보다 쉽게 작성할 수 있습니다.
- 따라서 컴퓨터 내부 구조에 대한 고민이 추상화로 해결되었습니다.
- 이처럼 고민거리가 줄어들고 문제의 해결이 더 쉬워지는 것이 추상화의 이점입니다.
추상화 = 생산성(productivity)의 향상
- 코딩시에 자주 반복해서 사용하는 로직은 별도의 함수로 작성하는 것도 추상화의 좋은 사례입니다.
- 추상화의 종류와 고차함수
값 수준의 추상화
: 단순히 값(value)을 전달받아 처리하는 수준
사고의 추상화
: 함수(사고의 묶음)를 전달받아 처리하는 수준
- 고차 함수 = 사고 수준에서의 추상화
사고 수준의 추상화 예시를 보니, 추상화에 대해서 파고들어 보니 백엔드 개발자는 추상화가 정말 중요하다고 하던데 프론트엔드 개발자 하기로 정하길 잘했다 생각이 먼저 들었습니다....하하하
하지만 프론트엔드 개발자도 추상화를 잘 사용하면 생산성과 어플리케이션 능력 향상에 도움이 되기때문에 추상화도 잘 찾아 공부하며 성장하겠습니다!