关于php的发展前景
php7 宣称速度比php5.6快两倍,宣称要打破一切旧规则
2015年,php 7.0发布
2016年,php 7.1发布
2017年,php 7.2发布
2018年,php 7.3发布
2019年,php 7.4即将发布
并且php8已经在讨论中,并已确定支持JIT,应该会在2020年发布
各版本cpu性能测试,php8比php5.0时快了40倍,比php5.6快了9倍,http://www.laruence.com/2016/12/18/3137.html
看的出来php这几年很活跃,php确实做出了很大的改变,性能得到了很大提升,同时也在向弱类型和解释型动刀,弱
类型和解释型都是php之前的优点,好用,简单,快速开发,然而过去的有点不一定适合未来,php的团队也注意到了这一
点,不断进行类型规范和运算符规范的调整,比如支持类型声明,支持运算符的类型异常抛出,以及数组和foreach做出的
改变。这所有的一切都是对php的一种修复,过去php太杂耍了,隐式类型自动转换,看着很厉害,用着很舒服,实际上隐
藏了大量的未知BUG,可能看起来逻辑毫无问题的代码,莫名其妙的不通过。弱类型在计算时必然要进行类型的判断和转换,由于php的数组以及字符串包装的层次足够深,必然浪费性能。
这也是为什么php开发速度快,号称世界上最好的语言,却只能蜷缩在web开发这一角,这是php的病,得治。随着php7.0
~ 7.4的改进, 这些问题正在逐渐解决,然而路漫漫其修远兮!
- php 7.0
PHP 7.0.0 Alpha 1 [1] 使用新版的ZendEngine引擎,带来了许多新的特性,以下是不完全列表:
性能提升:PHP7比PHP5.6性能提升了两倍。 Improved performance: PHP 7 is up to twice as fast as PHP 5.6
全面一致的64位支持。 Consistent 64-bit support
以前的许多致命错误,现在改成抛出异常。Many fatal errors are now Exceptions
移除了一些老的不在支持的SAPI(服务器端应用编程端口)和扩展。Removal of old and unsupported SAPIs and extensions
新增了空接合操作符。The null coalescing operator (??)
新增加了结合比较运算符。Combined comparison Operator (<=>)
新增加了函数的返回类型声明。Return Type Declarations
新增加了标量类型声明。Scalar Type Declarations
新增加匿名类。Anonymous Classes
- php 7.4 性特性
1、php7.4 支持了预加载。现在传统的 PHP 框架或者项目,都是有一次请求就加载和重新编译一次文件的。预加载的实现
使得我们可以直接将 PHP 文件加载到内存中,并一次来永驻内存来应对后续的请求。(是不是看着这段话很熟悉)
不过预加载也会带来一点机器内存要求和一些损耗,你还需要注意的是,每次在更新完 PHP 文件之后,你需要重启服务才可以使得新的 PHP 文件生效。
2、属性类型限定
在定义类属性的时候,你可以限定属性的类型 string boolean 或者是一个类的实例:
class GeiXue
{
public string $name;
public Foo $foo;
}
3、类型限定的改进
4、外部函数接口
外部函数接口(Foreign Function Interface)总的来说就是允许你调用 C 代码,也就是说,最好的应用场景可能就是:你以后写 PHP 的扩展就可直接用 PHP 来写了!
不过需要注意的是:这目前来说还是比较复杂的,你最好还是有点 C 语言的基础。
5、null合并符的改进
6、PEAR不再默认开启,使用compose替换
7、自定义对象序列化
在 PHP 7.4 的时候,增加了 __serialize 和 __unserialize 这两个魔术方法,你可以用来自定义对象的序列化。
- php8
继php对于变量类型的加强之后,又支持了JIT, 引入JIT后,会扩大PHP的使用范围,使得PHP成为一种真正的通用型语言,而不仅仅是个Web开发语言,尽管目前咋Web开发上面PHP做的确实是非常成功。
对富CPU密集型计算方面的改善,可以在机器学习,3D渲染,2D(图形)渲染和数据分析方面提高适用范围。
从此php将不再蜷缩在web开发的一角,将有机会和java、python展开全面竞争。
其它的改进方案都还在讨论中,希望php8继续打破过去,浴火重生,成为真正的最好的语言!
- p++ 的争论
PHP的核心开发者内部,关于是否由弱类型动态向强类型静态语言转变发生重大分歧 ,想了解详情的可以点击下面的连接
https://externals.io/message/106503
https://externals.io/message/106453
一部分认为php引入的变量类型声明是个错误,就应该保持PHP的本色,包括引入者本人,
另一部分就是像我这样希望PHP进行改变,向强类型静态语言转变。
正如zeev说的,双方没有谁对谁错,只不过前者考虑的是php的整个传承和社区,以及php的特色
而我认为,5G已经到来,物联网普及化和AI的到来只是时间问题,现在的应用动辄上亿用户,大数据分析处理的需求即将白热化,
将来PHP何去何从?守着web领域一块孤岛?守得住吗?以后的web仅仅是IO密集型吗?
计算密集型不一定,因为有分布式,各种流数据库,但数据密集型是必然的。
php即使对数据密集型有了很好的支持,那也是守住疆土而已,谁不想涿鹿中原呢。
也许PHP搭上大数据这班车,这一切就不一样。
上个周听说zeev 想要开发php方言p++,然后一轮投票后以0比50的结果被否决,最后zeev自己也投了反对票(2019-08-27) https://wiki.php.net/rfc/p-plus-plus
最近唱衰PHP的人越来越多,其实PHP作为web语言,本身并没有太大毛病,有毛病的是国内的PHP从业者。
大多是培训出来的,培训出来也没啥,毕竟大学一般没有PHP专业,只要愿意学,都可以进步。
但是培训出来随便找个工作,也不深入学习,就天天糊弄,最后啥也不懂,搞得其他语言的开发者对PHPer有怨气,领导不相信PHPer也是必然。
我身边这样的例子太多了,说是工作三年,水平比我刚大学毕业时还低
整整一年了,单点登录还没对接上,天天跟做单点登录的部门吵架。(给部门拉仇恨)
不会用kakfa,说php就不支持kafka。(给php招黑)
接收参数后,先查询sql,再验证参数是否为空。( 真的,我都不敢想,还能有这种骚操作)
真不怪别人黑PHP,这样的人,我敢说要占PHPer的相当大一部分,
当然我举得这个例子有点极端,
中庸点的就是,会写写增删改查,对对接口,新东西给点时间也能凑合用,原理一概不知。
整个PHP行业现在就是这么个情景,如果我是老板,也会对php失望。
关于php的发展前景的更多相关文章
- Web前端发展前景及就业方向
Web前端发展前景及就业方向 HTML5技术已经日趋成熟 Html5是移动互联网前端的主流开发语言,目前还没有一个前端的开发语言能取代 html5的位置,所以说,无论你是做手机网站还是在手机app应用 ...
- SAAS在中国市场的发展前景
发展现状 2008年1-7月软件行业实现收入4199.1亿元,同比增长32.4%.2008年第一季度,业务管理软件市场总量达16.31亿元,同比增长17.8%.面对成本的上升,企业选择了向信息化要效率 ...
- HTML5简介及HTML5的发展前景
WEB技术发展越来越迅速,HTML5的到来更是把WEB技术推向了巅峰,目前HTML5技术已经日趋成熟,不仅在PC段,HTML5更是在移动终端上也有广泛的应用,HTML5的未来十分光明,值得我们去学习. ...
- InSAR在地面沉降监测中的应用及发展前景
合成孔径雷达(Synthetic Aperture Radar,SAR)的概念始于20世纪50年代,是正在发展中的极具潜力的微波遥感技术.SAR具有全天时.全天候的工作能力,能够穿透云层,对某些地物具 ...
- PHP语言在中国的发展前景怎么样?
PHP语言在中国的发展前景怎么样? “在互联网泛滥得今天,想要做好这一行业不是那么容易的,然而,互联网编程语言的发展PHP编程语言的出现也是赢了世界发展的潮流. PHP在我国发展也很快,越来越多的编程 ...
- Progressive web app理念及发展前景
前一段时间微信推出微信小程序进行公测,着实火了一把,博得了大众的眼球,不明真相的吃瓜观众们纷纷围观,所谓的“微信小程序”,通俗的讲就是一种不需要下载安装即可使用的应用程序,脱离于app商店依托于浏览器 ...
- AJAX 概念 优势 发展前景 工作原理 底层技术 状态 缺点 框架
1. 概念 Ajax asynchronous JavaScript and XML , 异步js和xml. 这种解释已经过时了, 现在ajax就是, 允许浏览器和服务器通信, 而无需刷新当前页面的技 ...
- Java发展前景与职业方向解析
大多数人选择Java可能只是因为听说Java前景好.Java比较好找工作.Java语言在TIOBE排行榜上一直位于前三等等之类的原因,但是Java具体好在哪里,心里却是没有什么概念的.本文为你解答学J ...
- 码农Coding Peasant(s):一般指从事没有发展前景的软件开发职位
码农Coding Peasant(s):一般指从事没有发展前景的软件开发职位,这种职位只能强化职业者在单方面的技术领域技能,学不到新技术,同时也是部分从事软件开发工作人员的一个自嘲的称号.一个依靠写代 ...
- 乐字节Java学习01-Java语言概述,Java发展前景,Java的特点
从这篇文章开始,小乐准备写一整系列的Java学习文章,一步一步带您进入Java的神奇世界! 这是第一篇:Java语言概述以及Java的发展前景 1.SUN公司介绍 SUN公司全称是Stanford U ...
随机推荐
- solr 初接触
solr教程,值得刚接触搜索开发人员一看 http://blog.csdn.net/awj3584/article/details/16963525
- js 生成树以及关键字搜索生成树
function main(keywords,data){ function fn(arr){ var flag = false; for(var i = 0;i <arr.length;i++ ...
- 数学建模python matlab 编程(指派问题)
指派授课问题 现有A.B.C.D四门课程,需由甲.乙.丙.丁四人讲授,并且规定: 每人只讲且必须讲1门课:每门课必须且只需1人讲. 四人分别讲每门课的费用示于表中: 课 费用 人 A B C D 甲 ...
- Nginx+FastCGI到底是谁影响超时时间
需求: 一个php程序要跑一段时间,但是时间不确定. 问题: 当该php程序运行超过一段时间被强制断开连接. PHP本身超时处理 在 php.ini 中,有一个参数 max_execution_tim ...
- Jenkins - Tips
01 - RPM包安装方式 默认路径 配置文件:/etc/sysconfig/jenkins 日志文件:/var/log/jenkins/jenkins.log 执行文件:/usr/lib/jenki ...
- Python 常用模块(2) 序列化(pickle,shelve,json,configpaser)
主要内容: 一. 序列化概述 二. pickle模块 三. shelve模块 四. json模块(重点!) 五. configpaser模块 一. 序列化概述1. 序列化: 将字典,列表等内容转换成一 ...
- Docker的数据管理(volume/bind mount/tmpfs)
Docker提供了三种不同的方式用于将宿主的数据挂载到容器中:volumes,bind mounts,tmpfs volumes.当你不知道该选择哪种方式时,记住,volumes总是正确的选择. vo ...
- maria 忘记密码
1.找到mariadb配置文件命令:find / -name my.cnf 备注:一般是在 /etc/my.cnf 2.修改配置文件 在MariaDB配置文件/etc/my.cnf的[mysqld]配 ...
- androidstudio出包问题--Warning: there were 1 unresolved references to classes or interfaces.
问题:存在unresolved的类或接口导致打包失败 Warning: there were 1 unresolved references to classes or interfaces. You ...
- BiGAN的复现
数据集是10000个样本,前8000个训练集,后面的用来测试.每个样本是1*144(重构成12*12的矩阵),将原始BiGAN有编码器.判别器和生成器,将里面的全连接层全部替换成了卷积. from _ ...