阅读更多
惠新宸@Laruence,是国内最有影响力的PHP技术专家,PHP开发组核心成员,PECL开发者,Zend公司外聘顾问。他曾供职于雅虎,百度,现在新浪微博任平台及数据部总架构师兼首席PHP顾问。惠新宸 是PHP NG核心开发者,PHP5.4,5.5的主要开发者。作为PECL开发者贡献了Yaf ,Yar以及Yac、Taint等多个优秀开源作品,同时也是APC,Opcache,Msgpack等项目的维护者。

从一个在网上搜PHP教程的初学者,到PHP开发组核心成员,惠新宸觉得整个过程就像“打怪升级”。和Java一样也被称为蓝领语言的PHP,在他看来恰恰是能够培养更多编程者的摇篮,而人人都能编程的时代,势必会产生更多能够推动技术进步的牛人。他在博客风雪之隅上分享关于PHP语言和Zend引擎相关的研究、技术、新闻。左手代码,右手诗。



问:你是如何开始对编程感兴趣的?

我第一次进行“编程”好像还是在小霸王学习机上。后来大学学的是计算机,研究生的时候负责学校校园化建设,主动或者被动地做了很多Web开发工作,包括当时学校很多二级部门的网站,校园BBS的维护等。 想想好像也没有那么一件事,或者一个契机说我就喜欢上编程了。就感觉很自然地就做了这个行业,也没有觉得不喜欢,就这么做下来了。

问:你是如何喜欢上PHP的?你又是如何成为PHP开发组核心成员的?

当时在研究生的时候要做一个网站,完全不会的情况下就去网上搜,刚好搜到一个PHP的教程,教怎么做一个简单的网站,于是试着照着做了一下,发现无论从安装、部署(当时还没有那种集中化部署工具,不过也有很多教程教怎么部署LAMP)、编写代码,测试都很方便,语法还和C语言很像,甚至很多API的名字也和libc API的一样。于是就这样开始了和PHP的不解之缘。

应该是在2011年吧,那个时候为百度开发了Ap(Yaf的前身项目),当时在百度内部用的还不错,于是我想着要贡献到PECL上去,修改了一些以后,改名为Yaf(Yet another framework,这个名字也是有点自嘲的意思,因为PHP的框架非常多),就发邮件到PHP的邮件组,因为英语比较烂,所以过程还是比较曲折,好在当时Pierre Joye帮助我了很多,让Yaf进入了PECL。

另外在提交Yaf之前我其实一直都在研究PHP的源代码,所以也提交了不少Bug和Fix,比如我记得有一天中午,Rasmus(PHP之父)在IRC上说发现一个Bug,我差不多5分钟后就给出了Fix。

等慢慢的和一些人熟悉,得到了大家的信任以后,我就发起申请,之后就获得了PHP核心代码的提交权限,参与到PHP的直接开发和Bug修复中,成为了开发组的一员。

至于说核心么,那是慢慢积累来的,其实也是一个互信的过程。如果你的工作大家认可,那么就会尊重你的意见。我慢慢地和Dmitry Stogov变的熟了起来,得到了Zend核心部分的提交权限,提交了很多核心Bug的修复和新特性,再后来成为了Zend外聘顾问,慢慢成为了Core Developer。

听起来好像有点打怪升级的感觉吧。

问:你是在什么样的契机下开发了Yaf?当时百度是如何支持Yaf开发的?

在Yaf之前,关于使用不使用框架其实一直有一个经典的争论就是:“使用框架会降低性能,而不使用框架会降低开发效率。”

当时百度内部的框架很多,包括开源的Yii,ZF之类的,也包括有的团队自己写的。这样有一个问题就是类库,一些周边设施没有办法互通。

还有一个原因就是,很多框架作者把框架发布出去以后,会发现不同的人会对框架做各种修改,导致时间久了,一个框架发出去,就变成了各种变种,后续统一升级也变得不可能。

所以,我决定要用PHP扩展实现一个框架来解决这些问题,当然在写这个扩展之前其实也不是很有信心,不知道采用扩展能带来多大的性能提升。好在最后的结果是很好的。

