str*_*ade -2 language-agnostic
ASP是一种编译语言还是不是吗?当然是啦.PHP是一种解释语言.我还开发了一个带有VS 2008 IDE的asp应用程序.但ASP和PHP之间存在很大差异.有什么区别?
ASP是一种编译语言还是不是吗?当然是啦.
不,不是.
ASP不是编译语言的第一个原因是因为没有编译语言这样的东西.语言既不编译也不解释.一种语言就是.语言是一堆抽象的数学规则.解释或编译是语言实现的特征,它们与语言无关.每种语言都可以由编译器或解释器实现; 大多数现代高性能语言实现实际上都使用它们并在它们之间切换,具体取决于哪一个在特定上下文中更快.
ASP不是编译语言的第二个原因是因为它不是一种语言.这是一个框架.您可以使用任何存在ActiveScripting引擎的语言(例如Ruby通过ActiveRuby)编写ASP代码,但最常见的是用VBScript或JScript编写代码.
这带来了第三个原因:Windows附带的VBScript和JScript的实现,以及我所知道的ActiveRuby和所有其他ActiveScripting引擎都是纯粹的解释器,它们无法编译.因此,尽管我在上面写道,任何语言都可以使用编译器或解释器来实现,但ASP支持的所有语言执行引擎都会被解释.
PHP是一种解释语言.
再说一遍:不,不是.
原因一是与上面相同:根本就没有解释语言这样的东西.
而且,与ASP相比,绝大多数PHP实现实际上都包含一个编译器.有些甚至是纯粹的编译器,他们甚至没有翻译.(例如,Phalanger总是直接编译为CIL,没有任何解释.P8可以直接解释或编译为JVM字节码或两者:解释,在解释时收集配置文件数据,然后JIT编译为JVM字节码.)
但ASP和PHP之间存在很大差异.有什么区别?
ASP是一个(与语言无关的)框架,PHP是一种语言.这是一个相当大的差异.(实际上,PHP包含一小部分,在其他语言中通常被认为是Web框架的一部分:webserver集成.)
PHP在操作系统,CPU架构和Web服务器之间具有高度可移植性:几乎每个执行环境都有一个PHP实现,从JVM到CLI,再到Parrot,在几乎所有操作系统下都能在本机上运行.ASP与Microsoft Internet Information Server,Microsoft Windows和PC平台紧密相关.(还有其他一些实现,但它们非常模糊,不再可用.)
PHP有很多不同的实现(Phalanger,Quercus,Pipp,PHC,P8,Zend),ASP只有一个.(就像我说的那样,另外两个不再可用.)
绝大多数PHP实现都是开源的(我认为唯一的例外是P8),而我所知道的所有三个ASP实现都是专有的.
PHP正在积极开发和维护,而ASP在很大程度上已经过时,并且已被ASP.NET取代.