[Computation] 01 Basic Elements of Programming
Published:
In this post, 01 Computation lecture is introuduced.
1.1.1 Computational Process
- 컴퓨터 안에 사는 추상적 존재 (컴퓨터의 영혼?)
- 전개되면서 데이터라 부르는 또다른 추상적 존재를 조작
- 프로그램: 계산적 과정의 전개를 지시하는 규칙의 패턴
1.1.2. 프로그래밍의 기본요소
- 단순한 아이디어를 조합해서 좀 더 복잡한 아이디어로 만드는 데 사용하는 프로그래밍 언어의 메커니즘
- R 해석기(interpreter)에 표현식(expression)을 입력하면 해석기는 이를 평가(evaluate)하여 결과를 표시.
- Read-eval-print loop (REPL) : 해석기의 기본 사이클, R(및 Scheme)에서는 모든 문장(statement)이 값(value)를 가진다. 해석기는 항상 값을 출력한다.
- 원초 표현식(primitive expressions): 언어가 다루는 가장 단순한 대상
- 원초 표현식의 예: 수(number)
- 조합 수단(means of combination): 단순한 원소로부터 복합적인 원소를 만드는 방법
- 표현식을 원초 함수(
+,*등)로 결합 -> 복합 표현식
- 표현식을 원초 함수(
- 추상화 수단(means of abstraction): 복합적인 원소에 이름을 붙이고 하나의 단위로 다루는 방법
1.1.3. 이름붙이기와 환경
1.1.3.1 이름붙이기
- 계산적 개체(computational objects)를 이름 짓고 그 이름으로 지칭 — 프로그래밍 언어의 필수 요소
- 이름은 값이 개체인 변수(variable)와 동일시된다.
- 이름 짓기를 평가한 결과는 따로 표시되지 않는다.
(size <- 2) # if you insist on seeing the value
1.1.3.2 환경(environment)
- (이름, 개체) 쌍을 보관하는 메모리 공간
- 이름과 값을 연관짓고 이름으로부터 값을 조회할 수 있으려면 이러한 메모리 공간이 반드시 필요
- 3장에서 자세히 다룸
1.1.4. 조합 평가하기
주어진 조합을 평가하기 위해
조합의 하위 표현식(subexpressions)들을 평가한다
(전위 표기법 기준) 가장 왼쪽 하위 표현식의 값인 함수를 다른 하위 표현식들의 값인 전달인수(arguments)에 적용한다.
`*`(`+`(2, `*`(4, 6)), `+`(3, 12))
평가는 재귀적(recursive).
1.1.4.1 원초 표현식의 평가
- 단계 1을 반복하다 보면 원초 표현식을 평가해야 하는 지점에 도달
- 수치, 원초 함수, 이름 등
- 평가 규칙
- 수의 값은 해당 숫자가 나타내는 값 자체
- 원초 함수의 값은 해당 연산을 수행하는 일련의 기계 명령
- 이름의 값은 환경에서 그 이름과 연관된 개체
1.1.4.2 조합 평가 규칙의 예외
x <- 2
`<-`(x, 2) # prefix form
- 함수
<-를 전달인자 2개에 적용하지 않음 - 만일 그런다면 기호
x의 값을 평가해야 함(!) - “특수형”(special forms)
1.1.5. 복합함수
1.1.5.1 함수 안의 함수
sum_of_squares <- function(x, y) {
square(x) + square(y)
}
sum_of_squares(3, 4)
1.1.6 함수 적용의 치환 모형
1.1.6.1 적용 순서 평가와 정상 순서 평가
위에서 배운 조합 평가 방식 은 어떤 식(expression)을 평가할 때, 하위 표현식(subexpression) 을 먼저 평가한 후, 최상위 함수(연산자)를 적용하는 방식이고 그 방식을 함수 인자에 대입하여 생각했을 때, 적용 순서 평가와 정상 순서 평가로 나뉨.
적용 순서 평가 (applicative-order evaluation)
- 인자로 전달된 식을 먼저 전부 계산한 뒤, 함수에 전달
정상 순서 평가 (normal-order evaluation): 완전 전개 후 축약
- 함수 호출 시 인자를 계산하지 않고 그대로 대입한 뒤, 실제로 필요할 때 계산.

- 정상 순서 평가를 하게 되면 위 예시에서
5+1을 2번 계산해야 한다. 하지만 적용 순서 평가에서는 한 번만 계산하면 된다.

Leave a Comment