1.应用场景

主要用于探讨常见的后端语言技术选型,以及分析他们之间的差异和本质。

2.学习/操作

1.文档阅读

java - PHP & Swoole 与 Java、Go 等技术选型答疑

2.整理输出

下面的对话,会穿插个人的想法,供记录,参考

来自 SwooleVIP 群内一位成员的问题

  1. 感觉Swoole越来越复杂了,虽然特性也变得更强,可惜在项目组里面根本推不动,而且协程后需要注意事项也很多,稍不注意可能就是连接忘了回收,连接错乱的风险(当然有defer之类的可以规避)
  2. PHP的,基本上都是半路出家,或者大部分培训机构的,不招他们进来吧,项目赶不完,招他们吧,都是得过且过的学习性格。
  3. 稍微高端一点的特性,几乎推不动,他们还会反问,花时间看这个,为啥不学go呢?毕竟go是官方自带
  4. 搞得我们现在新项目(国内龙头电商),基本上都用Java了,也不知道咋说。。。用PHP确实太多只会做简单crud

Rango 回答「韩天峰」

  1. Swoole4现在是越来越简单了,现在的协程比以前的异步回调好用。你应该使用社区内成熟的框架,比如 HyperfSwoftEasySwooleMixPHP。直接基于Swoole开发很容易犯错,这需要开发者具备更高的素质。而基于框架之上开发应用,无论是Swoole还是JavaGo对于使用者来说难度是一致的。「同意,结合文档,使用框架去开发,难度差不多,或者说没有很大难度,难的是,能够分析程序的各种指标,问题,并解决,甚至是优化」
  2. 大多数JavaGo的工程师其实也都是用别人写好的框架,所以简单。如果是自行写一个多线程的Java框架,类似于Spring,这很困难。「所以,不要存在语言等级的概念,郑真正的技术人员,应该是能正视各种编程语言,而且分析其优劣本质,结合不同的应用场景,做出当下最为合适的选择。」
  3. 也不只是PHP的工程师是CRUD,大部分做JavaGo的程序员也一样是在做CRUD的工作。并没有什么差别。提升对整个技术栈的理解深度、技术把控能力才是最重要的。「Key point」
  4. Swoole4 的协程 和 Go 完全一样,但是 PHP 语言更简单易用。Go是强类型静态语言,没有泛型支持,面向对象也不完整,更适合搞底层软件的开发,各种组件生态也没有PHP丰富。如果你是从事服务器端应用开发用Go效率远不如PHP。「Go刚发布了新版本,已支持泛型,面向对象是比较齐全的,只不过不是使用对象和类,PHP更加简单易用,个人同意。"各种组件生态也没有PHP丰富。如果你是从事服务器端应用开发用Go效率远不如PHP" PHP的各种组件是比较丰富的,在web领域,开发效率确实更高一筹,不过Go现在的生态呈现爆发式增长,相较于Swoole的生态要好不少」
  5. 编码、工程实践、抽象、业务理解、服务治理(包括性能、稳定性、健壮性、可用性、可扩展性)、架构设计,这些方面的能力与语言无关,编程语言对于优秀的工程师来说只是一个顺手的工具「非常同意」。掌握两个一模一样的技能,比如用 PHP、Go、Java 开发服务器后台程序的技能几乎是同质化的,实际上意义不大,浪费了时间。「不是很同意,PHP是动态弱类型,解释型语言,而Java是基于虚拟机的静态强类型,编译型语言,Go 和 Java 类似,它是一门静态的、强类型的、编译型编程语言,为并发而生,所以天生适用于并发编程(网络编程),从这些来看,是很大差异的「Java和Go差异反而更小一些,所以,可以从两种中选一个,推荐Go」,掌握不同的编程语言,会使我们的技术视野变得不同,更广,更能理解,洞悉编程语言,技术的本质」
  6. PHP是很多有优势的,可以让工程师不再花时间用在对于语言技术栈的学习上,熟练掌握PHP整个技术栈只需要2-3年即可,其他的语言虽然功能上更强大,但是需要程序员花费更多时间用在学习语言API、运行原理、各种类库和工具上。时间需要3-6年才能达到精通的水平。「不同意,PHP也需要不断学习语言API、运行原理、各种类库和工具, 也要深入底层,和向上扩展,不断学习思考。当然上面的这些,不同的语言的实现工作量不同,也就会造成要掌握这些,需要付出的时间和精力是不同的,PHP相对而言,应是少的。」
  7. PHP工程师因为精通这门技术更容易,反而可以把宝贵的时间投入到更高层面的工作上。PHP-FPM的健壮性是有目共睹的,算得上是工业级的技术。而Swoole目前也越来越成熟了,健壮性也越来越高。「目前生产中的PHP项目,基本是两者之一,或者组合」
  8. Swoole是一个帮助PHP工程师在PHP-FPMWeb编程之外功能范围的一个扩展,PHP工程师可以获得更大的操作空间。而不必花时间去重新学习一门新的编程语言技术栈,这通常需要几年时间才能完成,而学习掌握Swoole一般来说3-5个月即可,毕竟Swoole其实也是PHP技术栈范畴之内。「Swoole 3-5个月就能掌握?TBD 我想先花一周时间去评估下

关于半路出家、学历低等问题

一个工程师是否优秀,很大的程度上取决于他的技术思考深度、持续学习能力。「Agree no morely」


很多人说自己是非计算机专业、半路出家、学历不够高。我觉得这个并不是问题,以上并不妨碍你去学习与思考。

大部分人没有到拼天赋的阶段,我一直相信一万小时理论,如果你能坚持在技术上保持专注,进行大量工程实践,日积月累,大概率会成为这个领域的专家。「不相信一万小时理论的人,是否完整实践过?我想多数是没有做的,仅仅是从心里这样认为,甚至是道听途说,当然不是所有的事情,都要自己实践过才行,这是自己的选择,而最重要的是,能实现目标,实现追求的东西」


网友评论:

easySwoole java_php

看完之后,发现,其中有些网友说的很对,

多数PHP开发者并没有想走出舒适区,而是一直从事CURD的工作,借助成熟的PHP开发框架,

不论项目量大小,或者 并发高低,「通常是Ngxin + PHP-FPM 」从事业务开发,代码也能写的很溜,

轻轻松松完成开发任务,然后愉快地玩耍,一天一天,一年一年,本人就是这样,尽快也一直保持着学习,

技术广度有一些,但深度停留着表面,没有整合,融会贯通成体系「这是我一直追求的」

学习着,思考着,实践着:

技术要保持深度和广度,对比学习,剖析本质,而且要不断地向外学习,借鉴,并内化成自己的知识。重要的是要有实践成果,解决实际的问题。

技术是服务于生活,是用来解决问题的,如果解决不了问题,那么的技术的意义将无从谈起.



后续补充

...

3.问题/补充

TBD

4.参考

参见上面文档列表

后续补充

...