PHP对程序员的要求更高

首先,大家都知道,PHP也是一种编译型脚本语言,和其他的预编译型语言不同,它不是编译成中间代码,然后发布..而是每次运行都需要编译..

为此,也就有了一些OpcodeCacche,比如开源的APC,eacc.还有商业的ZendO+等.

那么为什么PHP不把编译/执行分开呢?

PHP虽然是一种编译型脚本语言,但是它的编译速度非常快,它的编译不做任何语义优化,就是简单的忠实的把你所写的代码翻译成对应的Opcodes.而其他语言因为在编译器做很多的优化工作,会造成编译比较重,也一定程度上要求它们分离.

所以,理论上来说,通过编译执行分离,想达到源码加密,是不会有什么太大收效的,因为它很容易被反向.

另外,编译直接分离,并不会带来特别大的收益,反而会降低调试部署的效率(想想,修改,编译,发布,看效果),并且APC等OpcodeCache工具,已经很成熟了..

到这里,请大家注意这句:”它的编译不做任何语义优化”….

这也就是我为什么说,PHP对程序员的要求更高,不同于其他的编译型语言,PHP在编译的时候不会帮你做一些优化,比如对于如下的代码:

for($i=0;$i<strlen($j);$i++){

}

如果对于C或者Java等其他语言,它也许会帮你做优化,把strlen提取到前面去,只做一次就够了.而对于PHP来说,它在编译的时候不做任何优化,也就是说,你的strlen,会被调用很多次.

再比如:

$table="table";

while(++$i<1000){

$sql="select*from".$table."whereid=".$i;

}

没错,“select*from”.$table会被concat1000次..

可见,PHP的程序员,需要认真的想好,你的代码会怎么被执行,你怎么写代码,最终的执行效率才最高.而不像其他的语言,程序员可以把一部分优化工作交给编译器.

这也就是我为什么说:”PHP对程序员的要求更高”的原因.当然,这个是好是坏,那就是见仁见智了.

免费领取LAMP兄弟连原创PHP视频教程光盘/《细说PHP》精要版,详情咨询官网客服:http://www.lampbrother.net

相关推荐