关于PHP7
“世界上最好的语言”PHP终于发布了PHP7,真是一件普天同庆的大事,从PHP5就开始跳票跳到现在,PHP6直接跳过了。相比PHP5,PHP7的性能提升非常明显,具体请看鸟哥的这篇文章让PHP7达到最高性能的几个Tips。想在生产环境上使用PHP7的话,还是建议再观望一段时间。
说个很逗的事,不知道是不是巧合,我碰到的所有程序员无论是写服务器端还是做运维,又或者前端都表明自己曾经是PHPer,所以PHP的普及率甚至可以与js匹敌。(所有WEB开发的程序员都表明自己会js),这么多的PHPer,大家对PHP的看法都相同的一致“不如**语言好”。当我编程第二年开始,就懂得了两个道理。1.不要忽略业务场景谈编程语言;2.不要把希望寄托于某个语言。
关于这两点我都解释解释:
1. 不要忽略业务场景谈编程语言
编程语言之争是一个永恒的话题,本世纪对于“哪个编程语言最好”的问题是得不到解决了。因为这种命题无法推理,命题本身还会不停的演化,不像“停机问题”还可以推导。
互联网发展太快,批量培训的程序员越来越多。这导致了程序员领域鱼龙混杂,有些(自称)有上10年工作经验的人也改不了爱“撕B”的冲动,在显示器前咬牙切齿。当然最亏祸首总是那些爱嘲讽的人“某某语言真的太牛了,不服来辩”。所以希望看到这篇文章的人不要做这种人。
在我们开始一个新项目或者重构一个项目前,需要思考下面三个问题:
稳定性;
稳定性涉及很多问题,最主要的是“了解”。比如一个问题用Golang与PHP都能解决,而且Golang比PHP性能快很多。如果你更熟悉PHP,那建议你用PHP,至少你能拿的稳,用PHP肯定不会出问题,先保证稳定性才有资格谈优化(引用自《Unix编程艺术》)。等你去优化速度的时候才发现第三方的优化方案之多,只有你想不到的,没有不存在的。
扩展性;
程序的扩展性仅次于稳定性,这点非常重要。扩展性的优先级是大于“速度优化”的(别告诉产品经理),所以这个很好权衡。大部分时候代码的扩展性只是多了次函数调用,《重构》里面有句话说“在现代的编程语言里,函数调用的开销可以忽略不计”,所以放心大胆的去设计,面向对象,设计模式都用起来,用理论来武装自己。现在的软件维护成本是远远高于开发成本的,每周一迭代。在这种高频率的更新速度下,如果扩展性没考虑好,慢慢的项目会变成“焦油坑”。你也会由开始的7点下班到9点,11点,凌晨……
预计代码存活时间;
我们在写代码的时候,很少考虑自己的代码能在生产环境跑多久,大多数人感觉当时能用就行了,3年后的事没人知道……所以请在项目开始前给自己的代码分模块定个时间。如果你的代码能活十年,你就是很牛的程序员了。比如有些架构层面的代码,肯定要用20年的标准来写。像亚马逊的客服系统,都跑了几十年了内核还是最初那两个牛人写的,就是稳定,就是快,没人敢保证换了能比它更好。一些产品经理临时想到的运营活动可以降低标准(这个时候性能高于扩展性)。
会不会被后人骂“SB”;
每个人在重构别人代码的时候都是咬牙切齿,把前面那个写代码的祖宗18代都骂一遍。既然大家都遇到过,所以请不要做这样的人了。
2.不要把希望寄托于某个语言
我们在重新开始一个项目的时候,BOSS总要求千万别像上一个项目那样。非常的卡,不流畅,稳定性又不好,总是报错(其实BOSS就觉得慢,可能用了360浏览器)。所以为了迎合BOSS,大多数人建议用速度更快的语言……比如Java,Python,Node.js,往往这个时候我的心情就会像千万只草尼玛奔腾过的大地。为什么不干脆用C,Lisp,Golang不是快的逆天?因为大家觉得C,Lisp,Golang学习成本略高。所以中和考虑下还是Node.js合适。
上面是举例的一个场景,这种事发生的太多了,就连很多大公司都逃不过这宿命。比如去哪儿,聚美优品,全线从PHP换到Java,至于为什么……我也不得而知,反正与语言无关。
很多人总认为用上一个运行快的编程语言,项目就能非常的快。这种天真的想法到处传播,其实大家心里都知道程序快不快与语言无关(特指做WEB开发),最大的因素还是程序员。一个优秀的java程序员写的代码比普通C++程序员写的代码快N倍。一个优秀的C++程序员和一个优秀的Java程序员写的代码相差无几。