1. Introduction


우리는 모국어로, 다른 사람들과 의사소통을 할 때, 우리가 내리는 가정들이 많다는 것을 잘 모른다.

예를 들어, '셋까지 세어봐!' 라고 누군가 말하면, 보통, '1,2,3' 의 숫자를 말할 것인데, 이처럼 사람들은 '1' 부터 시작해서 '3'으로 끝나는 가정을 일반적으로 가지고 있다.

하지만, 컴퓨터에게는 프로그래밍을 통해서 지시사항을 명확하게 파악해야한다.

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/4b3cb566-aef3-478a-819d-9e93c9159856/Untitled.png

위의 예시가 1부터 3까지 세는 것을 컴퓨터에게 지시하는 명령이다.

또한, 다른 사람들과 대화를 할 때, 복잡한 개념을 빠르게 전달할 수 있는 어휘, 단어 들을 공유한다.

예를 들어, 우리가 "베이킹"이라는 단어를 이야기했을 때, 익숙하게 알고 있는 빵/케이크의 제조 과정을 모든 사람들이 생각한다.

"베이킹"이라는 단어 대신 "케이크를 구웠습니다!" 라는 '베이킹'의 세부사항을 언급하는 것도 같은 의미를 가진다.

프로그래밍에서도, 함수를 작성하여, "추상화"를 이루어낼 수 있다.

함수는 코드를 재사용하는 것 뿐만 아니라, 명확하고 읽기 쉬운 프로그램을 만드는 데 큰 도움이 된다.

countToThree() 라는 부분에서 문제가 발생했다면, 다른 것들은 살펴볼 필요없이 해당 함수만을 확인하면 되기에, 오류를 수정하는 데 큰 도움을 준다.

또한, 이번 파트에서는 '추상화'의 수준을 올리는 "고차 함수"에 대해서 배울 것이다.

"고차 함수"는, 다른 함수를 인수로 허용하거나 함수를 출력으로 반환하는 함수이다.

이를 통해서, "생일 파티를 주최했습니다." 가 "케이크를 만들었습니다."라는 추상화를 기반으로 하는 추상화처럼, 다른 추상화에도 추상화를 구축할 수 있다.

코드에서 많은 추상화를 사용하면 할수록, 더 쉽게 읽고 디버깅할 수 있는, 더 많은 모듈식 코드를 작성할 수 있다.