<p>Not sure why I decided that as the title, but I thought it was catchy. My real question is this: I am very very new to programming and have been researching for quite some time about the direction I want to take. Golang seems like a good language to learn for the future as I think cloud computing will be the future as well as, well, it's Google. They aren't going anywhere anytime soon and have bucket loads of money to spend. Since there isn't really a lot out there yet to help me learn Go as a beginner, which language should I learn first to help me later transition into Go? I was originally planning to learn Python first, but they appear to be very different. What do you recommend? I bet C is going to be a popular opinion and if it is, could you give me a second choice as well?</p>
<hr/>**评论:**<br/><br/>ZenSwordArts: <pre><p>Choosing the right tools (here: programming language) for the job is important. However if you just want to learn programming, you should choose a well documented general purpose language, best with a huge user base.</p>
<p>There are quite some possibilities here but Python surely is a valid choice. There are tons of tutorials/free books/etc about Python.
There exist good resources for Go too but not nearly as many as for Python.</p>
<p>Don't choose Go because it's from Google. It's no argument for a first(?) language. Also chances are good your focus/direction will change over time. </p>
<p>If you made up your mind and think Go is the way to go.. then just learn it. It's a great language. I just feel Python may be a better choice for an introduction to programming (if only for the mass of resources).</p>
<p>Good luck</p></pre>djhworld: <pre><p>If you're new to programming then I'd probably put Go and C on the back burner, until you're more comfortable with programming in general.</p>
<p>It's very easy for people to say "Go is easy!", but they're often seasoned programmers who can adapt to new programming languages quickly.</p>
<p>Play around with python and see how you get on, once you're comfortable, translating those skills to other languages isn't too hard </p></pre>dlsniper: <pre><p>I'd say first master writing down (simple) algorithms for simple problems on paper then jump into programming. Seriously. This will help you a lot more that you can think. My CS teacher used to say: Anyone can press buttons, not everyone understands why. Once you get this step nailed down, you can dive into learning a programming language.</p>
<p>As for the programming language, while I have yet to learn Python, I think it could be a good choice. Jumping into go should be easy as well.
I'd say just try a few simple examples in a few languages, Ruby might be another choice(?), and see which one feels easier to do stuff in.</p>
<p>Caveat: if you want write software for games for example, Python might be nice to learn but then you should switch to C/C++ (or even Java??). If you want to do web, Go, Python, Ruby, PHP (yes, I just wrote PHP) for backend, Javascript for frontend might be a bit better. If you want to do mobile development then Java (Android), Swift/Objective C (iOS), C# for Windows. Finally, if you want things that can be done for multiple platforms, or you are not sure what to pick up, you have Java, Go, C/C++ might be worth having a look at.</p>
<p>Once you find something you like to program, you'll do it much more easily and efficiently and you'll be able to learn things faster. From <insert-programming-language-here> to Go will be a small step but please don't do it for the wrong reasons. I've seen a bunch of people saying they are experts in <random-language> that looks cool in the LinkedIn profile / CV but when I've interviewed them they couldn't handle basic questions. Learn what you like to write software in and do it to the best of your skill. </p>
<p>Finally, don't worry if you got it "wrong" the first time. There's no "right" and "wrong" when it comes to programming, it's just experience that will build up if you are dedicated on it.</p>
<p>Hope it helps.</p></pre>natefinch: <pre><p>Don't start with C. You'll spend more time fighting stupid memory errors than you will actually learning to program. I know, I started with C. Is it sort of neat to be explicitly allocating memory? Sure. In the same way it's neat to cook over a fire you built with a flint and tinder... but I wouldn't want to learn to be a chef that way.</p>
<p>I actually think Go makes a great first language. It's one of the most simple languages out there. It has every feature you need to write real programs, but doesn't throw every feature in the world at you.</p>
<p>Python is ok... but the lack of a compiler can really be a hindrance to newbies, since it's so easy to make really trivial mistakes that a compiler would catch. It's also a fairly substantial language with a lot of intricacies, so there's just a lot to learn.</p></pre>calebdoxsey: <pre><p>You could try: <a href="http://www.golang-book.com/books/intro" rel="nofollow">http://www.golang-book.com/books/intro</a>. I'm not sure it actually succeeds, but it was written for this purpose.</p></pre>drvd: <pre><p>Why not start with Go?</p>
<p>C: Too low level, manual memory management is painful and error prone, portable code is difficult. Learn as first language if you are into embedded systems or OS programming only.
C++: Too complicated, too many concepts, too many ways to do things. You would learn C++ and not programming.
Python: Nice, why not as a first language. But there is no real advantage to Go. Go and Python are very similar. Modern Python tends to lean a bit too much into the complicated/fancy/clever camp of programming (like C++) so it might be less suited to learn how to make computers do what you want them to do.
Java: Keep of. Instead of learning to program you will learn to use and IDE and external build tools and monsters like Spring. Was okay 15 years ago, too fancy now as a starter language.
C#: A bit like Java but confined to Windows.
Fortran: Well, no.
Scala, Haskell, Rust, D: Not as a beginner language.
JavaScript: A mixed bag; you'll have to cope with JavaScript one day, possible sooner than later but start to learn programming? No.</p>
<p>You should not base your decision on stuff like "is suitable for Cloud Computing". Any language is useful for "cloud computing". Base your decision on how well your first language teaches you how to program a computer.</p>
<p>Implementing the algorithms found in TAoCP (Knuth) or Algorithms (Cormen, Leiserson, Rivest) will be dead simple in Go. Writing good code is easy in Go. Go works well on Mac. Linux and Windows. With Go you can focus on writing code, i.e. actual programming.</p>
<p>So why not Go?</p></pre>Liahkim2: <pre><p>Then if any language is useful for cloud computing, what would you say is special about Go if anything? Sorry, I'm a newb here when it comes to this stuff. I've just been reading a lot of different articles about which programming languages are suited to doing different things and everywhere I have read says Go is built for cloud computing. </p></pre>drvd: <pre><p>What I think makes Go special: It is a tiny language with just a few building blocks which work together very smooth. It is low-level enough to write fast and machine-suitable code. It is very high-level to be really productive. It has a strong focus on "get the shit done". Its standard libraries offer the right level of customisation for the everyday jobs. It is built to promote good programming style (details below). It is easy to work with due to good tooling, and easy fast compilation.</p>
<p>A lot of voodoo nonsense and bikeshedding you'll find in other languages are suppressed in Go. Code formatting: gofmt. Returning List<C> instead of ArrayList<C>: It's slices (or maps) all the way down in Go. Limit each method to exactly one return but throw happily whenever you get stuck: Not in Go. Design your code for testability (with the help of IOC containers): Just test it, no bullshitting in Go. Project setup: mkdir instead of maven archetypes. Programming: Done in any editor, no fancy IDE needed. Documentation: Written for humans, not for machines.</p></pre>nowayno: <pre><p>Go is a fantastic first language for new programmers. There's no reason to learn some other language first.</p>
<blockquote>
<p>Since there isn't really a lot out there yet to help me learn Go as a beginner</p>
</blockquote>
<p>I don't believe that's true.</p>
<p>The <a href="https://gobyexample.com/" rel="nofollow">Go By Example</a> web site is an invaluable resource for a beginner.</p>
<p>The <a href="http://www.golang-book.com/books/intro" rel="nofollow">Doxsey book</a> is a pretty good introduction to both programming and Go.</p>
<p><a href="http://openmymind.net/The-Little-Go-Book/" rel="nofollow">The Little Go Book</a>, by Karl Seguin, is a nice, concise intro to the Go language.</p>
<p><a href="http://www.amazon.com/Way-Go-Thorough-Introduction-Programming/dp/1469769166/" rel="nofollow">The Way To Go</a> is an excellent book, suitable for beginners but with plenty to recommend it to experienced programmers also.</p>
<p><a href="http://www.amazon.com/Programming-Go-Creating-Applications-Developers/dp/0321774639" rel="nofollow">Programming in Go</a>, by Mark Summerfield, dives deep with clear explanations of some possibly tricky areas.</p>
<p>Those books and online resources are more than enough to learn Go.</p></pre>thepciet: <pre><p>The secret about languages: the application should decide which to use.</p>
<p>Languages are tools and do not all solve the same problems. Find a cool project and pick a language to solve it. Be a problem expert first, tools expert second.</p></pre>dilatedmind: <pre><p>i would recommend go, c#, or javascript</p>
<p>for go, use either sublime text 3 with the gosublime plugin or liteide so you get autocomplete</p>
<p>i would not recommend c, as go is like a replacement for c for application development</p></pre>
这是一个分享于 的资源,其中的信息可能已经有所发展或是发生改变。
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
- 请尽量让自己的回复能够对别人有帮助
- 支持 Markdown 格式, **粗体**、~~删除线~~、
`单行代码`
- 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
- 图片支持拖拽、截图粘贴等方式上传