问:为什么选择用C语言来写Yaf?

PHP是C语言写的,所以他的扩展也是采用C语言来写的,于是就选择了C语言来写Yaf。

问:为什么会离开百度,来到新浪微博?

这个其实原因很多,比如当时在百度是T7了,业务上的事情参与得少了,感觉自己好像没有那么多事情要做,有点虚度的感觉。

另外,我当时在百度的商业搜索部,并不直接接触访问量大的系统,所以也希望找个大的平台再锻炼下,而微博刚好就是这样一个平台。

来了微博以后,确实接触到了很多之前没有遇到过的挑战,也感觉自己的知识有了更大的舞台可以发挥。

问:你现在在新浪微博具体负责的工作是什么?

我现在在微博技术部,带着一个基础服务小组,我们主要的工作也分阶段,前两年的主要工作就是做微博LAMP的性能优化,包括各种基础框架,工具研发,环境优化,规范制定等等。

这两年,微博的LAMP架构已经趋于稳定,整体性能也有几倍的提升。我们也有了一套自己的高性能LAMP整体解决方案。所以LAMP优化的工作少了一些。现在主要精力都放在基础设施的研发上,比如缓存中间层,转码服务,通信平台等等。

问:PHP7(PHPNG)有没有把新浪微博平台使用PHP的需求和痛点当做重要的反馈?

这个当然是有的,自从我加入开发组以来,和不少的其他成员有过类似的争论就是:我认为性能很重要,而有人会认为新特性很重要,那么当一个新特性影响性能的时候我们就会发生争执。

我很偏执于性能提升,这也是为什么我后来和Dmitry Stogov合作比较多的原因,因为他也特别关心性能。

而我关心性能的主要原因就是,对于每1%的性能提升能给微博这样的国内最大的LNMP平台带来的价值我有很真实的体会。目前我们微博的整体性能虽然相比两年前有了很大的提升,但是我认识到在不影响开发效率的情况下,进一步的提升只能依赖于语言、环境的性能提升。所以这部分也就是微博对PHP的需求。

PHP7在Wordpress上相比于5.6,有100%以上的真实性能提升(QPS),我相信明年,等PHP7发布以后,我们微博的整体LAMP平台的各项业务也可以得到100%的性能提升。

问:你参与PHP7(PHPNG)开发的流程是什么样的?你是如何和其他开发组成员合作的?

PHPNG当时是一个秘密的项目,最初的参与者只有Dmitry和我,我还记得是今年开春的时候,当时我们做的基于PHP5的JIT项目因为效果不理想所以搁置了,大家都比较郁闷。

Dmitry说他有个想法,把ZVAL重新设计下,压缩一下大小来减少内存占用。然后我们俩个人讨论了一下,因为其实我们每天都会有各种想法,所以当时也只是觉得:嗯,这个想法也许能Work。但还不是很有信心。

当时的主要想法是赶紧做出一个能运行的原型来测试下效果。这个过程中我们主要是讨论想法,然后各自实现要做的部分,再合并。

合作的主要工具还是靠Skype,不过因为他在圣彼得堡,和我们有时差,所以也会借助于邮件交流,通过Github来Review代码。

等到后来项目差不多有了结论,我们发现,“嘿,这个主意不错,起作用了”。然后就公开了。之后就变成了正常的大家协作模式,有想法就提交RPC,提交Patch,投票,大家Reivew,然后合并。

问:PHP7到目前为止已经增加或减少了哪些特性?在发布之前,还将如何提升性能?

有很多,除了PHPNG这个分支主要提供性能提升以外,我们还有AST(抽象语法树)的支持,Uniform Variable syntax,64bits length string supports,一些新的语法糖,以及最近的Native TLS等。

PHP7将在2015年10月正式发布, 在这之前,我们还有一些想法要尝试,比如使用zend_array直接替代Hashtable;比如通过指定函数重新分节,排序来减少iTLB miss;比如把JIT的一部分优化手段(类型推倒)引入到PHP中,配合一些类型专有的OPCodeHandler来提速;再比如进一步提高代码数据局部性减少Cache miss等等。

