본문 바로가기
웹 개발

[코드스테이츠 Software Engineering Pre 과정] 3주차 공부내용: 고차함수

by 스토리라이언 2021. 2. 4.

코드[코드스테이츠 Software Engineering Pre 과정] 3주 차 공부 내용: 고차함수, 알고리즘, DOM, Twittler 작성이다. 

 

오늘 배운 주제

2월 1일과 2일, 이틀에 걸쳐 고차함수와 알고리즘 베이직을 배우고 코딩 테스트 문제(Cotlin)을 풀었다. 

* 일급 객체(first-class citizen) 

JavaScript에서 함수는 일급 객체이다. 왜냐하면 3가지 특별하게 취급하기 때문이다. 

 1) 함수는 변수에 할당(assignment)할 수 있다. 

 2) 다른 함수의 인자(argument)로 전달될 수 있다.

 3) 다른 함수의 결과로 리턴될 수 있다. 

고차함수(higher order function) : 함수를 인자로 받거나 함수를 리턴하는 함수를 고차함수라고 한다. 

* 콜백함수: 다른 함수의 인자로 전달되는 함수이다. 

아래의 예는 함수를 인자로 받고, 함수를 리턴하는 것을 보여준다.

function double(num) {
  return num * 2;
}

function doubleAdder(added, func) {
  const doubled = func(added);
  return function (num) {
    return num + doubled;
  };
}

여기에서 함수 doubleAdder는 고차함수이다. 그 함수의 인자인 func는 함수 doubleAdder의 콜백함수로 위의 함수 double을 가리킨다. 

doubleAdder(5, double)(3); 
// -> 5 * 2 = 10,  
// -> 10 + 3 = 13
//doubleAdder는 함수이기 때문에 함수 호출 기호인 ()를 사용할 수 있다. 

* 내장 고차함수(Built-in Higher Order Functions) : JavaScript에 기본적으로 내장되어 있는 고차함수를 말한다. 예를 들어 배열 메소드인 filter, map, reduce, forEach, some, every, sort 등이 있다. 


오늘 배우고 느낀 것들

페어 프로그램을 진행하면서 주로 나는 나보다 실력이 좋은 분이나 적어도 나와 비슷한 실력인 페어를 만났었다. 이번에 만난 분은 그렇지 않은 분이었다. 3일에 걸쳐 진행한 이번 페어 프로그램에서 나는 많은 것을 느끼고 배웠다.

1. 페어와 나의 성장을 위해 어떻게 내가 처신할 것인가?

지금까지는 나보다 실력이 나은 분이 내가 문제를 풀 수 있도록 도와주는 역할을 했었다. 이번에는 반대로 내가 페어를 주로 돕는 역할을 맡게 되었다. 미리 문제를 풀고 고민하면서 어떻게 하면 쉽고 간단하고 빠르게 시간내에 문제를 모두 풀 수 있을까 고민하는 시간을 가졌다. 

첫째날, 페어 프로그램을 진행하면서 약간 당황스러웠다. 왜냐하면 지금까지 만난 페어와 너무나도 다르기 때문이다. 문제를 만나면 쉽게 포기하고 모르겠다고 하면서 성급하게 reference를 보고 진짜 내가 이 문제를 꼭 풀어보겠다라는 마음이 별로 없는 것처럼 느꼈다. 어떻게 페어 프로그램의 시간을 보낼지 막막했다. 

페어분께서 부트캠프 안에서 어떻게 공부해야 할지 잘 모르는 것 같아 몇가지 조언을 드리고 동의한 가운데 페어 프로그램을 진행하게 되었다. 다행히 나의 제안을 기쁘게 받아들여 남은 시간을 힘들지 않게 잘 마칠 수 있었다.

월요일부터 오늘 수요일까지 3일간 공부를 하면서 정말 많은 공부량을 필요로 하는데 어떻게 시간을 배분하고 효율적으로 공부할 수 있는지 나름대로 체계를 잡게 되었다.


앞으로 공부 방향

◈ 코플릿 문제는 가급적 종료 시간 안에 다 풀도록 한다. 풀면서 막히는 문제는 모르는 내용을 메모해서 질문한다. reference를 참조한 경우 왜 그렇게 풀었는지 충분히 이해하고 다시 그 문제를 풀 때 내가 안 보고 풀 수 있을 수 있도록 소화한다. 코플릿 문제를 내 컴퓨터로 화면 공유하는 경우가 있기에 페어 프로그램으로 함께 코플릿을 풀 때에는 미리 다 풀었더라도 초기화 시켜 페어가 문제를 생각하는 시간을 준다. 

 

◈ 미리 Urclass를 공부한다: 노션으로 정리하고 출력해 놓는다. Urclass에 부족한 부분은 mdn이나 다른 웹사이트, 유튜브를 참고해서 이해한다. 

 

◈ 반드시 모르는 문제는 질문한다. 그리고 그 중에서 정말 꼭 알아야 할 기술들은 블로그에 잘 정리한다. 

 

◈ 일주일에 한번은 일주일을 정리하는 셀프 역량코딩을 실시한다. github에 공부한 코딩내용을 업로드한다. 

댓글