리터럴(literal)이란? 상수와의 차이점
학생시절 책을 보다가 리터럴(Literal)이라는 용어가 나와 궁금했던적이 있습니다. 대충 인터넷에는 "변하지 않는 값 자체"라고 나와있었고 사전상 의미도 그렇습니다. 리터럴은 객체리터럴, 정수 리터럴 등 타입별로 리터럴이라는 용어를 붙일 수 있습니다. 리터럴의 예를 들다면 다음과 같습니다.


자바스크립트에서 객체 리터럴
{
    age : 19
    name : 'kim'
}
cs


정수 또는 실수 리터럴
23111
13.2222
cs


자바스크립트에서 문자열 리터럴 (객체처럼 보이지만 객체처럼 보이는 문자열 리터럴입니다)
"{ age : 19, name : 'kim' }"
cs


스칼라의 xml 리터럴(스칼라에서는 xml 타입이 있어 xml 리터럴을 지원한다고 하네요)
<name>kim</name>
cs


자바스크립트에서 객체 리터럴을 변수에 할당하는 모습
var obj = {
    age : 19,
    name : 'kim'
};
cs


그러나 리터럴이라는 용어를 듣기 전에 저는 상수에 대해 알고 있었기 때문에 리터럴이 곧 상수인가? 라는 의문을 품게 됩니다. 사실 수학적인 의미에서는 변하지 않는 값은 모두 상수입니다.

그러나 프로그래밍에서 상수의 개념은 아주 조금은 다른데 변경할 수 없는 변수를 말합니다. 그리고 이 상수는 어떤 값이 어떤 의미를 갖는지를 이해하기 쉽게 전달하기 위한 목적으로 쓰입니다.

예를 들어 자바에서의 상수는 final을 붙여 정의하며 최초에 한번 초기화 한 후에는 변경할 수 없습니다.
final String PROTOCOL_NAME = "HTTP";
cs

여기서 현재 우리가 알고 있는 값 자체 그러니까 위의 Java 예제에서 의미하는 문자열 리터럴인 "HTTP" 를 표현할만한 용어가 필요해졌습니다. 그러나 이미 상수라는 용어는 쓰이고 있었기 때문에 값 자체를 의미하는 용어가 필요했고 그것을 리터럴이라는 용어로 구분지어 사용한것입니다.


이 밖에도 여러 의견이 있을 수 있지만 어쨌든 결로은 리터럴이란 값 그 자체를 의미한다는 사실입니다.


블로그 이미지

도로락

IT, 프로그래밍, 컴퓨터 활용 정보 등을 위한 블로그

댓글을 달아 주세요! 질문 환영합니다!