프로그래머의 뇌 - 2. 신속한 코드 분석

2023. 6. 22.·🤓 기술 학습 & 공부 기록/컴퓨터 일반

프로그래머의 뇌 (펠리너 헤르만스 지음)

📍목차

1장 | 코드 더 잘 읽기

1. 코딩 중 겪는 혼란에 대한 이해

2. 신속한 코드 분석

 

📍요약

✅STM

- 저장공간 : 7개 전후 => 크기 제한을 극복하기 위해 LTM과 협업

- 정보는 STM 전 감각 기억 공간을 거쳐서 일부만 STM에 전달됨

 

✅청크

- 새로운 정보를 읽을 때, 우리 두뇌는 그 정보를 청크라는 몇 개의 묶음으로 나눔

 

✅코드를 읽을 때 인지 과정

- LTM에서 인출할 지식이 없으면, 키워드같은 정보에 의존해야 해서 STM의 공간이 빠르게 소진됨

- LTM에 관련 지식이 많으면, STM에 저장하는 대신, LTM에서 "자바스크립트에서의 for loop" 같은 방식으로 기억을 인출하므로 STM 공간을 절약

 

✅코드를 더 잘 읽는 방법

- 디자인 패턴, 언어에 대한 지식, 도메인 지식 등을 더 학습

- 두뇌는 디자인 패턴, 주석, 표식 등을 잘 받아들임

 

📍2-1. 코드를 신속하게 읽기

⭐코드는 사람이 읽을 수 있도록 작성해야만 한다

대부분 코드를 작성하는 것에 집중하지만, 코드를 읽는 연습도 중요

 

Java로 작성된 삽입정렬 알고리즘 3분간 보고, JavaScript로 재현해보기

- Java 원본 코드

public class InsertionSort {
 public static void main (String [] args) {
   int [] array = {45,12,85,32,89,39,69,44,42,1,6,8};
   int temp;
   for (int i = 1; i < array.length; i++) {
     for (int j = i; j > 0; j--) {
       if (array[j] < array [j - 1]) {
         temp = array[j];
         array[j] = array[j - 1];
                       array[j - 1] = temp;
       }
     }
   }
   for (int i = 0; i < array.length; i++) {
     System.out.println(array[i]);
   }
 }
}

 

- JavaScript 재현 코드

const ARR = [1, 9, 6, 7, 2, 4, 3, 5, 8];

const insertionSort = (arr) => {
    let temp;
    for (let i = 1; i < arr.length; i++) {
        for (let j = i; j > 0; j--) {
            if (arr[j - 1] > arr[j]) {
                temp = arr[j];
                arr[j] = arr[j - 1];
                arr[j - 1] = temp;
            }
        }
    }
    return arr;
};

console.log(insertionSort(ARR)); // [1, 2, 3, 4, 5, 6, 7, 8, 9]

 

- 자바 문법에 대한 지식이나 삽입 정렬에 대한 배경 지식은 LTM에서 가져옴

- 숙련된 프로그래머들은 원래 코드에 없던 주석을 추가하는 경우도 있었음

=> 주석을 통해 추가할 내용을 기록하고 넘어감

(주석을 코드를 설명하는 것 뿐만 아니라 미작성된 내용을 기록하기 위해서도 사용)

 

✅위의 코드에서 for loop의 i, j 같은 변수 명을 l, b 처럼 잘 사용하지 않는 것으로 바꾸면, 재현 가능성이 더 낮아진다

=> 그 이유는, STM에 제약이 있기 때문

- 용량 : 7 언저리 (매직 넘버 7, 최근에는 2 ~ 6 이라는 연구도 있음)

- 시간 : 30초를 넘지 않음

 

📍2-2. 기억의 크기 제한을 극복하기

✅청킹(Chunking)을 통해 묶어서 기억하기

STM의 한계를 극복할 수 있다

예) abk mrtpi gbar 와 같은 길이의 cat loves cake 문장을 더 쉽게 기억

=> 이는 LTM에 의존할 수 있게 해주기도 한다

 

실험 사례

ALGOL 이라는 프로그래밍 언어로 작성된 코드를 초급, 중급, 고급 프로그래머에게 외우게 했더니

숙련된 프로그래머일 수록 더 잘 외움 (LTM에서 인출)

 

그런데, 코드 위치를 무작위로 뒤섞은 코드는, 숙련도와 상관없이 같은 분량의 코드를 외우는 결과가 나옴

=> LTM에 저장된 지식이 많을 수록, 코드 이해가 빠름

 

📍2-3. 읽는 것보다 보는 것이 더 많다

정보가 STM 전에 감각 기억 공간(sensory memory)을 거침

- 키보드, 마우스같은 입출력 버퍼(I/O Buffer) 역할

- 시각, 촉각, 청각, 미각, 후각마다 각각 공간을 가짐

- 시각 정보의 경우 영상 기억 공간을 거침

 

✅청크로 묶을 수 있는 코드를 작성하는 방법

- 디자인 패턴 사용

- 주석 사용 => 주석은 읽는 시간을 늘리므로 중요한 곳에만 사용

- 표식(beacon) 사용 예) 변수명에 left, right 등의 정보 부여

 

의도적인 코드 재현 연습으로 청킹을 통한 코드 기억력을 향상시킬 수 있다

'🤓 기술 학습 & 공부 기록/컴퓨터 일반' 카테고리의 다른 글
  • 프로그래머의 뇌 - 4. 복잡한 코드를 읽는 방법
  • 프로그래머의 뇌 - 3. 프로그래밍 문법 빠르게 배우기
  • 프로그래머의 뇌 - 1. 코딩 중 겪는 혼란에 대한 이해
  • ASCII, UTF-8, UTF-16
지식물원
지식물원
지식이 자라는 식물원!
  • 지식물원
    지식물원
    지식물원
  • 전체
    오늘
    어제
    • 분류 전체보기 (516)
      • 🎨 프론트엔드 공부 (253)
        • JS & TS (92)
        • HTML & CSS (22)
        • React & Next (49)
        • Vue & Nuxt (22)
        • 기타 (68)
      • 🤓 기술 학습 & 공부 기록 (116)
        • Node.js (0)
        • Python (37)
        • 백엔드 (0)
        • 딥러닝 (1)
        • 컴퓨터 일반 (72)
        • 개발 인프라 (6)
      • 👨‍💻 프로젝트 경험 (6)
        • Work (0)
        • Toy (6)
      • ⚙️ 개발 팁 & 노하우 (21)
        • 프론트엔드 (6)
        • 기타 (15)
      • ☕️ 커리어 & 인터뷰 준비 (88)
        • 코딩 테스트 (88)
      • 📰 기술 트렌드 & 생각 정리 (4)
      • 📚 기타 (25)
        • 마케팅 (15)
        • 비개발서적 (10)
  • 블로그 메뉴

    • 태그
  • 링크

  • 공지사항

    • 모바일 접속 시 코드 하이라이팅 깨질 때
  • 인기 글

  • hELLO· Designed By정상우.v4.10.3
지식물원
프로그래머의 뇌 - 2. 신속한 코드 분석
상단으로

티스토리툴바