首先这张图反映的只是某个编程语言的热门程度。
以下代表个人观点:
php这几年热度下降的原因:
1.存活时间长,在互联网技术日新月异的时代,一些更先进的技术会吸引一部分开发者
2.存活时间长,为了对历史版本作出一定的兼容,函数库的体积增大,一定程度上加大了程序员的负担
3.其他的就是其语言本身的缺陷:$符,函数名等等。
不过我不推荐使用传统的后端技术(php等),为什么?
首先用户体验越来越得到重视,ajax,spa(单页应用),angular等框架之类的相关技术的兴起,都从侧面反映出对前后端分离的一种认可和需要,前后端分离的关键简单说来就是把后端的模板渲染移到了前端,交由客户端进行处理,后端只是负责提供数据,页面通过ajax加载,页面无刷新,而传统的php则需要在后端进行模板的渲染,然后把生成的页面返回给客户端。可以明显看出,这样的分工是不合理的,客户端的工作量都移动了服务器端,假如有较高的并发要求,后端的开销是巨大的,因此前后端分离的概念也随之提出,后端提供一个api接口,接受请求返回数据,客户端拿到数据,渲染模板,分工变得合理了,同时数据的通用性更强了,android,ios等客户端也可以获取数据。可能你会说,php也可以只返回json啊,我想说,这是合不合适的问题,如果是这样,明显是牛刀杀鸡。在最求效率和成本的今天,已经不太合适了。
其次,传统后端语言面临的一个巨大冲击就是js后端的诞生,典型的nodejs就是把v8这个js解释器搬到后端,实现服务器的功能,前后端变得统一了,开发的成本减少。
很明显,我是看好js的,hybird app已经相当成熟了,在android和ios的应用中已经占有一定的比例,加上react native对ios和android的支持,js开发原生应用已经实现并且会越来越成熟。
语言上说Php7的新特性不是没有改善,仍旧不能挽救包袱太大的Php。
此外也不要满脸偏见地见js就是callback,见Java就是SSH。JS有promise可以不用没事瞎写callback,Java有诸如Play!这样的轻量框架,JVM上有Clojure和Scala这种更加现代化的语言,Ruby上是Rails碾压一切,Python上除了传统的wsgi container之外也有优秀高效的tornado和aiohttp。
可以尝试一下用用上面提及的这些简单的东西,在仓库的作用下可能可以把你的开发效率较之Php再提高那么一大截。私以为,一个万人骂娘说速度慢的Python都能在性能上和Php齐平,在社区上齐平(嗯当然中文社区不太平)的现在,Php由以前的不可取代变成了可以取代并且有全面更好的选择,剩下国内用Php最大的优势大概是人多价低了。
————————
因为烂
————————
貌似这么说太简单粗暴?PHP的烂是多方面因素累积的。
首先语言设计、效率、库的函数名、参数顺序问题,老生常谈了,基本上真正会PHP的都会知道这些方面的问题。当然说hhvm什么的大幅度提高效率,可是别忘了竞争对手同样在进步。在Java8效率直逼C++的今天,PHP的『效率』谈不上高,也就能跟自己比比看了。
其次是定位。PHP小站可以撑起全服务,大站可以承担中间层,这一点是一直以来广大人民群众对PHP的定位。PHP能够抬起头,以往的优势是一来简单,上手快,加上起步早资料多,以及当年的主要竞争对手之一ASP+vbs抱死了Windows,JSP当时还比较惨不忍睹,这才让PHP一枝独秀闯破天的。现在局势不同了,比效率?node完爆PHP,Java也早不是当年的蜗牛Java了;比易学易用?RoR和Python凭着语言设计良好的优势带着一堆包来教做人;比稳定?Java表示PHP也配谈稳定……到现在PHP的优势只在于源码积累多,以及可能的PHP7和hhvm带来的效率改进了。
最后一根稻草则是JS、CSS的普及以及相应的开发模式的改变。老早以前的HTML里JS效率不高,特别是ms系神奇的IE特殊标签以及自家JScript解释器特立独行,带来的结果是网站大都页面代码揉一起。后来人们慢慢地开始觉得拆开来更有利于模板和程序分开设计,这才出现了前后端概念。PHP带着一众框架跟上了模板化的步伐。但是后来人们发现了Ajax的威力,浏览器突然间蹦跶出来个webkit,JS解释器跑出来个V8,新标准一步步确立,人们总算觉得B/S应该像C/S架构那样彻底拆开来了。不到一两年时间,AJAX遍地跑,此时对于小站,模板合成渲染已经可有可无;对于大站,服务器端合成个模板的开销比对接几个请求还要高,PHP开始落后了。
Node的出现不仅仅是在中间层和轻后端占据了一定话语权,更重要的是前端开发者可以在自机搭建完整的开发环境了。前端一独立,前后分离成了必然,大量的请求其事都是静态的页面和js,以及AJAX拉取的数据,前二者跟PHP已经没一毛钱关系了,后者又有各式各样的额外选择而不需要非PHP不可了,偏偏PHP的优势不突出,缺点倒是挺突出……新项目选择PHP的自然会逐渐减少,就连很多老项目也开始转变使用诸如node这样更方便的新技术来重构(例如阿里淘宝酱的强势承载Node层)。
PHP仍然出现在不少超级大站的后端外层,仍然是在做一些模板合成工作,相比之下PHP模板引擎还是比较成熟好用的。但是很明显,web大哥的地位已经摇摇欲坠了。