Chapter 3. 프로그래밍 문법 빠르게 배우기

Posted by yunki kim on January 9, 2023

 문법을 기억하기 위한 팁

  프로그래밍 언어 문법을 기억하는 일은 상당히 어렵다. 또 한, 많은 프로그래머들이 인터넷을 활용하면 되므로 문법 기억은 중요하지 않다고 한다. 하지만, 이전 장에서 언급했듯 관련 내용을 알고 있는 것이 코드를 효율적으로 읽는 것에 상당한 도움이 된다(청킹과 검색에 유리하다). 또 한, 업무 중단은 생각보다 더 안 좋은 영향을 미친다.

업무 중단이 미치는 나쁜 영향

  인터넷 검색을 위해 하던 업무를 중단한다면 나도 모르게 이와 관련 없는 것을 검색하거나 너무 깊게 검색해 원래의 의도를 잊을 때가 있다. 업무 중단이 프로그래머들에게 미치는 영향에 관한 연구에서는 코딩 작성 도중 중단이 되면 다시 원상태로 돌아가기까지 약 15분이 걸렸다. 이는 검색 과정에서 코드의 중요 부분을 망각하기 때문이다.

  따라서 문법을 기억해 업무 중단을 최대한 줄이는 것이 효율적이다.

플래시카드 사용해 문법 배우기

  플래시 카드는 앞면에 학습하려는 내용에 대한 프롬프트(질문이나 지칭하는 단어)가 존재하고 뒷면에 그게 대한 내용이 담긴 카드를 의미한다(ex. 필터 <-> odd_numbers = [x for x in numbers if x % 2 = 1]). 플래스 카드는 프롬프트를 보고 해당 문법을 기억하고 확인하는 식으로 활용하면 된다. 새로운 프로그래밍 언어나 프레임워크, 라이브러리를 배울 때 활용하면 좋다. 또는 모르는 개념을 검색할 때 검색 키워드를 프롬프트로, 검색 결과를 답으로 사용해도 좋다.

플래시카드 개수 줄이기

  각 카드를 사용할 때마다 카드에 오답, 정답 횟수를 기록하라. 몇 번 연속으로 답을 맞혔다면 해당 카드를 배제해도 좋다.

어떻게 하면 잊어버리지 않을 수 있을까?

  LTM에 기억된 정보는 STM에 기억된 정보에 비해 오랫동안 휘발되지 않지만 영원히 저장되지도 않는다. LTM의 정본느 한 시간 이내에 약 50%가 휘발되며 이틀 후에는 25%만 남는다.

기억을 잃어버리는 이유

  LTM에서 기억을 잃어버리는 이유를 알기 위해 LTM에서 기억이 어떻게 동작하는지 살펴보자. 인지과학자들은 부호화(encoding-저장하는 방법을 일컫는 단어)라는 용어를 기억이 뉴런에 의해 형성될 때 두뇌에서 일어나는 변화를 일컫는다.

계층구조 대 네트워크

  사람을 컴퓨터에 비유한다면 흔히 뇌를 하드 디스크로 형용한다. 하지만 하드 드라이브는 계층 구조를 가지는 반면, 뇌는 네트워크 구조로 되어 있다. 이것이 사람이 정보를 잊어버리는 중요한 이유다.

망각 곡선

  독일의 심리학자 헤르만 에빙하우스(Herman Ebbinghaus)는 연구를 통해 연관성이나 관계성을 가지지 않는 지식을 기억하려 했을 때 잊히는 속도를 그래프화 했다.

간격을 두고 반복하기

  반복 학습 시 효율적인 기억을 위해 둬야 하는 간격에 대한 연구에서, 외국어 단어 300개를 학습하는 것을 실험 주제로 삼았을 때 8주간의 간격을 두고 26회 반복하는 것이 가장 효율적이다는 결론을 내렸다. 즉, 오랫동안 학습하는 것이 더 오래 기억하는 방법이다. 오랜 간격을 두고 학습해야 한다.

문법을 더 오랫동안 기억하기

  기억을 강화하기 위한 테크닉으로는 적극적으로 무언가를 일부러 기억하려는 인출(retrieval) 연습과 기존 기억에 새로운 지식을 적극적으로 연결시키는 정교화(elaboration)가 있다.

