목차

목차

옮긴이 머리말 xi 추천의 글 xiii 베타리더 후기 xvi 추천서문(존 스키트) xviii 시작하며 xx 감사의 글 xxii 이 책에 대하여 xxiv 표지에 대하여 xxvi PART I 코드 더 잘 읽기 CHAPTER 1 코딩 중 겪는 혼란에 대한 이해 3 1.1 코드가 초래하는 세 가지 종류의 혼란 4 1.1.1 혼란의 첫 번째 유형: 지식의 부족 5 1.1.2 혼란의 두 번째 유형: 정보의 부족 6 1.1.3 혼란의 세 번째 유형: 처리 능력의 부족 6 1.2 코딩에 영향을 주는 인지 과정 7 1.2.1 LTM과 프로그래밍 8 1.2.2 STM과 프로그래밍 8 1.2.3 작업 기억 공간과 프로그래밍 10 1.3 인지 과정들의 상호작용 10 1.3.1 인지 과정들이 어떻게 상호작용하는지에 대한 간단한 설명 10 1.3.2 프로그래밍 업무와 관련한 인지 과정 11 요약 13 CHAPTER 2 신속한 코드 분석 14 2.1 코드를 신속하게 읽기 15 2.1.1 두뇌에서 무슨 일이 일어나는가? 16 2.1.2 재현한 코드 다시 살펴보기 17 2.1.3 두 번째 실험 다시 살펴보기 19 2.1.4 생소한 코드를 읽는 것은 왜 어려운가? 19 2.2 기억의 크기 제한을 극복하기 20 2.2.1 단위로 묶는 것의 위력 20 2.2.2 전문가는 초보자보다 코드를 더 잘 기억한다 23 2.3 읽는 것보다 보는 것이 더 많다 25 2.3.1 영상 기억 공간 25 2.3.2 기억하는 대상이 중요한 것이 아니고 기억하는 방식이 중요하다 27 2.3.3 청킹 연습 33 요약 35 CHAPTER 3 프로그래밍 문법 빠르게 배우기 36 3.1 문법을 기억하기 위한 팁 37 3.1.1 중간에 끊어지는 것이 미치는 나쁜 영향 37 3.2 플래시카드 사용해 문법 배우기 38 3.2.1 언제 플래시카드를 사용해야 하는가 39 3.2.2 플래시카드의 확장 39 3.2.3 플래시카드 개수 줄이기 40 3.3 어떻게 하면 잊어버리지 않을 수 있을까? 40 3.3.1 기억을 잃어버리는 이유 41 3.3.2 간격을 두고 반복하기 43 3.4 문법을 더 오랫동안 기억하기 44 3.4.1 정보를 기억하는 두 가지 형태 44 3.4.2 단지 보기만 해서는 안 된다 45 3.4.3 정보를 기억하는 것은 기억을 강화한다 46 3.4.4 능동적 사고를 통한 기억력 강화 47 요약 50 CHAPTER 4 복잡한 코드 읽는 방법 51 4.1 복잡한 코드를 이해하는 것이 왜 어려울까? 52 4.1.1 작업 기억 공간과 STM의 차이 53 4.1.2 프로그래밍과 관련한 인지 부하의 종류 53 4.2 인지 부하를 줄이기 위한 기법 55 4.2.1 리팩터링 55 4.2.2 생소한 언어 구성 요소를 다른 것으로 대치하기 57 4.2.3 플래시카드에 코드 동의어 추가 60 4.3 작업 기억 공간에 부하가 오면 사용할 수 있는 기억 보조 수단 61 4.3.1 의존 그래프 생성 61 4.3.2 상태표 사용 64 4.3.3 의존 그래프와 상태표의 혼용 66 요약 68 PART II 코드에 대해 생각하기 CHAPTER 5 코드를 더 깊이 있게 이해하기 71 5.1 ‘변수 역할’ 프레임워크 72 5.1.1 변수는 각자 다른 일을 한다 72 5.1.2 11가지 역할 73 5.2 역할과 패러다임 76 5.2.1 역할의 이점 76 5.2.2 헝가리안 표기법 78 5.3 프로그램에 대해 깊이 있는 지식을 얻으려면 80 5.3.1 텍스트 지식 대 계획 지식 80 5.3.2 프로그램 이해의 여러 단계 81 5.4 텍스트를 읽는 것과 코드를 읽는 것은 유사하다 84 5.4.1 코드를 읽을 때 우리 뇌에서는 무슨 일이 일어나는가? 85 5.4.2 프랑스어를 배울 수 있다면 파이썬도 배울 수 있다 86 5.5 코드 읽기에 적용해볼 수 있는 텍스트 이해 전략 90 5.5.1 기존 지식의 활성화 91 5.5.2 모니터링 91 5.5.3 코드에서 중요한 라인을 결정하기 92 5.5.4 변수명의 의미를 추론하기 93 5.5.5 시각화 94 5.5.6 질문하기 96 5.5.7 코드 요약 96 요약 97 CHAPTER 6 코딩 문제 해결을 더 잘하려면 98 6.1 모델을 사용해서 코드에 대해 생각해보기 99 6.1.1 모델의 유익함 99 6.2 정신 모델 102 6.2.1 정신 모델 자세히 살펴보기 103 6.2.2 새로운 정신 모델 배우기 104 6.2.3 코드에 대해 생각할 때 정신 모델을 효율적으로 사용하는 방법 105 6.3 개념적 기계 110 6.3.1 개념적 기계는 무엇인가? 111 6.3.2 개념적 기계의 예 111 6.3.3 개념적 기계의 층위 113 6.4 개념적 기계와 언어 114 6.4.1 개념적 기계의 확장 114 6.4.2 여러 개념적 기계는 서로 충돌하는 정신 모델을 만들 수 있다 115 6.5 개념적 기계와 스키마타 117 6.5.1 왜 스키마타가 중요한가? 117 6.5.2 개념적 기계는 의미론인가? 117 요약 1