멘토님께 추천 받은 책
프로그래머의 시간 중 60%는 코드 작성이 아닌 코드 이해에 사용됨.
"프로그램은 사람이 읽을 수 있도록 작성해야 한다. 기계가 실행하는 것은 부차적인 일이다."
디자인 패턴을 활용하면 코드를 더 잘 묶을 수 있다.
이건 코드를 이해하는데 도움이 준다.
즉, 디자인 패턴을 이해하면 코드를 청킹하는 능력이 올라가고,
이건 코드 기억과 이해에 도움이 된다!
주석이 있으면 코드 읽는 시간이 더 늘어남.
주석문이 있으면 새로운 팀원이 코드를 이해하는데 도움이 됨.
저수준 주석은 청킹에 오히려 방해가 된다.
예) i의 값을 1씩 증가 시킨다. ❌
고수준 주석은 청킹에 도움이 된다.
예) 이 함수는 주어진 이진 트리를 중위 순회하며 프린트한다. ✅
문법에 대한 지식이 많을 수록 청킹이 쉽다.
즉, 코드를 이해하는 게 빨라진다.
플래시카드 사용해서 문법 익히기
프롬프트가 있는 면을 읽고 나서 해당 문법 기억하는 방식
프롬프트를 읽고 정답을 적고, 카드를 뒤집어서 확인
# 1. 기본 문법
numbers = [x for x in numbers]
# 2. 필터
odd_numbers = [x for x in numbers if x % 2 = 1]
# 3. 계산
[x*x for x in numbers]
# 4. 필터와 계산
squares = [x*x for x in numbers if x > 25]
코드 읽기 어려운 이유는 작업 공간 부족으로 인한 인지 부하가 원인
리팩토링은 이런 인지 부하를 줄이기 위한 기법이다!
람다, 리스트 컴프리헨션은 향상된 기법이지만 이로 인해 인지 부하가 발생한다면(팀 내, 혹은 본인이)
오히려 for, while로 바꿔서 인지 부하를 줄이는 게 유용할 수 있음.
삼항 연산자도 마찬가지.
오호, 무조건 최신 기법이나 축약 문법이 좋은 게 아니라 이게 만약 인지 부하를 유발한다면 오히려 풀어 쓰는 게 좋은 코드일 수 있다!
프로그래밍은 산술 능력이 아닌 언어 능력의 예측력이 더 크다.
풀어야 할 문제에 대해 추론하기 위해 사용할 수 있는 작업 기억 공간 내의 추상화
e.g. 컴파일 언어임에도 코드가 한 줄 씩 실행되고 있다고 생각
e.g. 변수라는 상자에 숫자가 들어가 있다고 생각하는 것(진짜 숫자가 들어가 있지 않지만)
나만의 방식대로 문제를 추상화하는 것
프로그래밍 언어에서 정신 모델과 비슷한 역할을 하는 것
진짜 물리적인 작동 매커니즘이 아닌 추상화해서 이해하는 것
개념적 기계는 컴퓨터가 작동하는 방식을 설명한다.
정신 모델이 나만의 방식대로 이해하기 쉽게 추상화 하는 것이라면,
개념적 기계는 실제 컴퓨터의 동작은 비유나 예시 등으로 실제 동작 원리에 맞게 추상화 하는 것.
프로그래밍 언어에 대해서 배울수록 정신 모델이 점점 더 개념적 기계에 가까워 짐
새 정보 -> 감각 기억 -> STM -> 작업 기억 <- LTM
두 번째 프로그래밍 언어 학습이 쉬운 이유: 긍정적 전이
오개념이 발생하는 이유: 부정적 전이
일반적으로 snake보다 camel이 식별자로서 더 높은 정확도를 보임.
근데 둘 다 훈련하는 것이 좋음.
p.161
인간은 멀티태스킹을 못 함.
멀티태스킹을 할 수 있다고 착각하는 사람들은 자신이 생산적이라고 느끼지만, 업무 효율은 떨어짐.
코드 줄 수가 중요한 게 아니라 청크가 중요하다.
타입을 모두 명시하는 게 좋은 것만은 아님.
이 경우 점도(코드 변경 가능성)가 올라가서 끈적한 코드가 된다.
코드는 인지 부하를 일으키지 않도록 작성해야 한다.