客观、公正、无偏见地评价一下PHP,它的优点、缺点,与其他语言的比较,以及其他一切。
不要简单地说“PHP是最好的语言”“PHP是最差的语言”之类的。
回复内容:
作为一个有C语言基础的,一直养成了对数据类型很敏感的习惯,直到用了php. 我滴个神啊,定义变量怎么和闹着玩似的。
你已经先入为主地坚决否认 “PHP是最好的语言”,还说什么客观公正?
事实上PHP就是最好的WEB开发语言(没有之一),除非你认为80%的网站开发者是傻X。
虽然有不少人坚持不懈地喷PHP,但PHP用飞速上涨市场占有率还以响亮的耳光。
PHP的优缺点,网上讨论也很多了。
作为WEB开发语言,最主要的优点是:
1. 开发速度快,秒杀其他所有web开发语言
2. 部署、维护极其简单,再次秒杀其他所有
3. 性能好,好于Python、Ruby。不如JAVA,但差距可以接受。
有这几点,其他已经不重要了。
PHP被喷得最多的是语言特性,但语言是用来实现功能的,不是停留在学术研究层面的,实战效果好是王道。
你设计个特性完美的语言,但是极其难学难用,也不会有什么卵用。
做过几年的php开发,后来短期做过c#,java开发,也接触了一些其他的语言,包括ruby和python,目前专注于web前端开发。因此我觉得自己还是可以比较公正客观地评价php。
优点在web领域,php确实是一门开箱即可使用的语言,不管是在linux下还是windows下,搭建
web开发环境都非常便利,特别是对于
新手来说。按照示例就可以很快写出一个demo,是非常方便简单的,不需要OO,不需要额外的模板引擎。如果需要额外的库,把文件直接加到目录里面,使用include或者require进来即可。这对于新来,或者开发微型项目,都无疑是最方便的。四个字:开箱即用。
而开发大型项目,那么OO,模板引擎,包管理器,各类框架也是应有尽有。可以说,php也是能够满足企业级的开发需求。
很多人以前诟病的php的缺点包括
- 没有好的包管理器(pear,只是用的不多)
- 缺乏命名空间
- 开发不规范
目前来说上述的一些缺点都已经得到了解决
- Composer 目前应用比较广泛的php包管理器
- 5.3以后增加了对命名空间的支持
- PHP之道 对php的开发做了一定的规范限制
缺点性能问题,这方面确实是比不上java,但目前php NG在性能上已经得到了大幅度的提升。
函数命名和参数顺序没有统一的规范,比较紊乱。
写了几年的php代码,发表一下个人看法。
相对于其他语言,Php的显著优点是简单粗暴,上手快,农民工便宜。
但是这些优点都是以牺牲健壮性,可维护性,可拓展性为代价的。
php弱类型,即时编译,导致很多错误在运行的时候才能发现,所以对健壮性要求很高的系统都不会用php这样的语言来构建,你见过哪个银行的系统是用php写的?
Php在代码规范上面没下功夫,导致php代码各种写法混存,最终苦逼的是维护别人代码的接盘侠。。。
再说说php的架构,php采用的是脚本+扩展的架构,你会发现php应用的很多核心代码都是放到扩展上面实现的,而扩展都是用c写的,这样移植又复杂了好多了。从这一点来说,php就是一个组装师。
从语言设计的目标看,主要面向web,这一点可以说既是php广泛使用的原因,也是被人吐槽的原因。我从以下三个方面对比一下php和java这对冤家:
1.网络编程
php能很好地和server整合,因此从socket编程中解脱出来了,不像java/python其他常见web编程语言通常需要自己实现server,而且php自身通过sapi封装了http所需的全局变量,这大大简化了手工解析http协议,但是另一方面也导致php对socket、多路复用等网络编程的支持明显弱于java。
2.并发编程
php没有提供良好的并发编程手段,这一点在为server服务的时候不是太大问题,但是如果编写独立的客户端或服务端程序就比较蛋疼了。这一点,相对java来说就极大限制了php成为一门更优秀的语言。
3.语法特性
从语法特性上来说,php和java很像,但是也各有特点,也都在进步。比如,java对范形编程的支持,php对匿名函数,闭包等的支持(java8有了),php在hack的影响下也引入了标量类型等新特性
综上:php在网络编程与并发编程方面还不算友好,在php7以后应该会有改进,对于web编程php是有独到优势的,但是要成为一门更通用的语言,还有较长的路。