PHP 比 Java 的开发效率高在哪?
现在很多互联网应用都是php开发的,在很多人的观念里已经把php与java分到了两个开发领域,php是互联网,java是企业应用。 都说php的开发效率高,更适合互联网快速发布的特点,但我一直 没感觉到php的开发效率比java到底高在哪,请说的具体一点,细节一点。
PHP和MySQL是绝配,一开始就作为PHP开发的亮点而存在。PHP操作MySQL的方便性其他语言比不了。
PHP跟Apache等服务器亦是绝配,一等支持。代码文件往服务器上一丢,爱咋整咋整。
PHP的Array堪称一绝,数组、关联数组一网打尽,而且提取、存入等各种功能,甚至你想不到的一些方便功能,PHP都给你了。
PHP为Web而生,Web开发需要的什么协议相关、请求响应、加密处理、各种流,都内置了,琳琅满目受用一生。
社区资源丰富,资料唾手可得。
动态语言、弱类型的灵活度,加上PHP后来增强的类型提示,让你随心所欲。
以上还没提到Laravel,如果你用上Laravel、Yii啥的框架,估计会乐不思蜀。
最后让PHP黑继续顽固下去吧,这么好的语言/工具是给我等享用的。其实PHP的主要矛盾不是PHP黑嘴里说的那么不堪,而是入点流的PHP开发者供不应求。你说反了。
PHP适合非核心系统,玩票小系统,如果要要应用到大系统就要做很多改造,所以小玩家比较多。
JAVA适合小系统,中型系统和大系统,结构整齐,缺点是代码看起来死板,看起来复杂。
php程序员往往都有半吊子的前端技能,所以理论上来说是全栈工程师的支柱,也代表着老板可以用一个人做两个人的活。
看起来是缩减了成本。PHP高就高在它脏。
所以你随便糊一个什么东西基本上满足需求,写再乱的代码只要能运行起来就有好。
但是反过来如果想要他变得干净就要费劲了:一大堆的convention,各种黑科技,没错虽然psr标准化了但是autoload这东西真的就是在糊啊。很多人会喷C++程序员都习惯随手造轮子,PHP可是把随手Hack的轮子都直接当成了标准来处理了的。
这么脏确实方便,就像一些答案里说的,随手就能登上机器改代码等等。可是,这样搞对Ops和质量保证很不友好啊。比如你在生产机器上fix了一个bug,在什么情况下把它合并到主分支呢?难道还要在生产机器上配置一套vcs客户端?
再者,业务复杂和高吞吐量的情况下,PHP这些特色都没了:要么没有一个强有力的类型系统做保障结果自身写成了一坨屎,要么滥用动态特性造成代码极度不可读。所以很有可能的原因是,团队的核心成员离职以后这个项目基本就废了,不得不再挖新坑。更神奇的是PHP中这种能够诡异地实现各种需求的特性还真是非常的多,更加剧了这一问题。
第三点就是,PHP是很multi-paradigm的,而且因为一些设计的缺陷导致项目里面不得不交叉混用各种不同的paradigm。加之语言版本的混乱,配置的复杂(当然现在你可以php -S了),以及各种安全性和一些隐晦的缺陷,这些都是影响项目稳定性的致命伤害:因为这些原因可能会有一大部分人不得不在不同机器/操作系统上保留不同的配置,或者是固守某个特定的版本,或者坚持使用自己hack出来的工具。
当然其实上面那些缺陷,除了作为动态语言必有的之外,Java里也多少都存在(特别是对于初学者,或者至今还在使用一些老旧技术栈的人)。但关键是,首先Java自身设计上还是有一定的紧凑和保守(所谓的歧视程序员智商),对于团队协作来说非常的重要,毕竟不是每个人都是大牛。其次Java有非常完善的标准和工具集,自动化程度非常的高,这就避免了需要程序员“ssh到服务器”这种尴尬的操作。另外作为一个工业级的编程语言,Java(及一部分开发框架)在可靠性方面是少有能及的,这一点你PHP再洗也没用。
所以对比一下其实就出来了,PHP脏又快,所以,个人或者小团队快速实现一些原型产品的时候可能会非常的方便,但是随着业务逻辑变复杂,这个优势会逐渐消失。反观Java虽然自由度不高,设计的看起来有些蠢,但是有工业级框架和工具的支撑前期开发上不比PHP差劲,而且能够保证后续的可维护性:至少每个人都能看懂代码。
———
关于程序员,我觉得完全不能按照使用的编程语言来划分,更不应该随便用80%这个数字来随便代表别人。
就像,ssh到Linux这种本身作为基本的ops知识是一个合格的开发人员的必备,而且,自动化工具的存在带给开发人员的好处就是,不用再处理这些脏东西了,把更多的时间留给更好的实现逻辑和提升质量:在源头控制好了问题,就更不会存在ssh到生产环境修bug这种操作了。
以上。