우리는 모국어로, 다른 사람들과 의사소통을 할 때, 우리가 내리는 가정들이 많다는 것을 잘 모른다.
예를 들어, '셋까지 세어봐!' 라고 누군가 말하면, 보통, '1,2,3' 의 숫자를 말할 것인데, 이처럼 사람들은 '1' 부터 시작해서 '3'으로 끝나는 가정을 일반적으로 가지고 있다.
하지만, 컴퓨터에게는 프로그래밍을 통해서 지시사항을 명확하게 파악해야한다.
위의 예시가 1부터 3까지 세는 것을 컴퓨터에게 지시하는 명령이다.
또한, 다른 사람들과 대화를 할 때, 복잡한 개념을 빠르게 전달할 수 있는 어휘, 단어 들을 공유한다.
예를 들어, 우리가 "베이킹"이라는 단어를 이야기했을 때, 익숙하게 알고 있는 빵/케이크의 제조 과정을 모든 사람들이 생각한다.
"베이킹"이라는 단어 대신 "케이크를 구웠습니다!" 라는 '베이킹'의 세부사항을 언급하는 것도 같은 의미를 가진다.
프로그래밍에서도, 함수를 작성하여, "추상화"를 이루어낼 수 있다.
함수는 코드를 재사용하는 것 뿐만 아니라, 명확하고 읽기 쉬운 프로그램을 만드는 데 큰 도움이 된다.
countToThree()
라는 부분에서 문제가 발생했다면, 다른 것들은 살펴볼 필요없이 해당 함수만을 확인하면 되기에, 오류를 수정하는 데 큰 도움을 준다.
또한, 이번 파트에서는 '추상화'의 수준을 올리는 "고차 함수"에 대해서 배울 것이다.
"고차 함수"는, 다른 함수를 인수로 허용하거나 함수를 출력으로 반환하는 함수이다.
이를 통해서, "생일 파티를 주최했습니다." 가 "케이크를 만들었습니다."라는 추상화를 기반으로 하는 추상화처럼, 다른 추상화에도 추상화를 구축할 수 있다.
코드에서 많은 추상화를 사용하면 할수록, 더 쉽게 읽고 디버깅할 수 있는, 더 많은 모듈식 코드를 작성할 수 있다.