go 语言提高 web 生产力

发布于 2021-11-26 14:58:30
试了下 go 语言

- 开发代码简洁
- 编译部署简单
- 心智负担较轻

慢慢写一写工具,深入下
第 1 条附言  ·  11 小时 58 分钟前

Rob Pike谈Google Go

Go是系统级语言还是应用级语言?

我们是把他设计为一种系统级语言,因为我们在Google所做的工作是系统级的,对吧?Web服务器和数据库系统、以及存储系统等,这些都是系统。但不是操作系统,我不知道Go是否能成为一个好的操作系统语言,但是也不能说它不会成为这样的语言。有趣的是由于我们设计语言时所采用的方法,Go最终成为了一个非常好的通用语言,这有点出乎我们意料。我想大多数用户并没有实际从系统观点来考虑过它,尽管很多人做过一点Web服务器或类似东西。

Go用来做很多应用类的东西也非常不错,它将会有更好的函数库,越来越多的工具以及一些Go更有用的东西,Go是一个非常好的通用语言,它是我用过的最高产的语言。

Questioner
zwnozhuce
Viewed
0
69 个回答
Bazingal  45 2021-11-26 15:08:44
跟 java 比代码简洁,跟 rust 比编译速度,跟 c++比心智负担
sagaxu  3 2021-11-26 15:11:22
if err 和 json 加字段别名,可比 Java 啰嗦多了
whwlsfb 2021-11-26 15:11:59
@Bazingal 哈哈哈,哥们一语道破
wdwwtzy  4 2021-11-26 15:12:42
别闹,go 真的不能提高生产力,尤其是业务系统的生产力
hidemyself 2021-11-26 15:15:12
go 能提高 web 生产了 😅
VANHOR  2 2021-11-26 15:16:26
公司之前是 PHP ,现在切到 Go 了,写业务代码,真不觉得 Go 有什么生产力。
Numbcoder  1 2021-11-26 15:18:30
go 写一些网络组件工具挺好,用来写 web/业务系统怕不是脑子进水了吧,还生产力。。
ikas  2 2021-11-26 15:19:04
b 格有了,kpi 长了,领导升了,项目烂了
ob 2021-11-26 15:22:52
借楼求个开源目录结构合理的 web 项目,参考下别人的优秀代码,现在的代码,都让我怀疑 go 到底哪里高效好用了。
felixcode 2021-11-26 15:27:18
年纪轻轻不去论资排辈,动不动还生产力,你把 Java 往哪放?退休前还有这么多年怎么办?
macscsbf 2021-11-26 15:27:36
尬吹?
v2orz 2021-11-26 15:27:52
跟楼上一样
DeWjjj  3 2021-11-26 15:28:11
@ob go 的高效在于写微服务的时候一键打包,多服务器部署简易。
Ayanokouji 2021-11-26 15:29:06
为啥没人提 kotlin (服务端)
aababc 2021-11-26 15:29:27
@Bazingal 看破不说破
rm0gang0rf 2021-11-26 15:31:31
跟 php 比啥?
tt67wq 2021-11-26 15:35:26
开发代码简洁?????
conkke 2021-11-26 15:37:01
不如 php 一根毛(狗头)
INCerry  8 2021-11-26 15:40:53
C# 路过~
Leviathann 2021-11-26 15:41:58
@Ayanokouji
我们在用,总体而言比较舒适,
但和 spring 结合还是稍微有一点小坑,比如 springboot 必须要 2.4+才支持 dataclass 的 rowmapper ,在需要用到的地方需要手写一下从 resultSet 构造 dataclass 的 lambda
然后 spring data jpa 的 entity 所有字段都要为 var ,因为底层也是用空构造器构造然后一个一个 set
zhujq 2021-11-26 15:46:39
web 生产力?我大 spring 不同意
xz410236056 2021-11-26 15:47:44
@sagaxu #2 这不都 IDE 自动生成的吗。。。
Ayanokouji 2021-11-26 16:13:44
@Leviathann Ktorm 了解一下?
Leviathann 2021-11-26 16:17:07
@Ayanokouji 了解过 但是技术选型不是我做主。。
123jiayue 2021-11-26 16:18:09
喂你们最近是要黑 go 吗 怎么这么多这种😄
Ayanokouji 2021-11-26 16:19:19
@Leviathann 哈哈,我感觉 jpa 很不舒服
xsen  4 2021-11-26 16:36:29
@Numbcoder 我倒觉得动不动说人脑子进水的人脑子进水了

