Syntax는 form 형식에 관한 것이고, Semantics는 의미에 관한 것이다.

프로그래밍 언어에서 "프로그램이 의미하는 것(what it means)"을 포착하는 건 매우 어렵다.
❓그렇다면 왜 "의미"를 포착하려고 노력하는가?
이 프로그램이 제대로 동작하는지, 사양(specification)에 맞게 작동하는지 수학적으로 증명하는 과정이다.
→ 즉, 이 코드가 '옳은 일(correct job)'을 하는지 판단하는 과정이야.
💡 머신만으로는 부분적인 semantic만 파악가능하다. (개발자의 의도가 담겨있기에)
⇒ 완전한 의미 파악을 위해서는 인간 + 머신이 요구된다.
📌 프로그램 검증을 시도해볼 가치가 있는 상황 4가지

❓ 왜 복잡한 P.L에서는 어려울까?