到目前为止,我还不知道这三者之间的主要区别。当有人问我这个问题时,我只告诉他们C#是一种编程语言,HTML和XML是标记语言,JavaScript和VBScript是脚本语言。但是,区别于彼此的主要区别是什么呢?
发布于 2014-05-26 10:36:17
让我尝试找出这三种语言之间的分界线。当然,会有很多例外和反例,因为这只是我的意见。
请注意,脚本语言是编程语言的子集,即一种语言既可以是“脚本”,也可以是“编程”:Python经常用于“程序之间的中介”,也用于“转换数据”。像Java这样的其他语言很少被用来在程序之间进行“中介”,这不是因为这是不可能的,而是因为它们的设计并不是为了简化程序。脚本语言的关键特点是它可以编排其他程序,就像脚本给演员提示开始他的角色一样。
发布于 2015-09-19 12:39:59
要产生任何类型的分类法,首先需要问自己一些问题:
通常情况下,当一个人听到像你问的问题时,预期的答案会做出几个假设。例如,很自然地假设,由于所有这些语言都是语言,它们必须在更普遍的语言概念下形成层次结构,或者它们划分所有语言的空间,或者它们是彼此的子集。
不幸的是,所有这些似乎都不是真的。也许只有编程语言有一个最一致的定义。编程语言是编码程序的语言。编码意味着语言中的一个单词可以被解释为一个程序(一个动作序列)。计算机编程语言是这些语言的一个子集。非计算机编程语言的例子:杂货店清单,解释为超市买家的指示,DNA通过转录肽来解释,一个类似的音乐记录,作为磁带录音机的程序。
计算机编程语言是计算机编程的语言。
没有明确的定义。这个词的含义可以解释。从历史上看,没有编译器来生成机器代码的编程语言似乎就是这样被调用的。按照今天的标准,这将使每一种流行的编程语言sans Assembler都属于这一类。即使是像C这样的所谓低级别语言也需要一个具有预先存在的过程的运行时,因此编译C程序获得的二进制文件并不完全是机器代码,而是时不时地调用运行时。
没有明确的定义。每当使用该术语时,其意图似乎是用非常有限的词汇量来描述一种编程语言,主要用于生成视觉或音频图像。可能很难将XML视为编程,但如果您查看Man或TexInfo标记,您将看到“特殊”字符实际上是解释器的指令。
还可以对XML语言进行“编程”解释,如下所示:
< := put interpreter in the reading node mode
! := if reading node, start CData/Comment mode
else if not in read text mode, signal error
-- := if in start CData/Comment mode, start comment
else if in comment, put in end comment mode
else if in end comment mode, signal error
...一句话:从今天起,这种划分似乎没有什么意义,它只能给你一些关于你所面对的语言的直觉,但它不会给你提供严格的定义。
发布于 2015-09-19 16:03:14
这三个概念都有些重叠,因此您可以得到无数的争论: XSLT是一种编程语言,还是Python是脚本语言。
标记语言是一种以文本格式表示结构化数据的语言,HTML是最著名的语言,但是有许多用于各种用途的格式,例如用于图形的SVG、用于描述web服务接口的WSDL、用于.net中资源文件的resx等等。经验法则是,标记语言并不描述进程或算法(就像编程语言那样),而是纯粹的数据。但是,代码和数据之间没有根本区别,这也是CS的基本见解。有些标记语言(如XSLT )具有循环和条件,如“真实”编程语言,而一些编程语言(如Prolog )几乎是纯数据,没有在代码中指定任何进程。Lisp模糊了这一行代码,将自己的代码视为结构化数据格式。
至于编程语言和脚本语言之间的区别,这是一个历史上的区别,现在几乎已经过时了。在过去,我们用C语言编写了独立的程序,然后我们有了脚本语言,比如shell脚本或Word Basic,这些脚本语言被解释和设计用来操纵其他程序和工具。今天,由于我们有不同层次的编译和解释(字节码编译、JIT编译等)和各种与语言无关的API,所以这种区别并没有那么有用。
https://softwareengineering.stackexchange.com/questions/241104
复制相似问题