脚本(Script)有2个最基本的特征:1、脚本主要是以文本的形式直接发布,即使以加密或打包的方式隐藏文本源代码,但实际运行时仍然需要释出源代码才能执行,或者虽然支持编译为字节码,但该语言大多数的应用程序都是以文本的方式发布。2、脚本语言主要是由宿主程序(Host)在运行时调用,脚本语言不能独立编写应用,不能编写与宿主程序类型不同的应用。脚本语言调用的功能主要由宿主程序提供,脚本不能独立编写应用程序。有一些搞中文编程的,经常跑过来批评aardio是脚本语言,其实我看了一下他们的标准支持库都是封装的VC++写的代码,自己都不能实现自己的标准支持库。其实这种机制本质上才是脚本的思想,自己不能做饭给自己吃,大多时候都要靠VC++之类其他的第三方编程语言封装出宿主形式的功能函数,然后寄生在宿主身上。说简单一点,要知道一个语言是不是脚本语言,关键不是看他“怎么做”!而是看他能“做什么”?!这个意思也并不是非常极端的要自己从零开始实现一切,很多新手总是觉得搞个语言一定要自己能实现自己,包括操作系统的接口函数都不能用,一定要自己从零开始写操作系统才牛逼。如果把编程语言比作一个人,如果你不需要父母能自己把自己生出来,并不就能证明你有多牛逼。但是你被生出来了,长大了,你还不能自己做饭给自己吃,这就是个问题了。所以关键不是你怎么被生出来,而是你被生出来以后你能干什么,能不能自己做饭给自己吃。很多人把“解释语言”、或者有虚拟机的语言理解为脚本语言,这是完全错误的,例如Java、C#是解释语言,但是他们都可以独立编写应用程序,并且主要的发布方式不是发布文本源代码,而是编译为字节码,或者独立的执行程序。所以他们并不是脚本语言。再例如C语言、C++虽然是原生编译语言,他是也可以作为脚本语言使用,典型的例如我们常用的TCC,就是使用C语言作为脚本语言来使用,可见“脚本”并不是一种语言分类,而是一种发布形式。我们一般说某某语言是一种脚本语言,更多时候是在说他的编写、发布方式主要是脚本形式。虽然每种语言理论上都可以作为“脚本”来发布,但是注意我前面多次提到的“主要”这个词,例如C语言主要的发布形式不是“脚本”,所以不会把C语言叫“脚本语言”。脚本语言只能受制于宿主应用程序的类型,例如你写PHP,那么你不可能用PHP写出一个php_cgi.exe,