前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >“用Go做Web开发不爽,但还这么多人用”的原因分析

“用Go做Web开发不爽,但还这么多人用”的原因分析

作者头像
KevinYan
发布2023-08-21 15:50:03
8240
发布2023-08-21 15:50:03
举报
文章被收录于专栏:网管叨bi叨

缘起

最近在知乎上看到了下面这个问题,说用Go写Web或者叫写业务系统不爽。但为啥还这么多人用。

img

这位网友只说对了一半,因为不管用什么编程语言写业务都不爽,不如当产品经理出需求爽。刚开始觉得好好的项目让产品经理给你出几轮需求、要是再加上工期紧、同事代码规范不好,过不了俩月...结果大家就都能想到了。

说回“用Go做Web开发不爽,但是还这么多人用这件事本身”,存在即合理,为什么觉得写Go代码不爽?为什么它又能流行起来?可能是由下面这些因素造成的。

语法简陋但有利于控制预算

现在版本的Go的语法糖仍然不多,也就是说甭管你是精通rust的花式体操大佬,还是精通Java的设计模式狂热爱好者,又或是一个文件写五千行的梭哈大师,用Go写出来的代码没啥大的区别,技术再牛逼,语言层面不让你玩大的花样,连代码格式在编译的时候都给你规定好,实际做过项目的都懂,这是有利于多人协作下的工程化的。

因为做项目不是让你炫技,稳定傻瓜易维护才是最终目的。另外Go在web当中还没有出现Java里Spring这种航空母舰般的Web框架,这样带来的好处是学习成本低,培养人的成本也低,当然了,换人的成本也低,不过这点我感觉有点牵强,如果是Java程序员,因为教程、规范、社区太过完整,相当于市场就能帮你培养出像一个模子里出来的工程师来,换人的成本也低。

Go另外的一个优点是资源占用率低,这一点应该是公司老板喜欢,相信在现在的市场环境下,不少技术负责人每个季度的OKR一定是有减少服务器预算这项KPI的。如果公司大规模使用微服务配合k8s,那么使用Go在资源占用上,尤其是内存占用上降低的数量是肉眼可见的。

Go 也在倒逼其他语言进步

另外说到Web开发就不能不提Java,Java这边如果用Springcloud,就是页面显示个hello world在不修改默认gc情况下,内存占用也得小一个G,另外还有时不时被人提起的java中直接使用多线程,线程切换消耗资源大,需要用线程池,或者使用netty等框架解决,针对这些问题,java社区也在不断改进,19的虚拟线程,还有新的框架Quarkus,spring航母新的型号spring native,新的虚拟机GraalVM等,这些其实都是因为受到Go的刺激进而衍生出来的东西,毕竟有竞争才有成长。

另外Java为啥到现在还活着,而且看起来活的还不错,除了历史项目原因,大数据普遍使用Java以外,其中还有个原因就是目前的go真的不适合大型单体web应用,还有就是一些复杂的业务逻辑用Go写就是比用其他语言写起来啰嗦。

单体大应用Go的优势不明显

Go做云原生或者微服务非常好,但是你要是弄个非常复杂的单体web应用还用Go,那酸爽体验绝对起飞。这里边原因也不展开说了,懂的都懂,另外有不少中小公司其实是单体式微服务。研发人员较多的公司,一般内部竞争为了能吹水卖更多的钱,或者是提高技术身价,不管这项目多大,能用多久,有多少用户用,就为了微服务而微服务,空降了成本却没有带来战略或者战术收益,这种的切换Go并不能得到收益。

但是,小公司往往更重视成本,最好是一个人的钱干两个人的活,一台服务器能跑一百个服务才好,所以也有些小公司在尝试用Go,但是往往又被人力成本,或者社区的基础设施打击进而转Java,PHP,Python,毕竟大厂就那么几家,全国范围内九成以上的公司,没有能力自研一套完整的微服务设施,五成到六成左右的公司,不具备对核心中间件大规模二开的能力,而且大部分中小型公司目的都是接项目做完了卖钱,而不是为了研发中间件。

总结

总而言之,Go在Web,尤其是云原生方向肯定会逐步增长,但是感觉在十年内,Web开发用到的语言还是会呈现多驾马车齐头并进的趋势,不会出现只有a,没有bcd的情况。一个技术能给自己公司降低成本就一定会被尝试,反之就不会。

- END -

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-07-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 网管叨bi叨 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 缘起
  • 语法简陋但有利于控制预算
  • Go 也在倒逼其他语言进步
  • 单体大应用Go的优势不明显
  • 总结
相关产品与服务
消息队列 TDMQ
消息队列 TDMQ (Tencent Distributed Message Queue)是腾讯基于 Apache Pulsar 自研的一个云原生消息中间件系列,其中包含兼容Pulsar、RabbitMQ、RocketMQ 等协议的消息队列子产品,得益于其底层计算与存储分离的架构,TDMQ 具备良好的弹性伸缩以及故障恢复能力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档