说 Go 语言写不了业务逻辑的请进

2022-08-08 12:23:50 +08:00
 Hanggi

并不打算引战,单纯出于好奇。

https://github.com/gin-gonic/gin
https://github.com/beego/beego
https://github.com/labstack/echo

把前几名的 Go 语言后端框架加一起都 10 万星了。

https://github.com/spring-projects/spring-boot
https://github.com/laravel/laravel

Gin 6 万 1 ,spring-boot 6 万 2 ,laravel 7 万。
虽然不能说明一且,但至少说明很多人在用。


首先强类型语言灵活性肯定是不如脚本语言的,所以没必要争个高低,PHP 、Node.js 、Python 这类脚本语言写业务逻辑能力是最强的。

但在可维护性上,强类型语言是比脚本语言好很多,所以 Typescript 的可维护性是远胜于 Javascript 的。


回到 Go 语言,
首先要明确的是 Go 语言是一种为了最大化编译速度而牺牲语言特性的一种语言。

很多人说 Go 语言写起来痛苦,说的其实是那些理应支持的语法糖或工具函数在 Go 语言里并不提供,而需要自己去写所带来的痛苦。不提供不意味着无法实现,只是让你用最基础的语法结构去实现,换来的是更快的编译速度和非常低的阅读门槛。

对于 if err != nil 只说一句,Error 是一种值。
https://go.dev/blog/errors-are-values
(过去也有人提议加入 Try Catch ,但都被否决了)


最后,还是要看你的需求是什么,Go 语言写业务逻辑可能不是最佳选择,但确实很多人在用 Go 写业务逻辑,它的特性满足了一些人的需求,特别是在云原生领域。

说写不了的,可以把你的场景细节分享出来,
解决方案都是有的,接不接受是每个人自己的选择,但是光说 Go 语言写不了业务逻辑,又不说到底是什么场景。
谁能知道到底是 Go 语言写不了业务逻辑,还是你的编码或理解能力上有不足呢?

16977 次点击
所在节点    Go 编程语言
119 条回复
Hanggi
2022-08-08 15:50:13 +08:00
@Slurp
Go 语言的性能从来都不是他的最大亮点,因为 Go 有 GC ,性能在极端情况下是没法和 C/C++ 比的,和 Java 比一下还差不多。
wdwwtzy
2022-08-08 15:50:18 +08:00
严重同意 1 楼 2 楼和 17 楼
Hanggi
2022-08-08 15:51:35 +08:00
@singerll
对,问题就在这,
一两句话说不清楚复杂的业务逻辑,但是一两句话就可以定义一门语言写不了业务逻辑。
而事实上很多人在写。
Hanggi
2022-08-08 15:55:52 +08:00
@ChrisFreeMan
对说服别人一点兴趣都没有,
只是看到某种现象,发帖讨论一下。
dog82
2022-08-08 15:58:53 +08:00
docker 、redis 、etcd 、tidb 都是用 go 写的,区块链也是 go 的天下

但是 go 依然是很拗口的语言,特别是从 java 转过来的
singerll
2022-08-08 15:59:24 +08:00
@Hanggi “一两句话说不清楚复杂的业务逻辑,但是一两句话就可以定义一门语言写不了业务逻辑。”
你是 etc 吗
Bazingal
2022-08-08 16:01:24 +08:00
不明白云原生跟 go 写业务有什么关系,没错 k8s 和 docker 都是用 go 写的,但是这跟你用 go 写业务有什么关系,难道用 go 写有加成?别的语言照样跑在 docker 、k8s 上,生态比你好,开发速度比你快,性能比你强,扯什么云原生有什么意义。go 之所以招黑就是因为很多 go 粉太双标,自己没有的就是又不是不能用,我们不需要,自己有的就吹得好像只有自己有一样
yogogo
2022-08-08 16:13:07 +08:00
工具而已,别那么较真
allen9009
2022-08-08 16:14:34 +08:00
语言不是界限,用啥语言看场景
herozzm
2022-08-08 16:14:58 +08:00
能写,痛苦而已
keepeye
2022-08-08 16:16:19 +08:00
脚本仔永远无法理解,他们只顾自己写的爽
alteremliu
2022-08-08 16:17:09 +08:00
怎么可能不能写呢,java 已经写完了 CRUD ,你还在写 entity
AprilNovember
2022-08-08 16:18:52 +08:00
go 的魔怔人最多 真不是乱说的😅
Hanggi
2022-08-08 16:20:10 +08:00
@Bazingal
你这段话攻击性还是挺强的,本来这种话不太回的,就回一次。

k8s 那么复杂一个系统,调控那么多容器,去除底层的一些 low level 逻辑,给用户提供的接口是没有业务逻辑的吗。
难道只有 CRUD 才是业务逻辑。

还有,好多人说什么 Go 吹,Go 粉,这种论调其实挺无趣的。
写过 Go 语言的人哪个不是从其他语言过来的,现在已经很少有人会站某一门语言去怼其他语言,因为你站的语言和你怼的语言你都会,跟左右互搏有什么区别呢。
只有那些只会一门语言,生怕自己的饭碗被抢走的人才会如此敏感吧。

没什么其他意思,只想就事论事,讨论讨论问题,如果伤害到某些人,先说声抱歉。
希望不要把问题带到奇怪的方向。
Wanex
2022-08-08 16:28:29 +08:00
@Hanggi 事实上这不是 ORM 的问题,本质上是 Go 这门语言的问题,Go 由于追求极致简陋抽象能力太差,支持的特性太少,在使用中可能遇到:要么多写大量重复代码,要么各种转型,要么丢失安全特性变成动态语言,要么各种 for 循环等等等......太多了,我都不想一一点出来,实在丑陋繁琐至极,毫无优雅可言,然后就是特性弱就算了,还非要强吹设计哲学,实际上挫的不行。当然,我也不否认 go 有它的优点,go 生来就不是做 web 的料,在它擅长的领域发光发热就好了,你要说做 web 可不可以,当然也可以,最重要的一点就是:又不是不能用!
Bazingal
2022-08-08 16:30:25 +08:00
@Hanggi 攻击性很强是指把事实说出来吗?另外我没说 go 写不了业务,上面很多人也说了,能写不代表合适,c 和汇编也能写业务,但是你觉得合适吗
interim
2022-08-08 16:42:56 +08:00
@dog82 啊这,redis 怎么就成 go 写的了?
Wanex
2022-08-08 17:01:30 +08:00
@interim go 是要替代 c 的,所以 c 写的 == go 写的 ,没毛病
ericguo
2022-08-08 17:02:45 +08:00
@XCFOX > const article = await articleRepository.findOne({ title:"Tales of Ten Worlds",published:true });

论优雅 Rails 还真没怕过谁。article = Article.find_by title: 'Tales of Ten Worlds', published: true
yx1989
2022-08-08 17:03:57 +08:00
Java 库的 github star 数量确实偏少。当年各种 Python 都好几万 star 的时候,Spring 的 star 才几千。

不过 star 多并不能说明适合写业务逻辑,仅能说明这个库比较 成熟 or 热门。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://ex.noerr.eu.org/t/871389

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX