在
编译语言中,语法错误一定只在编译期时出现,编译器要所有的语法都正确,才能正确编译。不过
解释型语言中的语法错误可能要到
运行期才会出现,而且不一定容易区分语法错误及语义错误。
早期8位
家用电脑的用户界面是BASIC解释器,SYNTAX ERROR错误消息常造成用户的困扰,只要解释器无法识别用户的输入,就会出现此一消息。
若
计算器中输出不正确的算式,也会出现语法错误,例如算式中有左
括号但没有右括号、或是一个数字中有多个小数点等。
第二个程序理论上要显示的是叫作Hello World的
变量,而不是Hello World这个字,且
Java语言的变量名称中不可有空白,因此会出现语法错误。
编译器会标示程序中有语法错误的行,可能也会有简单的说明。
在计算机程序设计中,语义错误(Logic error)(又叫逻辑错误)是
程序错误的一种,这种错误会导致程序运行出错,但还不至于崩溃。逻辑错误会产生意外的输出或结果,但并不一定会立即被发现。
逻辑错误在
编译语言和
解释语言中都可能出现。与
语法错误的程序不同的是,逻辑错误的程序从语法上来说是正确的一段程序,但其运行结果却与预期不符。逻辑错误的唯一表现就是错误的运行结果。
逻辑错误的原因可能是
语句中出现了差错(比如公式写错)、
算法中的错误,甚至是选择了错误的算法。此外还有一些其它原因,如类型转换错误、变量作用域错误、遗漏的代码段、对问题或需求的理解有误等等。
解释型语言(英语:Interpreted language),是一种
编程语言。这种类型的编程语言,会将代码一句一句直接运行,不需要像
编译语言(Compiled language)一样,经过
编译器先行编译为
机器码,之后再运行。这种编程语言需要利用
解释器,在运行期,动态将代码逐句解释(interpret)为机器码,或是已经预先编译为机器码的的
子程序,之后再运行。
理论上,任何编程语言都可以是编译式,或解释型的。它们之间的区别,仅与程序的应用有关。许多编程语言同时采用编译器与解释器来实现,其中包括Lisp,
Pascal,
C,BASIC与
Python。
JAVA及
C#采用混合方式,先将代码编译为bytecode,在运行时再进行解释。