Golang Go语言超级beginner遇到特别气氛的事情

发布于 1周前 作者 yuanlaile 来自 Go语言

Golang Go语言超级beginner遇到特别气氛的事情

我是一个 golang 的 超级 beginner, 今天遇到一件特别气氛的事情, 我在学习 goroutine, 然后, 翻书查资料, 无意中看到知乎上一片文章, 说有一本 谢孟军的 go web 编程写的特别好, 我新生好奇, 我想说 我好像刚好买了这本书, 但是这本书是新加坡作者啊, 然后我就上网搜了一下谢孟军的这本 go web 编程, 果然确有其书, 而且刚好还有在线阅读, 我就想说看看这位大神对 goroutine 的讲解, 我去, 不看还好, 一看, 我就觉得好气, 居然开篇就把 “并发” 说成是 “并行”, 我这个还没入门的菜鸟都知道这是 go 作者特别强调的地方, 还特意加以区分, 就怕大家搞混了, 结果此人都已经出书了, 居然还能出这种错误, 除此之外, 书中还有些其他的概念误导, 我真的无言以对, 不知道是大神本身就不懂呢, 还是觉得出书好玩呢, 对于我们这些小白, 有多重视这些大神的作品, 结果确是这样, 这是好在我之前就对此有概念, 要是一上来就看这书呢, … 实在心中郁闷, 吐槽一下了


更多关于Golang Go语言超级beginner遇到特别气氛的事情的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html

25 回复

语文课还是很重要的

更多关于Golang Go语言超级beginner遇到特别气氛的事情的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


那本是我买了最后悔的书。

go 语言特性又不复杂,学习路径:优先官方文档和教程,然后看开源项目和英文书籍

先把气氛和气愤弄清楚再吐槽并发和并行吧

……不知道你说的原文是什么,不过落到具体的 goroutine 机制上,多个 gorotine 具有并发能力,在多核服务器上也是能够实现并行的。
要么你贴原文出来看看?

一个句号也没有,服气服气。

嗯嗯, 多谢指点

原文如下: goroutine 是 Go 并行设计的核心。goroutine 说到底其实就是协程,但是它比线程更小,十几个 goroutine 可能体现在底层就是五六个线程,Go 语言内部帮你实现了这些 goroutine 之间的内存共享。执行 goroutine 只需极少的栈内存(大概是 4~5KB),当然会根据相应的数据伸缩。也正因为如此,可同时运行成千上万个并发任务。goroutine 比 thread 更易用、更高效、更轻便。


……我觉得他这句话说得没问题

Concurrency is about dealing with lots of things at once.
Parallelism is about doing lots of things at once.
– Rob pike
Concurrency -> 并发
Parallelism -> 并行

所以说原文没毛病

成千上万个并发任务,好像没啥问题啊,成千上万个并行怎么可能才几个线程。

上面可能说的武断了,凭记忆这么说应该没毛病
得去复习一下

<iframe src="https://www.youtube.com/embed/f6kdp27TYZs" class="embedded_video" allowfullscreen="" type="text/html" id="ytplayer" frameborder="0"></iframe>

Concurrency is the key to designing high performance network services. Go’s concurrency primitives (goroutines and channels) provide a simple and efficient means of expressing concurrent execution. 从以上官方文档中, 我理解 “goroutine 是 Go 并行设计的核心” 这句话就是错误, 至少是误导. maybe, 我还太菜了, 我实在难以理解.

原文说的没问题啊,多核就是并行,go 就是为了多核处理设计的。上万个并发任务也没问题啊。

并发还是并行看你的 CPU 有多少个核,只能说作者说的不严谨,但觉得不是错误的

理解概念,中英双读,学编程语言不能去咬文嚼字

https://zh.wikipedia.org/wiki/%E6%A8%A1%E5%9D%97:CGroup/IT#C

都别扯了,丫的地区词转换没做(好)。你们是不是看到快取也要喷一顿啊?


1+1=2 是对的,1+1 !=3 也是对的,你为什么非要因为教科书上写了 1+1=2 就认为别人说 1+1 不等于 3 是错的呢……

在 #17 的链接里搜 concurrency。


<iframe src="https://www.youtube.com/embed/cN_DpYBzKso" class="embedded_video" allowfullscreen="" type="text/html" id="ytplayer" frameborder="0"></iframe>
&t=550s 这个视频非常推荐看看

锅在 ”并行设计“ 是什么? 查不到这种说法

我的理解是 goroutines 是 golang runtime,golang scheduler 的单位,从而并行。


// 反正感觉也是牵强

一句话的事情你扯那么,分下段落也好啊

本来就是为并行设计的,这一块在设计、宣传的时候,一直是拿 C/C++ 做对比的,因为在 C/C++ 写一个安全的并行程序比 Go 中困难很多。
高并发只是 goroutine 这种实现方式所附带的特性。就业界普遍观点而言,真正追求极致并发能力的场景,简单使用 goroutine 并不是合适的方案

别看,垃圾书

Go is the name of the language.
golang.org is the name of the Website.

亲爱的Golang超级beginner,

遇到让你感到特别气氛的事情确实很不爽,但请记得,编程之路总是充满挑战与起伏,这也是我们成长的过程。

首先,深呼吸,冷静下来。在编程中遇到难题是很正常的,特别是当我们刚开始学习一门新语言如Go时。问题可能是复杂的,但解决方案往往隐藏在细节中。试着重新审视你的代码,检查是否有语法错误、逻辑错误或者是对某些概念的理解偏差。

如果问题依旧无法解决,不妨寻求帮助。Go社区非常活跃和友善,你可以在Stack Overflow上提问,或者加入一些Go语言的交流群和论坛。在提问时,尽量提供详细的代码片段和错误信息,这样他人才能更准确地帮助你。

此外,记得查阅官方文档和教程。Go语言的官方文档非常详尽,是学习和解决问题的宝贵资源。

最后,保持耐心和坚持。编程是一项需要时间和实践来磨练的技能。每解决一个问题,都是对自己能力的一次提升。不要因为一时的困难而放弃,相信自己能够掌握Go语言。

希望这些建议能对你有所帮助。加油,超级beginner!在编程的道路上,我们都在不断学习、不断进步。如果你需要更具体的帮助,随时告诉我你遇到的问题。

祝编程愉快!

回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!