JavaScript

웹 개발의 필수 언어

동적인 웹 페이지 구현을 위한 핵심 프로그래밍 언어.

Java

객체지향 프로그래밍

안정적이고 확장성 있는 백엔드 개발의 대표 언어.

HTML

웹의 기초

웹 페이지의 구조를 정의하는 마크업 언어.

React

현대적 UI 라이브러리

효율적인 사용자 인터페이스 구축을 위한 JavaScript 라이브러리.

CSS

웹 디자인의 핵심

웹 페이지의 시각적 표현을 담당하는 스타일 언어.

Spring

자바 웹 프레임워크

기업급 애플리케이션 개발을 위한 강력한 프레임워크.

프로그래밍/개념 뽀개기

✨ 평가(Evaluation)란 무엇인가?

lamarcK 2025. 3. 29. 08:54

프로그래밍, 특히 표현식(Expression)의 맥락에서 **평가(Evaluation)**란, 작성된 코드(주로 표현식)를 컴퓨터(JavaScript 엔진과 같은 인터프리터 또는 컴파일러)가 해석하고 실행하여 최종적인 **하나의 값(Value)**으로 도출해내는 과정을 의미한다.

평가라는 말 자체가 감정평가와 같이 어떤 대상의 가치를 확인하는 어감이 있어서 헷갈릴 수 있지만 프로그래밍에서의 평가는 결과의 도출, 값의 산출같은 의미로 사용된다.

⚙️ 평가 과정 이해하기

간단히 말해, "평가한다"는 것은 "계산해서 결과를 낸다"와 비슷하다.

  1. 해석(Parsing): 엔진은 먼저 코드 조각의 의미를 이해한다. 예를 들어 x + 5라는 코드를 보면, 'x라는 변수의 값과 숫자 5를 더하라'는 의미로 해석한다.
  2. 실행(Execution): 해석된 의미에 따라 실제 연산을 수행한다.
    • 변수(x)가 있다면, 현재 메모리에서 x가 가지고 있는 값을 찾아온다(Lookup).
    • 필요한 연산(덧셈 +)을 수행한다.
  3. 결과 도출: 연산이 완료되면 최종 결과인 하나의 값이 생성된다. 예를 들어 x가 10이었다면, x + 5는 최종적으로 숫자 15라는 값으로 평가된다.

💡 표현식과 평가의 관계

  • "표현식이 값으로 평가된다"는 말은, 해당 표현식 코드에 대해 위와 같은 평가 과정이 일어나서 결과적으로 하나의 값이 나온다는 의미다.
  • 모든 표현식은 평가될 수 있다. 평가 결과는 그 표현식이 나타내는 최종적인 값이 된다.

🟰 평가 예시:

  • 100: 숫자 리터럴 100은 그 자체로 값 100으로 평가된다. (가장 단순한 평가)
  • "Hello": 문자열 리터럴 "Hello"는 값 "Hello"로 평가된다.
  • userCount: 변수 userCount는 현재 userCount 변수에 저장된 값(예: 숫자 50)으로 평가된다. (메모리 조회 필요)
  • 5 * 8: 곱셈 연산 5 * 8은 계산 과정을 거쳐 숫자 값 40으로 평가된다.
  • isActive && userCount > 0: 논리 연산 isActive && userCount > 0는 isActive 변수 값 조회, userCount 값 조회 및 비교 연산(>), 논리곱 연산(&&)을 거쳐 최종적으로 true 또는 false라는 불리언 값으로 평가된다.
  • getUserName(): 함수 호출 getUserName()은 getUserName 함수 내부의 코드를 실행하고, 함수가 반환(return)하는 값으로 평가된다. (함수 실행 과정 포함)
  • { name: "Alice" }: 객체 리터럴 { name: "Alice" }는 속성을 가진 새로운 객체 값으로 평가된다.

문(Statement)과의 차이점

  • 평가라는 용어는 주로 표현식과 관련하여 사용되는데, 이는 표현식의 주된 역할이 값을 생성하는 것이기 때문이다.
  • 문(Statement) 역시 실행(Execute)되지만, 문의 주된 역할은 값을 생성하는 것보다는 동작을 수행하는 것이다(예: let x;는 변수를 선언하는 동작, if (...)는 조건에 따라 흐름을 제어하는 동작). 물론 문 내부에서 값을 만들어내기 위해 표현식을 사용한다.

결론적으로, **평가(Evaluation)**는 코드를 실행하여 그 코드 조각이 나타내는 궁극적인 값을 찾아내는 핵심적인 연산 과정이다.