23년 이전 글/IT 교양

다른 사람의 코드를 읽기 어려운 이유

프로그래머의 뇌(PROGRAMMER`S BRAIN)를 읽은 후 정리한 글 - Chapter. 1

 

코드가 초래하는 세 가지 종류의 혼란

3가지 언어를 예시를 들어 혼란의 종류에 대해서 알아보자

1. APL( A Programming Language )  - 위키백과

2 2 2 2 2 T n

2. Java

public class BinaryCalculator {
	public static void main(Integer n) {
    	System.out.println(Integer.toBinaryString(n));
    }
}

3. 베이직

LET N2 = ABS(INT(N))
LET B$ = ""
FOR N1 = N2 TO 0 STEP 0
	LET N2 = INT(N1 / 2)
    LET B$ = STR$(N1 - N2 * 2) + B$
    LET N1 = N2
NEXT N1
PRINT B$

 

처음 언급된 APL은 1960년대의 수학자가 아니면 알 수 없을 언어이며, 자바에서는 toBinaryString() 메서드의 내부 동작을 모른다면 이해할 수 없을 수 있다. 마지막으로 베이직은 각 단계를 모두 이해하지 못한다면 혼란스러울 수 있다

 

1. 첫번째 혼란, 지식의 부족

APL에서는 T가 무엇을 의미하는지 모르기 때문에 어렵다. 이러한 사례는 T에 대한 지식이 없음에 해당한다.

2. 두번째 혼란, 정보의 부족

Java에서는 메서드명에서 유추할 수 있겠지만 toBinaryString() 메서드의 내부 동작을 모른다는 점에서 메서드에 대한 정보가 부족하기 때문에 내부 코드를 살펴볼 필요가 있다.

3. 세번째 혼란, 처리능력의 부족

베이직에서 변수 이름과 연산자를 통해 코드가 무슨 일을 하는지 유추할 순 있지만, 과정을 좇다보면 한눈에 알 수 없기 때문에 혼란이 생긴다. 이는 처리능력이 부족하기 때문이다.

 

따라서 첫째로 프로그래밍 언어와 알고리즘 등 업무 영역에 대한 지식이 없는 경우 습득이 필요하며, 최근 다양한 라이브러리나 모듈, 패키지를 사용하기 때문에 이는 정보를 얻기 위해 검색엔진(구글)을 잘 활용할 필요가 있다. 마지막으로 코드가 복잡한 경우, 두뇌 처리 용량이 부족하기 때문에 한번에 처리하기 어려우며, 옆에 변수를 적거나 임시 저장 값을 기억하는 등의 추가적인 노력이 필요해지는 시점이다

 

코딩의 인지과정

저자가 코딩의 인지과정을 풀어 설명한 것이 굉장히 흥미로운 부분인데, 사람의 인지과정을 일종의 컴퓨터 하드웨어와 비슷하게 설명을 해두었다.

 

장기 기억 공간(LTM, Long Term Memory)

지식이 없는 것은 장기 기억 공간에 해당 내용이 없다는 것으로, 마치 하드디스크의 영역(반 영구저장소)으로 본다

지식의 부족 = LTM의 문제

단기 기억 공간(STM, Short Term Memory)

잠깐 정보가 필요할 때는 일시적으로 단기 기억 공간에 저장하므로 마치 RAM과 같이 본다

정보의 부족 = STM의 문제

작업 기억 공간(Working Memory)

많은 정보를 처리할 때 작업 기억 공간에 영향을 미치며, 기본적으로 사람이 사고할 때 사용하는 공간이다

처리 능력의 부족 = 작업 기억 공간의 문제

 

LTM과 프로그래밍

신발 끈을 묶을 때 근육이 무엇을 해야 할지 자동으로 기억하는것은 LTM이 사용되는 것이다.

이진 검색을 하는 프로그램을 작성할 때 추상적인 알고리즘과 프로그래밍 언어의 문법, 그리고 키보드로 입력하는 동작을 기억하는 일 모두 LTM과 관련이 있다

STM과 프로그래밍

누군가와 통화중에 듣게 되는 전화번호는 STM이 사용된다. STM의 크기 제한이 있는데 보통 최대 항목이 12가지가 넘지 않는 다는게 학계의 정설.

코드 분석 시 키워드, 변수명, 자료구조 등이 STM으로 저장된다. 캐시나 메모리로 보면 된다

작업 기억 공간과 프로그래밍

실제 사고 작용이 일어나는 곳으로 생각, 아이디어 ,해결책 같은 것이 만들어지는 곳이며 이곳은 프로세서로 볼 수 있다.

 

인지 과정들의 상호작용

프로그래밍, 프로그래밍 외에 과정에서도 일어나는 LTM - STM - Processing 과정

예시) 버그 리포트를 받고 과거 코드를 다시 보는 경우

LTM에서의 코드에 대한 기억, STM에 보유한 고객 리포트 내용이 Processing 하는 단계로 문제를 해결하게 됨

 

 

구글링을 하더라도, 내가 무엇을 모르는지 정확히 인지하고, LTM이 필요한 내용인지, STM이 필요한 내용인지 정확히 알고 기억할 내용은 기억하자!

반응형