php既然这么烂,那它是怎么火起来的? 财富值12

2016-08-19 07:47发布

PHP既然这么烂,那它是怎么火起来的?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
10条回答
PHP崛起的时候,竞争对手只有ASP、perl及cgi脚本。
你以为有现在java、ruby、python、.net的什么让你选?
生得逢时吧,AMP组合已经集齐一套完整的带CGI功能,数据库的网页服务器套装,而且相近的技术(JSP/*或者sevrlet*/,ASP)当时出现晚了(PHP2是95年,引入Zend引擎的PHP2是97年,PHP3是98年,JSP是99年,/*sevrlet是97年*/,ASP是96年,ASP.NET是02年),其实只是最近一些年才发现PHP的语言特征太“粗犷”了,才认为不太适合。(毕竟原设计只是给作者自己更新网页用的)

当然PHP的设计的确方便上手,配置基本简单。
这个世界上有两种语言,一种是常被人抱怨,另一种是无人问津。

安利一下:

PHPHub - 积极向上的 PHP & Laravel 开发者社区
我以前一直觉得php烂,这破语言写个东西倒是很快,写大了简直噩梦。
直到去年我去写了个课设,用了框架叫Laravel,才知道这个语言一直在前进。
php出身不好,就像javascript.(其实并不太相似,js的特性一开始就很高级)
不过用的人多了,前进的动力也就大了。
php5各个子版本,每增加0.1的版本号,就有一堆新特性,lambda之类的都已经支持了,叼的飞起。
现在再吐槽php烂,只能说你知识需要更新了,现存的php教程大部分都很老,php新特性已经追上甚至引领了时代的潮流,早就不是当年的那个php了。
一门编程语言不是仅仅是比较执行速度的,除此之外,还有:
(1)部署成本要低,上手简单和稳定
(2)开发效率
(3)这门语言对应的周边拓展和第三方工具完善

仅仅说执行效率,还不如使用C/汇编语言来实现,效率才是最高的。为何绝大多数系统都没有这么选择呢?因为成本高昂并且开发效率比较低。互联网公司,希望项目进度快一些,同时成本更低一些,因此选择PHP的就不在少数。

觉得PHP烂的开发者,只关注了PHP的缺点,忽略它的优点哈。
语言本质没有好坏之分,它们都有各自的优缺点,在不同的场景下,各自完成自己擅长的工作,其实没有比较的意义哈。
问问题前,你先问前提对不对,不是在该既给前提下所说的是不是

答主你说, php的 “说到性能,目前只有用HHVM或者测试版的PHP7才能吊打Python,而用目前的官方稳定版PHP在大部分时候还不如Python” 这句话我就不说了

比较权威的benchmark网站,你看看PHP vs Python性能
benchmarksgame.alioth.debian.org



看到没,前面的都在1以下,大部分1/3 1/10就是说明实现同一个功能,PHP所花时间是Python的接近1/3、接近1/10 , 你要不信,可以去看相关问题的代码,该代码在该网站都有的,你可以看看是不是代码写的渣。



PHP的性能不说别的,从我用的那么多体验来说,虐Python有多的。比java不如,但是加上HHVM,单机好、小规模部署好于Java,大规模集群上Php比不过Java,但是性能差距也现在渐渐在1倍以内。

就像benchmarks显示 PHP比ruby、python多出的都不止2倍
一个东西流行真的有其背后的数据啊、性能啊、上手啊等等优点的
PHP流行到什么程度?

w3techs.com 给出一些数据如下:
PHP写的网站占所有网站的大概 80% 了。这个网站的数据我觉得还是比较信服的。你黑跟不黑,他们都在那儿用php在。

链接在这:
Usage Statistics and Market Share of Server-side Programming Languages for Websites, May 2015