我就是不明白,所谓的业务代码是都是指什么?不就是 curd 、还有业务逻辑么?难不成还有那些高深的业务代码
xsen  2 2021-11-26 16:41:13
不过只能说 go 或者真的戳到某些人的痛点
像我们这边的,毕业 1-2 年的原先做 c++/java 或前端的同事,拿本书 1-2 周过一下,就可以用 go 写业务代码

我是真的很想知道,楼上诸位说的业务代码,都是些什么业务代码?
不就是数据库表 model crud 、api 设计实现;业务处理逻辑;第三方系统对接?

难不成还有别的什么不成
lyhapple 2021-11-26 16:47:02
就算是用 go 写 CRUD, 我也觉得比用 java 写的爽.适合自己的,就是最好的 :)
cmdOptionKana  1 2021-11-26 16:53:51
我非常喜欢 Go ,但我只用来写小项目。

小项目,Go 的优势比较明显,但是大项目就没办法吹得太狠了,实事求是才能避免无谓的争论。

比如代码简洁:小项目 Go 可以几个 struct 加几个函数直接开干,不用像 Java 那样考虑层层抽象。但项目大了还是需要层层抽象,需求经过几轮疯狂添加之后代码也很难说有多简洁了。

又比如编译部署,小项目直接扔一个二进制可执行文件出去就行,当然方便。但是大项目的基础设施都搭建好了,一切都自动化滚动更新,此时 Go 的优势又不明显了。
matrix1010  2 2021-11-26 17:00:34
Go 写个能用的东西很快。甚至得益于 goroutine 的强大性能,写个能支持高并发的东西也挺快。但是要想写一个对开发者友好,具有一定通用性,方便扩展,易于维护的东西,就需要比较高的设计能力与品味了,而且很多时候必须要依赖代码生成,又进一步提高了门槛。另外个人感觉 Go 写测试的难度也比其他语言大些,国内用 Go 的公司写单元测试的比例估计很低
nicebird 2021-11-26 17:28:40
@Bazingal 感觉没问题啊,优点很多
zhady009 2021-11-26 17:33:59
用 go 写 erp (狗头
lbp0200  2 2021-11-26 17:46:54
在线人数小于 100 ,建议 PHP
在线人数小于 1000 ,建议 Java
最后考虑 go ,避免以下尴尬,一顿操作猛如虎,在线人数二十五
mason961125 2021-11-26 17:48:42
@matrix1010
> 另外个人感觉 Go 写测试的难度也比其他语言大些

求解释
balabalaguguji  1 2021-11-26 17:50:33
你看下 go 跟 mongodb 的交互代码说不定就要放弃了,我就是
matrix1010 2021-11-26 18:14:23
@mason961125 从我的角度来看对比 Python/Ruby 肯定难写很多,很多时候非常难 mock 。举个例子 goroutine, 别人的代码里有一部分逻辑是 goroutine 完成的,而你的测试在 goroutine 没完成之前就结束了,线上这个东西没问题,但你的测试结果就是不对。而且测试轮子不多,比如类似 factoryboy/factorybot 的轮子就没看到让我满意的。
liprais  1 2021-11-26 18:16:29
- 心智负担较轻
这是认真的么.....范型和异常都没有这负担还不重?
wanguorui123  1 2021-11-26 18:28:19
CSharp 写 Web 最爽
joesonw 2021-11-26 18:38:51
@sagaxu json 字段别名, java 不也是得加吗? 不加 json tag 也是可以的, 默认都是 camelCase
jin7 2021-11-26 18:47:27
go 语言有啥好的 库肯定没 java 丰富
beneo  1 2021-11-26 18:51:31
库都是 github 的,我第一感觉就是会不会不稳定
jaywhen 2021-11-26 18:54:30
第 n 届 v 站不定周期性语言大战开始!🍉
cmdOptionKana 2021-11-26 19:00:54
@liprais 你可能不知道心智负担的意思,没有泛型和异常只能说体力上更累,但心智负担确实是减轻了。

大多数情况下,越是抽象,心智负担越高,越是 verbose 则心智负担越低。
iamv2er 2021-11-26 19:06:36
日常 因为语言吵闹 好无聊 真的
huigeer 2021-11-26 20:10:16
目前入坑,感觉实现一个 web api 框架好 easy 。看起来好透明,😋。真到实际业务的各种封装,还没体会到。
sagaxu 2021-11-26 20:20:23
@joesonw go 的导出成员首字母要大写,跟大多数公司的 API 规范不一样,只能挨个字段备注别名。Java 没有首字母大写的习惯,且可以在 class 级别或者 json 库全局级别设置不同的命名规则,大部分情况下不需要挨个字段指定。
akyle 2021-11-26 20:54:52
没必要,要开发效率就选 Java ,而且还可以本地化。
cutchop 2021-11-26 20:55:29
node 天下无敌
wonderfulcxm 2021-11-26 21:02:51
试过一段时间,简陋的语言,要啥没啥,写起来好累。
ClericPy 2021-11-26 21:14:16
all-in golang 的国内公司也不少了, 他们选择的理由够直白的了, 比如说
solos 2021-11-26 22:30:03
go 堪称完美
yxx1993 2021-11-26 23:10:22
go 在 web 方面比 php 性能好,但是在 web 方面还是没有 laravel 这种专业 web 框架有生产力。个人见解
windseekerjack 2021-11-27 02:46:16
@zhady009 之前公司还真写过,并没有什么问题,不是很懂有什么方面的业务对特定编程语言有难度
lookcos 2021-11-27 10:20:10
@lbp0200 网站可以没有那么多访问人数,但一定要有百万级并发的架构。/doge
heytap 2021-11-27 10:23:51
用 go 写业务代码真滴痛苦
mmdsun  1 2021-11-27 11:14:15
go 写复杂的业务逻辑不如 Java ,生态差,也就是云原生和运维的优势。很多框架都是造 Java 重复的轮子

那这样的话还不如用 C sharp 写,有 Java 优写业务点,云原生支持好。全球范围看 asp.net core 的 web 框架比 sping 都多。
micean 2021-11-27 11:42:47
为什么一定要用 oo 思想写 java 然后怪 java 太繁琐???
ericgui 2021-11-27 12:44:30
@wanguorui123 据说是的
seakingii  1 2021-11-27 13:29:43
别炒了,做业务用 C#,JAVA 最合适
hutoer  1 2021-11-27 14:20:10
- 开发代码简洁?其实远不如动态语言
- 编译部署简单?编译不挂代理试试,死的心都有。现在大多是 docker 了吧,一个命令的事情
- 心智负担较轻?不一定
KevinBlandy 2021-11-27 17:39:17
errlang 。
undefine2020 2021-11-27 20:17:00
事实上大部分 web 业务都不是大流量高并发的,上 php 足以。
JasonFlink 2021-11-28 00:30:56
感觉它就是为了更快出货而存在
xiaotianhu 2021-11-28 15:57:14
这贴我渐渐品出当年 PHP 的味道了啊

以后就是 "Go 是最好的语言",然后两边互喷了吧?
fengjianxinghun 2021-11-28 19:33:43
@hutoer docker 也得挂代理,装个什么包先要改源。。。麻烦程度一点不少。
yin1999 2021-11-29 07:08:44
@beneo 如果有人已通过 goproxy 拉取了某一版本的 package ,除非作者向 goproxy 提出删除 package 的要求,否则这个版本的 package 会一直被缓存在 goproxy 中(即使作者删除 GitHub 仓库),也就是说:这个版本的 package 会一直可用。
jjshare123 2021-11-29 10:11:39
我可能有点怀疑您有没有写过业务
go 在 web 业务上根本谈不上生产力,甚至说是拖后腿的那个
NBY 2021-11-29 14:40:40
说得好!我用 python