6 ms·
Have you used it since 3 days after it was launched, more than three years ago? (That's when you contributed.) The language, libraries, and ecosystem are miles
by enneff 14y ago
Have you used it since 3 days after it was launched, more than three years ago? (That's when you contributed.)
The language, libraries, and ecosystem are miles ahead of where they were back in 2009.
Why not use C? Because C has no sensible packaging system, is unsafe, requires manual memory management, and offers a degree of control that is unnecessary for most tasks. Why not use Java? Because it is verbose and picky and basically forces you to use an IDE to get anything done, etc etc. If there were nothing wrong with these languages (they're the main ones we use at Google) we wouldn't have developed Go.
Use Go more! You'll see why people love it, and why we created it.
- dvt 14y agoTo be fair, I haven't used it since 2011 and I'm sure a lot has changed. I've read plenty of valid criticisms however which (after having used it for several projects) deterred me from using it again. For a project a couple of years ago, I needed to use OpenCV and the Go bindings were quite immature. I just switched to C++ (for that project) and never really returned. But now that I think about it, whenever people that are interested in being introduced to coding (it happens a lot on campus) ask me "what language should I learn?" I've never answered Go. I'm not sure if most people would.
- NateDad 14y agoWhile I don't think it's really a harsh criticism to say that Go shouldn't be your first language... I'd be interested to know what you think a good first language would be. Certainly not C or C++, if you're discounting Go. I'd also discount Java and C#, since they're syntactically quite similar to Go. Certainly not erlang. So... python? ruby? While I like those languages, I feel that the lack of a compiler is a pretty big hindrance to new programmers. Statically typed languages can catch many errors that produce some truly strange error messages in dynamic languages.
- derefr 14y agoYou addressed two of those questions, but what I really, really want to know is the answer to the third one. Why not use Erlang? It seems like the kind of thing Google would like, and yet I'm not familiar with any Google projects done in it.
- dsymonds 14y agoErlang is a very different paradigm of language. It's much easier for someone familiar with C++ or Java to learn Go than it would be to learn Erlang. Erlang has a great concurrency model, but it's fairly clumsy for writing procedural code of any complexity, which makes it harder to pick up too.
- jzelinskie 14y agoWhile I do like me some Erlang, anybody would admit it has some rough spots. The big two that come to mind are awkward syntax and the inability to number crunch. Lest we forget, Erlang is declarative/functional and is a significant paradigm change for most programmers.
- ternaryoperator 14y agoThe error messages are an additional rough spot.
- tezza 14y agoI'd love to use Go to replace some projects I've written in C and Java. I evaluated Go last week (2013-03), but there is no meaningful Eclipse IDE support. goclipse doesn't work half as well as CDT, and not a patch on JDT. I won't move away from eclipse workflows and project management, the context switch is more expensive than any language benefit. I'll keep checking for comprehensive Go support in Eclipse, but until then it is a showstopper.
- carbocation 14y agoI write go in eclipse and the experience is pleasant. What is the showstopper for you?
- tezza 14y agoDebug attach points are basically just gdb (okay for a simple app, but needs to be in debug perspective to compete with CDT, JDT ) Autocomplete / suggest broken on Windows. There is something about a fix by running an external server. I gave this a go, sending a few hours piecing together forum comments, but couldn't get it to work 100%.
- sesteel 14y agoI am one of the owners of the GoClipse plugin you are referencing. I apologize if you feel frustrated by the user experience on windows and I am glad you found a workable alternative. I always hoped to make GoClipse more of a community project where developers would improve it as they ran into issues, but most of the time people seem to be too busy. That has been my problem as well; too much to do with too little time. edit: oops, I misread your comment. At first, I thought you found an alternative. I'd be open to working with you to improve the experience. I do not use windows personally.
- voidlogic 14y ago"There is something about a fix by running an external server" It is called gocode (https://github.com/nsf/gocode https://github.com/nsf/gocode). Pretty much all Go environments require gocode - the directions for Eclipse (which I don't use anymore) are pretty clear too: http://code.google.com/p/goclipse/wiki/GocodeIntegration http://code.google.com/p/goclipse/wiki/GocodeIntegration
- coldtea 14y ago>The language, libraries, and ecosystem are miles ahead of where they were back in 2009. The libraries maybe (and the runtime). The language, as per semantics and syntax, is more or less the same. >Why not use C? Because C has no sensible packaging system, is unsafe, requires manual memory management, and offers a degree of control that is unnecessary for most tasks. But is absolutely essential for most tasks C is used. For all the others, why not use a higher level language like Python? >Why not use Java? Because it is verbose and picky and basically forces you to use an IDE to get anything done, etc etc. Some people are not "forced": they choose to use an IDE, and wouldn't have it any other way. It is like telling some Smalltalk guy: "Smalltalk forces you to use the smalltalk image editor/environment" -- so what? He is perfectly fine with it. Heck, lots of people even like using dynamic languages with an IDE (and more would, if there was better type inference and assistance). >If there were nothing wrong with these languages (they're the main ones we use at Google) we wouldn't have developed Go. Well, the main reasons for Go, as stated in the official pages (the Golang FAQ), are not very convincing or exciting: No header files, faster compilation, parallelism, garbage collection, lighter type usage.
- enneff 14y ago>But is absolutely essential for most tasks C is used. For all the others, why not use a higher level language like Python? What C programs are you thinking of? Thinking of significant C programs that I have used (bash, apache, gcc, and many more), I can only think of a few that wouldn't be easier to write and maintain were they written in Go, without suffering a meaningful performance penalty. Funnily enough, a lot of the uptake of Go has been from former users of Python, Ruby, and other dynamic languages; they attracted to Go's simplicity, safety, and speed. But really there's a lot more to Go the faulty dichotomy of "dynamic vs static" (or Python vs C, whatever). This is worh reading: http://talks.golang.org/2012/splash.article http://talks.golang.org/2012/splash.article >lots of people even like using dynamic languages with an IDE Agreed, and I have nothing against IDEs. I have just found that I can't comfortably write Java code by hand. There's way too much boilerplate. In my experience an IDE is essential writing Java code efficiently, and I don't think that's a good thing. >not very convincing or exciting Depends on your definition of exciting. Since I've been writing Go code I've been more excited about programming than ever before.