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这种操作了。

以上。

 
 

PHP 比 Java 的开发效率高在哪?的更多相关文章

  1. atitit.为什么java体系开发效率这样低的原因and解决

    atitit.为什么java体系开发效率这样低的原因and解决 #---开发理念问题(影响度:很大的,2-3倍效率) mvc<>webform server control ajax< ...

  2. 笨重的mfc还在基于系统控件,熟练的mfc工程师还比不过学习Qt一个月的学生开发效率高(比较精彩,韦易笑)

    作者:韦易笑链接:https://www.zhihu.com/question/29636221/answer/45102191来源:知乎著作权归作者所有,转载请联系作者获得授权. 更新:擦,本来只有 ...

  3. 为什么golang的开发效率高(编译型的强类型语言、工程角度高、在开发上的高效率主要来自于后发优势,编译快、避免趁编译时间找产品妹妹搭讪,既是强类型语言又有gc,只要通过编译,非业务毛病就很少了)

    作者:阿猫链接:https://www.zhihu.com/question/21098952/answer/21813840来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出 ...

  4. Java 的开发效率究竟比 C++ 高在哪里?

    有几个原因     大师助手解决你的烦恼1. 语言上,Java是一个比C++更容易parse得多的语言,所以相应的工具链IDE会更容易做,无论多大的Java的项目,就是新手写完都不会有编译错误.但是写 ...

  5. Qt 框架的图形性能高(OpenGL上的系统效率高),网络性能低,开发效率高,Quick是可以走硬件加速——Qt中分为好几套图形系统,差不多代表了2D描画的发展史。最经典的软描画系统

    -----图形性能部分-----Qt的widgets部分,运行时的图像渲染性能是一般的,因为大部分的界面内容都是Qt自绘,没有走硬件加速,也就是说很多图形内容都是CPU算出来的.但是widgets底层 ...

  6. 【转载】Java 的开发效率究竟比 C++ 高在哪里?

    哈哈哈,太好笑了 https://www.zhihu.com/people/ze.ran ze ran编程话题优秀回答者 less is more 人赞同 C++是面向内存编程,Java是面向数据结构 ...

  7. java排序,效率高的是哪种排序方法

    和所有其他语言是一样的.应该还是快速排序效率最高. public static void bubbleSort(int a[]) {int len = a.length;for (int i = 0; ...

  8. Java Web开发和Python Web开发之间的区别

    今天的文章讨论了Java Web开发和Python Web开发之间的区别.我不鼓励我们在这里从Java Web迁移到Python Web开发.我只是想谈谈我的感受.它不一定适合所有情况,仅供我们参考. ...

  9. Java后端开发常用工具

    Java后端开发常用工具推荐: 俗话说,工欲善其事,必先利其器.不过初学时候不大建议过度依赖IDE等过多工具,这会让自己的编程基础功变得很差,比如各种语法的不熟悉,各种关键字比如synchronize ...

随机推荐

  1. Mysql Event 自动分表

    create table TempComments Like dycomments; 上述 SQL语句创建的新表带有原表的所有属性,主键,索引等. 自动分表怎么做呢? 使用上述语句自动创建分表. 那么 ...

  2. semiautomatic annotated tools

    在进行实验图像取样时,可能会用到大量的标签样本,拍摄大量图片进行手工标注要消耗大量时间,半自动化的标注工具可以节省一些时间. 原文链接:http://blog.sina.com.cn/s/blog_6 ...

  3. ROS和OpenCV的对接cv_bridge

    做一个诚实的ROS教程搬运工............................. 官网链接:http://wiki.ros.org/cv_bridge 一.Package Summary Rel ...

  4. C# 网页内容获取

    private string GetGeneralContent(string strUrl) { string strMsg = string.Empty; try { WebRequest req ...

  5. (C/C++学习)3.C++中cin的成员函数(cin.get();cin.getine()……)

    说明:流输入运算符,在一定程度上为C++程序的开发提供了很多便利,我们可以避免C语言那种繁琐的输入格式,比如在输入一个数值时,还需指定其格式,而cin以及cout则不需要.但是cin也有一些缺陷,比如 ...

  6. 20.基于es内部_version进行乐观锁并发控制

  7. 我理解的数据结构(三)—— 队列(Queue)

    我理解的数据结构(三)-- 队列(Queue) 一.队列 队列是一种线性结构 相比数组,队列对应的操作是数组的子集 只能从一端(队尾)添加元素,只能从另一端(队首)取出元素 队列是一种先进先出的数据结 ...

  8. 【codeforces 793A】Oleg and shares

    [题目链接]:http://codeforces.com/contest/793/problem/A [题意] 每次你可以对1..n中的任意一个数字进行减少k操作; 问你最后可不可能所有的数字都变成一 ...

  9. 用JMeter作WebService接口功能测试(可以借助SoapUI来完成)

    SoapUI里面的操作: Wsdl文件或链接导入或添加到SoapUI打开待测请求:运行请求:取URL  SOAPAction .报文. JMeter里面的操作: 为线程组添加SOAP/XML-RPC ...

  10. [bzoj3530][Sdoi2014]数数_AC自动机_数位dp

    数数 bzoj-3530 Sdoi-2014 题目大意:给你一个整数集合,求所有不超过n的正整数,是的它的十进制表示下不能再一段等于集合中的任意数. 注释:$1\le n \le 1200$,$1\l ...