首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >编程语言与标记语言与脚本语言

编程语言与标记语言与脚本语言
EN

Software Engineering用户
提问于 2014-05-26 07:48:26
回答 4查看 104K关注 0票数 43

到目前为止,我还不知道这三者之间的主要区别。当有人问我这个问题时,我只告诉他们C#是一种编程语言,HTML和XML是标记语言,JavaScript和VBScript是脚本语言。但是,区别于彼此的主要区别是什么呢?

EN

回答 4

Software Engineering用户

回答已采纳

发布于 2014-05-26 10:36:17

让我尝试找出这三种语言之间的分界线。当然,会有很多例外和反例,因为这只是我的意见。

  • 标记语言用于控制数据的表示,例如“将这些用户名表示为项目列表或表”。
  • 为了生成数据,使用脚本语言在程序之间进行中介。对于bash这样的shell脚本语言来说尤其如此,但如果您对此进行反思,Python或Perl也是因为需要在UNIX中完成任务而不使用C编写程序。在这些语言中,您控制的大多数程序都是语言本身的解释器,它为您完成一般任务。与您交互的其他典型程序是数据库服务器或web服务器。回到用户列表的隐喻,在脚本语言中,您要求数据库“给我所有的用户名”,然后要求web服务器“将这个用户列表发送给这个请求者”。
  • 使用一种编程语言来转换数据。它是通过创建CPU指令来实现的,这些指令将输入数据重写到输出中,希望得到所需的输出。转换数据的例子是从多个加数中计算一个和,或根据一组条件求解一个微分方程组,或者以一致的方式从树状结构中写入和读取给定一系列可能同时进行的查询。回到用户列表隐喻,在编程语言中,您将编写如何遍历记录表,从每个记录中提取"name“字段,并将所有这些字段返回给请求者。

请注意,脚本语言是编程语言的子集,即一种语言既可以是“脚本”,也可以是“编程”:Python经常用于“程序之间的中介”,也用于“转换数据”。像Java这样的其他语言很少被用来在程序之间进行“中介”,这不是因为这是不可能的,而是因为它们的设计并不是为了简化程序。脚本语言的关键特点是它可以编排其他程序,就像脚本给演员提示开始他的角色一样。

票数 43
EN

Software Engineering用户

发布于 2015-09-19 12:39:59

要产生任何类型的分类法,首先需要问自己一些问题:

  • 我要将对象放入任何正确定义的关系中吗?
  • 如果是的话,它们真的存在吗?
  • 我是否仅限于对象之间的一种特定关系,还是有一套要求系统只使用合法关系?

通常情况下,当一个人听到像你问的问题时,预期的答案会做出几个假设。例如,很自然地假设,由于所有这些语言都是语言,它们必须在更普遍的语言概念下形成层次结构,或者它们划分所有语言的空间,或者它们是彼此的子集。

编程语言

不幸的是,所有这些似乎都不是真的。也许只有编程语言有一个最一致的定义。编程语言是编码程序的语言。编码意味着语言中的一个单词可以被解释为一个程序(一个动作序列)。计算机编程语言是这些语言的一个子集。非计算机编程语言的例子:杂货店清单,解释为超市买家的指示,DNA通过转录肽来解释,一个类似的音乐记录,作为磁带录音机的程序。

计算机编程语言是计算机编程的语言。

脚本语言

没有明确的定义。这个词的含义可以解释。从历史上看,没有编译器来生成机器代码的编程语言似乎就是这样被调用的。按照今天的标准,这将使每一种流行的编程语言sans Assembler都属于这一类。即使是像C这样的所谓低级别语言也需要一个具有预先存在的过程的运行时,因此编译C程序获得的二进制文件并不完全是机器代码,而是时不时地调用运行时。

标记语言

没有明确的定义。每当使用该术语时,其意图似乎是用非常有限的词汇量来描述一种编程语言,主要用于生成视觉或音频图像。可能很难将XML视为编程,但如果您查看Man或TexInfo标记,您将看到“特殊”字符实际上是解释器的指令。

还可以对XML语言进行“编程”解释,如下所示:

代码语言:javascript
复制
< := 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
...

一句话:从今天起,这种划分似乎没有什么意义,它只能给你一些关于你所面对的语言的直觉,但它不会给你提供严格的定义。

票数 2
EN

Software Engineering用户

发布于 2015-09-19 16:03:14

这三个概念都有些重叠,因此您可以得到无数的争论: XSLT是一种编程语言,还是Python是脚本语言。

标记语言是一种以文本格式表示结构化数据的语言,HTML是最著名的语言,但是有许多用于各种用途的格式,例如用于图形的SVG、用于描述web服务接口的WSDL、用于.net中资源文件的resx等等。经验法则是,标记语言并不描述进程或算法(就像编程语言那样),而是纯粹的数据。但是,代码和数据之间没有根本区别,这也是CS的基本见解。有些标记语言(如XSLT )具有循环和条件,如“真实”编程语言,而一些编程语言(如Prolog )几乎是纯数据,没有在代码中指定任何进程。Lisp模糊了这一行代码,将自己的代码视为结构化数据格式。

至于编程语言和脚本语言之间的区别,这是一个历史上的区别,现在几乎已经过时了。在过去,我们用C语言编写了独立的程序,然后我们有了脚本语言,比如shell脚本或Word Basic,这些脚本语言被解释和设计用来操纵其他程序和工具。今天,由于我们有不同层次的编译和解释(字节码编译、JIT编译等)和各种与语言无关的API,所以这种区别并没有那么有用。

票数 1
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/241104

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档