프로그래머의 뇌 (펠리너 헤르만스 지음)
📍목차
1장 | 코드 더 잘 읽기
1. 코딩 중 겪는 혼란에 대한 이해
2. 신속한 코드 분석
3. 프로그래밍 문법 빠르게 배우기
4. 복잡한 코드를 읽는 방법
2장 | 코드에 대해 생각하기
5. 코드를 더 깊이있게 이해하기
6. 코딩 문제해결을 더 잘하려면
7. 생각의 버그
📍왜 2번째 프로그래밍 언어가 1번째 보다 쉬울까?
✅전이(transfer)
이미 배운 지식이 다른 영역에서 유용하게 사용됨
근거리 전이 : 자바와 C# 처럼 가까운(비슷한) 영역 사이의 지식이 전이
원거리 전이 : C와 파이썬처럼 먼 영역 사이의 지식의 전이
=> 근거리 전이가 일어날 가능성이 더 높다
✅LTM에 저장된 프로그래밍 지식이 새로운 프로그래밍 개념을 배우는데 도움이 되는 형태 2가지
1. 학습도중전이(transfer during learning)
- LTM에 저장된 정보를 사용하여 새로운 내용을 쉽게 접함
- 작업 기억 공간에서 STM(새정보)과 LTM(이미 배운 비슷한 정보) 양쪽에서 정보 인출
예) 자바를 알고 있는 상태에서 파이썬의 메서드를 배우면 더 쉽게 이해 가능
=> 정규화 (새로운 정보를 이미 알고 있는 정보와 명시적으로 연관시킴)
2. 학습 전이(transfer of learning)
- 인지 과학에서 '전이'는 대부분 이 학습 전이를 의미
예) 새로운 노트북을 사용해도 키보드를 능숙하게 사용
✅기존 프로그래밍 지식을 활용할 가능성을 높이는 방법
1. 숙달
- LTM에서 관련 정보를 적극 검색하여 정교화된 지식은 전이 가능성 높임
2. 유사성
- 새로운 지식이 기존 지식과 유사할 수록 유리
3. 배경
- 같은 IDE를 사용해야 더 유리
✅긍정적 전이
- LTM에 이미 저장된 지식이 학습 속도를 높이거나 새로운 작업을 수행하는데 도움을 주는 것
✅부정적 전이
- 기존 지식이 새로운 지식을 배울 때 방해가 되는 경우
예) 파이썬을 배우고 자바를 새로 배울 때, 변수 초기화 없이 선언
✅전이의 어려움
전이는 일어나기 어렵다 (특히 원거리 전이는 더욱 어려움)
예) 체스가 기억력 및 지능을 높여준다는 것은 과학적으로 근거 없음
📍오개념: 생각의 버그
코드가 잘 작동할 것이라 확신했는데 오류가 반복된다면, 코드에 대한 오개념 문제일 수 있다
✅오개념(misconception)
- 사실과 다르다
- 서로 다른 상황에서 일관되게 유지된다
- 확신에 사로잡혀 있다
예) 사람들이 흔히 고추의 씨앗 부분이 맵다고 알고 있지만, 전혀 그렇지 않음
이것이 오개념인 이유는
- 사실과 다르다
- 모든 종류의 고추가 이럴 것이라 추측
- 이게 사실이라고 생각해서 고추의 씨 부분을 빼고 요리
오개념을 교정하려면 LTM을 변경해야 하기 때문에, 많은 시간과 노력이 필요하다
✅프로그래밍과 관련된 대표적 오개념
1. 매개변수 전달에는 호출과 정의에 서로 다른 변수명이 필요하다
- 사실은 이와 다르며, 같은 이름을 사용하는 것이 권장된다
예) Python 메서드 예시
def square(number): # 정의
return number * number
number = 12
print(square(number)) # 호출
✅오개념을 줄이기 위해 생각할 것
1. 자신이 틀릴 수 있다는 사실을 염두
2. 흔히 발생하는 오개념을 연구하기
3. 테스트 코드
4. 문서화