编程语言和脚本语言有什么区别,什么是脚本语言

一、什么是脚本语言学术界将『为了缩短传统的编写-编译-链接-运行(edit-compile-link-run)过程而创建的计算机编程语言』称之为脚本语言(Scriptlanguages) 。毕竟宏语言就是脚本语言的重要分支,既然VBA至少是宏语言,那VBA是脚本语言,没毛病啊 。
VBA是脚本语言吗?

编程语言和脚本语言有什么区别,什么是脚本语言


正好笔者有几篇关于这个主题的讨论,索性就再总结一下,希望给读者朋友们一个更客观的视角 。一、什么是脚本语言学术界将『为了缩短传统的编写-编译-链接-运行(edit-compile-link-run)过程而创建的计算机编程语言』称之为脚本语言(Script languages) 。其中编写和运行不能省,也省不掉,那就只能在编译和链接环节省 。
但脚本最终也是由机器执行,所以总有一个源码到机器码的过程,所以编译还是有的,也省不掉的 。所以说,产品没有链接环节的编程语言,就是学术意义上的脚本语言 。二、有哪些常见的误解?很多人,习惯将解释机制的编程语言称之为脚本语言,其实是不准确的 。解释机制,虽然普遍为脚本所采纳,但并非脚本独有 。比如JAVA,它不仅有源码到字节码的虚拟机伪指令编译过程,更有打包过程 。
比如C#/VB.NET,还有变态的二进制编译机制 。更有甚者,按源码存在的形态,发挥作用的方式来确定是否为脚本,显然过于粗暴 。比如,大家熟悉的VBA,网络上能够看得到的,几乎都认为这是一种脚本语言 。三、为何VBA不算脚本语言?认为VBA是脚本的,大抵是因为它可以录制宏,而且也无法脱离Office环境,运行时不需要编译和链接 。
初看,的确像那么回事 。毕竟宏语言就是脚本语言的重要分支,既然VBA至少是宏语言,那VBA是脚本语言,没毛病啊 。但事实上,VBA只是统一了Office的宏语言,也就是通过VBA的语法形式兼容原有宏功能,而Office真正的宏功能,依然被保留着,只是大家很少用了而已,相信用过的朋友是清楚的 。VBA采用了解释机制,而且提供了强大的逐句解释功能,所以运行时不需要编译和链接,完全也是可以的 。
但并不意味着,VBA就没有编译和链接功能,相反编译和链接是提升VBA性能中,最低门槛的方法 。在早期的Office专业版中,微软官方提供了VBA的编译链接工具,不知道的朋友可关注BtOfficer相关文章,也可搜索相关主题 。所以,VBA是拥有完整的编写、编译、链接和运行环节的传统独立开发工具 。不能脱离Office环境的说法,就不攻自破了,不然VBA是如何授权给AutoCAD,WPS等一众软件商的呢?VBA不脱离Office环境,主要还是因为便捷 。
大家都知道,Office从03之前的二进制格式,到现在的OpenXML格式,Office的VBA源码始终是以复合文档格式存储的 。而复合文档中,比如Excel中包括工作簿/工作表/VBA工程加密,都仅仅是防止随意修改,因此Office自带的加密体系都很脆弱 。很多人抱怨微软为何不弄个强加密,提升Office用户文件的安全性 。
对于Office而言,容易的编辑环境,是便捷的重要组成形式,提供强加密只会破坏这种便捷性,更何况这对Office本身的安全性并无影响 。VBA以源码形态存储,并最终使用逐行解释,就是在贯彻这一思想 。VBA不脱离Office环境,其次是因为定制的某些特性,需要上下文环境 。比如在VBA中可以在工作表模块中使用[a1]来代表A1单元格对象及其默认属性,但是其他使用Office对象接口的开发工具,就不能这么干 。
VBA的代码执行可以实时反馈到Office的操作UI上面,使得VBA代码的编写、调试和运行之间关系更加紧凑直接,沉浸式体验非常好 。这是脱离Office的开发工具,很难有的体会 。VBA不脱离Office环境,以闭源著称的微软,真的不知道开源的好处么?VBA以源码形式存储,和可有可无的加密,其实就是变相构建自己的开源生态 。

推荐阅读