10.1 문제 해결이란 무엇인가?#
10.1.1 문제 해결 요소#
- 문제 해결에는 세 가지 중요한 요소입니다.
- 목표 상태(달성하고자 하는 것, 목표 상태에 도달하면 문제가 해결된 것으로 간주)
- 문제를 해결해야 하는 시작 상태
- 시작 상태에서 목표 상태에 도달하는 방법을 규정하는 규칙
10.1.2 상태 공간#
- 문제의 상태 공간(state space) : 프로그램을 해결할 때 고려할 수 있는 모든 단계
10.2 프로그래밍 문제를 해결할 때 LTM의 역할은 무엇인가?#
10.2.1 문제 해결을 그 자체로 인지 과정인가?#
- 문제를 해결하기 위해 세 가지 단계를 수반하는 사고 체계를 제안합니다.
문제 해결 시 LTM 사용#
두뇌는 익숙한 문제를 해결하는 것이 더 쉽습니다.#
10.2.2 문제 해결을 위한 LTM 교육 방법#
- 작업 기억 공간이 결정을 내리기 전에 앞서 두 가지를 먼저 해야합니다.
- 첫 번째는 STM으로부터 문제의 상황에 대한 정보를 가져오는 것입니다.
- 동시에 LTM은 관련 배경 지식을 검색합니다.
10.2.3 문제 해결에 역할을 하는 두 가지 유형의 기억#
- 문제 해결할 때 역할을 수행하는 서로 다른 유형의 기억이 있습니다.
- 첫째는 운동 능력이나 의식하지 않고 발휘하는 기술에 대한 기억을 절차적(procedural, 암시적, Implicit) 기억이라고 합니다.
- 두번째 유형의 기억은 선언적(declarative, 명시적, explicit) 기억입니다.
- 선언적 기억의 또 다른 하위 범주는 의미적(semantic) 기억입니다.
문제를 해결할 때 어떤 유형의 기억이 역할을 수행하는 가#
탈학습#
10.3 자동화: 암시적 기억 생성#
- 문제 해결 능력을 높이는 두 가지 방법이 있으며 이 기술은 자동화(automaization) 입니다.
10.3.1 시간 경과에 따른 암시적 기억#
인지 단계#
연상 단계#
- 응답 패턴이 나타날 때까지 새 정보를 적극적으로 반복해야 합니다.
자율 단계#
10.3.2 자동화를 통해 보다 신속하게 프로그램을 실행할 수 있는 이유#
- 각각의 기억은예를 들어 '인수분해에 대한 기억'이라는 클래스의 한 인스턴스로 간주되기 때문에, 이 이론은 인스턴스 이론(instance theory) 이라고 부릅니다.
10.3.3 암시적 기억 개선#
- 자율 단계에 도달하지 않는 기술을 의도적으로 연습해 개선할 방안에 있습니다.
- 의도적 연습이란 매우 단순하고 쉬운 작업을 완벽에 도달할 때까지 반복적으로 실행하는 것입니다.
- 보다 복잡한 프로그래밍 개념을 이해하는 데 어려움을 겪고 있다면 프로그램을 처음부터 작성하는 것보다 이미 작성된 프로그램을 수정하는 것도 고려해야합니다.
10.4 코드와 해설에서 배우기#
- 문제 해결 능력을 향상하기 위해 사용할 수 있는 두 번째 방법은 다른 사람들이 문제를 어떻게 해결했는지 의도적으로 연구하는 것입니다.
10.4.1 새로운 유형의 인지 부하: 본유적 부하#
- 작업 기억 공간이 꽉 차 있으면 정보를 다시 LTM에 저장하는 일입니다.
- 본유적 부하는 두뇌가 정보를 LTM에 다시 저장하기 위해 수행하는 노력을 의미합니다.
10.4.2 개발 작업 시 풀이된 예제 활용하기#
동료와의 협업#
- 첫째, 코드를 혼자 공부할 필요가 없으며 누군가와 함께하는 것이 더 유용합니다.
깃허브 탐구#
소스 코드에 대한 책 또는 블로그 게시물 읽기#
- 프로그래밍에 종사하는 많은 사람은 문제 해결이 일반적인 기술이라고 주장하지만, 그렇지 않습니다.
- 프로그래밍에 대한 사전 지식이 현재 해결 중인 문제와 결합해 프로그래밍 문제를 얼마나 빨리 해결할 수 있는지에 영향을 미칩니다.
- LTM은 다양한 유형의 기억을 저장하는데, 이들은 문제를 해결할 때 모두 각자 다른 역할을 합니다.
- 기억의 가장 중요한 두 범주는 암시적 기억과 명시적 기억입니다.
- 암시적 기억은 아무 생각 없이 실행할 수 있는 작업이며, 명시적 기억은 능동적으로 불러와야 하는 기억입니다.
- 프로그래밍과 관련된 암시적 기억을 강화하려면 터치 타이핑, 관련 단축키 암기 같은 관련 기술을 자동화하는 것이 가장 효과적입니다.
- 프로그래밍과 관련된 명시적 기억을 강화하려면 기존 코드, 가급적이면 코드 설계 방법에 대한 설명이 포함된 코드를 연구해야 합니다.