Register a SA Forums Account here!
JOINING THE SA FORUMS WILL REMOVE THIS BIG AD, THE ANNOYING UNDERLINED ADS, AND STUPID INTERSTITIAL ADS!!!

You can: log in, read the tech support FAQ, or request your lost password. This dumb message (and those ads) will appear on every screen until you register! Get rid of this crap by registering your own SA Forums Account and joining roughly 150,000 Goons, for the one-time price of $9.95! We charge money because it costs us money per month for bills, and since we don't believe in showing ads to our users, we try to make the money back through forum registrations.
 
  • Post
  • Reply
Scaevolus
Apr 16, 2007

"Go is an open source programming language that makes it easy to build simple, reliable, and efficient software."

Go was created by several Google employees frustrated with programming large-scale systems in Java or C++. They designed a language with features to specifically fight technical debt and complexity.

Features that make programming in Go faster:
  • Simple, regular syntax
  • Garbage collection and memory safety
  • Lightweight threads (goroutines), message-passing (channels), and anonymous functions with simple syntax for easy concurrency and asynchronous programming
  • Static typing with type inferences for declarations
  • Interface-based structural typing (compile-time duck typing)
  • Fast compiles to native binaries (Windows/Linux/OSX), statically linked for zero-dependency deployments
  • Excellent standard library, including unit-testing, benchmarking, and profiling packages
  • Easy integration with C libraries
  • Backwards compatibility promise: code you write today will continue to work with future Go 1.x releases
  • Built-in development tools:
    • Integrated build system (gobuild)
    • Automatic code formatting (gofmt)
    • Lightweight documentation generator (go doc)

The designers strive to make a simple language with the minimal features necessary for effective development. I find this results in surprisingly concise code and a pleasant development experience. Many people coming from dynamic languages like Python and Ruby find it expressive and comfortable.

Contributing to the language is very easy, with a well-funded and responsive core team at Google making daily improvements.

Resources:
A Tour Of Go is an excellent interactive tutorial.
Effective Go is a more in-depth introduction.
Documentation index

Negatives:
  • "Go" is a terrible search term, you have to use "Golang" instead to find results.
  • The built-in dependency management system is simple and doesn't work well for more complex use cases like versioned dependencies.
  • There's no support for generics, which isn't as painful as it sounds, but can be frustrating.
  • It's a very new language (first publicly released in 2009, Go 1.0 released in 2012), so available libraries can be limited if you stray from mainstream usage of writing servers or system software.

Previous Go thread

Adbot
ADBOT LOVES YOU

Scaevolus
Apr 16, 2007

spongeh posted:

How is Go for game dev? I've found a couple of bindings, but nobody seems to support SDL2 yet. I seemed to have the impression that even though it's now 1.0, there's not a whole lot of use, but it may be more server-oriented which I'm not really looking at.
Not the best. The garbage collector hasn't been tuned for realtime applications, and the library support is spotty.

Haunts was an attempt to make a game in Go, but the developer was contracted for a year, and had development troubles after that. One of the updates blames Go's poor dependency management.

Scaevolus
Apr 16, 2007

SavageMessiah posted:

The talks from Gophercon are starting to come online here: http://confreaks.com/events/gophercon2014

Rob Pike(Keynote) posted:

Larry Page suggestion "function" be spelled "func".

Q: What are your plans regarding versioning and dependency management?
A: That's something that the open-source community is handling. We're not doing that.

Q: Are there any plans for generics?
A: There are no plans for generics.

Scaevolus fucked around with this message at 21:34 on May 7, 2014

Scaevolus
Apr 16, 2007

Jsor posted:

The thing is Go could be a very good language for this stuff. If you're willing to help write it the potential is there. I knocked out a pretty decent and fast Canny edge detection filter in an hour or so, but if you're just looking for nice frameworks that let you do your work, you need to find a more established language.
As much as I like Go, Julia is looking more promising for scientific workloads. Go's developers want a language to write networked services, so things like maximal performance (including FFI), good matrix support, and operator overloading aren't particularly high on their list of improvements.

http://www.evanmiller.org/why-im-betting-on-julia.html

  • 1
  • 2
  • 3
  • 4
  • 5
  • Post
  • Reply