10 ms·
Go 2017 Survey Results
- bonoetmalo 9y agoI have a feeling a survey hosted by the language maintainers is going to be heavily skewed in favor of "used Go for a long time" and "prefer Go over other languages"
- obmelvin 9y agoThose questions won't be representative of the whole population, but it's good to have a population of your users for things like this. I'm aware that Go is a good language, but I've never had a reason to use it and my opinion about other things related to Go shouldn't impact the development direction.
- pebers 9y agoGiven that the response numbers are up by 70% over last year, "used Go for a long time" doesn't seem necessarily that biasing. (No disagreement on the second though...)
- weberc2 9y agoIt absolutely does. This survey doesn't aim to answer, "what is the best language", it aims to understand how Go should improve and to gauge whether Go is improving. Specifically, comparing annual trends for the "prefers Go over other languages" question can help inform how Go is improving relative to its peers. Similar insights can be derived from annual trends in other questions' answers.
- netheril96 9y agoThe purpose of this survey is probably to find ways to improve experience for existing users rather than convert more non-believers.
- kemitche 9y agoEven with that bias, how that number changes year over year can be revealing.
- bradenb 9y agoThis is great for Go and I'm happy for them. I feel like in my career many people are extremely intimidated at the prospect of using Go for more than a pet project. The best answer I can manage to get to the question of "why?" is that it feels unfamiliar to them. I think this is an unfortunate hurdle. Hopefully that is just how things are in my little bubble (as this survey would indicate). I think Go is really cool and I will continue to lobby to implement some mission-critical systems with it.
- ptero 9y ago> I feel like in my career many people are extremely intimidated at the prospect of using Go for more than a pet project. That has not been my experience. Go is a learner friendly language with plenty of introductions and great, clean examples. If one has a basic familiarity with other languages learning Go is just as easy (or easier) than learning kotlin (python, tcl, java, c#, ...). For me a bigger hurdle is the lack of some features: no generics is a pain. I would love to use Go for scientific computing, but libraries are not there yet. Writing my own I really miss operator overloading: operator and matrix/function algebras are the only areas where I miss this, but there I miss it badly -- (AB + BA)^2 is so much cleaner than Power(Add(Mult(A, B), Mult(B, A), 2). Writing a simple Kalman gain formula becomes an involved magic incantation. Just a personal data point.
- weberc2 9y agoI relate to both of you. Go is a tremendously easy language to learn in my experience, but my peers are so jaded by other languages' grandiose promises and subsequent failures that they refuse to even take the tour. This is especially true for my friends coming from Python and JS who associate "static typing" with C++, Java, Rust, or Haskell. So it is both easy to learn and intimidating.
- sjellis 9y ago"So it is both easy to learn and intimidating." To be fair, the issues that you've cited don't seem specific to Go. Static typing is actually being adopted in both Python and JavaScript (via TypeScript), so people who keep up with the trends in those languages now have relevant examples of it.
- kjksf 9y agoFor me the big takeaway is: generics are pretty much guaranteed to happen within a year or two. > When asked about the biggest challenges to their own personal use of Go, users clearly conveyed that lack of dependency management and lack of generics were their two biggest issues, consistent with 2016. In 2017 we laid a foundation to be able to address these issues > These two issues will continue to be a major focus of the project through 2018
- pjmlp 9y agoUntil I see an actual roadmap for it, I won't be expecting much out of it, given the usual reaction when they get discussed at gonuts.
- deckarep 9y agoThat’s a bold statement...I’m not holding my breath. We still haven’t seen a solid proposal and the work required would likely be even more monumental after the fact.
- icholy 9y agoThere have been a bunch.
- seanmcdirmid 9y agoGenerics are well understood ATM. Once they decide on something, I don't think the work required would be monumental, unless they try something crazy.
- skybrian 9y agoJudging by package management, I wouldn't be surprised if it took another five years to figure out a plan and they did something controversially different from everyone else. Which isn't a bad thing, necessarily.
- xzi00s09f8098fd 9y ago
- keymone 9y ago"lack" "generics" "lack of generics"
- maxaf 9y agoAt first I've avoided Go like the plague because it lacks generics. A couple of years ago, I happened to pick up Go for a work project, and managed to ship it despite the lack of generics in Go. I realized that this was some of the most fun work I've ever done because of Go's various properties. I decided to take what is given and kept Go-ing. (Pun intended...) Having just passed my 2nd anniversary as a Gopher (a Gopherversary?) I still manage to ship projects despite Go's glaring lack of generics. Based on my own personal experience I can thus conclude that the non/availability of generics has very little to do with how strongly a programming language enables engineers to deliver projects.
- thatswrong0 9y agoOk so you can deliver projects. But what about the next guy that has to maintain them? At my work, we use Go extensively on the backend. Yes, it’s capable of being used by engineers to ship projects - most languages are capable of that. But I do know we write a lot of boilerplate, and repeat ourselves all the time. We still see nil pointers occasionally (in 2018! Why are they still a thing). Even though I work with a bunch of smart engineers, the language has pressured us to write more code than we need to, which means more maintenance will be required in the future. After having worked with it for 2+ years, I wish we had just used Java or even JavaScript.
- maxaf 9y agoGo's syntax and the patterns it encourages are both tailored to the harsh reality that code is read a lot more than it's written. It turns out that the verbosity of, for example, Go's error handling is actually simpler to understand and easier to read than any monadic contraption I've seen in the wild. It's also safer and lighter than Java's use of exceptions (checked or otherwise) because of the non-exceptional nature of equality comparisons and multi-valued returns. Lastly, the idea that generics somehow remove the pain of null pointers is simply false. I've done 8 years of Scala before defecting to Go, and still have nightmares about an empty Option[T] that has caused some n-level-deep monadic computation to return nothing. In this case, Go would at least blow up with a helpful stack trace, while the Scala program would continue to run and return erroneous results.
- wlkr 9y agoThere seems to be an issue with the last embedded SVG file in the 'Go usage' section (https://i.imgur.com/tAGJ9DX.png https://i.imgur.com/tAGJ9DX.png is how it displays in Firefox).
- chimeracoder 9y agoWhich version and OS? It renders correctly for me on the Developer Edition on OS X.
- wlkr 9y agoInteresting, I thought it might be an SVG error but it appears fine in Chrome. The screenshot is from Firefox version 58.0.2 (64-bit) on macOS High Sierra 10.13.3.
- tvladeck 9y agoTangential question: what was used to produce those charts? I love the simple formatting and how the data is laid out. My company* uses ggplot exclusively for reports that don't look nearly this well done. I love the information density, love the use of colors, love everything about them! Based on my inspection of the source, these are "native html" charts in the sense that it's a mix of text and svg rect elements — not an "image" that is included. Does anyone know how these are produced? I would love to shamelessly imitate if possible. *tiny market research firm
- tvladeck 9y agoUpdate: I asked the author! The reply was discouraging in one sense and encouraging in another: https://twitter.com/spf13/status/968259340619698176 https://twitter.com/spf13/status/968259340619698176 "Custom Go application that parses the raw XML data from Qualtrics and the generates the SVGs"
- Numberwang 9y agoThanks for posting the reply back to this thread!
- myroon5 9y agoSurprised to see JavaScript so high in preferred languages
- dpflan 9y agoI would like to see how this particular question changes in the next year to see if a wave of expertise hits or is about to hit: """ I've used Go for: (single choice) - 686 (11%) Less than 3 months - 1,588 (26%) 3 - 12 months - 1,338 (21%) 13 - 24 months - 1,678 (27%) 2 - 4 years - 809 (13%) 4+ years - 102 (2%) I've never used Go - 25 (0%) No response """
- flavio81 9y agoGood. I'm ready to go deep into Go, as soon as Go supports: a- Generics b- True, elegant exception handling c- Built-in metaprogramming, not that "Go Generate" joke. Nice to have: Sum types. Nice to have: Shorthand for interface{}. Nice to have: Package manager that does not depend on Git as first-choice of package repository. Alternatively (c) can sort-of replace (a) as well.