지금부터 작성된 내용은 책의 내용을 일부 포함합니다. 책을 읽으면서 기억하고 싶은 인사이트, 고민, 개념이 정리되어 있습니다. 편향될 수 있으며, 저작권에 문제가 될 경우 글이 삭제될 수 있습니다.
단순 관념(simple idea)에 그 힘을 행사하는 지성의 행위는 주로 다음 세 가지다.
지금부터 배울 계산적 과정(computational process)이라는 아이디어이다. 계산적 과정(줄여서 '과정')은 컴퓨터 안에 사는 추상적인 존재이다. 과정은 점차 전개되면서 데이터라 부르는 또 다른 존재를 조작하게 된다. 하나의 과정은 일정한 규칙들의 패턴에 따라 전개되는데, 그러한 패턴이 바로 프로그램이다. 인간은 프로그램을 작성함으로써 과정의 전개를 이끈다. 프로그램은 난해하고 비밀스러운 프로그래밍 언어로 만들어진 기호 표현식들로 세심하고 구성되며, 과정이 수행해야 할 과제들을 상세하게 서술한다.
프로그래밍 언어는 단지 컴퓨터가 수행할 과제를 지시하는 수단 이상의 어떤 것이다. 프로그래밍 언어는 우리가 과정에 관한 생각들을 조직화하는 틀로도 작용한다. 따라서 프로그래밍 언어를 고찰 할 때는 단순한 아이디어들을 조합해서 좀 더 복잡한 아이디어를 만드는 데 사용하는 수단에 주의를 기울여야 한다.
프로그래밍에서 우리가 다루는 요소(element)들은 크게 함수와 데이터로 나뉜다. (나중에 이 둘이 사실 아주 명백하게 구분되지 않는다는 점을 알게 될 것이다.)
복합잔 표현식 문장이 주어져도 해석기는 항상 동일한 기본 주기(cycle)로 작동한다. 해석기는 사용자가 입력한 문장을 읽고(read), 그 문장을 평가하고(evaluate), 결과를 출력한다(print). 이러한 주기를 반복하는 것을 가리켜 REPL(read-evaluate-print loop)이라고 부른다. 자바스크립트 REPL에서 출력을 위해 특별한 명령이 필요하지 않다. 특별한 명령이 없어도 해석기는 주어진 표현식의 평가 결과를 출력한다.
계산적 객체을 붙여서 이름으로 그 객체를 지칭하는 수단들은 프로그래밍 언어의 필수 기능에 해당한다. 그런 수단으로 가장 먼저 살펴볼 것은 상수(constant)이다. 상수의 이름에 해당 객체의 값(value)을 지칭하는 용도로 쓰인다.
const size = 2;
복합적인 연산의 결과를 간단한 이름으로 지칭할 수 있다는 점에서, 상수 선언은 우리의 언어에서 가장 단순한 추상화 수단이다. 일반적으로 계산적 객체는 그 구조가 대단히 복잡할 수 있다. 따라서 복잡한 구조의 세부사항을 기억해 두고 객체를 사용할 때마다 그 구조를 거듭 명시하는 것은 극히 불편한 일이다. 실제로, 복잡한 프로그램은 점차 더 복잡한 계산적 객체들을 구축해 나가는 식으로 만들어진다. 해석기를 이용하면 이름-객체 연관 관계를 일련의 상호작용을 통해서 점진적으로 만들어 나갈 수 있으므로 이처럼 프로그램을 단계적으로 구축하기가 특히나 편하다.