5 ms·
> months ? Go is tiny. The tutorial takes an afternoon. A C programmer will be profecient within days.
by smegel 9y ago
> months
? Go is tiny. The tutorial takes an afternoon. A C programmer will be profecient within days.
- georgemcbay 9y agoI agree "months" seems too long, but "days" seems too short to me. Learning the keywords and basic Go syntax is simple, so in that sense days fits, but a C (or C++) programmer is probably also going to be writing unidiomatic Go code, falling back to unsafe too much, trying to recreate OOP with some kind of wonky self-rolled inheritance system, etc, for a few weeks before they really "get it".
- IshKebab 9y agoThey may learn the language in days but not the standard library. That's always what takes the most time.
- wvh 9y agoI agree. And may I add the ecosystem: which third party modules you should or shouldn't be looking at, and if you should rely on them or roll your own.
- stouset 9y agoThen months for best practices, idioms, and understanding the pitfalls around concurrency and channels, which are nowhere near as "batteries-included" as people would lead you to believe. This "hype" around go letting you be productive sooner is honestly just bullshit. I've been programming for 20 years, with C, C++, Ruby, Perl, Scheme, Haskell, Rust, Go, Java, and others I've surely forgot. Sure, I was able to start writing go within a day. But it was terrible go, and months later I was still dealing with the consequences of early bad decisions. This isn't unique to go by any means. But if you go in thinking you're going to write a project that does some sort of non-trivial task and be able to rely on that later, you're going to have a bad time.
- greenhouse_gas 9y agoBut that's true with all those languages too. If you're an experienced Java programmer moving to Rust, you'll write Java in Rust. So it's 1 day of learning Go + 1 month of learning style vs 2 weeks of learning Rust + 1 month of learning style. [1] [1] Note, I think that Rust has the best community when it comes to getting beginners up to par, whether in #rust-beginners or on /r/rust. It just is a hard and not forgiving language.
- stouset 9y ago> But that's true with all those languages too. That is exactly my point, and I said as much in my post. > So it's 1 day of learning Go + 1 month of learning style vs 2 weeks of learning Rust + 1 month of learning style. More like 1 day vs. 1 week, with six months of ramp-up before you're writing anything approximating production-quality code. At which point, does it really matter that you were able to write garbage in one day rather than seven?
- logicallee 9y agoHi. Could you (or anyone else here!) kindly answer this question: https://news.ycombinator.com/item?id=14934690 https://news.ycombinator.com/item?id=14934690 One way to get your correct answer is for me to propose a wrong or partial answer. How is this as a message to the past (i.e. I am guessing your answer to the above request): WRONG/FAKE ANSWER: "Note to past self: although you can write code that compiles on day 1 and day 2, before considering your code idiomatic and ready to build on top of (or even deploy to production), DO/LEARN THE FOLLOWING: 1) read and work through all of The Go Programming Language book. This teaches all idioms. 2) Practice and use Go's testing tools (built-in). Always use its reformat tool applied on every save from your IDE. 3) Begin using a better error and logging library than the built-in error passing idiom. Google this. 4) Use a debugger. Google this. 5) Security and versioning with go get is broken: Google this and learn vendoring with versions. Otherwise your code cannot go on production. 6) You control garbage collection frequency. Learn to set this. In emergencies disable it entirely to trade memory for latency to gain one or two milliseconds (approach hard realtime), for example when you are dropping requests. Then reenable when you can take the (very small) hit. Garbage collection is very efficient and low-latency. 7) Channels and concurrency (goroutines) do not work as described. Specifically: - This link will solve your problems with channels: https://stackoverflow.com/questions/41200505/whats-the-best-practice-to-synchronise-channels-and-wait-groups https://stackoverflow.com/questions/41200505/whats-the-best-... Adopt it. Then they work as described. For goroutines: Follow this document - https://gist.github.com/pzurek/6642797 https://gist.github.com/pzurek/6642797 After incorporating the above specific changes, you are ready to commit to production and build on top of what you want to build. " is the above message completely wrong and bullshit? Then please correct it. Your insight and experience are appreciated and I would love to read what you would write as a message to yourself in the past, to save those lost months. Thank you.
- xfer 9y agoIt will take a week at most, to figure out what libraries you will need, if you have programmed before in any language.
- bborud 9y agoYes, however, the concepts that are used to construct Go libraries are very simple. So it is still pretty quick and easy to learn Go.
- logicallee 9y ago>The tutorial takes an afternoon. A C programmer will be proficient within days. Hi! (I got a downvote but this is serious - I believe you!) Thanks for this useful information. Could I ask you (or anyone else) to write maybe a checklist of links/resources or steps a programmer could go through? Thank you again!
- nindalf 9y agoTry out in order * tour.golang.org * gobyexample.com * The Go programming language book. (If you're a C programmer, one of the authors might be familiar to you) Personally I got hooked when I saw a talk by Andrew Gerrand where he created a working chat server in about 30 lines of code. I'd recommend this after gobyexample just to get a taste of what's possible - https://talks.golang.org/2012/chat.slide https://talks.golang.org/2012/chat.slide I hope you enjoy it :)
- logicallee 9y agoThank you. This is exactly what I was hoping for - thanks so much for your reply!
- azinman2 9y agoThat doesn’t mean you’ll know idiomatic to (which isn’t the same as C), know the tooling, ecosystem, etc. It does take months to be proficient.
- bborud 9y agoWhat do you base this on? Got some data to share?
- wott 9y ago> What do you base this on? Experience? One does not get 'proficient' in a week in any given language. One can build up a program in a new language in a week, but that does not mean proficiency. It takes between many months and a few year to become proficient in a language: it is the outcome of a process of exploration, trials, mistakes, discoveries of better or more adapted ways, finding out the shortcomings an learning to work around them, picking a right balance between ease to write and ease to read, ease to write and performance...
- JoeAltmaier 9y agoProficient doesn't mean expert. It takes about 6 weeks to get proficient.
- bborud 9y agoSo, in other words, anecdotal evidence. So let's quantify what "proficient" means. How would you measure of someone is proficient in a programming language?