Go progression path - From apprentice to guru

polaris · · 1436 次点击    
这是一个分享于 的资源,其中的信息可能已经有所发展或是发生改变。
<p>My post is inspired by this <a href="http://stackoverflow.com/questions/2573135/python-progression-path-from-apprentice-to-guru">stackoverflow question</a>.</p> <p>I want to learn Go as I feel it would be really useful for my job. I have lots of experience with more traditional, OO, languages (C#, Java etc), but I&#39;m a complete noob when it comes to Go. I am prepared to invest the time and effort into learning the language properly, but I could use some help with formulating a study plan.</p> <p>The original post sums up my question quite nicely (just replace the word Python with Go):</p> <blockquote> <p>Let me sum up what I do NOT want to ask first ;)</p> <ul> <li>I don&#39;t want to know how to QUICKLY learn Python</li> <li>Nor do I want to find out the best way to get acquainted with the language</li> <li>Finally, I don&#39;t want to know a &#39;one trick that does it all&#39; approach.</li> </ul> <p>What I do want to know your opinion about, is:</p> <p><strong>What are the steps YOU would recommend to a Python journeyman, from apprenticeship to guru status (feel free to stop wherever your expertise dictates it), in order that one IMPROVES CONSTANTLY, becoming a better and better Python coder, one step at a time. Some of the people on SO almost seem worthy of worship for their Python prowess, please enlighten us :)</strong></p> </blockquote> <hr/>**评论:**<br/><br/>Streamweaver66: <pre><p>3 good starter resources, the Go tutorial (Getting Started, Tour of Go and Effective Go), and perhaps the book Way to Go.</p> <p>With your language background I don&#39;t think the problem is going to be Go for you so much as programming concepts it exposes. IMO both Java and C# abstract so much of the underlying concepts away through libraries that you don&#39;t get a good feel for what is actually going on. </p> <p>Go exposes all of that to you in a simple and accessible way but if you&#39;ve spent all your time learning the abstractions instead of the underlying theory, it can be a bit of a learning curve. </p> <p>From there just got involved in a personal project, look for an OSS project to contribute to either directly or through pull requests and keep it rolling from there.</p> <p>During all that try to be mindful to program Go in the Go paradim and don&#39;t try to force it to follow what you may be use to in another language. Take some time to really figure out interfaces, Go&#39;s error handing pattern and the like and get what it&#39;s doing there. </p> <p>Use GoPlayground a lot and have fun.</p></pre>alittlebitmental: <pre><p>Thanks for taking the time to respond.</p> <p>Have you read Way to Go? I had planned on reading <a href="http://www.amazon.co.uk/Introduction-Programming-Go-Caleb-Doxsey/dp/1478355824/ref=sr_1_1?ie=UTF8&amp;qid=1432472560&amp;sr=8-1&amp;keywords=an+introduction+to+programming+in+go" rel="nofollow">An Introduction to Programming in Go</a>, and then moving onto something a bit more detailed. I might change that plan if you think Way to Go is better?</p> <p>I know what you mean about the abstractions, but I don&#39;t think that will be too much of an issue for me. Java and C# were just two examples of the many languages I&#39;ve learned over the years. Where I do think I will struggle, at least initially, is with program design/patterns. Right now, I tend to look at how problems can be solved using an OO approach, so I&#39;ll have to learn to think differently. I&#39;m actually quite looking forward to this though.</p> <p>I have a long list of projects that I want to develop in Go. One of these would requite interaction with libraries written in C. Do you know if it&#39;s possible to do this in Go?</p></pre>EclecticMind: <pre><p><a href="https://golang.org/cmd/cgo/">https://golang.org/cmd/cgo/</a></p></pre>alittlebitmental: <pre><p>Excellent, thanks</p></pre>Streamweaver66: <pre><p>I read that as well and thought it was excellent too. I recall I ended up bouncing back and forth between books because they reinforced different ideas. </p> <p>Interaction with C libraries is a great fit for go and cgo gets a lot of use in the community as far as I can tell though I haven&#39;t written any code using C libraries myself, I&#39;ve only compiled Go code using it. </p></pre>EclecticMind: <pre><p>I spent a few years working in ruby, java and js before stumbling into Go. It&#39;s changed how I approach every project, regardless of the platform it&#39;s intended for.</p> <p>Go is easier to grasp than most people expect. It comes with an excellent standard library and lots of talks (and blog posts) are available on the official site to guide you through unfamiliar territory. For ex, should you break up your code into smaller chunks or let that file grow? It&#39;s tempting to rely on experiences from other languages but Go isn&#39;t OOP, it&#39;s solving problems in a way that will be easy to maintain or improve upon because code complexity is inherently discouraged. </p></pre>Momer: <pre><p>In addition to Effective Go and the other links already here</p> <p>High level:</p> <ul> <li><p><a href="https://talks.golang.org/2012/splash.article">Go at Google: Language Design in the Service of Software Engineering - Rob Pike @ SPLASH 2012</a></p></li> <li><p>The Go Programming Language (3 part keynote by Rob Pike @ Go Conference 2014)</p> <ul> <li><a href="http://go.googlecode.com/hg-history/release-branch.r60/doc/GoCourseDay1.pdf">Part 1</a></li> <li><a href="http://go.googlecode.com/hg-history/release-branch.r60/doc/GoCourseDay2.pdf">Part 2</a></li> <li><a href="http://go.googlecode.com/hg-history/release-branch.r60/doc/GoCourseDay3.pdf">Part 3</a></li> </ul></li> </ul> <p>More technical:</p> <ul> <li><p><a href="http://golang.org/ref/mem">Go Memory Model</a></p></li> <li><p><a href="http://golang.org/ref/spec">Go Spec</a></p></li> </ul></pre>dchapes: <pre><blockquote> <ul> <li><a href="http://golang.org/ref/spec" rel="nofollow">Go Spec</a></li> </ul> </blockquote> <p>I wouldn&#39;t necessarily relegate this to a &#34;more technical&#34; endnote (forgive me if I&#39;m incorrectly implying something from where it occurs in your list). I think the spec should be required reading early on for all would be Go programmers (probably after the Go Tour and other introductory things). Perhaps just skimming through it the first time and coming back for a full read-through later. It&#39;s relatively short and easy to read/understand and covers everything the language has and does.</p></pre>613style: <pre><p>Here is your personal development plan which I&#39;ve carefully crafted by examining your needs, background, and situation:</p> <ol> <li>Find something to make. </li> <li>Make it.</li> <li>If necessary, start over and make it again, but this time learn from your mistakes.</li> <li>Repeat steps 1-3.</li> </ol> <p>That&#39;s all there is to it. We get good at doing things by doing things. There is no shortcut and no secret video or book. Close this browser window, make a new directory under $GOPATH/src/github.com/alittlebitmental, and get started.</p></pre>

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1436 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传