Go 的特色不是语法的便捷,而是在工程

2023-02-08 01:00:55 +08:00
 GopherDaily

Envoy 这样的工程构建已经是非常复杂了,当然 Go 大型工程也不简单。 但是入门写 Go 基本就一条路,入门 C++ 就很依赖人的主观判断。

学了两天 bazel ,又学了一天 cmake ,加深了这个想法。

7855 次点击
所在节点    Go 编程语言
77 条回复
lanlanye
2023-02-08 01:57:07 +08:00
难说,工程实践的结果是越写越像 Java ,然后越来越觉得那个异常处理反人类……
TWorldIsNButThis
2023-02-08 01:58:32 +08:00
Java 已经在应用层革过一遍 c++的命了
securityCoding
2023-02-08 08:17:11 +08:00
@lanlanye 已经不是反人类的问题,对代码的破坏程度简直丧心病狂
xuyang2
2023-02-08 09:32:27 +08:00
我觉得 go 的 if err != nil 没啥可黑的
层层嵌套的 throw cache 才是反人类
pursuer
2023-02-08 09:50:33 +08:00
这不是语言的问题,是生态分裂造成的,现在编译器就好几个,gcc clang msvc ,c++委员会标准库推进慢,各个平台对 c/c++的接口存在差异。
现在的新语言很多都是唯一实现 java(不考虑 android 的话) go rust 啥的。
当然也有一个分裂比较严重的 js ,好在 js 的灵活性在一定程度上减轻了这个问题,但是依然诞生的 webpack rollup swc esbuild 等一大堆构建工具。
TtTtTtT
2023-02-08 09:54:13 +08:00
一些编程哲学放在一边。
Goroutine 的代码实在是太难懂了,跟 Akka 一样属于好写,但是完全看不懂。
8355
2023-02-08 10:05:05 +08:00
Go 才是现代编程语言标准
同样的需求大概率只有一种写法 而且加上代码格式化
不会让你有在魔法世界的感觉 对新手友好度很强
不需要考虑什么某某函数 某某方法有这样那样的问题
dqzcwxb
2023-02-08 10:06:32 +08:00
@xuyang2 #4 "throw cache" 那你说的一切都对🙏
lysS
2023-02-08 10:07:36 +08:00
@TtTtTtT 正确使用的协程很好读啊,如果协程间有太多的变量、逻辑依赖,那属于滥用
RedisMasterNode
2023-02-08 10:08:46 +08:00
@TtTtTtT 怎么会难懂呢...或许你可以举一些认为难懂的例子大家康康具体是哪里不容易阅读
zcreg
2023-02-08 10:10:35 +08:00
Go 让人舒服的一个点就是读别人的代码,不会有那些花里胡哨的写法
fioncat
2023-02-08 10:14:07 +08:00
我发现一堆人真的无脑黑 Go 的错误处理。
Go 错误处理的好处在于强迫你认真对待每个 error 。
某些 Javaer 一有 exception 就无脑直接 throw ,他们肯定理解不了这种设计。
libook
2023-02-08 10:18:46 +08:00
与其他语言很鲜明的区别是,Go 是专门为生产工程场景设计的一款[产品];为了解决生产过程中的痛点,牺牲了一些部分技术人员看重的爽点。
xxv0
2023-02-08 10:20:20 +08:00
@xuyang2 什么是 try...catch...的层层嵌套,你是指在调用方与被调用方都 try...catch...,还是说在同一个函数的 try 块里再次 try...catch...,按理说这两种写法都是不对的。
zbatman
2023-02-08 10:21:14 +08:00
OP 一句没提 Java ,评论句句在踩 Java ,有趣
chendy
2023-02-08 10:23:20 +08:00
所以说 go 更适合当 cpp 用,写基础设施
写业务也就图一乐
Nazz
2023-02-08 10:28:51 +08:00
@xuyang2 Go 是最正统的 C 语言继承者. 虽然繁琐但代码更健壮, 当然要是有关键字或语法糖来抛出错误将会更好.
tt67wq
2023-02-08 10:29:16 +08:00
@TtTtTtT 深有同感,到处都是 channel 的异步,完全找不到消息从哪里来到哪里去,一两个模块的异步还行,有的十来个模块相互异步调用,非常令人头秃
Nazz
2023-02-08 10:31:03 +08:00
@TtTtTtT go 的源码实现很复杂, 一般人看不下去. map, sort, channel 皆是如此.
Nazz
2023-02-08 10:32:33 +08:00
@tt67wq 我会尽量使用 mutex 替代 channel, channel 明显被滥用了.

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

https://www.v2ex.com/t/914114

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

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

© 2021 V2EX