当然,我们还有一个并行在做的JIT项目,只不过我很担心这个项目能不能在PHP7发布的时候准备就绪。

问:PHP的新版本将跨过PHP6直接升级为PHP7吗?为什么?

这个主要的原因是,当年PHP有过一个开发版本叫做PHP6,但后来这个版本失败了,没有发布。所以,这次的版本也就应该是PHP7了。

问:Facebook发布的语言Hack和PHP是什么关系?Hack的目的是要取代PHP吗?这两种语言相比各自有什么优势?

没什么太大的关系,Hack is not PHP。要说取代的话,我相信他们(Facebook)可能会有这样的想法吧,不过这个要看社区接受不接受了。

对于Hack我不是特别熟悉,不好具体评价。

问:有人认为由于PHP易于学习,门槛低,所以导致一些并不适合编程的人涌了进来,你怎么看待这种观点?

这个观点我实在不敢赞同。我在本科毕业的时候,也尝试找了一些开发工作,面试了几个单位,都被拒了,也许在当时面试我的那些人眼里,我就是一个不适合编程的人吧。

但是PHP因为门槛低,让人可以很快看到自己“编程”的成果,会对新手产生一个正向反馈激励的作用,让有兴趣的人变得更有兴趣。 而编程的人越多,那么产生大牛、对整个技术进步做出贡献的人出现的概率也越大。

并且,未来的编程语言一定是朝着易用性发展,进一步降低编程的门槛,也许会有一天人人都能编程也说不定呢!

问:一名合格的PHP工程师的知识结构是怎样的?

我记得以前有一句话说:“ PHP工程师都是万金油”,其实这句话不仅仅对PHP工程师适用,应该对所有的工程师都适用。

知识结构要很广。Web开发涉及的技术点是比较多的,HTML、CSS、JS、SQL这些以外,还要懂得一些Nginx、Linux、Mysql的配置、维护、排错常用的办法,这些都应该懂一些。

问:除了技术能力之外,你在面试的时候还会注重什么?

我会特别注意思维清晰、沟通、谈吐。其实说穿了就是未来一起共事的话,会不会有障碍,以及成长潜力是否大。

问:曾经的phpe.net站长陈伯乐现在在卖男人袜。你对未来的打算是什么?会一直都是一位coder吗?

其实我是一个很懒的人,从来不会考虑得很远,今朝有酒今朝醉。所以对未来其实我也不是很清楚,我只是觉得现在我还是喜欢编程,喜欢通过自己的工作让大家受益并获得社区的赞誉,我觉得这样挺好的,我会继续做下去的。

本文转自图灵访谈
  • 大小: 58.7 KB
