1. 왜 두 번째 프로그래밍 언어가 첫 번째보다 쉬울까? 전이(transfer) 이미 배운 지식이 다른 영역에서도 사용되는 현상 LTM에 저장된 정보를 사용해서 새로운 내용을 쉽게 배우는 과정을 학습 도중 전이 라고 부른다. 새로운 정보를 습득하면, 먼저 감각 기억 공간과 STM에 의해 처리된다. 그다음에 작업 기억 공간으로 전송되며, 작업 기억 공간은 이에 대해 생각하는 동시에 LTM에서 관련 정보를 검색한다. 관련 정보가 발견되면 작업 기억 공간에 전송되어 새로운 정보에 대해 사고하는 것을 돕는다. 기존 프로그래밍 지식을 활용할 가능성을 높이는 방법 숙달: 전문 프로그래머는 다른 프로그래밍 언어의 문제에 적용할 수 있는 전력, 청크, 정신 모델을 더 많이 알고 있어서 기존 프로그래밍 지식을 활용할 가..
1. 모델을 사용해서 코드에 대해 생각해 보기 모델의 유익함 모델은 프로그램에 대한 정보를 다른 사람과 공유할 때 유용하다. 모델은 문제를 풀 때 도움이 된다. 모든 모델이 동일하게 유용한 것은 아니다. 2. 정신 모델 정신 모델이란 두뇌의 외부에서 만들어지지 않은 모델을 의미하며 풀어야 할 문제에 대해 추론하기 위해 사용할 수 있는 작업 기업 공간 내의 추상화이다. 정신 모델의 예로 트리 순회가 있다. 코드와 컴퓨터에는 우리가 순회하는 실제 트리는 존재하지 않는다. 우리가 트리 구조라고 생각하는 메모리 내의 값이 있을 뿐이다. 정신 모델 자세히 살펴보기 새로운 정신 모델 배우기 파일 ‘폴더’에 들어 있는 것이라고 피상적으로 생각하지만, 실은 그것이 하드 드라이브 내에서 정보가 저장된 위치에 대한 참조라..
1. ‘변수 역할’ 프레임워크 적절한 변수명은 표식으로 사용될 수 있고 읽고 있는 코드를 깊이 이해하는데 도움이 된다. 변수는 각자 다른 일을 한다. 최근 값 보유 자 역할(most recent holder): upperbound, factors목적값 보유자 역할(most wanted holder): max_prime_factors 스테퍼 역할(stepper): counter #소인수 분해 코드 upperbound = int(input('Upper bound?')) max_prime_factors = 0 for counter in range(upperbound): factors = prime_factors(counter) if factors > max_prime_factors: max_prime_fact..
1. 복잡한 코드를 이해하는 것이 왜 어려울까? 결론 적으로 작업 기억 공간이 부족하기 때문이다. 작업 기억 공간과 STM차이 STM의 역할이 정보를 기억하는 것인 반면, 작업 기억 공간의 역할은 정보를 처리하는 것이다. 이 책에서는 ‘작업 기억 공간’이라는 용어를 ‘문제에 적용된 STM’의 의미로 사용된다. STM과 같이 작업 기억 공간도 한 번에 2개에서 6개까지만 기억할 수 있다. 작업 기억 공간의 맥락에서 이 용량을 인지 부하라고 부르며, 너무 많은 요소가 있어 청크로 나뉘지 않는 문제를 풀려고 할 때 작업 기억 공간은 과부하(overload) 상태가 된다. 프로그래밍 관련한 인지 부하의 종류 💡 내재적 부하: 문제 자체가 얼마나 복잡한지 외재적 부하: 외부적 요인에 의해 문제에 추가된 것 본유적..
많은 개발자들이 프로그래밍 문법을 모르더라도 인터넷에 검색하면 되기 때문에 문법에 대한 지식이 중요한 것은 아니라고 생각한다. 하지만 개념, 자료구조, 문법을 더 많이 알수록 두뇌는 더 많은 코드를 쉽게 분리하고 기억하고 처리할 수 있다. 또한 검색 후 작업 중인 코드로 다시 돌아올 때 업무를 회복하는데 드는 에너지가 생각보다 크므로 효율적이지 않다 1. 문법을 기억하기 위한 팁 플래시카드 사용해 문법 배우기 새로운 언어나 프레임워크 혹은 라이브러리를 배울 때 사용하면 좋다. 검색한 단어와 개념을 플래시카드에 적으면 좋다. 정기적으로 꾸준히 반복해서 연습하기 무작정 검색하기 이전에 능동적이고 의도적으로 기억하려고 시도하기 관련된 개념을 생각하면서 정교화하기 2. 기억을 잃어버리는 이유와 더 오랫동안 기억..
연구에 의하면 프로그래머의 시간 중 거의 60%를 코드를 ‘작성’하는 게 아니라 ‘이해’하는 데 사용한다고 한다. 따라서 정확도를 유지하면서 코드를 빨리 이해하도록 향상한다면 프로그래밍 기술이 크게 개선되는 셈이다 1. 코드를 신속하게 읽기 우리는 코드를 읽는 법보다 작성하는 법을 훨씬 더 많이 연습한다. 프로그래밍을 처음 배울 때부터 문제를 어떻게 풀고 그것을 코드로 어떻게 구현하는지를 집중적으로 훈련하지만 코드를 읽는 연습은 전무할 것이다. 코드를 신속하게 읽으면 좋은 점 코드를 다시 찾아보는 횟수를 줄일 수 있다 코드를 찾는 데 허비할 시간에 버그를 고치거나 새로운 기능을 추가할 수 있다. 두뇌에서 무슨 일이 일어나는가? /* 삽입 정렬을 구현한 자바 프로그램 */ public class Inser..
1. 코드가 초래하는 세 가지 종류의 혼란개발을 하다 보면 늘 혼란을 겪는다. 이 혼란은 세 가지의 서로 다른 방식으로 발생하고 각각은 LTM(Long-term memory), STM(Short-term memory), 작업 기억 공간(working memory)과 각각 연관되어 있다.해당 항목에 대한 지식이 없기 때문에 발생하는 혼란언어, 알고리즘 또는 업무 영역에 대한 지식이 없어서 발생한다.정보가 부족해서 발생하는 혼란코드를 이해하기 위해 필요한 정보를 충분히 가지고 있지 않을 때 발생한다.처리능력이 부족해서 발생하는 혼란코드가 연산 과정이 많거나 복잡스러운 경우 발생한다.2. 코딩에 영향을 주는 인지과정LTM과 프로그래밍지식이 없다는 것은 두뇌의 장기 기억 공간에 해당 내용이 없다는 것이다.LTM..