ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

都2022年了,还在争论编程语言?

2022-01-21 10:33:15  阅读:200  来源: 互联网

标签:争论 协程 语言 编程语言 2022 Go Java PHP


2021年最后一天,我在公众号发表了文章《Dubbo为什么用Go重写》,在各个平台的阅读量和打开率都挺高,也有各位大佬纷纷转载,在这里也顺便感谢各位大佬。

虽然自己公众号没有开通留言,但我也会去看其他平台或转载文章的评论。

我发现大家的注意力更多的是在编程语言上,比如下面这些:

image

image

image

image

image

看了这些评论想起了一个段子:

某女:你能让这个论坛的人都吵起来,我今晚就跟你走。

某软件工程师:PHP是最好的语言!

某论坛真的就炸锅了,各种吵架……

某女:服了你了,我们走吧,你想干啥都行。

某软件工程师:今天不行,我一定要说服他们,PHP必须是最好的语言…

——段子来源于网络

虽然是个段子,但我也想通了为什么这篇文章的打开率和阅读量如此之高。

文章有大段篇幅在说Java和Go语言,而编程语言之争历来都是程序员的谈资。

但这并不是我的本意,编程语言只是一个背景,可以有各种各样的理由选择一个语言,况且现实情况已是如此,所以后续的如何在Go和Java之间架起桥梁才是重点。

不过已经说到这里,也可以多扯一点,我自己是数学系毕业,所以大学也没怎么学编程语言,毕业时选了一个非常容易入门的语言,就是上面段子中的PHP。

后来大环境都是Java,所以也转了Java,一开始用Java写业务,后来做中间件,再后来跳槽来了现在的公司,也写起了Go。

如果非要评价Java和Go,我觉得Java的生态非常完备,有几乎所有互联网公司需要的解决方案,引用一篇文章里的话

我以为用Java适合做架构这事应该是常识了。

我解释一下吧:首先,小型的项目用什么语言都行,爱用什么用什么。

但是,真正的企业级架构就不一样了,其中并不仅仅只是 RESTful API 或 RPC,还有各种配套设施和控制系统。

比如:应用网关,服务发现、配置中心、健康检查、服务监控、服务治理(熔断、限流、幂等、重试、隔离、事务补偿)、Tracing监控、SOA/ESB、CQRS、EDA……

这些东西在非 Java 的技术栈体系内,很难看到全貌,Java 强大的生态环境,就是让你把注意力放到更高层次的架构和业务上来的。

另外千万不要觉得,整几个服务 RPC 一下,加个缓存,加个队列,就能叫架构,那只是系统集成罢了。

虽然这段话有些绝对,Go生态也在奋力追赶,但就目前的情况来看,确实是这样。

我也混迹在各个技术群里潜水,有一次看到一个群里在讨论Java的Spring框架,有个写Go的同学这么说:

Spring不就是个Web框架嘛

我觉得他对Java的了解太少了,Spring还真就不是一个Web框架,但我忍住了,没有反驳。

image

Go也有它的长处,比如协程调度模型、比如启动速度、内存占用等等。

你别小看协程(虽然Java也快有协程了,但离我们还有点远),它背后的显示出的是思想的转变,比如Go提倡不要通过共享内存来通信,而应该通过通信来共享内存,在Java中,基本就是通过共享内存来通信,这就导致一个问题,多线程访问共享内存必须加锁。

但Go中建议通过channel来通信,你可能会说,在Java中也有BlockQueue啊。还不一样,BlockQueue通信本质上还是对共享内容加锁,但Go的协程调度模型下,channel就可能实现无锁

我记得在我刚工作那会,遇到一位前辈,当时我还在写PHP,他建议我可以尝试转Java,我当时说,语言不过是一个工具。

现在我觉得这句话是有毛病的,语言不光是一个工具,它也凝结了一些编程思想,比如PHP的进程模型,Java的线程模型,Go的协程模型。在这些模型下,你能做的事可能就不一样。

比如我在学Go的Benchmark的时候,就觉得Java的Benchmark要比Go实现的严谨不少,不愧是工业级语言。

又比如Go的协程调度,在IO密集型下,调度效率比Java优了不少。

再比如在协程调度模型的加持下,Go的对象池性能优于Java,channel效率比Java的BlockQueue高。

总之,我们在力所能及的范围尽可能地多了解其他语言,对比他们的异同,也许对你下次的技术选型就有一些启发。

这也是我第一次写这种主观性较强的文章,在此特地求一个+在看,后面我也多扯扯淡

搜索关注微信公众号"捉虫大师",回复关键字「Nacos」送你一本《Nacos架构与原理》电子书,Dubbo资料也在准备中,不想错过可以点个关注。

' 转 https://www.cnblogs.com/zhuochongdashi/p/15829090.html

标签:争论,协程,语言,编程语言,2022,Go,Java,PHP
来源: https://www.cnblogs.com/wl-blog/p/15829266.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有