PHP 比 Java 的开发效率高在哪?
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 的开发效率高在哪?的更多相关文章
- atitit.为什么java体系开发效率这样低的原因and解决
atitit.为什么java体系开发效率这样低的原因and解决 #---开发理念问题(影响度:很大的,2-3倍效率) mvc<>webform server control ajax< ...
- 笨重的mfc还在基于系统控件,熟练的mfc工程师还比不过学习Qt一个月的学生开发效率高(比较精彩,韦易笑)
作者:韦易笑链接:https://www.zhihu.com/question/29636221/answer/45102191来源:知乎著作权归作者所有,转载请联系作者获得授权. 更新:擦,本来只有 ...
- 为什么golang的开发效率高(编译型的强类型语言、工程角度高、在开发上的高效率主要来自于后发优势,编译快、避免趁编译时间找产品妹妹搭讪,既是强类型语言又有gc,只要通过编译,非业务毛病就很少了)
作者:阿猫链接:https://www.zhihu.com/question/21098952/answer/21813840来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出 ...
- Java 的开发效率究竟比 C++ 高在哪里?
有几个原因 大师助手解决你的烦恼1. 语言上,Java是一个比C++更容易parse得多的语言,所以相应的工具链IDE会更容易做,无论多大的Java的项目,就是新手写完都不会有编译错误.但是写 ...
- Qt 框架的图形性能高(OpenGL上的系统效率高),网络性能低,开发效率高,Quick是可以走硬件加速——Qt中分为好几套图形系统,差不多代表了2D描画的发展史。最经典的软描画系统
-----图形性能部分-----Qt的widgets部分,运行时的图像渲染性能是一般的,因为大部分的界面内容都是Qt自绘,没有走硬件加速,也就是说很多图形内容都是CPU算出来的.但是widgets底层 ...
- 【转载】Java 的开发效率究竟比 C++ 高在哪里?
哈哈哈,太好笑了 https://www.zhihu.com/people/ze.ran ze ran编程话题优秀回答者 less is more 人赞同 C++是面向内存编程,Java是面向数据结构 ...
- java排序,效率高的是哪种排序方法
和所有其他语言是一样的.应该还是快速排序效率最高. public static void bubbleSort(int a[]) {int len = a.length;for (int i = 0; ...
- Java Web开发和Python Web开发之间的区别
今天的文章讨论了Java Web开发和Python Web开发之间的区别.我不鼓励我们在这里从Java Web迁移到Python Web开发.我只是想谈谈我的感受.它不一定适合所有情况,仅供我们参考. ...
- Java后端开发常用工具
Java后端开发常用工具推荐: 俗话说,工欲善其事,必先利其器.不过初学时候不大建议过度依赖IDE等过多工具,这会让自己的编程基础功变得很差,比如各种语法的不熟悉,各种关键字比如synchronize ...
随机推荐
- 课上练习 script
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 基于 CC2530 的温度采集系统(未定稿)
前言 最近在自学 Zigbee,每天的主要是任务是:看博客,看 CC2530 的 datasheet 和实践,熟悉片上的 SFR 以及控制板子. 学和做内容包括:IO.外部中断.Timer1/3/4. ...
- python3 str类型
python3 的str就是unicode,只有encode函数,调用encode返回的是bytes. bytes只有decode函数,调用decode返回的是str.
- OpenCV中的模板匹配/Filter2d
1.模板匹配 模板匹配是在图像中寻找目标的方法之一.Come On, Boy.我们一起来看看模板匹配到底是怎么回事. 参考链接:http://www.opencv.org.cn/opencvdoc/2 ...
- ANN:ML方法与概率图模型
一.ML方法分类: 产生式模型和判别式模型 假定输入x,类别标签y - 产生式模型(生成模型)估计联合概率P(x,y),因可以根据联合概率来生成样本:HMMs ...
- Lazarus开发环境编译选项配置
Lazarus的环境配置让人有点犯晕,对于刚从delphi转到lazarus上的我来说,每次新建工程都会遇到一堆Can't find unit xxxx used by xxxx的问题,问题虽然不大, ...
- Hadoop-2.2.0在Unbuntu ADM64中需要重新编译Native Lib
通过:cat /etc/issue 查看当前系统版本: Ubuntu 12.04.3 通过:uname -ar 查看更想起信息: Linux ubuntu-236 3.8.0-29-generic # ...
- vue中引入json数据,不用本地请求
1.我的项目结构,需要在Daily.vue中引入daily.js中的json数据 2.把json数据放入一个js文件中,用exports导出,vscode的json格式太严格了,很多数据,调了一个多小 ...
- js中的数组遍历
js中的数组遍历是项目中经常用到的,在这里将几种方法做个对比. ! for循环:使用评率最高,也是最基本的一种遍历方式. let arr = ['a','b','c','d','e']; for (l ...
- Layui 行点击追加元素效果
/** * 单击事件 * @param obj */var dom;var state;WarningIllegalIntime.onRowClick=function(obj) { console. ...