<도서정리> 프로그래머처럼 생각하라, 프로그래머의 뇌

프로그래머처럼 생각하라

  • 모델 기반 사고 - 프로그래머는 사물을 단순하게 생각한다
  • 모델 : 사물의 특성과 사물과 사물 간의 관계를 나타낸 것
    • 장점
      • 전체적인 그림을 파악할 수 있어 이해도가 높아지고, 누락 또는 중복을 줄일 수 있다.
      • 논리적 비약 : 새로운 요소를 추가, 기존 요소를 제거, 관계 확장 등 모델링을 지속적으로 활용 및 개선시킬 수 있다.
    • 모델 형성 단계
      1. 필수 요소 명사 열거
      2. 선으로 요소 간 관계 표시
      3. 논리적 배치

 

  • 모델링은 목적에 맞는 관점으로 설계하는 것이 중요
    • 관점에 따라 모델링이 달라지기 때문에 목적을 명확히 할 것

 

  • 모델링은 핵심 위주로 단순하게, 전달 가능할 정도의 구체성을 가져야한다.
    • 명명에 대한 정확성
  • 모델링은 구체적 사례를 통해 일반화를 이끌어내야한다.
    • 본질을 중요시
    • 사례에 대한 구체성

 

  • 모델링은 기승전결의 구조로 어떤 곳에서도 응용 가능
    • 무엇인가를 파악하거나 전달하고자할 때
    • 단순 -> 구체 -> 일반화 가능
    • 추상적이고 논리적인 도식화로 흐름 파악 용이

 

 

프로그래머의 뇌

  • 코딩을 할 때 오는 혼란의 세 가지 원인

1. 지식의 부족 -> 언어를 모를 때

2. 정보의 부족 -> 언어는 알지만 특정 메서드의 동작 과정을 모를 때(캡슐화 등)

3. 처리 능력의 부족 -> 유추할 수 있지만 단계적인 결과값을 따라가지 못할 때

 

위 세가지 원인은 뇌의 다음과 같은 영역과 관련있음

1. 장기기억공간; 하드디스크, 저장

2. 단기기억공간; 메모리, 저장

3. 작업기억공간; cpu, 처리

 

  • 코드를 신속하게 이해하는 법

묶음(chunk)을 활용 -> 이 과정에서는 이미 내가 기존에 기억하고 있는 장기기억을 활용하여 처리

즉, 기억하는 대상이 중요한 것이 아니라 기억하는 방식이 중요하다

 

  • 장기기억

프로그래밍을 하다보면 막히는 부분이 일어나 업무중단이 빈번하게 일어난다.
이 때 프로그래밍의 목적이 상실될 수 있는 위험성이 있다.
그렇기 때문에 어느 정도의 암기는 프로그래밍에 유용하다.

장기기억 또한 시간이 지나면 사라지기 때문에 간격을 두고 반복하여 기억을 강화하는 작업이 필요하다.

    • 장기기억을 가져오는 두 가지 기제
      • 저장강도
      • 인출강도
      • 저장강도는 시간이 흐를수록 증가하지만 인출강도는 시간이 흐를수록 감소한다.
      • 알고 있는 것을 기억해내고 실제로 꺼낼수록 인출강도는 강화된다.
    • 즉, 많이 보아서 장기기억에 저장되어 있는 코드일지라도 인출강도가 약하면 해당 코드가 필요할 때 사용할 수 없을 것이다.
      저장은 반복을 통해 가능하지만 인출 또한 반복해야한다.
      -> 능동적 사고를 통한 인출강도 강화; 능동적으로 기억하려고 노력할 때 저장과 인출 모두 효과가 좋다
    • 기억을 강화하기 위해서는 정교화하는 것이 도움이 된다. 연관기억을 활용하여 새로운 기억을 저장하는 방식이다. 공통점, 패턴을 활용.
    • 장기기억은 긍정적 전이, 부정적 전이(오개념)가 일어난다. 오개념을 방지하기 위해 알고 있는 개념일지라도 명확히 할 필요가 있다.
    • 장기기억은 암시적 기억과 명시적 기억으로 분류할 수 있다.
      • 암시적 기억은 근육 기억으로 터치 타이핑처럼 아무 생각없이 실행할 수 있는 작업이다.
      • 명시적 기억은 for 루프 문법처럼 능동적으로 불러와야하는 기억이다.
      • 명시적 기억을 강화하려면 기존 코드, 코드 설계 방법에 대한 설명(해설)이 포함된 코드를 연구하면 좋다.

 

  • 변수

변수는 표식이 되어 코드 이해에 도움이 된다.

코드를 이해하기 위해서는 코드를 작성한 목적에 집중하는 것이 필요하다.

코드의 핵심에 초점을 맞추고 연관 코드들을 이해하는 것으로 방향을 확장시킨다.

코드를 읽고 이해하는 데 많은 시간을 소요하기 때문에 언어능력을 향상시키는 것도 필요하다.

    • 명명을 잘하는 방법
      • 일관성, 명확성
      • 변수길이, 음절길이, 스네이크 케이스, 카멜 케이스
      • 명명 방법 3단계 : 표현할 개념 정의 -> 단어 선택 -> 단어 결합

 

 

댓글을 작성해보세요.