프로그래밍 언어는 5개로 나뉘어져있다고 한다.
키워드 ( 예약어 ) : 언어를 만드신 분이 미리 지정해둔 단어들 / ex. int, Main()
식별자 : 내가 재사용하기 위해 특별히 지정해 둔 단어들 / ex. 변수명
literal (리터럴 ) : 그냥 값
연산자 : + - 등등
punctuator ( 펑추에이터 ) : 세미콜론(:), 콤마, 대괄호 {} 등 위의 4가지 문법적 요소를 사이사이 구분해주는 기능을 함.
punctual 은 시간을 엄수하다 등의 뜻을 가지고 있고 어원은 'point' 에서 나온말로 점찍어서 정확히하다 라는 뜻을 가지고 있다.
리터럴을 제외하고 나머지 4개는 모두 미리 지정해둔 기능을 가지고 있다.
int 는 글자그대로 int 가 아니라 뭔가 다른 것을 지정하거나 다른 쪽으로 흐르게 만든다.
하지만 '문자그대로의' 라는 뜻의 리터럴은 무언가를 내포하고 있지 않다.
컴파일러는 나머지 4개를 보고 "아! 이런뜻이구나. 알았어" 라고 그 뜻에 담긴 행동을 한다.
정보가 압축되어 있기에 그것을 풀어헤쳐 메모리 어딘가에 저장된 코드를 가져온다.
그와다르게 컴파일러는 리터럴을 보고는 아무것도 기억하거나 불러오거나 할 필요 없이 그냥 직선으로 그 코드 ( 0101010101 ) 을 사용한다.
한마디로 리터럴이라는 뜻은 컴파일러와 대화하는 상황에서의 뜻이 담겨있다.
"뭐가 문자그대로야? 전부다 문자인데?" 라고 생각할 수 있지만 내입장만 생각하는게 아니라 나와 컴파일러와의 관계라고 생각해보면 이해 할 수 있는 느낌이다.
" 내가 말해둔거 있지? A B D E F 순서로 해. 그리고 그다음엔 말은 안해뒀지만 <집에 가서 샤워하기> 행동을 하렴 "
정리해보면 리터럴은 상대방(컴파일러)에게 아무말 안해놓은 새로운 것이다.
변수나 상수, 메모리에 저장 이런 거랑 아무런 관련 없는 개념이라고 생각한다.
'소프트웨어 > 언어 일반' 카테고리의 다른 글
[백엔드] 파이썬 의존성 주입 ( Dependency injection ) (0) | 2022.08.16 |
---|---|
[프로그래밍 일반] 수학과 시 (0) | 2022.07.16 |
[언어 일반] 프로그래밍은 겸손을 만든다 (0) | 2022.07.12 |
[언어 일반] 모델이란 뭘까 (0) | 2022.07.07 |
[언어 일반] 수학을 하지 않기 위해 태어난 프로그래밍 (0) | 2022.07.01 |