PHP和ASP有什么区别?

时间:2010-01-25 20:42:23

标签: language-agnostic

ASP是一种编译语言还是不是吗?当然是啦。 PHP是一种解释语言。 我还开发了一个带有VS 2008 IDE的asp应用程序。 但ASP和PHP之间存在很大差异。 有什么区别?

5 个答案:

答案 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不是。