정보를 기억하는 두 가지 형태

  캘리포니아 대학교 심리학과 교수인 로버트 비요크(Robert Bjork)와 엘리자베스 비요크(Elizabeth Bjork)는 LTM으로부터 기억을 가져오는 두 가지 기제를 저장(storage) 강도와 인출(retrieval) 강도로 구분했다.

  저장 강도는 무언가를 LTM에 얼마나 잘 저장하고 있는지를 나타낸다. 어떤 것을 더 많이 학습할수록 그 내용을 잊어버리는 것이 거의 불가능해질 때까지 기억은 점점 더 강해진다.

  인출 강도는 정보를 얼마나 쉽게 기억할 수 있는지를 나타낸다. 답이 입에 맴돌기만 하고 나오지는 않을 때가 있다. 이는 저장 강도는 높지만 인출 강도는 낮다는 것을 의미한다. 시간이 흐를수록 저장 강도는 증가하지만 인출 강도는 낮아진다. 자기가 이미 일고 있다고 생각하는 내용을 기억하려 하면 추가 학습 없이도 인출 강도가 강화된다.

단지 보기만 해서는 안된다

  프로그래밍 언어의 특정 문법을 기억하려 할 때 발생하는 문제는 종종 인출 강도에 있다. 코드를 단순히 보기만 하는 것으로는 그 코드를 기억할 수 없다. 단순한 보기는 LTM에 정보를 저장하더라도 필요할 때 가져오지 못한다.

정보를 외우는 것은 기억을 강화한다

  LTM에 정보를 저장하는 것뿐만 아니라 쉽게 인출할 수 있어야 한다. 무언가를 능동적이고 의도적으로 기억해내려는 노력은 기억을 강화시킨다. 이것이 인터넷 검색을 통한 문법 검색이 좋은 방법이 아닌 이유다. 일상적으로 쉽게 찾은 정보는 두뇌가 기억할 필요가 없다고 느낀다. 따라서 프로그래밍 문법에 대한 인출 강도가 약한 채로 남아있게 된다. 이를 개선하기 위해 검색하기 전에 우선 능동적이고 의도적으로 기억하려는 시도를 해야 한다.

능동적 사고를 통한 기억력 강화

  기억을 강화하는 또 다른 방법은 정보에 대해 능동적으로 생각하고 이를 반추하는 것이다. 정보에 대해 생각하는 과정을 정교화(elaboration)이라 한다. 정교화 작업은 프로그래밍 개념을 학습할 때 효과가 좋다. 정교화에 대해 알기 위해 우선 정보가 두뇌에 저장되는 방식을 살펴보자.

스키마타

  사고나 생각이 서로 연관된 조직된 방식을 스키마(schema) 또는 스키마타(schemata)라 부른다. 새로운 정보를 학습할 때 정보는 LTM에 저장되기 전에 스키마 형태로 만들어진다. 이미 존재하는 스키마에 잘 맞는 정보라면 더 쉽게 기억할 수 있다. 예를 들어 10개의 난수를 기억하는 것은 어렵지만, 순차적으로 증가하는 3의 배수는 기억하기 쉬운 식이다.

  작업 기억 공간에서 정보를 처리할 때 관련 지식과 기억을 LTM에서 찾는다. 즉, 인출 강도는 다른 기억에 연관된 기억일 때 더 높다. 이 때문에 기억이 저장될 때 기존 스키마에 맞추기 위해 기억이 바뀌는 경우도 존재한다. 소문이 왜곡되는 현상이 이 때문이다. 기억이 왜곡되어 저장되는 것에는 부정적인 면도 있지만 추가된 정보와 함께 관련된 정보를 저장해 기억이 변경되는 사실 자체를 유용하게 활용할 수도 있다.

정교화를 이용해 새로운 프로그래밍 개념 학습하기

  기억이 처음 저장될 때 기억의 부호화를 강화할 수 있는 방법 중 하나가 정교화다. 정교화는 기억하고자 하는 내용을 기존 기억과 연관 지으면서 생각하는 것을 의미한다. 이렇게 하면 LTM에 이미 존재하는 스키마에 맞춰서 새로운 기억이 저장된다. 따라서 연관된 기억의 네트워크가 강화되고 새로운 기억이 들어왔을 때 그것과 연관된 기억이 많을수록 기억을 인출하기에 용이해진다. 예를 들어 새로운 언어의 문법을 배울 때 기존에 배웠던 언어 문법과 연관 지어 생각하는 것이 정교화이며 이는 큰 도움이 된다.

 

출처 - 프로그래머의 뇌