Go Version 1 Released
New submitter smwny writes "Google's system programming language, Go, has just reached the 1.0 milestone. From the announcement: 'Go 1 is the first release of Go that is available in supported binary distributions. They are available for Linux, FreeBSD, Mac OS X and, we are thrilled to announce, Windows. ... Go 1 introduces changes to the language (such as new types for Unicode characters and errors) and the standard library (such as the new time package and renamings in the strconv package). Also, the package hierarchy has been rearranged to group related items together, such as moving the networking facilities, for instance the rpc package, into subdirectories of net. A complete list of changes is documented in the Go 1 release notes. That document is an essential reference for programmers migrating code from earlier versions of Go. ... A similar process of revision and stabilization has been applied to the App Engine libraries, providing a base for developers to build programs for App Engine that will run for years.'"
Awesome. Only took them about 2000 years or so too.
The amazing thing is that even before the first stable release is out quite a few organizations are using Go in production to run real systems. Very impressive:
http://go-lang.cat-v.org/organizations-using-go
"When in doubt, use brute force." Ken Thompson
Can someone explain to me what Go's aim is, and why exactly it requires a new programming language? Is it meant a replacement for Java/C++/Python, or does it cater a new branch of programming?
Wake me when it has supports seemless integration into Python like Fortran and C (with ctypes) -- then I might consider it for coding CPU-intense stuff. It's supposed to be as fast as C with better syntax, isn't that the point?
NB: The message above might reflect my opinion right now, but not necessarily tomorrow or next year.
I've done some experiments with Go and I like to see a language which does not follow the OOP hype. CSP is a very nice concept and easy to use with the channels and goroutines.
But what I really need is a toolchain that compiles binaries with dynamic libraries. This is how system executables should work. static binaries are not enough!
but mandating their terrible indent style is not one of them.
Do you even lift?
These aren't the 'roids you're looking for.
New programming languages aren't a bad thing, but why would one choose Go over other languages currently in use? I see Go programs can be deployed with the Google App Engine, but if a project isn't taking advantage of that, what project(s) would Go most likely be used for?
Today I'm announcing the Go-Binary Object Translation System. More details on what it does later, after I figure that out, but it's called Go-BOTS.
I've been looking beyond PHP for a while, and Go seems like a reasonably good programming language (albeit not entirely comparable to languages like PHP) for web applications. Activity around Go isn't *crazy* but there are quite a few resources for what was a "beta" language up till now.
It also seems like Google is giving the project a good distance (note that the official website doesn't mention Google anywere apart from the occasional video), which I think is a good thing.
Anyone here ever used Go for anything serious?
In other news, Google discovers the value of namespaces. Seriously, I am so tired of new languages with no real reason for being other than "because we could".
Do the developers of GO have beards?
try { do() || do_not(); } catch (JediException err) { yoda(err); }
If you use the little snippet, concurrent pi displays the wrong digits.
http://golang.org/
screenshot: http://i.imgur.com/v23W3.png
Just like google real estate will transform the industry (SQUIRREL!) and google's solar power efforts will transform the world (SQUIRREL!) and google's anonymous accounts that protect user privacy (SQUIRREL!).
Sure, I'll invest my precious time in Go. You bet.
Please do not read this sig. Thank you.
Answer: It is the follow on to Limbo.
"To those who are overly cautious, everything is impossible. "
It lacks a lot of things that you would expect, like inheritance and operator overloading. To me this is a step too far, I mean its like going back to the 70s and using straight c almost.
I was SO hoping this would be another abandoned project
The syntax just blows!
Hey KID! Yeah you, get the fuck off my lawn!
FTFA:
I looked at the Go pages for 15 minutes to try to figure out why this was commissioned as a project to begin with. Ultimately I ran into the above paragraph. Projects like this make me think that Google no longer has a clear idea of how they could improve their existing business, so they're spending an increasing amount of time rearranging deck chairs to keep their programmers busy on the off chance that they'll need them for something useful.
Fuego, North Korean Silver Star/KCC Igo, ZhiXing Chen's Handtalk, Michael Reiss's Go++, David Fotland's Many Faces of Go, GNU Go. Still nothing close to human.
http://en.wikipedia.org/wiki/Computer_Go
"Kill 'em all and let Root sort 'em out"
I wonder if it is a recursive acronym for "Go's Optional"
How does this language compare with Mozilla's new programming language?
First time I looked at Go, my conclusion was "this language isn't ready". The next time I looked at Go, I concluded that it had essentially bled to death. But the release of version 1 changes things. I will take another look. I hope they've worked out enough of the details for me to be able to tell if this is a language I would love to work with or not.
Please correct me if I got my facts wrong.
I looked and saw a lot of high-mindedness.
Let me know when it can define itself (i.e., its source is "go"),
and maybe I'll be impressed (I suspect it's 'C' or c++).
Many have tried to match the incredible elegance of C, none
have succeeded so far, JMHO.
Slashtards - everyone knows that version numbers are arbitrary... the only version number that counted was 1.2.13
Last time I checked Googlers were limited to C++, Java, JS, and Python. Isn't this little more than a hobby project of people that work at Google? Maybe calling it "Google's systems programming language" is a bit of a stretch.
I see language designers are still making the mistake of trying to represent characters as fixed size entities. Go 1 adds a new data type 'rune' intended to represent a UTF-32 codepoint, which is fine as long as it's only used for code points, but then the example code they show is:
:= '' // delta has type rune.
delta
var DELTA rune
DELTA = unicode.ToUpper(delta)
When you design an API that accepts or returns individual characters (as opposed to code units or code points), do not use rune, char, wchar_t, char16_t, char32_t, int, or any other fixed length type to represent a character. Characters are fundamentally variable length.
You should use a string data type because fixed size types can only represent a subset of characters. For example, a single UTF-32 code point cannot represent the Lithuanian characte LATIN SMALL LETTER A WITH OGONEK AND ACUTE. In Unicode this character can only be represented as a sequence of multiple code points (<U+0105> <U+0301> or <U+00E1> <U+0328> or <U+0061> <U+0328> <U+301>). So using strings works whereas using a fixed size type will inevitably fail.
Using strings to represent a character has another advantage beyond the fact that it's the only way that works. It eliminates the client's need to convert between the string type and the type used to hold a code point. Clients can just directly use text in whatever the native encoding is.
Does anyone know if this is an R&D project that could be poking at the idea of a litigation free runtime for Android away from Dalvik?
I'm curious to see how this language evolves and its internal adoption inside of google.
Regardless of the language taking off or not, it's a great to see a new language enter the ecosystem, and no doubt we'll learn things from it that can be brought back into main-stream languages or interesting innovation that could open the doors for new (pray disruptive) development in new areas.
One thing I'd like to add that most people miss is that the language was designed for easy dependency management, and it's built into the go tool. For instance, if you download library A that depends on library B that you don't have installed, when you build library A the tools will download, install, and build library B automatically.
If there's one thing we can be sure shall apply to various future languages is the fact that the formatting of the source code is mandated by the specs.
This is a godsend to parsers, tools authors, IDE authors, Emacs pluging authors, and whatnots.
It ends the age old retarded spewtard "my indentation style is better than yours" war. I just love it.
Also, before comitting, you SHOULD use gofmt to format to the official formatting and then commit. No more "zomg but I prefer this lame indentation style so I reindented everything and then commited like a noob".
This is wonderful. For this feature only I'd switch to Go.
Or I could dream of "Javalang", which would be Java (not my choice) but with a clearly specified formatting.
...with a closed mind. Of which there seem to be several in this thread. Come on guys, what happened to your sense of adventure? Are you all such corporate drudges that you can't have fun with programming anymore? No wonder Commander Taco left. Goodness, what a bunch of sticks in the mud!
BTW, that attitude is exactly one of the reasons why they created Go...
Skynet, is that you?
This is a continuing source of confusion (apparently). To be Unicode-correct, you must avoid treating strings as sequences. (There are certainly individual cases where it may be valid to do so, but you can't assume that it is.)
I guess the simple way to think about it is that the strings are an ADT unto themselves.
If Google really thingks the langauge is cool, why not use it as the default app programming language in Android OS and thereby get Oracle, whose Java programming language Google has unabashedly cloned or reimplemented, off its back.
you use their email.
New languages are cool, but we the world is rich with programming languages. What we are really missing is a good cross platform GUI programming environment.
Scary, not amazing.
$ cat imports.go
package main
import (
"fmt"
"math"
)
func main() {
fmt.Printf("Now you have %g problems.\n", math.Nextafter(2, 3))
}
$ go run imports.go
Now you have 2.0000000000000004 problems.
Same on google's site (click on the "RUN" button to execute):
http://tour.golang.org/#4