‘초보자 대상’이라는 표현은 애매하므로 사용하지 않겠다. ‘프로그램을 처음으로 만들어보는 사람’이라고 대상을 분명히 해두고 싶다. 그래서 가능한 한 정중하면서도 차근차근 설명하였으며, 일상의 예를 많이 제시해서 쉽게 이해할 수 있도록 했다. 또한, 용어 하나도 여러 번 검토를 거쳐 쉽게 이해할 수 있는 용어를 선별했다. 추상적인 개념은 될 수 있으면 뒤로 미루고 구체적인 예를 먼저 설명하도록 했다. _7
네트워크나 소리도 마찬가지로 일부 메모리는 네트워크 통신 장치나 소리 내는 장치를 동작시키는 스위치로 되어 있다. ‘100번 다이얼을 5로 맞추면 네트워크를 통해 상대방에게 5를 보낸다’와 같은 식이다. 이것을 직접 의식해서 프로그램을 만들 일은 지금은 거의 없지만, 프로그램 내부는 이런 식으로 동작하고 있다. 컴퓨터가 하고 있는 다양한 동작은 메모리를 프로그램이 지시하는 대로 건드려서 구현되는 것이다. _37p
다른 언어에서도 이렇게 공백을 무시하는 경우가 많이 있으며, 어디에 공백을 넣는가는 개인의 취향에 달렸다. 키보드를 치는 속도, 사용하는 모니터의 해상도, 미적 감각, 경험 등에 따라 달라진다. 즉, 자신이 원하는 방식으로 하면 된다. 단, 반복 범위의 왼쪽 끝처럼 공백 수가 의미를 가지는 위치도 있다. 단어 간 구분을 표현하기 위해 공백이 필요한 부분도 있다. _100p
중요한 것은 ‘이런 기능이 있다’가 아니며, 기능 사용법을 반복 연습하는 것은 더더욱 아니다. 해
당 기능이 목적을 이루기 위해 도움이 된다는 것을 이해하는 과정이라는 것이 중요한 것이다. 이런 과정을 통해 자연스럽게 언어를 익힐 수 있고, ‘무엇을 해결하기 위한 도구인지’ 그 본질을 이해하고 사용할 수 있게 된다. _192p
백업에는 ‘온라인 백업(핫 백업)’과 ‘콜드 백업’의 두 종류가 있습니다. 콜드 백업은 가장 무난한 백업으로, 인스턴스를 완전히 정지한 상태에서 받는 백업을 말합니다. 모든 데이터가 파일에 기록된(체크포인트 완료) 상태이기 때문에 할 수 있다면 콜드 백업을 받는 편이 간단하고 편합니다. _164p
결국, 이 책 후반부에서는 여러분이 어느 정도 머리를 잘 사용하는지를 시험하게 된다. 이번 장을 무리 없이 읽을 수 있었다면 프로그램 만드는 능력이 어느 정도 생겼다고 말할 수 있다. 물론, 아직은 74행에 불과하다. 원래 게임이 180행이니 아직 반도 되지 않는다. 하지만 여기까지 왔다면 목표를 달성하지 못할 이유가 없다. _308p
---본문 중에서
이 책에는 이러한 시스템들이 어떻게 작동하는지, 어떻게 우리 삶을 변화시키고 있는지 이해하는 데 도움이 될 내용이 담겨 있다. 이는 현재에 대한 스냅숏이므로, 10년 후에는 오늘날의 시스템이 투박하고 낡은 것처럼 보일 것이라 확신해도 좋다. 기술 변화는 고립된 사건이 아니라 계속 진행 중인 과정으로, 빠르고 지속적이며 가속화되고 있다. 다행스럽게도 디지털 시스템의 기본 아이디어는 동일하게 유지될 것이므로 여러분이 이를 이해하면 훗날의 시스템도 이해할 수 있을 것이고, 미래의 시스템이 제시하는 도전과 기회에 대처하는 데 더욱 유리한 위치에 서게 될 것이다. --- p.xxxii
디지털 시스템을 아날로그와 비교했을 때의 장점은 훨씬 쉽게 확장할 수 있다는 것이다. 내가 쓰는 디지털 시계는 스톱워치 모드에서 경과된 시간을 100분의 1초 단위까지 표시할 수 있다. 이 기능을 아날로그 시계에 추가하는 것은 매우 어려운 일이다. 아날로그 시스템도 장점은 있다. 점토판, 석각(石刻), 양피지, 종이나 사진 필름 같은 기존의 매체들은 디지털 형태가 감당하기 어려울 수도 있는 방식으로 세월의 시험을 견뎌 왔다. --- p.27
알고리즘과 복잡도의 연구는 이론과 실제 적용 모두가 컴퓨터 과학의 주요 영역이다. 컴퓨터 과학에서는 어떤 문제가 계산 가능하고 어떤 것이 그렇지 않은지, 어떻게 하면 빨리 그리고 메모리를 필요 이상으로 사용하지 않고 계산할 수 있는지, 혹은 메모리 소비와 처리 속도의 균형을 유지하면서 계산할 수 있는지에 관심을 둔다. 컴퓨터 과학에서는 근본적으로 새롭고 더 나은 계산 방법을 찾아낸다. 오래전에 나오기는 했지만, 퀵 정렬은 그 좋은 사례다. --- p.86
비슷한 논리가 영화와 TV를 압축하기 위한 MPEG 계열의 알고리즘에도 적용된다. 개별 프레임을 JPEG처럼 압축할 수 있는 것뿐만 아니라 한 프레임에서 다음 프레임으로 갈 때 많이 변하지 않는 일련의 블록을 압축할 수도 있다. 움직임의 결과를 예측하고 변경 사항만 인코딩할 수도 있으며, 심지어 정적인 배경에서 움직이는 전경을 분리할 수도 있는데, 배경에 더 적은 비트를 사용하는 방식으로 가능하다. --- p.190
개인 프라이버시와 온라인 보안에 관심이 있다면 대부분의 사람보다 최신 기술에 능통해지는 것이 필수적이다. 기본 지식을 알아 두면 정보를 덜 습득한 친구들보다 훨씬 더 잘 대처할 수 있다. 이 장에서는 프라이버시 침해의 속도를 늦추고 보안을 개선하기 위해 개인이 취할 수 있는 대책에 대해 살펴볼 것이다. 하지만 이것은 큰 주제이므로 이 장의 내용은 전체 이야기가 아닌 표본에 불과하다.
--- p.286