6장 코딩 문제 해결을 더 잘하려면
1. 모델을 사용해서 코드에 대해 생각해보기
- 사람들은 문제를 풀 때 대부분 모델을 만든다.
- 모델은 실재를 간단하게 표현한 것으로, 주된 목적은 문제에 대해 생각하고 해결하는 데 도움을 주기 위한 것이다.
- 문제를 풀 때 모델을 명시적으로 사용하는 것은 두 가지 장점이 있다.
- 모델은 프로그램에 대한 정보를 다른 사람과 공유할 때 유용하다.
- 문제를 풀 때 도움이 된다.
- 두뇌에서 한 번에 처리할 수 있는 한계에 도달했을 때 모델을 만들면 인지 부하를 줄일 수 있다.
- 모델은 LTM이 관련된 기억을 찾는데 도움이 된다.
- 문제의 특정 부분에만 집중하는 것은 해결책에 대해 생각할 때 도움이 되고, 모델의 제약 사항이 그렇게 하도록 강제한다.
2. 정신 모델
- 문제에 대해 생각할 때 두뇌의 외부에서 만들어 지지 않은 모델을 사용할 수 있다. 이를 정신 모델이라고 한다. (= 멘탈모델)
- 정신 모델은 풀어야 할 문제에 대해 추론하기 위해 사용할 수 있는 작업 기억 공간 내의 추상화다.
- 무언가에 대해 더 깊이 있게 배우고 나면 오래되고 ‘잘못된’ 정신모델이 두뇌에서 제거되고 더 나은 정신모델로 대체된다고 생각할 수 있다.
- 그러나 그러한 정보가 LTM에서 완전히 사라질 가능성은 낮다.
- 이전에 배운 부정확하거나 불완전한 정신 모델을 사용할 위험은 항상 도사리고 있다.
- 여러 정신 모델이 동시에 활성 상태를 유지할 수 있으며 모델 간의 경계가 명확한 것은 아니다.
- 정신 모델에 세부 정보가 많을수록 시스템에 대한 추론이 더 쉽고 시스템에 대한 질문에도 정확한 대답을 할 수 있음.
3. 개념적 기계
- 정신모델의 프로그래밍 언어 버전.
- 읽어보니까 정신모델의 범위를 컴퓨터 코드를 실행하는 방법으로 좁혔을 뿐 내용은 크게 다르지 않은 것 같다.
- 개념적 기계는 프로그래밍 언어 수준에서 작동하며 기저에 있는 시스템의 모든 세부사항은 추상화한다.