【请问】解释性语言和编译性语言的区分

【请教】解释性语言和编译性语言的区分
计算机不能直接理解高级语言,

只能直接理解机器语言,
所以必须要把高级语言
翻译成机器语言,计算机才能执行高级语言编写的程序。

翻译的方式有两种,一个是编译,一个是解释。两种方式只是翻译的时间不同。

能不能这样理解  语言本身没有二者之分..
他们差别是由于编译器或者解释器导致的.假如有合适的解释器,是不是说C语言也可以是解释性语言。
------解决方案--------------------
引用:
Quote: 引用:

引用一下:《程序设计语言实践之路》里的说法:
编译和解释的概念之间的差异非常清楚,
然而许多语言采用的是两者的混合形式,
如果初始阶段的翻译器比较简单,我们就说这个语言是解释的。
如果其中的翻译器很复杂,我们就说这一语言是编译的。
两在再会得叉烧得有些模糊了,因为简单和复杂都是修饰性的术语,也因为完全可能出现用
一个编译器生成代码,而后又由一个复杂的虚拟机执行。对于最后这种情况,如果翻译器对程序
做了彻底的分析,而有关的中间语言与源程序并没有很强的相似性,我们就还会说这个语言
是编译的,这两种特性--彻底的分析和非平凡的变化--是刻画编译方式的标志性特征。


首先感谢您的回答.
按照上面说的,我理解编译和解释是修饰翻译器的,而不是修饰语言的,与语言无关.
之所以说C语言是编译的..是由于这些翻译器都是编译性的..假设有个翻译器现在能够对C进行解释,那是不是又可以说C是解释性的..
我最想知道的是编译和解释,是由于语言天生决定的,还是说翻译器决定的.



语言本身特性,设计目标决定了用编译或解释的难度。
记得在<concepts of programming languages>中提到,某个大神写了篇论文说是动态类型语言不能
用编译实现。不管正确与否,这说明语言会影响实现的选择。

------解决方案--------------------
引用:
首先感谢您的回答.
按照上面说的,我理解编译和解释是修饰翻译器的,而不是修饰语言的,与语言无关.
之所以说C语言是编译的..是由于这些翻译器都是编译性的..假设有个翻译器现在能够对C进行解释,那是不是又可以说C是解释性的..
我最想知道的是编译和解释,是由于语言天生决定的,还是说翻译器决定的.

语言的内容受到实现的限制,不是你随便定义一种语言就能设计出一种编译器/解释器来配合它,否则根本用不着什么编程语言,直接设计一种能够编译/解释自然语言的编译器/解释器就行了
语言和编译器/解释器是同时设计的,语言类型也是在设计时就已经明确的设计目标。单独设计任何一个都没意义,因为另一个很可能在理论上无法实现