2 ms·
The problem with Go is that it wasn't designed to implement any large projects like C was. So the designers would typically make trade offs on perceived beauty
by sytelus 12y ago
The problem with Go is that it wasn't designed to implement any large projects like C was. So the designers would typically make trade offs on perceived beauty and elegance rather than utility and potential pain in the real world. Another side effect of this is optimizing for compiler simplicity rather than optimizing for expressiveness of the language. It's easy to forget we build compilers not for compiler's sake but for its target user. Here's the quote from Go's history:
we started off with the idea that all three of us had to be talked into every feature in the language, so there was no extraneous garbage put into the language for any reason.
I would also argue C++ started in similar fashion but it went exact opposite route. The balance between minimalism and feature creep can only be achieved if you are designing language as a side effect of building your own large scale project combined with a sense of urgency.
Go is currently a lucky language. There is a huge vacuum that Java has left after Oracle acquisition plus its prolonged stagnation. People who need compiled languages for their relatively new code base, Go would end up becoming their choice regardless of its shortcomings. People will enjoy its minimalism until code base grows to be monster and features starts becoming sorely missed. This is nothing unusual in world of programming languages. We have seen COBOL become a gold standard at one point and PHP is still pretty hot.
- NateDad 12y ago"The problem with Go is that it wasn't designed to implement any large projects" What? Uh no. That's exactly what it was designed for. Big projects at Google. It has been stated by the creators of Go multiple times. The simplicity of Go helps in many ways that are not immediately obvious. You always know how memory is laid out in a struct, so you know how much memory you're copying with every instruction. You always know when you're generating garbage, so you can take steps to avoid it when it matters. In general, everything your code tells the computer to do in Go is very obvious, so you can actually reason about what your code does on the small scale and not just on the big scale. And yet, it does this without the added unsafety of C, and without all the enormous complexity of C++. And it does that in a way that you just can't achieve with Java's "everything is an object". That's why people are flocking to Go. Because it has Java's ease of writing with C's ease of tweaking, and yet fixes a lot of the inherent problems in both languages.
- sytelus 12y agoYou should get your facts right: As per Wikipedia - Ken Thompson states that, initially, Go was purely an experimental project. Referring to himself along with the other original authors of Go, he states:[11] When the three of us [Thompson, Rob Pike, and Robert Griesemer] got started, it was pure research.
- NateDad 12y agoI have my facts straight, thankyouverymuch. Here's an article from golang.org itself: http://talks.golang.org/2012/splash.article http://talks.golang.org/2012/splash.article "The language was designed by and for people who write—and read and debug and maintain—large software systems." I'm sure it started as research. Many things do.