Does the Go programming language have any future?
34 17 Mar 2016 02:28 by u/rms_returns
I've been hearing about this language a lot lately. The talk is that Google has already started implementing this language as an alternative to Java for its android platform.
What are the other uses of this language in areas like web development and desktop development? Is there much scope for this language going forward?
37 comments
26 u/Jefiakra 17 Mar 2016 03:17
I doubt it. I briefly had to use Go in a production environment, and to this day it brings to my mind the hours of seething hatred I spent searching in vain through Go's documentation for useful functionality. The biggest problems I can think of off the top of my head are:
Go is an empty, useless, husk of a language. It's like C, if C didn't have any substantial libraries, didn't let you use any useful shortcuts (in the name of "secure code"), and ran 10 times slower. It will die, slowly and painfully. It's only survived this long because Google has backed it, and it's less used than Microsoft's F#.
3 u/FuriouslyAdrift 17 Mar 2016 03:54
The few Go projects I have read about (outside of Google) ended up moving to Rust after getting cut on the sharp edges of Go.
6 u/Jefiakra 17 Mar 2016 04:01
I'm hesitantly optimistic about Rust.
1 u/DoucheBagMcGee 17 Mar 2016 04:02
Headshot. But is it add bad as Microsoft's XLST?
0 u/Tommstein 17 Mar 2016 04:37
But tell us how you really feel about it brah.
2 u/filmstripboy 17 Mar 2016 05:20
What kind of applications have you used Go for?
Go is targeted to a very specific set of problems - web applications. Being able to write web apps in Python is the norm these days. However, interpreted languages are slow - especially when you hit a certain scale. Go is targeted to such applications.
You mention the lack of a serious developer ecosystem. There isn't one needed at the moment. Go comes with pretty much everything built in. The directory structure has been standardized. Heck, it even comes with a tool that makes your code adhere to a standard (and re-orders the import statements, among other things) every time you save the file (
go fmt).Have you tried using Go on a Mac/Linux? The experience is extremely pleasant.
1 u/Jefiakra 17 Mar 2016 05:47
Web server middleware.
I think Go's type system is way more rigid. C++ is extensible, and has reasonable introspection capabilities. Go isn't extensible (primitives have more capabilities than anything I can implement myself), and it doesn't have real generics.
Agreed, it's easy to handle and manage code. But that stuff exists for C/C++ too. It's just not standardized.
0 u/filmstripboy 17 Mar 2016 13:41
Interesting.
I've fought against Go's type system in the past. The lack of generics is bought up every time. Can't really do anything about that.
What do you mean it's not standardised? You download the go compiler and it's all there. It comes with config files for editors (vim, emacs, etc). The config files hook directly to various parts of the toolchain.
2 u/SelfReferenceParadox 17 Mar 2016 16:39
IDK about C++, but C's type system is pretty darn relaxed. You can easily convert a floating point number to a pointer, then use that as an index into the array 5.
0 u/Techttz 17 Mar 2016 14:14
Thank you. Glad I'm not the only one.
5 u/tame 17 Mar 2016 03:00
The web startup geeks over at Hacker News love that kind of stuff, I think it might be trendy at the moment or something.
1 u/0x5f3759df 17 Mar 2016 11:41
Trendy at the moment, certainly. But having a real future as a serious programming language? I doubt it.
3 u/VxMxPx 17 Mar 2016 16:15
That on its own is an argument against it. ;)
5 u/voatercolonel 17 Mar 2016 05:32
The first two problems are to be expected of any new language (e.g., Rust, Swift). The third point seems backwards to me: isn't it good that it breaks with traditional paradigms? What's the point of making a language that's just a nicer C? Can you say what specific aspects of Go you didn't like, and why?
The type system is lightweight, and deliberately so. That may or may not be a weakness, depending on what you want from a language. I do consider it a weakness, but I can see why others may not think so (see Rob Pike's "Less is More" talk).
I don't use Java, so I can't speak to the speed comparison. I found it significantly slower that C++, that's for sure, but still much faster than Python.
And consider what you do get with Go:
Lightning-fast build times.
Built-in, easy-to-use concurrency.
The interface mechanism is cool.
Garbage collection (yes, it slows things down, but it makes coding so much easier).
I used and enjoyed Go for a couple of years. I switched to Rust recently, and am cautiously excited about it. But I still think Go is cool, and would happily use it again.
3 u/captbrogers 17 Mar 2016 03:42
While I haven't written anything with it, I have been using Go Got Service/Gogs and I like it. It has been fast for me on a small VPS and uses well under 100Mb of memory. I have tried GitLab, and while I liked the features it required too much in the way of resources to make running a small private git server financially worth it.
1 u/FuriouslyAdrift 17 Mar 2016 03:54
Gogs is really cool and fairly painless.
3 u/ack9834 17 Mar 2016 14:39
Go hit production "1.0" just a few years ago. It takes a long time for a new language to see adoption in large numbers, especially in enterprise. Its also important to remember that Google created Go for itself, as a more efficient and cleaner replacement for Python.
That said, there are a good number of companies using Go for systems-side applications and services, which is where Go really seems to have its niche. I have used it to create a MMORPG server and its been very stable and performant. My company has used it to create a scalable api engine and for a few other projects like integration middleware, etc. Overall its been a very useful tool.
The time-to-production on a new project is far less than most other compiled languages, and its easier for fresh grads to pick up and be productive with than something like C or C++. The simplicity of the language and built-in documenting system is nice and helps us reduce cost on the QC and code review side, since its quicker to read (both for the compiler and a human).
The language has some warts, and the ecosystem is still fairly young, so you may end up creating a library that in other languages you'd just pull in from somewhere else, which has its pros and cons. Thankfully Go makes it pretty easy to subdivide into libraries and to pull in third party libraries from various hosts. In 1.5 they added 'vendoring' which I think was a much needed enterprise feature. Vendoring essentially lets you maintain a fork of specific version of a library within your own project source. For enterprise this is important, as you wouldn't want to be stuck refactoring off-schedule if an external library has a breaking change in a new verison. It was possible to do this before without vendoring, but now its much cleaner and easier to set up and track.
TLDR; Yes, companies and people are using it. Its still a relatively new language and has a young ecosystem. It performs well and is easier to get fresh grads up to a productive level with. Is it going to have a future? Yes. Will it replace something like C? Doubtful. Will it compliment C well? Yes.
Side-note: Go won't disappear. Look at D, which has an even smaller following and is quite old at this point. Languages generally tend to stick around. Will there be tons of Go jobs in the future? Who knows... but for a good developer, knowing the specific language isn't a barrier to getting the job anyway.
2 u/Drenki 17 Mar 2016 05:32
Apple has Swift for its iOS and devs seem to love it so you could make the argument that Google would create and support a similar language for Android.
But Android devs and iOS devs are two different beasts. Even though it's clunky and slow, a ton of people are too familiar with Java and too stubborn/uncurious to really switch.
It shouldn't matter to you too much whether it has a future. You should ask, "Is this the best tool for my current project?"
As you advance as a programmer, you'll see that languages don't matter as nearly as much as the platform(s) where your program runs and the available development tools.
1 u/noblefool 17 Mar 2016 03:12
Looks like a shitty version of C at this point, honestly. Haven't looked at it too thoroughly though.
0 u/luckyguy 17 Mar 2016 04:23
From what I understand it's supposed to do asyncronous well (like node) but be compilable. So it might have a technical advantage somewhere but what I've also heard about it, it sounds like something marketers came up with trying to incorporate unnecissary magic and structural paradigms.
This is actually why I think javascript has done so well. It allows any and all structural paradigms (OO, functional, evented, closure) and as node discovered, what took off isn't what was intended. Promisses became less favored compaired to callbacks and modules ended up being commonly one function returns instead of libraries. I'm glad they kept it open so the developers don't have to wrap their heads around some bullshit about how some college professor thinks programs should be organized.
2 u/filmstripboy 17 Mar 2016 05:23
It's not asynchronous. It's multi-threaded (async is multiplexing things onto a single thread).
3 u/tame 17 Mar 2016 06:01
Asynchronous is anything that happens 'in the background' from the point of view of the caller, no matter how it's implemented. Multi-threading, cooperative multitasking, dedicated external hardware (eg. DMA) are all asynchronous.
1 u/filmstripboy 17 Mar 2016 13:44
Sure.. Just wanted to point out Nodejs can't do threads.
3 u/0x5f3759df 17 Mar 2016 11:44
That's the tl;dr for many programming languages (including Go, indeed).
1 u/SelfReferenceParadox 17 Mar 2016 16:40
C master race.
1 u/Craxic 17 Mar 2016 04:16
Docker is coded in Go, FWIW: https://github.com/docker/docker So perhaps that will give it some reason to keep kicking around. Otherwise I'm not so sure...
1 u/rwbj 17 Mar 2016 10:39
I think so many languages come and... go... because there's no compelling need for them. Just do the "me" test. You're more or less just like any other developer out there. So go look over a synopsis of the language. If after doing that it's compelling to you then it's probably compelling to enough other people that it will have a future. If, on the other hand, your main compelling interest in it is because of what somebody else said then there's no reason to think it'll be anything but another short (or not so short) lived fad.
0 u/BottomLine 17 Mar 2016 03:02
I've been asking the same questions. I'm not that blown away by the language it self yet, but one thing is sure: with a big company like google behind it, support will be very good. A language needs that. When they decide to start pushing it you can be sure it will get a decent userbase over time too. For now, I'm just keeping an eye on it, let it mature some more and see in what direction it's going.
I wish they changed that godawful logo, btw. It makes it all look like babies first computer language and not something to be taken seriously.
2 u/filmstripboy 17 Mar 2016 05:21
Support for golang is terrible for a big company like Google.
0 u/Tommstein 17 Mar 2016 04:51
Unless Google crams it down people's throats, why would it ever suddenly start seeing use? Although I would love if they changed Android to Go, because fuck Java.
0 u/filmstripboy 17 Mar 2016 05:25
I had heard Android wanted to support Go for native code (instead of C/C++). This would be super useful! It probably won't replace Java anytime soon though.
0 u/Tommstein 17 Mar 2016 05:37
I've heard rumors too, but until I see it happen, it may as well have been some drunken blogger making shit up.
0 u/rms_returns [OP] 17 Mar 2016 19:44
https://godoc.org/golang.org/x/mobile/app
There you go.
0 u/derfherdez 17 Mar 2016 05:59
zero. there was some crypto filesystem done in go. It's idea of portability is OS X (BSD), BSD, and Linux. So no Windows support worth a damn.
I know hipsters and college kids don't care about market share, but if you don't run on the biggest platform it's already kneecapped you.