그냥저냥

SICP 노트 | 표현식 (2) 본문

개발기

SICP 노트 | 표현식 (2)

sync86 2025. 2. 26. 22:57
728x90
반응형

연산자 조합의 평가

"이번장의 목표가 절차적 사고(Procedure thinking)에 관한 논점을 잘 구분해야 한다."고 하는데 연산이 이뤄지는 과정을 세분화 할 수 있어야 한다는 의미 같아 보인다.

 

연산자를 평가하기 위해서는 다음과 같은 과정을 거친다.

  1. 조합의 피연산자 표현식들을 평가.
  2. 연산자가 나타내는 함수를 인수(피연자들의 값)들에 적용.

조합의 피연산자 표현식들을 평가하면서 조합의 각 피연산자들를 먼저 평가하고 자신의 규칙을 반복해서 수행한다. 이러하듯이 자신의 규칙을 반복해서 수행하는 것을 재귀적라고 한다. 재귀적 개념 덕분에 깊게 중첩된 평가 규칙을 간결하게 표현할 수 있다고 한다.

원문을 보면 subexpressions 이라는 단어가 나온다. subexpressions을 찾아보니 아래의 그림과 같은 질문을 찾을 수 있었다. 내용을 보면 2 * 3 + 4 * 5가 있을 때 이를 분리하여 세분화 할 수 있는 단위인 (2 * 3)과 (4 * 5)가 subexpressions이고, 더 세분화 할 수 있다고 하는 것 같은데 2, 3, 4, 5 자체도 subexpressions라고 하는 것 같다. 


출처: https://stackoverflow.com/questions/22577679/what-is-a-sub-expression-in-c

 

최종적으로 책의 예제인 (2 + 4 * 6) * (3 + 12)을 아래와 같이 세분화 할 수 있으며 이를 트리 형태로 표현할 수 있다고 한다. 이렇게 트리 형태로 표현된 형태를 트리 누산이라는 형태로 일반화된 과정으로 불려진다고 한다.

  • 처음으로 (4 * 6)의 형태로 세분화할 수 있다.
  • 그 다음으로 (4 * 6)이 먼저 평가되어 24라는 값이 되고, (2 + 24)의 형태로 세분화 할 수 있다.
  • 그 다음으로 (3 + 12)의 형태로 세분화 되고 이는 15라는 값으로 평가될 수 있다.
  • 최정적으로 (26 * 15)의 형태로 세분화 되고 이는 390이라는 값으로 평가될 수 있다.
잘못 이해한 것 아니겠지? 의문이 든다. 아직까지는 책에서 이야기 하고 있는 표현식과 원시 표현식이 잘 구분이 안된다. ㅠㅠ 그리고 혹시 책의 저작권 문제가 있는 것은 아니겠지? 문제가 있다면 이글 자체를 삭제해야할지도 모르겠다.

 

728x90
반응형