GOJ : CH 1.6 ~ 1.7

청주는사과아님·2024년 2월 26일
post-thumbnail

Chapter 01 : 프로그래밍이란 무엇인가?


6. 한줄을 의미하는 세미콜론

Java 의 경우 C/C++ 처럼 문장 뒤에 ; 을 추가한다.
그리고 C/C++ 와 동일하게 코드 사이의 공백을 상관하지 않는다. 이는 Python 처럼 indentation 이 중요하지 않다는 것을 내포한다.


7. 모든 프로그래밍 언어에는 예약어라는 것이 있어요

C/C++ 의 경우 키워드 (keyword) 가 있다. keyword 의 정의 [1] 는 프로그래밍 언어에서 이미 사전 정의된 단어를 뜻한다. 예약어 (reserved words) 도 이와 비슷한데, 정확한 정의 [2]"식별자 (identifier) 로 쓰일 수 없는 단어" 이다.

즉, keywordreserved words 의 부분집합인 것이다. C/C++ 의 경우 키워드와 예약어는 서로 동치의 관계이다. (애초에 이 C/C++ 은 reserved words 가 없다. 그냥 다 keyword 이다.)

반면 Java 의 경우 동치의 관계가 아니다. 가장 대표적인 예시가 const 예약어이다.
C/C++ 에서 const 단어는 키워드이고, 때문에 이를 식별자로 사용할 수 없다. 하지만 Java 의 경우, const 는 키워드가 아니지만 식별자로 사용할 수 없다. 예약어이기 때문이다.

Java"미래 사용을 위해 구현하지 않은 키워드를 예약" [4] 한다. Java 는 예약어를 통해 각 버전의 상위호환성 (Forward compatibility) 을 유지하고, 하위 버전 프로그램의 안정성을 도모한다. [3]

  • 상위호환성 : Forward compatibility [5]
    • 상위호환성은 나중에 나올 버전을 위해 고안된 입력을 받아들이는 디자인 특징을 말한다.

덧붙여 Java 의 식별자 규칙은 거의 C/C++ 과 비슷하지만 한가지 다른 부분이 있다.

  • C/C++ 의 식별자 규칙을 나열하자면, 첫번째 글자는 {글자 || _} 이어야 한다. 또한 그 뒤 글자는 {글자 || _ || 숫자} 이어야 한다.
  • Java 는 여기서 $ 를 추가한다. [6]

Reference

  • Reserved word - Wikipedia

    • [1] : In a computer language, a reserved word is a word that cannot be used as an identifier.
    • [2] : keyword, which is a word with special meaning in particular context.
    • [3] : This is usually done for forward compatibility, so a reserved word may become a keyword in a future version without breaking existing programs.
  • Keywords VS Reserved Words in Java

    • [4] : In java, there are some words that were reserved for "future use", they are unimplemented keywords.
  • Forward compatibility - Wikipedia

    • [5] : Forward compatibility or upward compatibility is a design characteristic that allows a system to accept input intended for a later version of itself.
  • Identifiers (The Java EE 6 tutorial)

    • [6] : The first character must be a valid first character (letter, $, ) ... Each subsequent character in the sequence must be a valid nonfirst character (letter, digit, $, ) in a Java identifier.

profile
나 같은게... 취준?!

0개의 댓글