
프로그래밍 언어에서 미리 사용하기로 약속한 단어로 변수나 함수의 이름과 같은 식별자(identifier)로 사용할 수 없는 단어들을 의미한다.
프로그래밍 언어를 만드는 사람들이 길고 복잡한 코드를 작성하여 기능을 만들었을 때, 사용자가 해당 기능을 사용하기 위해 그 코드를 매번 작성하기에는 불편하기 때문에 이를 언어 제작자가 해당 예약어의 이름으로 함수를 제작한 것이라고 생각하면 이해하기 쉽다.
때로는 아직 구현하지 않은 기능들을 위해 미리 예약어를 지정하는 경우도 존재한다.
예약어는 각 언어마다 다르게 지정되어 있으나 대다수는 공통적으로 사용되고 있다.
ex)
int , char 과 같은 자료형
for , while 과 같은 반복문
switch , if , case , break 와 같은 조건문 / 제어문
컴파일러의 해석 모호성 방지
만약 예약어를 식별자로 사용할 수 있게 된다면 int int = 10; 과 같은 코드가 작성될 수 있다.
이 경우 컴파일러는 어떤 것이 자료형이고, 어떤 것이 변수명인지 구분할 수 없다.
이는 컴파일러의 동작 오류의 원인이 될 수 있다.
코드 가독성 저하
컴파일러 뿐만 아니라 코드를 읽는 사람 또한 이를 헷갈릴 수 있으며, 이는 코드의 유지 보수가 어려워지는 원인이 된다.
프로그래밍 언어에서 특별한 의미를 가지는 단어나 문법의 일부를 의미한다.
키워드들은 명확한 의미 또는 역할을 가지고 있다.
키워드와 예약어는 대체로 같은 의미로 사용되므로, 바꿔서 사용해도 되는 경우가 많다.
그러나 엄연히 키워드와 예약어는 다르다.
짧게 요약하자면, 키워드는 예약어의 부분집합이다. (키워드 ⊂ 예약어)
예약어 파트에서 "아직 구현하지 않은 기능들을 위해 미리 예약어를 지정하는 경우" 도 있다고 했는데, 해당 경우가 향후 프로그래밍 언어가 업그레이드 되었을 때 키워드로 사용될 수 있는 단어들을 미리 지정하는 경우이다.
그렇기 때문에 예약어는 키워드를 위해 미리 예약해 놓은 단어들의 모임이라고도 할 수 있다.
예약어 - 위키백과
예약어란 무엇인가? Java, C, Swift, Python등의 예약어란?
예약어에 대해서 알아보자!
[Q&A] 예약어와 키워드
키워드(keyword)와 예약어(reserved word)는 같은 말인가요? 아닌가요?
예약어(Reserved word)와 키워드(Keyword)의 차이