Building Abstractions with Procedures

Structure and Interpretation of Computer Programming에서는 Scheme을 이용하여 컴퓨터과학의 여러 개념을 다룹니다. Scheme은 LISP라는 언어의 방언(Dialect) 중 하나입니다.

Expressions

- Expression(표현식)은 값을 표현(express)하는 기본 단위입니다.

- LISP 계열의 언어는 모든 표현식이 값을 가짐을 원칙(convention)으로 합니다.

- 따라서 표현식은 숫자 그 자체가 될 수 있습니다.

- 혹은 기본적인 프로시져(primitive procedure) - +나 *와 같은것들과 결합될 수도 있습니다.

(+ 130 410)
(- 102 100)
(* 100 200)
(/ 300 100)

코드1. Examples of Compound Expression

 

- 이런 경우, 괄호를 이용해서 개별 표현식을 구분할 수 있으며,(delimiting a list of expressions) 이러한 점을 이용하여 어떤 동작(procedure application)을 나타낸 것을 combination 이라고 부릅니다.

- 맨 왼쪽의 요소를 연산자(operator) 라고 부르며, 그 뒤에 나오는 나머지 요소들을 피연산자(operand) 라고 부릅니다.

 

Prefix Notation

- [코드 1]과 같이 연산자를 맨 앞에 놓는 방식을 전위표현식 (prefix notation)이라고 부릅니다.

- 흔히 사람들이 수학을 풀 때 처럼(3 + 2) 표현하는 것은 중위표현식 (infix notation) 이라고 부릅니다.

- 추가로, 맨 뒤에 연산자를 놓는 방식 (3 2 +)을 후위 표현식(postfix notation) 이라고 부릅니다.

 

- 전위표현식은 여러 장점을 지닙니다.

- 한 operator에 대하여 operand의 갯수를 자유롭게(arbitrary) 표현할 수 있습니다.

(+ 1  2  3  4  5  6)
(* 10 20 30 )

- 혹은 여러 combination들을 자유롭게 중첩(nested) 시킬 수 있습니다.

(+ (* 2 3) (/ 4 2))

How Expressions are Processed

- 인터프리터에 표현식이 입력될 경우 항상 다음과 같은 과정(basic cycle)을 거칩니다.

- Read - Evaluate - Print

- 이것을 반복하여 동작하는 것을 REPL (Read-Evaluate-Print Loop) 이라고 부릅니다.