PHP流行无外乎
  1. 简单
  2. 性能足够好
  3. 热部署、易修改
  4. 部署方案简单、各种独立的php空间商好找
  5. php官方够给力、性能提升比较大, Facebook出的HHVM更是反映了PHP的兴盛
  6. 一些顶级PHP类库的发展,比如韩天峰的Swoole ,github地址 swoole/swoole-src · GitHub 鸟哥的yaf laruence/php-yaf · GitHub
  7. PHP的极强的兼容性,这个也是稳定、高效的最好的佐证,PHP5.2到现在的PHP7、hhvm有多少的不兼容么?反观Python Python2跟Python3是裂变,ruby每个版本的兼容性其实很大的,甚至一些gem比如rails之类的 ,兼容性很差的。
  8. Php的灵魂Hash Table很精妙,php的简单我觉得绝大多数构筑在hash table设计精巧上, 用了那么多的语言,php的数组、对象操作真是最简单最得心应手的,这个就是Php hash table的强大了,关于hash table的C实现,可以大概瞅瞅PHP C源代码, php-internals.com/book/?

四大web语言(仅仅web上用的比较多,比较类似的4大语言) PHP跟python、ruby java 我都学过(C#粉勿怪,我是linux脑残粉,只用linux下用的比较广的东西,ms系列的东西我都不看的。)
其中php ruby python算是同类C实现的脚本语言这一类的。java自成一类字节码半编译基于强大JVM的伟大语言。
分开来说:
  • 在php、ruby、python里面

虽然我觉得python、ruby比较省代码

但我不觉得在web上 python、ruby有机会击败php。不要因为少数开玩笑的、低级的黑PHP就觉得PHP不行了,那些黑PHP的多少黑到点子上去了。

别的我不知道,学校里一些玩儿python的自以为python很厉害,整个php群体比较菜的,这其实是python小众群体的优越感了。真比起来,python在纯web上比不过php跟ruby。

以前十年前大概,挺多初高中生搞ACM、OI 会一点pascal 就那种很优越的经常说,“别跟我提C++,我是写pascal,不懂C++啦”,就是那种自黑狂妄的秀优越的那样说出来的, "不懂C++都拿出来秀优越一样",真是可笑。

python、ruby的类库比php多一些, 但是在纯web跟web相关这方面,php的成熟类库比ruby、python多的,这就是php为什么现在在web上比python、ruby强。perl的没落也不是没有原因的。1995-1998年大概, lamp就开始提出来,盛行天下。当时很强大的雅虎在内部全部推广php, 最后才引起php的盛世啦。


  • 再说 java跟(php ruby python) 这两大类。
java综合来说,写起来复杂一点,不要跟我扯java敏捷开发(java的敏捷开发是相对于java以往的开发例子的敏捷开发),嵌进去预言的语法是你的一个便捷的框架能改变的么?真想逆天改命呢。

jvm经过sun orcale IBM 等等花重金堆人才、堆技术、堆黑科技,堆出来的超强性能,惊世罕见。已经在很多地方java不比c++ 慢了。

java的一些工业级的强大类库、php ruby python只有看着的份儿,这个是事实,得认。apache基金会下面一票的伟大的java项目: tomcat 、 cassdra、POI 、strust 、lucene、solr、hadoop、hbase、zookeeper 等等。具体可以去看
apache基金会主页
apache.org/


在web方面, java堆机器、堆集群是可以把一些性能堆上去的,还有一些像站内搜索引擎方面事实标准是solr 、lucence, 这一块基本只能用java。
还有一些复杂的后台任务啊、之类的都用java不断的跑。写到cache、队列里面去,供其他语言调用。

java一个很好的特点就是工程性特别规范特别强、简直是标准的工业级语言。虽然写起来有点点繁琐,但是配合伟大的jetbrains idea 系列IDE的智能提示,基本不麻烦。java的安全性、线程锁、同步啊、Exception等等是别的语言很难达到的。所以淘宝、当当、京东有用到java的,哪一步比如读文件、数据库连接、IO、网络等等所有地方的 异常都可以捕获,万一发生诡异的异常都可以找出来的。其他语言(php ruby python)目前基本没这样的能力的。

所以一些大企业java / c++ + php混用的,其实挺好的。

个人觉得“PHP是最好的语言”,这话即使不对,也是最好语言之一。



知乎上面有些人真是无语,别人写了答案有数据、有网址、有图的,同时提出自己的观点。
有的人上来直接




我有说过php跟python的 web框架的性能跟 开发效率么?

benchmarksgame.alioth.debian.org网站是很有名气的,上面的测试都有代码的。你要是不信也没办法了。 我说的是php 跟python的语言性能,benchmarks测试的也是语言的性能。 我没提框架, 一个个测累死人。我仅仅说 benchmarks 显示php比python性能好很多,w3tech 显示 php大概占了web的80%。你又究竟做过多少测试来比较php和python的各个web框架的优劣的。没有的话,少在这里bb把。不服拿出你的测试跟数据之类的来吧。有论点有数据有图有网址的你说是放嘴炮我也没办法了。

什么人都是。
欢迎python ruby java 等使用者友好礼貌的提出自己的见解。或者直接上数据、上测试 打我脸。程序员吗就是应该多交流,没数据没图没代码的,就不要乱放嘴炮骂人了。

分割线 2015-06-01 更
===============

有人要扯性能不是语言的事儿,因为纯php是很特殊的,不要框架可以跑的。甚至swoole不要web server也可以跑的。而ruby python java基本是要用框架才能跑。好,那这里贴一下框架的性能对比。

techempower.com/benchma

分数越高越好,我把各大语言我认识的 常用的web框架,标出来了。
大家也可以自己看看自己在用的框架在什么位置


看到没php-raw , 也就是纯php, 在很高的位置。在纯php之上的,除了纯java的servlet-raw, 其他我都不认识。注意php-raw 比 python django flask、ruby rails sinatra、go 、go revel 等等好多都要高,有的还高很多很多。


php上框架的话,国内惠新宸写的 yaf-raw 框架,也就是纯yaf框架,仅仅比 纯php慢一点大概 10%吧。还是比python、ruby、go等绝大多数框架要高、甚至高很多很多。几乎跟go相当。


看到没,php的流行,必然有很大的一方面就是性能很强的原因。配合简单、稳定、容易部署。why not php?


我还在百度实习的时候,百度用的比较普遍的一个php统一解决方案,核心就是ap框架。可以说 ap框架 约等于 yaf框架。几乎一模一样的。是鸟哥还在百度的时候,他们一起为百度的基础架构写了一个php c语言框架。


这么好的,大公司在很多产品线使用的、鸟哥维护的框架。还既开源又免费,大家还不去试试?


yaf的github :laruence/php-yaf · GitHub
yaf官网在这儿: Yaf - The fastest PHP framework
文档在这儿 : Yaf(Yet Another Framework)用户手册


而且以上评测是每把近两年的 php 后起之秀swoole算上去。swoole算上去,甚至会超过php-raw很多的。swoole内置了http serevr, 写socket、通信之类的 ,最合适的 。
swoole的 github: swoole/swoole-src · GitHub
swoole的官网 : Swoole: PHP的异步、并行、分布式扩展




@万齐飞 你要的框架测试来了,你自己去看。非要再说我放大炮我也没办法了。我了解的情况,上面都说了。
其实, 我是比较拒绝参与这种讨论的, 不过想想我好像从来没有系统的阐述过对这个问题的看法, 今天就算破例一次吧.

首先, PHP烂? 我其实不明白是谁, 或者是那些人得出这个结论的, 或者请你说说PHP哪里烂了? 当然我也见过很多的PHP的失败设计之处, 比如函数名混乱, 比如一直被人黑的性能差. 如果这些就是你说PHP烂的理由, 那么我来反驳下.

函数名混乱, 这个有一定的历史原因, PHP在版本迭代的过程中首要保证的就是兼容性, 一些老的函数, 在那个久远的年代, 在那个社区没有人意识到这个问题的年代, 已经被加入到了PHP内部, 我们并不能简单的就改名, 这会造成代码不兼容, 所以这个是我们没办法抛弃的包袱.

但对我个人来说, 我不觉得函数名乱(首先, 我说的是极少数, 目前整个开发组都会很在意新加入的函数的命名, 或者其他的一致性)是个大问题, 就好比Linux各种发行版的各种类库, 你用哪种, 就遵循哪种的变量命名, 你会因为不喜欢一个类库的函数命名而不去用他么? 你在用了以后, 帮你免费的解决了问题以后, 省掉了你自己写代码的烦恼以后, 你反过来因为人类库作者函数命名乱,就骂一句烂!是不是稍微有点不厚道?

至于性能, 我们一直在致力于提高PHP的性能, 虽然绝大多数情况下, 性能的瓶颈根本不在语言本身(IO, 代码质量), 但是我们确实一直致力于去做这个事情, 让phper们可以透明的享受到性能的提升, PHP5诞生到PHP5.6已经有了数倍的性能提升, 更不用说最近的PHP7. 如果说PHP以前性能比较差, 没有问题, 但是未来, 有着这么一群优秀的贡献者努力为PHP提高性能, 如果你还天天闭着眼睛说PHP性能烂, 那就是有点不客观了.

对于未来发展, PHP有着繁荣的社区, 积极的开发组, 大量的开源项目支持, 你做任何的项目, 都可以找到合适的类库, 系统帮你快速完成任务, 并且随着性能的提升. 你可以小成本快速的完成项目, 快速的验证产品理念. 这对于百万创业者来说, 是烂么?

当然, 不厚道的说下, 还有一部分人是单充就是为了智商优越感, 或者屁股决定脑袋的为了推广自己的一些东西而恶意攻击PHP. 比如他们说PHP入门门槛低(90% of这些人可能认为语言越复杂, 学起来越爽), 烂. 说PHP不支持多线程(90% of这些人不知道多线程模型和IO复用模型的不相伯仲), 烂. 说PHP不支持异步(90% of这些人, 根本不知道异步代表什么), 烂. 说PHP是屌丝语言(99% of这些人是想找寻智商优越感), 烂. 每每我看到这种的论调, 我真的很无奈, 因为你根本没办法让一个装傻的人变聪明.

我们要努力认清这些人, 对于这部分人, 我们大可不必理会(但是有的时候, 这些人就天天在你面前晃悠, 也是挺无奈的). 给他们一些找寻优越感的机会, 人生本来已经如此辛苦, 何必剥夺他人寻找点点慰籍的可怜机会呢?

至于为什么PHP火起来了? 因为它是一门能帮人们高效解决问题,快速实现想法的优秀工具,有什么理由不被大量采用呢?

最后, 我真的希望国内的社区少一些语言和工具之争, 多一些良性的技术讨论. 每一个语言都是很优秀的存在, 尊重每一个语言给我们带来的价值, 给社会带来的价值. 我们要做的是在合适的地方选用合适的语言和工具(我自己就是多种语言的使用者, C和PHP就不用说了, Lua, Js, Perl, Go, 等, 我会用最合适的工具解决我的问题, 你总不能在浏览器里写Go吧? ), 综合每一个工具的优势为我们所用. 而不是狂热的把非己类视为异教徒.

希望未来语言之争只是被大家当做笑话, 供茶余饭后消遣而用.

thanks
1996年,很多人做网站用的是 cgi, perl 啥的,浑然不觉的苦逼啊。
java 还 1.0 呢吧 ,也就是个玩具,
安德斯·海尔斯伯格刚跑到微软鼓捣 .net
而 php 呢,已经2.0了,从易用性和实用性来说,简直帅的没朋友。

所以,我的答案就是:因为做的早,而且一直到现在还在更新
知乎用的是Python,你看看人家100多台服务器还每天503的…这服务器真爱学习!
大概很难找到你能如此透彻去了解它的主流语言了。

一周热门 更多>