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

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:

  • the lack of any serious developer ecosystem.
  • the lack of built-in features to offset the first point.
  • it makes a whole bunch of changes from traditional language paradigms (making up a whole bunch of stupid terminology)...because! (It's basically at Objective-C levels of batshit.)
  • it has a baffling type system; it feels like a whole lot of thought went into it, until you realize you can't actually do anything.
  • it's quite a bit slower than Java.

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

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

I'm hesitantly optimistic about Rust.

1

Headshot. But is it add bad as Microsoft's XLST?

0

But tell us how you really feel about it brah.

2

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.

  • It is compiled
  • Handles multi-threading like a charm
  • The type system is not as rigid as C/C++

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

What kind of applications have you used Go for?

Web server middleware.

The type system is not as rigid as C/C++

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.

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.

Agreed, it's easy to handle and manage code. But that stuff exists for C/C++ too. It's just not standardized.

0

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

The type system is not as rigid as C/C++

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.

double x = somenumber;
printf("%u",5[*(signed*)&x]);
0

Thank you. Glad I'm not the only one.

5

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

Trendy at the moment, certainly. But having a real future as a serious programming language? I doubt it.

3

That on its own is an argument against it. ;)

5

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:

  1. Lightning-fast build times.

  2. Built-in, easy-to-use concurrency.

  3. The interface mechanism is cool.

  4. 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

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

Gogs is really cool and fairly painless.

3

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

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

Looks like a shitty version of C at this point, honestly. Haven't looked at it too thoroughly though.

0

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

It's not asynchronous. It's multi-threaded (async is multiplexing things onto a single thread).

3

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

Sure.. Just wanted to point out Nodejs can't do threads.

3

Looks like a shitty version of C at this point

That's the tl;dr for many programming languages (including Go, indeed).

1

C master race.

1

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

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

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

Support for golang is terrible for a big company like Google.

0

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

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

I've heard rumors too, but until I see it happen, it may as well have been some drunken blogger making shit up.

0
0

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.