编程语言,脚本语言or标记语言???

不是所有语言都叫编程语言
名词解释
要解释名词,当然是先百科一波。
- 编程语言(英语:programming language),是用来定义计算机程序的形式语言。
- 脚本语言(英语:Scripting language),是为了缩短传统的“编写、编译、链接、运行”(edit-compile-link-run)过程而创建的计算机编程语言。
- 标记语言(英语:markup language),是一种将文本(Text)以及文本相关的其他信息结合起来,展现出关于文档结构和数据处理细节的计算机文字编码。
看不懂正常,下面用人话翻译一下
人话辨析
编程语言通常用于向机器发出一系列复杂的指令。在程序执行之前,需要一个专门的编译过程,即使用一个编译器把代码编译成为机器语言的二进制文件,以可执行文件的形式存在,比如exe文件,以后要运行的话就不用重新翻译了,直接使用编译的结果就行了(exe文件),因为翻译只做了一次,运行时不需要翻译,所以编译型语言的程序执行效率较高。如C语言、C艹等
而脚本语言是一种解释性的语言,不需要编译,需要解释执行,由解释器来负责解释。只有在执行程序时,解释器一条一条的解释成机器语言给计算机来执行(并不生成二进制文件), 所以运行速度是不如编译后的程序运行的快。需要注意的是,翻译器并不产生目标机器代码,而是产生易于执行的中间代码,这种中间代码与机器代码是不同的,中间代码的解释是由软件支持的,不能直接使用硬件,这也是它执行效率较低的另一个原因。如比如JavaScript、PHP、Python等
简单的来讲,标记语言就是带信息的文本,其本身没有行为能力,不能向计算机发送指令。如markdown、html等
编译和解释
下面具体说一些编译和解释。
编译是将源程序翻译成可执行的目标代码,翻译与执行是分开的;而解释是对源程序的翻译与执行一次性完成,不生成可存储的目标代码。这只是表象,二者背后的最大区别是:对编译执行而言,运行时的控制权在用户程序; 对解释执行而言,程序运行时的控制权在解释器而不在用户程序。
解释具有良好的动态特性和可移植性,比如在解释执行时可以动态改变变量的类型、对程序进行修改以及在程序中插入良好的调试诊断信息等,而在不同系统中,只要将解释器移植过来,则程序不用改动就可以在该系统上运行。同时解释器也有很大的缺点,比如执行效率低,占用空间大,因为不仅要给用户程序分配空间,解释器本身也占用了宝贵的系统资源。
值得注意的是,一个语言是不是”脚本”我们不应该只是从语言角度去看待,应该要从运行所在的环境去区别。比如你完全可以写一个C语言的解释器,并且将它作为脚本语言来运行。同样也可以将JavaScript编译成机器代码并且存放在可执行文件中。Ruby就是一个很好的例子,它以一个解释器(脚本语言)出现,但现在已经有多个编译器可以编译它了。
冷知识
最早的编程语言是在电脑发明之前产生的,当时是用来控制提花织布机及自动演奏钢琴的动作。想不到吧hhh
参考资料
- wikipedia. markup language
- wikipedia. programming language
- wikipedia. Scripting language
- petercao. 编译和解释的区别是什么?. [2012-12-09]
- 晨曦之园. 标记语言、脚本语言和编程语言的含义和比较. [2019-07-31]
- ophui123. 标记语言、编程语言、脚本语言的区别?. [2015.07.05]