来自: 图灵社区
3
4
评论 共 0 条 请登录后发表评论

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • 惠新宸:我也曾经是“不适合”编程的人(图灵访谈)

    惠新宸@Laruence,是国内最有影响力的PHP技术专家,PHP开发组核心成员,PECL开发者,Zend公司外聘顾问...作为PECL开发者贡献了Yaf ,Yar以及Yac、Taint等多个优秀开源作品,同时也是APC,Opcache,Msgpack等项目的维护

  • 讨厌php机试_PHP 鸟哥:我也曾经是“不适合”编程的人

    惠新宸@Laruence,是国内最有影响力的PHP技术专家,PHP开发组核心成员,PECL开发者,Zend公司外聘...作为PECL开发者贡献了Yaf,Yar以及Yac、Taint等多个优秀开源作品,同时也是APC,Opcache,Msgpack等项目的维护者...

  • 鸟哥惠新宸:PHP 7.1 的新特性我并不是很喜欢

    作者:王练 在此我想放我喜欢的一条,原文第9条 还有种说法就是 PHP 学习起来特别简单,不利于展示个人能力,对此怎么看?...可能有些人会寄希望通过一些复杂的东西来体现自己的优越感,这其实也没什么问题。只...

  • 我也曾经是“不适合”编程的人

    网名:雪候鸟,大家尊称鸟哥,惠新宸 @Laruence, 是国内最有影响力的 PHP 技术专家,PHP 开发组核心成员,PECL 开发者,Zend 公司外聘顾问。他曾供职于雅虎,百度,现在新浪微博任平台及数据部总架构师兼首席 ...

  • GitHub 中国区前 100 名到底是什么样的人?

    本文根据Github公开API,抓取了地址显示China的用户,根据粉丝关注做了一个排名,分析前一百名的用户属性,剖析这些活跃在技术社区的牛人到底是何许人也!    Github中国区前一百名城市分布,令人比较意外的是IT...

  • 北京码帝:我是千里野马,就看公司能不能驾驭我了!

    上网无意中看到了一份简历,我的小心脏被其彻底震撼到了!...只能说我孤陋寡闻了……,不过也不排除个例,毕竟敢如此写简历的人或许真的有自己的过人之处,也或许其真是一位天赋异禀,生而知之,拥有自学编程头脑的...

  • GitHub 中国区前 100 名到底是什么样的人?

    本文根据Github公开API,抓取了地址显示China的用户,根据粉丝关注做了一个排名,分析前一百名的用户属性,剖析这些活跃在技术社区的牛人到底是何许人也!

  • GitHub中国区前100名到底是什么样的人

    本文根据Github公开API,抓取了地址显示China的用户,根据粉丝关注做了一个排名,分析前一百名的用户属性,剖析这些活跃在技术社区的牛人到底是何许人也!后续会根据我的一些经验出品《技术人员如何建立自己的个人...

  • 学哪种编程语言更有“钱”赚?

    无论学哪种编程语言,都需要开发工具、配置开发环境,初学者为大家推荐今年大火的云端开发工具——华为软件开发云平台,它集成了多个开发环境,支持多种开发语言,只需要专注写代码体验即可,对于错误的代码、提供...

  • 鸟哥:程序员应该不断提升自身的不可替代性

    我觉得每个人的想法都不一样,不一定都要朝同一个方向去努力,但核心的就是要提升不可替代性。你不妨每个月问问自己,现在比上个月在哪里有成长了。 问:开发者从事这个行业是有些是因为自己的兴趣,有些是专业对口...

  • 前端传奇人物

    20位活跃在Github上的国内技术大牛 本文列举了20位在Github上...Github主页: https://github.com/lifesinger微博:@ 玉伯也叫射雕 玉伯(王保平),淘宝前端类库 KISSY、前端模块化开发框架SeaJS、前端基础类库

  • GitHub中国区前100名到底是什么样的人?

    本文根据Github公开API,抓取了地址显示China的用户,根据粉丝关注做了一个排名,分析前一百名的用户属性,剖析这些活跃在技术社区的牛人到底是何许人也!后续会根据我的一些经验出品《技术人员如何建立自己的个人...

  • 基于FPGA的四相八拍步进电机控制系统设计:集成交付、正反转、加速减速及调速功能

    内容概要:本文详细介绍了基于FPGA的四相八拍步进电机控制系统的开发过程。主要内容包括:1. 使用VHDL和Verilog编写LED显示屏驱动代码,用于显示角度、学号和姓名等信息;2. 实现步进电机的正反转控制,通过状态机管理相序变化;3. 开发加速减速控制模块,确保电机启动和停止时的平稳性;4. 设计调速功能,通过调节脉冲频率实现速度控制。此外,文中还讨论了调试过程中遇到的问题及其解决方案。 适合人群:对FPGA开发和步进电机控制感兴趣的电子工程师、嵌入式系统开发者以及相关专业的学生。 使用场景及目标:适用于需要高精度运动控制的应用场合,如工业自动化、机器人技术和精密仪器等领域。目标是帮助读者掌握FPGA控制步进电机的基本原理和技术细节。 其他说明:文中提供了详细的代码片段和调试经验分享,有助于读者更好地理解和应用所学知识。同时,作者还提到了一些实用技巧,如通过PWM调节实现多级变速,以及如何避免步进电机的共振问题。

  • Android开发:基于SQLite的日历备忘录记事本项目详解与实现

    内容概要:本文详细介绍了基于Android Studio开发的日历备忘录记事本项目,涵盖日历查看、添加备忘录、闹钟提醒和删除备忘录等功能。项目使用SQLite数据库进行数据存储,通过CalendarView、EditText、Button等控件实现用户交互,并利用AlarmManager和PendingIntent实现闹钟提醒功能。此外,项目还包括数据库的设计与管理,如创建DatabaseHelper类来管理数据库操作,确保数据的安全性和完整性。文章还探讨了一些常见的开发技巧和注意事项,如时间戳的使用、手势监听的实现等。 适用人群:适用于初学者和有一定经验的Android开发者,尤其是希望深入了解Android开发基础知识和技术细节的人群。 使用场景及目标:该项目旨在帮助开发者掌握Android开发的基本技能,包括UI设计、数据库操作、闹钟提醒机制等。通过实际项目练习,开发者能够更好地理解和应用这些技术,提升自己的开发能力。 其他说明:文中提到一些进阶任务,如用Room替换SQLite、增加分类标签、实现云端同步等,鼓励开发者进一步扩展和优化项目。同时,项目源码公开,便于学习和参考。

  • Matlab实现基于SVM-Adaboost支持向量机结合Adaboost集成学习时间序列预测的详细项目实例(含完整的程序,GUI设计和代码详解)

    内容概要:本文档详细介绍了一个基于SVM(支持向量机)和Adaboost集成学习的时间序列预测项目。该项目旨在通过结合这两种强大算法,提升时间序列预测的准确性和稳定性。文档涵盖了项目的背景、目标、挑战及其解决方案,重点介绍了模型架构、数据预处理、特征选择、SVM训练、Adaboost集成、预测与误差修正等环节。此外,文档还探讨了模型在金融市场、气象、能源需求、交通流量和医疗健康等多个领域的应用潜力,并提出了未来改进的方向,如引入深度学习、多任务学习、联邦学习等先进技术。 适合人群:具备一定机器学习基础的研究人员和工程师,特别是那些从事时间序列预测工作的专业人士。 使用场景及目标:①用于金融市场、气象、能源需求、交通流量和医疗健康等领域的复杂时间序列数据预测;②通过结合SVM和Adaboost,提升预测模型的准确性和稳定性;③处理噪声数据,降低计算复杂度,提高模型的泛化能力和实时预测能力。 其他说明:文档不仅提供了详细的理论解释,还附有完整的Matlab代码示例和GUI设计指导,帮助读者理解和实践。此外,文档还讨论了模型的部署与应用,包括系统架构设计、实时数据流处理、可视化界面、GPU加速推理等方面的技术细节。

  • #游戏之追逐奶酪123

    #游戏之追逐奶酪123

  • 威纶通触摸屏配方管理系统解析:宏程序、数据结构与UI设计

    内容概要:本文详细介绍了威纶通触摸屏配方管理系统的实现方法及其应用场景。首先,文章讲解了配方管理的基本概念和技术背景,强调了配方管理在工业自动化中的重要性。接着,通过具体的宏程序代码示例,展示了如何实现配方的保存、加载以及安全校验等功能。文中还提到配方数据结构的设计,如使用寄存器地址偏移来确保数据不冲突,并通过CSV文件格式方便地管理和维护配方数据。此外,文章深入探讨了UI设计方面的内容,包括动态图层技术和按钮交互效果的应用,使得用户界面更加友好和直观。最后,作者分享了一些实际项目中的经验和技巧,如文件操作的异常处理和宏指令调试方法。 适合人群:从事工业自动化领域的工程师和技术人员,尤其是对触摸屏配方管理系统感兴趣的读者。 使用场景及目标:适用于需要频繁切换设备参数的生产环境,如食品加工、注塑成型等行业。通过使用威纶通触摸屏配方管理系统,可以提高工作效率,减少人为错误,同时简化设备调试和维护流程。 其他说明:附带的工具包提供了完整的宏指令注释版、图库资源和调试工具,帮助用户更好地理解和应用该系统。

  • 张彩明-图形学简明教程 配书资源

    张彩明-图形学简明教程 PPT课件

  • 计算机术语.pdf

    计算机术语.pdf

Global site tag (gtag.js) - Google Analytics