Computer Science/Concept

프로그래밍 언어에서 Error의 종류. Syntax와 Semantics의 차이

728x90

Syntax와 Semantics의 정의


Syntax : 문법(Form), 일정형태의 형식에 맞게 작성된다.

-  문장이 언어의 문법(grammer)에 따라 유효한지 혹은 타당한지 확인하는 것과 관련있다.

 

Semantics : 문법에 맞는 형식을 취했을 때 그 문법이 하는 일, 의미

- 문장이 타당한 의미를 지니는지 아닌지를 판별하는 것과 관련있다

 

 

 

 

 

 

ERROR의 종류


소프트웨어의 오류는 크게

Syntax Error(구문 오류), Runtime Error(실행 오류), Semantic/Logical Error(의미적 오류)로 나눌 수 있다.

 

 

1. Syntax Error(구문적 오류)

프로그래밍 언어의 문법적인 에러를 말한다.

컴파일 과정에서 나오는 것들이며, 구문 오류, 컴파일 타임 에러라고도 한다.

예를 들어, 키워드를 잘못 작성하거나, 구두점을 빠뜨리거나, 괄호를 연 후 닫지 않는 것과 같은 경우를 말한다.

문법 오류는 보통 컴파일러가 어떤 줄에서, 어떤 이유로 발생했는지 알려주기 때문에 해결하기 쉬운 편이다.

 

 

 

 

2. Runtime Error(실행 오류)

프로그램 실행 중 발생하여 프로그램이 비정상적으로 종료되게 하는 오류를 말한다.

프로그램이 실행되는 중 실행할 수 없는 연산을 만나면 발생하는 오류이다.

대표적인 런타임 에러로는 잘못된 입력이 있는 경우 발생하는 입력오류가 있다.

 

 

 

 

3. Semantic Error(의미적 오류)

프로그래밍 언어의 문법은 정상적이지만 실행의 결과가 원하는 대로 나오지 않는 오류을 말한다.

문법적으로는 옳기 때문에 컴파일 오류는 나타나지 않지만, 의도하지 않은 결과가 나온다는 점에서 문제가 된다.

컴파일러가 오류를 잡아주지 않아 사람이 검출해야 해서 다른 오류보다 수정이 어렵다.

 

 

 

* Semantic Error  vs  Logical Error

둘은 프로그램의 결과가 의도대로 나오지 않는 다는 점에서 비슷하다.

Logical Error는 글자 그대로 의미적인 오류가 아닌 논리적인 오류가 발생한다.

예를 들어 설명하자면,

Semantic Error는 변수 X를 사용해야하는 곳에서 변수 Y를 사용하여 의도하지 않은 결과가 나온 것이고,

Logical Error는 문제를 잘못 이해하여 X+Y 연산을 해야하는 곳에서 X-Y연산을 하여 의도치 않은 결과가 나온 것이라고 말할 수 있다.

 

728x90