怎么都在黑PHP?

前几天一篇帖子很火,大意是程序员之间有哪些微妙的关系。比如程序员最忌讳什么,最喜欢为什么撕逼等等。文中有些名词较专业,不理解需自行谷歌。

用函数式编程的工程师鄙视老是把设计模式挂在嘴边的工程师,老是把设计模式挂在嘴边的工程师鄙视会说”你这样写就不OO了啊”的工程师,会说”你这样写就不OO 了啊”的工程师鄙视会说”什么封装调用,不就是把重复的code写成一个function就好了吗?”的工程师,会说”什么封装调用,不就是把重复的code写成一个function就好了吗?”的工程师鄙视把同一段code到处复制粘贴上的工程师,把同一段code到处复制粘贴的工程师鄙视PM。

写静态语言的工程师鄙视写动态语言的工程师。写组合语言的工程师鄙视写C语言的工程师,C语言工程师鄙视C++工程师,C++工程师鄙视 Java 和 C# 工程师,Java 工程师和 C# 工程师则互相鄙视,而 C# 工程师又鄙视 Visual Basic 工程师和会把 C# 念成「C 井」的工程师,会把 C# 念成「C 井」的工程师则鄙视认为HTML是一种程式语言的设计师。

用Python 3的工程师鄙视还在用 Python 2 的工程师,用 Python 2 的工程师鄙视遇到 UnicodeEncodeError 的工程师。写 iOS 的工程师鄙视写 Android 的工程师,写 Android 的工程师鄙视写 Windows Phone 的工程师。有 Swift 一年经验的工程师鄙视有 Objective-C 五年经验的工程师,写 Objective-C 的工程师鄙视用 PhoneGap 包装成 native app 的工程师。用 React.js 的工程师鄙视用 AngularJS 的工程师,用 AngularJS 的工程师鄙视用 jQuery 的工程师,用 jQuery 的工程师鄙视用 Vanilla JavaScript 的工程师,用 Vanilla JavaScript 的工程师鄙视 IE 的使用者。会用 debugger 的工程师鄙视用 assert 的工程师,用 assert 的工程师鄙视只会 print() 的工程师;用 console.log() 来 debug 的工程师鄙视用 alert() 来 debug 的工程师。写 Ruby on Rails 的工程师鄙视所有使用其他语言的工程师。

所有的工程师都鄙视PHP工程师。

不知道为什么平时温文尔雅,与世无争的程序员一遇到编程语言的讨论,都会异常“活跃”。比如前段时间两个程序员因为争论谁是C语言专家在github上约架的事情……又比如这个笑话“某女:你能让这个论坛的人都吵起来,我就跟你约会. 程序猿:PHP是最好的语言! 某论坛炸锅了,各种吵架… 某女:服了你了,我们走吧 程序猿:今天不行,我一定要说服他们,PHP必须是最好的语言”。其实程序员的世界也很难懂。

PHP为什么会被鄙视?有很多方面的原因,比如入门太简单,导致大量垃圾代码和垃圾网站充斥互联网,比如不够规范(面向对象支持的不好而已,何必这样),比如很多历史遗留问题(PHP彩蛋这种)。不过大多数鄙视PHP的人其实都是不怎么用PHP或者跟风的人。PHP是不是很low的一门语言呢?我简单说说使用4年PHP的感受。

PS:高中的时候学的是VB,在大学修的计算机专业,算是科班出生。使用过汇编,然后是C语言,之后是C++,再然后是Java,C#(平均半年入门一种,然后做个课程设计)。实习的时候做了半年的Delphi开发,大学期间因为玩WordPress,所以自学了PHP。工作后也一直在用PHP,偶尔用Python。其实算一下,主流的语言我基本都撸过一遍……编译性语言,非编译性语言,面向过程编程,面向对象编程,C系列,Pascal系列。

从语法上评论优劣的话,我还是喜欢C系列的语言。虽然用大括号来限定“域”很多余,但Python让人切换的时候感觉别扭,可能是习惯了一个东西,突然没了不自在,特别是从Python切换到PHP或者C++的时候。但从PHP切换到C++或者Java还是很顺的。另外很多人吐槽PHP的“$”符号,我有时候从C++或者JS切换回PHP的时候也会不适应…所以$符号确实不那么优美。$符号让PHP的变量不需要申明(需要初始化),同样作为弱类型语言JS的变量需要先用var申明,这两种做法我更偏向于用JS这种,因为先申明再使用能减少很多不必要的问题(比如由于程序员不仔细导致bug),也是很好的编程习惯。所以PHP的$符号的确不优美,除此之外他的语法还是挺不错的,虽然不是特别优美……我使用过的语言里面觉得最痛快,语法最优美的当属C#,不过虽然C#长的好但不也一样被喷!其实大家在意的只是找个点来喷,与语言的丑与美关系不大。

从语言性能上评价,先说语言运行的性能对项目的影响,如果你是做驱动开发,游戏引擎卡发,GUI开发,选择语言就得慎重,这些与语言性能的关系很大。但是如果你只是做WEB开发,你跟我讲语言性能我就只能喷你了。现在喷PHP性能的人已经很少,主要是小白变少了。我们可以拿JSP与ASP来和PHP说事。WEB开发的主要性能瓶颈是IO操作上,比如数据库读写……所以你看服务器的CPU很少跑到50%的,基本在15%下运行,而内存则是怎么多都不够。所以,解析PHP与解析JSP对CPU来说基本一样。数据库优化好,缓存做好,哪个都能撑起一片天空。