Home
All Posts
🖥️

1+1은 왜 2일까?

Created
2024/05/16
Category
Essay
3 more properties
책 <컴퓨터 밑바닥의 비밀>을 읽고

첫 번째 질문

자바스크립트에서 1+1이 2가 되는 원리는 무엇일까?
출처: 유튜브 <전과자>
이 질문에 누군가는 이창섭의 표정을 지으며 “굳이 당연한 걸 왜 알아야 해..?” 라고 되물을 수도 있다.
수학과에서도 같은 질문으로부터 시작한다.
유튜브 전과자의 수학과 편에서 한 수학과 학생은 수학과에 온 이유를 아래와 같이 설명한다.
출처: 유튜브 <전과자>
“고등 수학에서는 당연하지 않은데 당연하다고 이야기하는 것들이 많았다. 반면 대학에 와서 배우는 수학은 누군가에게 당연하지 않을 수 있는 것들을 배우니 더 재밌다” 라고.
아무튼 자바스크립트에서도 1+1이 2가 되는 원리를 이해하려면 컴퓨터가 이 과정을 어떻게 수행하는지 로우레벨부터 설명해야 한다. 자바스크립트 엔진의 동작, 메모리 관리, 그리고 더 나아가 컴퓨터 하드웨어가 숫자를 처리하는 방법 등이 포함되기 때문이다.

두 번째 질문

어떻게 하면 프로그래밍 지식이나 새로운 기술을 효과적으로 학습할 수 있을까?
앞서 말한 메모리, 엔진 등등을 공부하려면 양이 굉장히 방대할텐데 어떻게 다 공부해야 할까?
게다가 요즘 AI 발전 속도만 봐도 체감하듯, 기술의 발전 속도보다 내 학습 속도가 늦은 것 같다. 개발자는 평생 공부해야 하는 직업이라는데. 어떻게 하면 한정된 시간 안에 더 많은 양의 지식들을 학습할 수 있을까?
평생 공부를 해야한다면 더 재밌고, 더 효과적으로 하면 좋지 않을까?

역사처럼 공부하기

개인적으로 평소 프로그래밍 개념을 역사 다루듯이 공부하는 것을 좋아한다. 기술이나 개념의 특징을 줄줄 외우면 기억에 잘 남지 않는 반면, 역사 공부를 하는 것처럼 ‘흐름’을 알면 기억에 더 잘 남기 때문이다.
최근 이다지 선생님의 세계사 강의를 들었는데, 초반에 이런 말씀을 하신다. “세계사가 방대하게 느껴지겠지만, 무작정 외우려는 생각보다 세계 역사에 대해 흐름을 이해하면 쉬울 것이다” 라고.
출처: 유튜브 <이다지do>
기술도 마찬가지다.
어떤 기술이 탄생했다면 분명 기존에 어떠한 문제나 한계가 있었기 때문일 것이다. 그리고 이후 등장한 기술은 기존의 문제점을 해결하기 위해 나왔을 것이다.
기술 1의 탄생 → 기술 1의 한계를 해결 → 기술 1을 보완한 기술 2의 탄생 → 기술 2의 한계를 해결 → 기술 2를 보완한 기술 3의 탄생 → …. (반복)
그러니 기술 발전의 ‘서사’를 파악한다면 각 기술의 특징을 더 자연스럽게 이해할 수 있을 것이다.

책의 첫 인상

처음 <컴퓨터 밑바닥의 비밀> 이라는 책을 받고 내용을 읽지 않은 상태에서 훑어보았을 때는 굉장히 지루하게 보였다. 대학교 전공 서적 같은 느낌..
하지만 읽어보니 생각보다 재밌어서 놀랐다.
단순히 "A는 B다" 라는 지식 전달 목적의 설명이 아닌, "A는 ~한 문제가 있었는데 ~하게 해결했고, B의 기능을 갖추게 되었다"고 설명한다. 위에서 언급한 서사가 담겨있어 이해가 훨씬 잘 되었다. 더불어, 독자에게 질문을 던지는 형식으로 서술되어 생각할 거리를 만들어 주기도 했다.

내용과 설명 방식

이미 컴퓨터 전공을 한 사람들이라면 익히 들었을 내용이지만, 비전공자 개발자라면 잘 모르는 내용들이 많다. 혹은 그동안 단편적으로 “A는 B다”와 같이 기술면접 준비용으로 대강 알고 있던 개념이 많을 것이다.
예를 들어 자바스크립트를 배우면 비동기, 콜백함수 개념을 배우는데, 그때는 외우듯이 학습했다면 이 책을 읽으면비로소 ‘이해’를 할 수 있을 것이다. 스레드, 블로킹과 논블로킹, 콜백함수 등을 로우레벨부터 차근차근 설명해 주기 때문이다.
또한 컴파일러가 하는 일을 단계적으로 아주 쉽게 설명해주기도 한다. 물론 컴파일 과정은 매우 복잡하겠지만, 이를 최대한 독자들에게 와닿게 설명해 준다.
책의 일부분
책 초반에 저자가 이야기하기를, 이 책에는 내용 이해를 도울 그림이 341개가 들어있다고 한다. 그림 한 장이 1000단어만큼의 가치가 있다고 여기기 때문이라고 한다.
실제로도 그렇다. 간혹 운영체제 등 컴퓨터를 공부하다 보면 머릿속에 상상이 되지 않아 이해가 힘든 경우가 있었는데, 이 책은 그림이 많은 덕분에 더욱 더 이해하기 쉽고 재미있게 학습할 수 있었다.

세 번째 질문

그래서 …. 자바스크립트에서 1+1이 2가 되는 원리는 무엇일까?
위의 질문처럼 당연한 것을 당연하게 여기지 않는 사람들에게 이 책을 추천한다.
나처럼 비전공자로서 컴퓨터 개념들을 단편적으로 알고 있어 약간의 부채감을 안고 있던 사람들, 로우레벨의 개념들이 어떻게 발전해 왔는지 이런 흐름을 알고 싶은 사람들이 꼭 읽어 보았으면 좋겠다.
무엇보다, 개발자로 일하면서 본인이 짠 코드의 문제나 컴퓨터 시스템의 원리와 메커니즘을 더 깊게 이해하고 싶은 사람들이나 코드가 돌아가는 원리를 알고 싶은 사람들에게도 강력 추천한다.