Listening to the Words

技术改变什么?

在一个知名的PHP论坛上一个博主发表了一篇文章,大意是建议phpers不要花费时间在swoole这样的技术上,他认为Java或者Go都是更好的替代方案,文章里引用了乔布斯的语录:

你的时间有限,不要把它浪费在他人的生活里。
Your time is limited so don’t waste it living someone else’ life

我无意花费时间参加这个话题的讨论,但还是引发了我的思考,当我们在讨论编程语言时我们在讨论什么?

PHP已存在近30年,作为一种编程语言它足够古老同时也经历了足够多技术更迭的考验。

近十年来,编程领域发生了巨大的变化,这一切的根源都基于编程理念的不断更新。如今技术的核心领域逐渐由Web转到移动互联网,许多具备异步和高并发特性的编程语言逐渐成为了主流,譬如Java还有后来异军突起的Go。而像PHP,Ruby这样的脚本语言逐渐的边缘化。

越来越多的人(主要是PHPer)更加倾向认为PHP正在没落,是时候转向新的语言来保持竞争力,我相信这是大多数人的选择。

但也有一部分人演化出了清晰的问题意识:

1. 为什么PHP不行?
2. PHP哪里不行?
3. 事件循环是什么?
4. 同步I/O 异步 I/O是什么?
5. 进程,线程,协程如何工作的?
6. 类unix系统底层如果调度的?
7. 如何实现同步书写异步调度?

七个清晰的问题意识,一步一步形而上学似的追问,进而使得PHP非阻塞编程技术的细分成为了可能,swoole就诞生在这样的背景下。

不断追问几乎是任何一种新技术产生的思想范式,没有任何人不是基于前人的问题意识,进而将一种技术向前推动一点点。

程序员思考问题通常是站在技术的角度,很多人都承认自己编程动力是渴望改变世界或者说让世界改变一点。我不得不站在另外一个角度上去说:先去尝试改变一下产品经理的无理需求吧

基于swoole的讨论我想用马克思韦伯的思考框架阐述一种编程思考范式: 技术水平 + 成本考量 + 价值观念

技术水平

同swoole通讯引擎解决方案相似的语言中,Node.js,Golang,Java程序员的水平都如何? 无疑无论是人才的数量还是社区的繁荣度来说Java都是最好,而Node和Golang的人员技术储备相对来说只有一线城市才可以说不错,这种感觉就像是你通过网络感觉任何人都是月薪过万,而看到真实的数字后发现这是统计学的陷阱。

成本考量

这是程序员最容易忽视的角度。
成本:时间成本和薪资成本,时间成本又包括: 开发迭代周期和开发效率,而薪资成本就是雇佣一个程序员的支付薪资多少
这样比较下来发现没有哪个生态圈子是完美的,任何公司都是精打细算运行的,资源永远是有限的甚至是稀缺的。

价值观念

马克思韦伯把观念分成两种一个是工具理性另一种是价值理性,而我们所谈论的编程都属于工具理性的层面,就像是人们使用工具一样。而价值理性层面通常是说群里通常拥有什么样的观念意识,看待问题的角度和方法论等等。
很遗憾中文圈很多年来都是在工具层面上不断争论哪个更好,哪个更先进,很少有人有能力从价值层面去探讨设计理念。

比如很多人都大谈特谈微服务,其实他们谈论的是微服务如何落地(生产)以及解决的是哪些问题,他们没有谈微服务理念的来源以及它背后有着怎样的思想史演进。基于这样的事实也就证明了我们中的大多数人都是编程领域中的小工。

基于技术的讨论甚至争论还会继续下去,我的结论是基于单向线的思考和讨论是无意义的。所谓的讨论和批评最后都是批评自己,认识自己,从而自我完成那么一点点的改进。

其实,那位博主引用的乔布斯语录并不适合那个话题,每个人都有自由意志,浪费时间在自己喜爱的事情是他的的权利,当然后果也是他自己承担。

点赞