1월 14일 (화)

## 페어 프로그래밍 과정
1. 문제를 받고 요구하는 프로그램의 입출력을 파악했다. (문자열 -> 배열/맵)
2. 기본 개념을 이해하기 위해 1시간 정도 각자 공부했다.
3. tokenizer, lexer, parser 의 기능과 입출력에 대해 서로 논의하고 의견을 맞췄다.
    - tokenizer : 문자열을 입력받아 의미를 가진 단위별로 분류하고 배열로 출력
    - lexer : tokenizer의 배열을 입력받아 의미(type, value)를 부여하고, 정리된 요소들을 비어있는 배열에 push하고 출력
  *만약 중첩 배열일 경우 대괄호 단위로 그 범위를 count하여 child의 속성으로 가지도록 구현하면 좋겠다고 생각*
    - parser : 입력받은 배열의 포함관계를 계산해서 추상 트리 구조로 출력
4. 방식
    - 타이머를 설정해두고 서로 프로그램의 얼개를 짜본 후 서로에게 설명하면서 이해하기
    - 스켈레톤 코드 작성해보고 서로 의견 맞춰 나가기
    - 구현 과정에서 서로 지식 부족으로 인해 의도대로 구현이 힘들었다
    - 구현이 힘드니 오후 4시쯤 돼서는 타이머가 무용지물이었다
5. 시도한 것들
    1. tokenizer 정규표현식을 사용하여 의미 나누기 -> 정규표현식 지식 부족 **실패**
    2. tokenizer 문자열을 배열에 담아 forEach 메서드를 사용해보려 노력 -> 대괄호나 공백 분리 못함 **실패**
    3. tokenizer 문자열 메서드를 사용해보려 노력  -> 대괄호나 공백 분리 못 함 **실패**

Design & Code

  • 스켈레톤 코드

  • 문제를 어려우면 쉽게 만들기

  • 가장 쉬운 패턴을 찾고 그거부터 해결하기

  • 문제를 이해하는 과정. 디자인하는 재미

Debugging

  • 프로그램을 짜는 건 디버깅의 연속이다

  • 콘솔 대신 breakpoint, watch 등을 사용해 확인하기

  • 의심이 되는 부분에 breakpoint를 걸고 분석하기

  • console 쓰지 않기

  • 테스트 코드 작성

컴파일 언어와 인터프리터 언어

컴파일 과정

어휘분석(tokenizer, lexer) -> 구문분석(parser)

그 결과 추상 구문 트리 또는 parse 트리 가 생성됨.

  • HTML 파서에 대해 알아보기

  • 파서에 대해 이해가 안되면 그냥 따라서 해보기

클린 코드

  • 인자값을 주고 반환하는 코드를 만들면 코드가 테스트 가능해짐

  • node.js 모듈을 써서 import export 할 수 있음

오늘 배운 것

  • 컴퓨터의 구성요소. cpu가 어떻게 돌아가는지 간단하게 유튜브를 보면서 배웠다.

  • 문제를 실제 코드로 옮기지는 못했지만, 공부하고 나서 문제가 이해를 할 수 있게 됐다.

  • 문제 수도 코드 작성 완료.

  • 디버그, 테스트 코드 작성하는 습관 들이기

Last updated