最近看很多公众号什么的在说 Golang 值得一学,有没有技术大佬推荐学 GO 语言的渠道~没学过编程。有什么学习视频或书籍可以介绍吗?谢谢啦~
101
kangkang 2018-09-11 10:47:09 +08:00
@myyou 认真的吗? https://tour.golang.org/moretypes/1 这是官方教程,你看第一句就够了
|
102
kangkang 2018-09-11 10:49:38 +08:00
@myyou 认真的吗? https://tour.golang 点 org/moretypes/1 这是官方教程,你看第一句就够了
|
104
specita 2018-09-11 10:54:04 +08:00 1
如果英文好,去官网上学,都有教程。如果英文吃力,那看中文教程,我一般的方式直接去京东搜名称,然后买销售最好的那一个
|
105
sunzhenyucn 2018-09-11 10:55:55 +08:00
学 Golang 还得先学 C ?
瞎扯,那我学 C 之前是不是得先学下汇编? 学汇编之前是不是得先学会手写 0101 ? 手写 0101 之前是不是还得先手工造一台计算机出来? |
106
AppxLite 2018-09-11 11:00:04 +08:00
讨论半天似乎都没结果,楼主自己看着办吧
|
107
Ediacaran 2018-09-11 11:09:29 +08:00
go 是用来写网络服务的 DSL,干别的不太合适
|
108
ryan1991 2018-09-11 11:18:53 +08:00
郝林的《 Go 并发编程实战》不错,他好像也在极客时间上开专栏了
|
109
SuperMild 2018-09-11 11:23:26 +08:00 1
@sunzhenyucn 不是说学 Go 要先学 C,而是楼主是零编程基础,对编程毫无概念的状态,入门的第一个语言,Go 不是很合适。
一般入门编程几条路:从童子功开始练,C 是合适的语言,或者走快速见效的路,Python 之类的合适,或者走培训班面向找工作的路线,Java 入门也行。 但 Go 入门,如果没有人手把手教,一个编程零基础的人靠自己看书看视频学,怎么看都不是一条好走的路。 |
110
Aoang 2018-09-11 11:29:19 +08:00 via Android
@clino 你钻牛角尖了。
零基础的人学的是编程,不是语言。 非要学 Golang 入门,和骑驴找马有什么区别?学会了 Golang 就行了,不用学编程吗? 你不了解是如何实现的,那你怎么知道该在什么时候用什么比较好? 切片数组这些都是很基础的东西,什么都不了解,还谈什么把业务逻辑抽象化? 至于看不看源码,那是你学不学的问题。 |
111
myyou 2018-09-11 11:32:34 +08:00
@SuperMild golang 相比 c,java 概念很少,新手最怕被各种概念搞定焦头烂额,我反而觉得很适合零基础的人入门。
|
112
clino 2018-09-11 11:39:53 +08:00
@Aoang 作为一个初学者,学切片数组会理解会用了就行了,为什么要去学 C 来学切片数组?C 里面又没有切片.
熟悉了以后要再学为什么这么设计,到底是怎么实现的,那时候已经不是初学者,已经比较深入了 我是从初学者角度出发,我在这里看到的这种奇怪论调根本不是从初学者角度出发,而是本身已经比较高阶的开发者的想当然 |
113
shm7 2018-09-11 11:44:22 +08:00 via iPhone
试试 julia
|
114
SuperMild 2018-09-11 11:46:59 +08:00
@myyou Go 入门也不是不行,我上面几次回复,都有注意提到一点 “有没有人手把手教”。每种语言都有自己的特点,而写教程的人会被这些特点影响,Go 的教程我看过很多,基本上都是假设读者已经有编程经验,对很多编程入门需要了解的东西都不讲的。而 C、Python, Java 之类的教程则不一样了,大量入门知识,大量优秀入门教程(注意是编程入门,不是语言入门)。
Go 有优秀的语言入门教程,但编程入门资料就非常缺乏了。 |
117
Aoang 2018-09-11 11:56:31 +08:00 via Android
@clino 请问你使用 Golang 吗?对 Golang 的了解程度如何?
如果你深入了解过你就能明白 Golang 为什么不适合零基础的人入门了。 至于会用和理解,这根本就不存在的。 例,切片原理。 Golang 切片的结构是指向数据的指针,长度和容量。复制切片或者在切片上创建新切片,切片中的指针都指向相同数据内存区域。 没学过 C,指针是什么?长度和容量怎么理解和实现? Golang 的切片,你完全就可以在 C 上实现一个,因为 C 没有,你得自己造轮子。当你理解了切片原理,才能知道该怎么用,这样才能避免在开发的时候出现错误。 |
118
kangkang 2018-09-11 12:03:06 +08:00
拿 golang 和 python 类比的明显没有深度用过 golang...起码到目前为止 golang 这门语言还是需要有 hack 精神和能力的,想把它当 python 或者 java 那样的黑盒用是不可能的
|
120
waterlaw 2018-09-11 12:29:03 +08:00 via Android
楼上讲的都有点道理。 编程本质上还是逃离不了处理器指令, 内存,io, 异常处理等等, 如果是学习使用的话, 可以先了解一门语言的基本语法和概念, 遇到问题再去补相关知识, 计算机编程从来不是会用一门语言就会的, 要多推敲代码, 减少内存占用加速 io 操作什么的, 才是重点。 楼主计算机基础不是很好的话推荐一本书给你,《 深入理解计算机系统》, 可能还是要学下 c 语言, 毕竟 c 语言是除了汇编外离操作系统最近的语言, 而且语法也简单, 对你学 go 也有帮助。
|
121
abusizhishen 2018-09-11 12:42:08 +08:00 via Android
go 语言简单,学习的过程最好是工作驱动,否则没有应用场景,也很快会忘得
|
122
abusizhishen 2018-09-11 12:42:45 +08:00 via Android
极客时间,跟郝林学 go
|
123
dingyaguang117 2018-09-11 13:12:23 +08:00
C 上学的时候不是都学过么~
|
124
gowk 2018-09-11 13:30:52 +08:00
等 Go 2 出来再学不迟,引入了泛型和改进的错误处理机制后,一大波库都会根据泛型重构,那时 Go 的生态会更好
|
126
clino 2018-09-11 13:56:10 +08:00
@Aoang
"没学过 C,指针是什么?长度和容量怎么理解和实现?" 你这个是说要拿 Golang 里切片的 C 语言实现去尝试理解切片对吧? 意思是如果没学过 C 不从切片的实现去理解,而直接在 Golang 里实践,从而在脑子里建构对切片的理解是无法做到的?或者说比先学 C 的指针数组再学这个成本更高? 我没办法验证这个想法因为我原来就会 C,但我认为没学过 C 也是能理解的,而且成本比先去学 C 再来理解成本更低 |
127
Aoang 2018-09-11 14:15:39 +08:00 via Android
@clino Golang 自带切片,且没有指针运算,你怎么实现?
在大脑构建对切片的理解,你确定零基础的人能做到? 完全就是不存在的。 话题的对象是零基础的人,你零基础的时候能直接理解切片? C 之所以难,很大一部分程度就是在指针上。Golang 的指针没有指针运算,没有其他语言的基础,想理解切片,对于零基础的人有多吃力? 目前招聘 Golang 的企业都只招聘中级、高级,因为几乎没有初级。都是 C/C++、Java、Python 等等其他语言转过去的。 编程入门首选 C,兴趣爱好选 Python,谋生之计选 Java。Golang,对于现在来说,有编程基础的人一天上手,没编程基础的人上手再快,也会掉坑里。 |
130
clino 2018-09-11 14:39:17 +08:00
@Aoang 举个例子,参考这篇文章我就能理解 Golang 里的切片而不用 C 的知识
https://segmentfault.com/a/1190000006056800 这就是我说的就在 Golang 中实践来构建对于切片的理解 |
131
clino 2018-09-11 14:43:55 +08:00
@Aoang "编程入门首选 C,兴趣爱好选 Python,谋生之计选 Java。Golang"
我一直没有讨论语言本身的学习成本,我一直针对的是学 Golang 必须要先学 C 这种论调 另外我认为编程入门也可以用 Python,感觉你一定要理解到底层的具体实现才能叫"入门"?那么那些从 Scratch 开始的岂不是更奇怪? |
132
Aoang 2018-09-11 15:37:06 +08:00 via Android
@clino 你确定零基础的人看得明白?更多的是一知半解吧。且这篇文章讲的并不是基础。
没谁说学 Golang 必须先学 C,话题对象是零基础的人,话题是入门编程,不是学习某一种语言。 至于是不是需要了解底层,我说的是基础,而不是底层。当解决一个问题可以使用多种方式的时候,最先使用的是自己熟悉的,但是自己熟悉的并不是最高效率的时候,是不是要了解那种方式效率更高?你不了解基础怎么去判断?凭借自己的感觉和经验? |
133
ranwu 2018-09-11 16:18:54 +08:00
在 hackernews 上看到一篇文章介绍用 go 写的微服务,reddit 的广告系统,说响应时间从 90ms 提高到 10ms,感觉很牛逼。可以从框架入手,写个实际的应用,然后再看源码·=·
|
134
clino 2018-09-11 16:22:05 +08:00
@Aoang 你说的理解必须理解到底层? 比如 python 的 dict 我认为了解其特性会使用就叫入门了,你认为这不叫入门叫一知半解,必须了解其实现细节才行? 但是 C 里面没有 dict 没办法从 C 这里学起怎么办?
这个问题就和你说的切片一样,如果我只用 Golang 掌握其概念,能使用,我认为这就足够入门能利用其做不少开发了. |
135
Aoang 2018-09-11 16:31:26 +08:00 via Android
@clino Golang 是独立特行的,能使用不代表会使用。
看了看你的 github,听别人说千遍万遍,不如自己亲身体验。 Golang 好处是多,坏处也有。非要说 Golang 适合入门编程,你去写一个项目就能明白为什么本帖那么多 Gopher 的固执了。 |
136
clino 2018-09-11 16:56:13 +08:00
@Aoang 要我说多少遍,我一直没有说"Golang 适合入门编程"这个观点
我一直觉得奇怪的是要学 Golang 非要先学 C 的这种奇谈怪论 如果你会 C/C++,那么是有助于你理解 Golang 没错,但是如果就要学 Golang,完全可以不会 C/C++就能入门并很好的使用,这样的成本比去学一边 C/C++/Java 再来学 Golang 更低,这是我的完整看法,你如果要批驳我请针对完整看法. |
137
Aoang 2018-09-11 17:13:59 +08:00 via Android
@clino 是不是奇谈怪论你怎么不去试试?看看有多少人是直接零基础上手 Golang 的?
我回复的是楼主,对象是零基础的人,目的是入门编程。你没弄明白对象和目标有什么好说的。 有编程基础的人一天上手,没编程基础的你怎么学?有 Golang 的入门编程书和教程吗?有的只是入门 Golang 这门语言,没有入门编程。 至于学习成本,弄明白对象和目标了么?弄明白对象和目标了,你首先就应该知道一点,基础很重要。别扯什么能用就行,打个 hello world 和写个 TCP server 能一样吗? 你去问问,先学基础再慢慢进阶到一定程度快,还是先丢下基础以后慢慢补快。 |
138
myyou 2018-09-11 17:29:13 +08:00
@Aoang golang 是新语言,肯定没有多少人选择零基础入门 golang 啊。楼主也只是想学学 golang 而已,还有你说的哪些编程基础,没有一样能学。而且学习一门编程语言的过程中也会涉及到相关基础。你太绝对了,而且是忽略事实的绝对。
|
139
finalsatan 2018-09-11 19:36:22 +08:00
推荐一下雨痕大神的 go 语言学习笔记 吧
|
140
JokerHuang 2018-09-12 08:55:08 +08:00
@marcong95 我真的不得不给你点个赞... 咕
|