반응형
1. 모델을 사용해서 코드에 대해 생각해 보기
- 모델의 유익함
- 모델은 프로그램에 대한 정보를 다른 사람과 공유할 때 유용하다.
- 모델은 문제를 풀 때 도움이 된다.
- 모든 모델이 동일하게 유용한 것은 아니다.
2. 정신 모델
정신 모델이란 두뇌의 외부에서 만들어지지 않은 모델을 의미하며 풀어야 할 문제에 대해 추론하기 위해 사용할 수 있는 작업 기업 공간 내의 추상화이다. 정신 모델의 예로 트리 순회가 있다. 코드와 컴퓨터에는 우리가 순회하는 실제 트리는 존재하지 않는다. 우리가 트리 구조라고 생각하는 메모리 내의 값이 있을 뿐이다.
- 정신 모델 자세히 살펴보기
- 새로운 정신 모델 배우기
- 파일 ‘폴더’에 들어 있는 것이라고 피상적으로 생각하지만, 실은 그것이 하드 드라이브 내에서 정보가 저장된 위치에 대한 참조라는 사실
- 변수의 이름과 값에 대해 처음에는 주소록의 이름 및 전화번호 정도로 생각하다가 컴퓨터 메모리 작동 방법에 대해 자세히 알게 되면 해당 모델을 수정하게 됨
- 코드에 대해 생각할 때 정신 모델을 효율적으로 사용하는 방법
- 작업 기억 공간에서의 정신 모델: 존슨-레어드는 두뇌가 추론을 하는 동안 정신 모델이 사용되고, 따라서 정신 모델이 작업 기억 속에 존재한다고 주장했다. 존슨-레어드가 연구한 결과를 통해 정신 모델에 세부 정보가 많을수록 시스템에 대한 추론이 더 쉽고 시스템에 대한 질문에도 정확한 대답을 할 수 있음을 시사한다.
- 소스 코드에 대한 정신 모델을 작업 기억 공간에 생성하는 방법
- 국지적 모델을 만든다.
- 코드에서 관련된 모든 객체와 객체 간의 관계를 나열한다.
- 시스템에 대한 질문을 만들고 이 질문의 답을 사용해서 모델을 개선한다.
- 소스 코드에 대한 정신 모델을 작업 기억 공간에 생성하는 방법
- LTM에서의 정신모델: 데더래 켄트너와 앨버트 스티븐스는 일반적인 정신 모델은 LTM에 저장되며 필요할 때 기억해 낼 수 있다고 주장했다. 예를 들어 한 번도 사용해 본 적이 없는 프로그래밍 언어로 작성된 트리 탐색 코드도 이전에 저장한 정신 모델을 사용해서 이해할 수 있다.
- 소스 코드에 대한 정신 모델을 LTM에 생성하는 방법
- 플래시 카드에 자료구조, 디자인패턴, 아키텍처 패턴 등을 적어서 외운다.
- 소스 코드에 대한 정신 모델을 LTM에 생성하는 방법
- 1990년대에 수행된 연구에 달면 두 이론 모두 어느 정도까지는 사실이고, LTM에 저장된 정신 모델은 작업 기억 공간의 정신 모델 구축에 영향을 미칠 수 있다.
- 작업 기억 공간에서의 정신 모델: 존슨-레어드는 두뇌가 추론을 하는 동안 정신 모델이 사용되고, 따라서 정신 모델이 작업 기억 속에 존재한다고 주장했다. 존슨-레어드가 연구한 결과를 통해 정신 모델에 세부 정보가 많을수록 시스템에 대한 추론이 더 쉽고 시스템에 대한 질문에도 정확한 대답을 할 수 있음을 시사한다.
3. 개념적 기계
- 개념적 기계는 컴퓨터가 코드를 실행하는 방법에 대해 추론할 때 사용하는 모델이다. 그러므로 정신 모델 보다 일관되고 정확하다.
- 개념적 기계는 프로그래밍 언어 수준에서 작동하며 기저에 있는 시스템의 모든 세부 사항은 추상화한다.
4. 개념적 기계와 언어
- 우리는 코드에 대해 이야기할 때도 종종 개념적 기계를 사용한다.
- 변수를 상자로 시각화
- 배열을 상자를 쌓아 놓은 것으로 시각화
- 함수는 백팩에 값을 넣은 후 코드의 호출 위치로 그것을 가져오는 여행자로 표현
- 여러 개념적 기계는 서로 충돌하는 정신 모델을 만들 수 있다.
- 변수에 대해 설명할 때 참가자들을 두 그룹으로 나눠 첫 번째 그룹에게는 개념적 기계를 상자로 표현했고 두 번째 그룹에게는 개념적 기계를 라벨로 표현했을 때 변수를 인식하는 차이가 발생했다.
- 그러므로 프로그래밍 개념과 그에 상응하는 컴퓨터의 동작을 설명할 때 현실 세계의 객체와 동작을 이용하는 것은 신중히 이루어져야 한다.
5. 개념적 기계와 스키마
개념적 기계는 프로그래밍 개념을 일상생활의 개념과 연관 지어 강력한 스키마를 형성하기 때문에 매우 효과적인 수단이다.
- 왜 스키마가 중요한가
- 스키마는 LTM이 정보를 저장하는 방식이기 때문이다.
- 개념적 기계는 의미론인가?
- 의미론은 세부 사항을 추상화하는 것이 아니라 세부 사항을 정확하고 완전하게 명시하는 것을 목표로 한다. 즉 개념적 기계와 의미론은 다르다
발제문
- 잘못된 정신 모델 또는 개념적 기계로 인해 삽질 한 일화 가 있나요? 올바른 개념을 잡기 위해 우리는 어떻게 해야 될까요?
반응형
'독서 > 2024' 카테고리의 다른 글
[프로그래머의 뇌] CHAPTER8 명명을 잘하는 방법 (0) | 2023.05.14 |
---|---|
[프로그래머의 뇌] CHAPTER7 생각의 버그 (0) | 2023.05.14 |
[프로그래머의 뇌] CHAPTER5 코드를 더 깊이 있게 이해하기 (1) | 2023.05.13 |
[프로그래머의 뇌] CHAPTER4 복잡한 코드 읽는 법 (0) | 2023.05.12 |
[프로그래머의 뇌] CHAPTER3 프로그래밍 문법 빠르게 배우기 (0) | 2023.05.11 |