-
[프로그래머의 뇌] 1. 코딩 중 겪는 혼란에 대한 이해📝 기록/독서 기록 2023. 11. 8. 13:29
💡 <프로그래머의 뇌> '코딩 중 겪는 혼란에 대한 이해' 챕터를 읽으면서 기억할 만한 부분을 기록한 포스팅입니다.
- 챕터 목표: 프로그래밍을 할 때 역할을 하는 세 가지 인지 과정과 각각의 인지 과정이 자신의 혼란 유형과 어떻게 연관되어 있는지 살펴본다.1. 코드가 초래하는 세 가지 종류의 혼란
생소한 코드를 접하게 되면 누구나 혼란을 느낀다. 하지만 이때 경험하는 혼란은 모두 같은 방식이 아니다.
1) 지식의 부족
2 2 2 2 2 T n
위와 같이 APL(A Programming Language) 코드가 있다고 가정할 때, 이 코드를 접하고 혼란스러운 이유는 T가 의미하는 바를 모르기 때문이다. 즉, T에 대한 지식이 없기 때문이다.
2) 정보의 부족
public class BinaryCalculator { public static void main(Integer n) { System.out.println(Integer.toBinaryString(n)); } }
위와 같은 Java 코드를 접하게 된 경우, 자바를 모른다고 해도 프로그래밍 언어를 어느 정도 알고 있는 사람이라면 이 코드가 정수 n을 이진수 표현으로 변환한다는 걸 파악할 수 있다. 다만 toBinaryString() 메서드가 내부적으로 어떻게 작동하는지 모르기 때문에 혼란을 느낄 수 있다. 즉, 여기서는 메서드에 대한 정보가 부족하기 때문에 혼란을 느끼는 것이다.
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$
위와 같이 베이직으로 작성된 코드에서는 변수 이름이나 연산자를 통해 코드가 무슨 일을 하는지 유추할 수 있다. 하지만 코드를 따라가다 보면 머릿속에서 모든 과정을 처리하기 어렵고, 변수에 임시로 저장되는 값과 연산되는 과정을 다 기억하고 수행되는 순서 등을 동시에 알기가 쉽지 않다. 이러한 혼란은 처리 능력이 부족하기 때문이다.
2. 코딩에 영향을 주는 인지 과정
1) LTM(Long-Term Memory)
지식이 없다는 건 두뇌의 장기 기억 공간(LTM)에 해당 내용이 없다는 것을 의미한다. 장기 기억 공간은 기억하는 내용을 반 영구적으로 저장하는 공간이다. 여기에 있는 기억은 아주 오랫동안 보관된다. 가령 이진 검색을 하는 프로그램을 작성할 때 추상적인 알고리즘과 프로그래밍 언어의 문법을 기억하고 나아가 키보드로 입력하는 동작을 기억하는 일을 모두 LTM이 한다.
LTM은 프로그래밍과 관련해서 여러 가지 다른 종류의 정보를 저장한다. 예를 들어 어떤 기술을 성공적으로 적용한 순간, 자바 언어에서 키워드의 의미나 maxint의 값이 2147483647이라는 사실, 혹은 영어 단어의 의미 같은 것 말이다.
2 2 2 2 2 T n
앞서 나왔던 APL로 작성된 코드를 읽을 때 LTM을 가장 많이 사용한다. 키워드 T의 의미를 알고 있다면 그것은 LTM으로부터 인출된 것이다. 즉, LTM은 기억을 영구적으로 저장하기 때문에 컴퓨터로 따지면 하드 드라이브와 같다고 할 수 있다.
2) STM(Short-Term Memory)
어떤 정보가 부족할 때는 단기 기억 공간(STM)에 해당 내용이 없다는 것을 의미한다. STM은 들어오는 정보를 잠시 보관하기 위해 사용된다. 코드로 예를 들자면, 키워드, 변수명, 자료구조 등이 STM에 일시적으로 저장된다. 즉, STM은 컴퓨터로 따지면 값을 일시적으로 저장하는 캐시나 메인 메모리라고 할 수 있다.
3) 작업 기억 공간(Working Memory)
많은 정보를 처리할 때는 작업 기억 공간에 영향을 미치는데 우리는 사고할 때 이 영역을 사용한다. 앞선 LTM과 STM은 기억장치라고 하면, 작업 기억 공간은 두뇌의 프로세서라고 볼 수 있다.
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$
위 코드를 읽을 때는 머리가 코드를 실행하면서 무슨 일이 일어날지 이해하려 시도하는 트레이싱 과정을 경험하는데, 머릿속에서 코드를 컴파일하고 실행하는 과정을 의미한다.
3. 인지 과정들과 상호작용
코드를 읽는 동안 앞서 설명한 세 가지 인지 과정은 다 같이 일어나며 상호보완적으로 작용한다. 예를 들어 STM이 n과 같은 변수명을 보게 되면 과거에 읽었던 그와 관련된 프로그램을 LTM으로부터 찾는다. 모호한 단어를 보면 작업 기억 공간이 활성화되어 문맥 속에서 적합한 의미를 찾으려고 한다.
✍🏻 독후감
아직 많이 읽지는 않았지만, 책의 구성이 교과서 같다고 느껴졌다. 챕터 목표 ~ 내용 설명 ~ 챕터 내용 요약의 과정이..
이 책이 당장 내 프로그래밍 능력을 버라이어티하게 키워주지는 못하더라도 아는 만큼 보인다는 말이 있듯이 작업할 때의 마인드셋과 멘탈 모델을 구축해 주고, 개발을 해야 할지에 대해서 사고하게 만들어주는 책이라고 생각이 들었다. 나머지도 열심히 읽어야지!
'📝 기록 > 독서 기록' 카테고리의 다른 글
[프로그래머의 뇌] 2. 신속한 코드 분석 (2) 2024.01.22 『자바스크립트 코딩의 기술』을 읽고. 똑소리나게 자스를 쓰고 싶다면! (0) 2022.11.07 『개발자가 반드시 정복해야 할 객체 지향과 디자인 패턴』을 읽고. 수정하기 좋은 코드를 작성하고 싶다면! (0) 2022.10.15 『그림으로 배우는 HTTP & Network Basic』을 읽고. HTTP 도장 깨기! (1) 2022.10.07 『웹디자이너를 위한 HTML5』를 읽고. 사용자를 고려하라! (0) 2022.09.30