<도서정리> 프로그래머처럼 생각하라, 프로그래머의 뇌
2022.04.16
프로그래머처럼 생각하라
- 모델 기반 사고 - 프로그래머는 사물을 단순하게 생각한다
- 모델 : 사물의 특성과 사물과 사물 간의 관계를 나타낸 것
- 장점
- 전체적인 그림을 파악할 수 있어 이해도가 높아지고, 누락 또는 중복을 줄일 수 있다.
- 논리적 비약 : 새로운 요소를 추가, 기존 요소를 제거, 관계 확장 등 모델링을 지속적으로 활용 및 개선시킬 수 있다.
- 장점
-
- 모델 형성 단계
1. 필수 요소 명사 열거
2. 선으로 요소 간 관계 표시
3. 논리적 배치
- 모델 형성 단계
- 모델링은 목적에 맞는 관점으로 설계하는 것이 중요
- 관점에 따라 모델링이 달라지기 때문에 목적을 명확히 할 것
- 모델링은 핵심 위주로 단순하게, 전달 가능할 정도의 구체성을 가져야한다.
- 명명에 대한 정확성
- 모델링은 구체적 사례를 통해 일반화를 이끌어내야한다.
- 본질을 중요시
- 사례에 대한 구체성
- 모델링은 기승전결의 구조로 어떤 곳에서도 응용 가능
- 무엇인가를 파악하거나 전달하고자할 때
- 단순 -> 구체 -> 일반화 가능
- 추상적이고 논리적인 도식화로 흐름 파악 용이
프로그래머의 뇌
- 코딩을 할 때 오는 혼란의 세 가지 원인
1. 지식의 부족 -> 언어를 모를 때
2. 정보의 부족 -> 언어는 알지만 특정 메서드의 동작 과정을 모를 때(캡슐화 등)
3. 처리 능력의 부족 -> 유추할 수 있지만 단계적인 결과값을 따라가지 못할 때
위 세가지 원인은 뇌의 다음과 같은 영역과 관련있음
1. 장기기억공간; 하드디스크, 저장
2. 단기기억공간; 메모리, 저장
3. 작업기억공간; cpu, 처리
- 코드를 신속하게 이해하는 법
묶음(chunk)을 활용 -> 이 과정에서는 이미 내가 기존에 기억하고 있는 장기기억을 활용하여 처리
즉, 기억하는 대상이 중요한 것이 아니라 기억하는 방식이 중요하다
- 장기기억
프로그래밍을 하다보면 막히는 부분이 일어나 업무중단이 빈번하게 일어난다.
이 때 프로그래밍의 목적이 상실될 수 있는 위험성이 있다.
그렇기 때문에 어느 정도의 암기는 프로그래밍에 유용하다.
장기기억 또한 시간이 지나면 사라지기 때문에 간격을 두고 반복하여 기억을 강화하는 작업이 필요하다.
-
- 장기기억을 가져오는 두 가지 기제
- 저장강도
- 인출강도
- 저장강도는 시간이 흐를수록 증가하지만 인출강도는 시간이 흐를수록 감소한다.
- 알고 있는 것을 기억해내고 실제로 꺼낼수록 인출강도는 강화된다.
- 장기기억을 가져오는 두 가지 기제
-
- 즉, 많이 보아서 장기기억에 저장되어 있는 코드일지라도 인출강도가 약하면 해당 코드가 필요할 때 사용할 수 없을 것이다.
저장은 반복을 통해 가능하지만 인출 또한 반복해야한다.
-> 능동적 사고를 통한 인출강도 강화; 능동적으로 기억하려고 노력할 때 저장과 인출 모두 효과가 좋다
- 즉, 많이 보아서 장기기억에 저장되어 있는 코드일지라도 인출강도가 약하면 해당 코드가 필요할 때 사용할 수 없을 것이다.
-
- 기억을 강화하기 위해서는 정교화하는 것이 도움이 된다. 연관기억을 활용하여 새로운 기억을 저장하는 방식이다. 공통점, 패턴을 활용.
-
- 장기기억은 긍정적 전이, 부정적 전이(오개념)가 일어난다. 오개념을 방지하기 위해 알고 있는 개념일지라도 명확히 할 필요가 있다.
-
- 장기기억은 암시적 기억과 명시적 기억으로 분류할 수 있다.
- 암시적 기억은 근육 기억으로 터치 타이핑처럼 아무 생각없이 실행할 수 있는 작업이다.
- 명시적 기억은 for 루프 문법처럼 능동적으로 불러와야하는 기억이다.
- 명시적 기억을 강화하려면 기존 코드, 코드 설계 방법에 대한 설명(해설)이 포함된 코드를 연구하면 좋다.
- 장기기억은 암시적 기억과 명시적 기억으로 분류할 수 있다.
- 변수
변수는 표식이 되어 코드 이해에 도움이 된다.
코드를 이해하기 위해서는 코드를 작성한 목적에 집중하는 것이 필요하다.
코드의 핵심에 초점을 맞추고 연관 코드들을 이해하는 것으로 방향을 확장시킨다.
코드를 읽고 이해하는 데 많은 시간을 소요하기 때문에 언어능력을 향상시키는 것도 필요하다.
-
- 명명을 잘하는 방법
- 일관성, 명확성
- 변수길이, 음절길이, 스네이크 케이스, 카멜 케이스
- 명명 방법 3단계 : 표현할 개념 정의 -> 단어 선택 -> 단어 결합
- 명명을 잘하는 방법
댓글을 작성해보세요.