答案 0 :(得分:9)
ASP是一种编译语言还是不是吗?确定是。
不,不是。
ASP不是编译语言的第一个原因是因为没有这样的东西作为编译语言。语言既不编译也不解释。只有的语言是。语言是一堆抽象的数学规则。解释或编译是语言实现的特征,他们没有与语言有关。 每种语言都可以由编译器或解释器实现;大多数现代高性能语言实现实际上使用两者并在它们之间切换,具体取决于哪一个在特定上下文中更快。
ASP不是编译语言的第二个原因是因为它不是一种语言。这是一个框架。您可以用任何语言为ASP编写代码,其中存在ActiveScripting引擎(例如Ruby通过ActiveRuby),但最常见的是用VBScript或JScript编写代码。
这给我们带来了第三个原因:Windows附带的VBScript和JScript的实现,以及我所知道的ActiveRuby和所有其他ActiveScripting引擎,都是纯解释器,它们是无法编译。所以,即使我上面写到任何语言可以使用编译器或解释器实现 all 支持的语言执行引擎通过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取代。
答案 1 :(得分:3)
您可以更具体地回答您的问题。
最大的区别当然是ASP是用.NET语言编程的,并以.NET框架为基础。 PHP当然是用PHP编程的,并带有它的库。
.NET被编译为字节码,并且该字节码在运行时被解释/ jitted。还有用于PHP的字节码缓存(例如APC),并且有一个活动项目旨在使用LLVM从中生成本机代码。
答案 2 :(得分:2)
ASP解释ASP.NET编译。 ASP不是一种语言,而是一种框架,您可以用一堆语言编写ASP.NET代码。 ASP.NET只在IIS上运行(除非你使用Mono并在这里记得Chilisoft ASP?)
答案 3 :(得分:1)
我注意到在GoDaddy.com上尝试添加托管时,PHP用于Linux软件包,ASP用于Windows软件包。
答案 4 :(得分:0)
ASP是一种专有的闭源实现,PHP不是。