Google Go Capturing Developer Interest
angry tapir writes with news that Google Go seems to be cutting a wide swath through the programming community in just a short time since its early, experimental release. While Google insists that Go is still a work in progress (like so many of their offerings), many developers are so intrigued by the feature set that they are already implementing many noncritical applications with it. What experiences, good or bad, have you had with Google Go, and how likely is it to really take over?
Until this article, I forgot it was ever announced.
Translation: Someone is drumming up some marketing astroturf for a single-company controlled proprietary language.
Whatever happened to the previous language named Go? Did the creator settle with Google, or did Google just ignore him?
...luckily the game still comes before the programming language.
It's all just a bunch of hype. Last time I checked the language wasn't even finished.
It is an interesting concept for a low-level language and could be pretty important. And since the gccgo compiler has been accepted by the gcc steering committee (link), I am expecting Go to stay and prosper.
"Hannibal's plans never work right. They just work." Amy/A-Team
This summary reads like a bad infomercial. "How likely is it to really take over?" not likely at all, and nobody would ask that question unless they worked for Google Marketing.
Just because I can hook a shark from a boat, I do no offer to wrestle it in the water.
That is all.
Fuck systemd. Fuck Redhat. Fuck Soylent, too. Wait, scratch the last one.
"C++ is too hard, I'll use java. java is too hard, I'll use C#. C# is too hard, I'll use python. Python is too hard (boner?), I'll use ruby. ruby is too hard, I'll use Go." -- GoFanBoy (formerly RubyFanBoy, formerly PythonFanBoy, formerly ...)
Do you even lift?
These aren't the 'roids you're looking for.
its
Damn apostrophe abusers!
Why pick Go when there's D which already has a pretty stable platform to develop on?
I wrote a small utility for detecting duplicate files in Go back when it first came out. I haven't really kept it up to date so I'm not sure if it compiles with the current version.
It's an interesting language. Apart from its lineage, which is interesting and great if you're into Plan 9, it seems to me to be an old-school procedural shot across the bow of the current crop of compiled functional languages (ML, Haskell). It's hard to place the language in any camp, because it does furnish functional programming and object-oriented features without really committing to the dogma of either one. It gives you a ton of interesting features that seem to work really well in concert, but it's also missing some core functionality. I can live without exceptions but I'm not sure I can live without type genericity in this day and age. And a lot of other programmers have their own little nits with it.
Overall, it seems great. But I seldom need code compiled to the machine, and I'm conversant with and fond of the compiled FP languages so I tend to rely on them for these kinds of utilities. I suspect at Google this will eventually become the de-facto language for implementing protocol buffer servers. If and when that happens, the language will have a guaranteed niche for a long time to come, whether or not it wins over hearts and minds outside the giant.
Could anyone post a list of alternative modern programming languages that equally handles parallelism as well, that are still being actively developed, and their pros and cons compared to Google Go? I'm interested in learning one of these, I just can't find any easy overview anywhere (all mentioned in wikipedia are pretty old so lots must be missing...). Surely Haskell isn't the latest such project, there must be lots of others just around corner?
So, what has Go brought to the table?
No, Go doesn't bring anything new to the concurrency table. The two things I've seen about Go concurrency that are regarded as special are M:N/"green" threads and CSP-style channels.
M:N threading is an implementation detail of a language runtime. Whereas the standard library of a language might specify how threads are available to client applications (programs written in the language), it's best left to the implementation (runtime or compiler) to decide how to translate those threads onto the machine. Some implementations might want to focus on scalable, high-performance threading, and so they'd choose M:N. Some others might emphasize simplicity, and map language threads directly to OS threads. What Go has done is standardized this implementation detail into the language specification. (I don't think that's a good idea, but that's a matter of taste.) Other language implementations offer M:N threading, including GHC and (I think) Erlang.
On channels: they're cool. I love them. But there's a lot of prior art here, and many languages have great CSP-style channel libraries written for them that offer the same great flavor of relatively safe message passing and alternation between sets of channels:
In summary, I just don't get what the buzz with Go is about, besides that it's Google's very own language.
What is Go?
Does that answer your question?
http://en.wikipedia.org/wiki/Considered_harmful
If Pandora's box is destined to be opened, *I* want to be the one to open it.
30 years ago there were enough programming languages "already". What do you need that can't be handled by COBOL, FORTRAN, Pascal, Ada, ANSI C and assembly language?
Reading the documentation on Go, really makes me wonder why I would want to use this instead of a language such as Java? One of the arguments is that it is 'loosely typed', which IMHO is not necessarily an advantage in large projects, since in a large project I want to be sure that the compiler catches the obvious mistakes, and not wait until runtime. I already used a loosely typed OO language called Smalltalk and if the documentation wasn't good, then you had to work hard to find out what object the method was expecting.
If the goal is really to compete with the like of Javascript (JS), then I can appreciate the need for an alternative, but given how entrenched JS is, I see this as an uphill struggle.
New languages, really need to prove themselves as addressing a real problem, otherwise its just another way of fragmenting the expertise in the field.
Jumpstart the tartan drive.
Go looks nice, but it still does not have real multi-dimensional arrays. This is the key issue that keeps me using Fortran.
WTF don't any C derived languages have real multi-dimensional arrays? Yes, I know you can fake it with array of pointers to pointers, i.e. foo[i][j], but the problem is even if you allocate a contiguous block, and have your pointer array index into it, it still requires at least two memory accesses to access an element, which absolutely kills performance. And I just freaking hate doing foo[i * ROWS + j], its nasty and error prone. So, why has Fortran had multi-dimensional arrays since freaking 1960, and still no C derived languages have it.
BTW, native complex number vector operations would be nice.
The programming community has been stuck at 3GL for way too long.
"Mr. Burns, your campaign has the momentum of a runaway freight train. What makes you so popular?"
As copyright owner of this comment, I authorize everyone to defeat any technological measure which limits access to it.
Gee, what do you need that can't be handled with a Turing machine and a lot of tape?
"Go Ogle Go"
Too bad they added significant whitespace. I'd support a semicolon-less syntax, but not at the cost of significant whitespace.
Perhaps an alternate function call syntax or using {}instead of () in expressions would work.
angry tapir writes with news that Google Go seems to be cutting a wide swath through the programming community
He may write that, but that's not what the article says:
While Go is still a work in progress, some developers are so encouraged by its features and design that they have started using it to build noncritical application
What experiences, good or bad, have you had with Google Go, and how likely is it to really take over?
Um, take over what? Is this a serious question? The answer here is "never" -- for the same reason that no single language will ever "take over" the software development landscape. There is no one tool fit for every job.
Bing Is Not Good?
I'll let you know if/when my program halts...
I seem to recall Rob Pike mentioning in his techtalk that a good name for the debugger would be "Ogle"
The stopping problem.
But there's a lot of prior art here, and many languages have great CSP-style channel libraries written for them that offer the same great flavor of relatively safe message passing and alternation between sets of channels:
What Go has done is standardized this implementation detail into the language specification
The two things I've seen about Go concurrency that are regarded as special are M:N/"green" threads and CSP-style channels.
I'll agree with your points, but many vehicles have wheels and motors and there is still a clear preference (or at least avoidance) of certain brands and models. Go brings things together well, and is a 'better' option because it does integrate so much prior art (as you have said) into a great package.
Quartz Extreme and Core Image. Are there any other real reasons to spend all that money on generic hardware?
I looked into it. It is still basically unusable for any real-world app, as far as I can tell. I would say that its chances of taking over are probably about the same as Sarah Palin being elected President, or finding sentient life on Mars.
Go? That's the language that Toyota uses to write their firmware, right?
Read my blog.
What's with the line numbers? I thought we buried those in the same unmarked grave as disco and rotary dial phones.
When our name is on the back of your car, we're behind you all the way!
Google makes very good products, but they don't take privacy seriously at all. Even if they did, I'm not going to use any more products by Google (and I'm soon transfering out of Gmail). The reason is that Google is just growing to be too big, it's not even funny anymore. Soon they know everything and have huge corporate power. And it's a corporation after all. Their main goal is profit, not acting morally.
First of all, a statically typed language that claims to be high-level, in 2010, with no form of type genericity? Seriously?
how likely is it to really take over?
Extremely unlikely. So far all I see is "yet another exotic language", of which there are thousands. A new language needs some serious corporate backing (not just "uh, we released this thing, though it's not kinda for production...") and a major marketing push to get it adopted. For an example of how this works (or rather doesn't), look at the much more innovative and mature Scala, which still struggles for adoption. Ditto for D.
I was one of those developers chafing at the bid to get my hands on Go. Once I started I never looked backed. I was able to write my own version of HelloWorld in half (that is 1/2) the time it took me to do it in C and it was bug Free with no memory leaks. I think that pretty says it all. If you're looking for a programming language that solves all your coding problems look no further. Now that I have abandoned Java my manually linking programs with xml skills have declined sharply. Similarly after abandoning Lisp my ability to match parenthesis's has almost vanished. No matter, with Go I perceive the universe in my belly button.
FTFY
...a search engine giant might name it something a lil more search engine friendly.
Similes are like metaphors
Oops, mismoderated this, sorry.
Could someone please fix the "it's" in "[...] in just a short time since it's early, experimental release."?
or whatever they call Go++.
Did you mean Issue 9?
... paid marketing again, it's really sad. (OK I lied, I somehow found my way to the Go page once in those 4 months and found nothing worthwhile)
"I love my job, but I hate talking to people like you" (Freddie Mercury)
Recently I downloaded Go (redhat 4) but as far as I could get was a low level error when I tried to run ....)
my first hello world program. I noticed someone else had reported the exact same error to their newsgroup
several weeks prior - and not one person had responded with help. I tried to diagnose the problem my self
as I really,really wanted to take a look at this language. But alas, to me, it just wasn't worth the effort -
There are so many other new languages to explore that *do* work "out of the box" (scala, clojure, erlang,
that I just concluded Go is not ready for prime time. So I guess if Google offered me a dream job working
with Ken Thompson and Rob Pike to work on Go I would be sufficiently motivated to give another try. But
at this point I will wait for the first signs of a Go based "Killer App" to look at it again.
mod parent up "nice bitchslap". :)
10.times do p "Ruby is it\n" end
- these are not the droids you are looking for -
Were they riding unicorns?
AdSense monitors all code comments.
Goo
Win a signed Stephen Carpenter ESP Guitar from the Deftones: http://def-tag.com/?r=0008781
You forgot LISP. THEN the rant would make sense.
TCAP-Abort
You're joking, but what you said is actually a problem. Go suffers from the same design mentality behind UNIX and C. Whether you love C or hate C, we don't need a new clone that solves none of the problems and introduces no new ideas.
There are lots of people who have designed and implemented a C-like programming language. I'm one of them. The only reason anybody even cares about Go is because of Ken's name, which is pretty surprising because his insane, short-sighted design decisions are responsible for so many software engineering problems it isn't even funny.
So imposing standards is incorrect, then?
Got any data to show that it's harmful?
XMLHttpRequest?
Freedom isn't free; its price is the well-being of others.
1) Websites. Duh.
2) Modern languages are becoming more focused on making programming easier. Sure, I could write a graphics engine in C or assembly, but it's so much easier and faster using a newer language like C#, or a newer IDE like Visual Studio (Man, how did anybody EVER program without being able to right-click go-to-definition or intellisense?). So it's not "What can't be handled by X" but more of "What can do the same thing but is easier to program than X."
3) How about portability, since you didn't put Java on the list? And yes, I know Java isn't 100% portable depending on what you are doing or if you are running certain dependencies, but which of the languages you listed is more portable than Java?
We constantly upgrade our tech to make things go faster and work easier. Honestly, you don't think that'll EVER happen with programming languages?
Who the fuck is John Gordon?
Oops, I messed up on moderating this too. That's what I get for not browsing at -1.
The point I was trying to make to the OP was that his attitude has been around probably since the second computer language was created.
Ironically, I do program in Java with a modern IDE.
"Go is not meant to innovate programming theory. It's meant to innovate programming practice."
I have done a lot of reading about Golang and have followed the community since its launch. The people involved are great, and the language is extremely straight-forward. I would put it up against any other language as a first-learned programming language. Golang is a "patterns" based language -- like javascript. This makes it EXTREMELY flexible. It is, however, very different from non-pattern based languages, such as C/C++, ruby, python, etc. Perhaps one of the reasons I have great appreciation for it is because I fell in love with javascript (the good parts), after watching the videos at: http://stackoverflow.com/questions/110371/what-javascript-tutorials-on-the-web-would-you-recommend/111177#111177
I see a lot of potential for this language. I have recently been really impressed by javascript, as a completely different approach to programming thanks to closures (I'm coming from C/C++ & Python). I think golang is everything that made javascript a huge leap forward in programming methods back in the 90s, nothing that makes it bad, and add a great multi-threading layer on top of that.
While the libraries are still lacking, that says nothing about the language itself. Libraries come over time. Though, I must say that the base libraries that the language was launched with provide enough for people to do some great stuff.
Huh? [devShell.org]
30 years ago there were enough programming languages "already". What do you need that can't be handled by COBOL, FORTRAN, Pascal, Ada, ANSI C and assembly language?
You kids and your Pascal and COBOL.
Get off my lawn!
*returns to toggling in bootloader code for reading the OS off paper tape*
I would love it if any new language tutorial didn't just print hello world to the console.
Who the hell needs to do that anymore.
Any language should be able to send an email and vaildate an email out of the box. Otherwise I'll just use Python...etc.
type erasure.
I can write a Go compiler in COBOL, a COBOL compiler in FORTRAN, a Fortran compiler in Pascal, a Pascal compiler in Ada, an Ada compiler in ANSI C, and an ANSI C compiler in assembly language. So there's nothing I need that can't be handled in ... oh, wait, I can write an assembler in a Turing machine. So there's nothing I need that can't be handled by a Turing machine. It's Turing complete! (tm) Now what do you have to say, Go boy?
3) How about portability, since you didn't put Java on the list? And yes, I know Java isn't 100% portable depending on what you are doing or if you are running certain dependencies, but which of the languages you listed is more portable than Java?
We constantly upgrade our tech to make things go faster and work easier. Honestly, you don't think that'll EVER happen with programming languages?
Almost every programming language on that list is more portable than Java.... with C being the king when it comes to portability. What Java offers (really, the JVM) is a portable runtime, which is a different beast (a property it shares with virtually (hah!) all other virtual machines.) In principle, I think it would be possible to write a C compiler that could output Java bytecode.
But the OP is missing stuff like objects support, functional programming support, generic programming support and a host of other features that that generation did not support. Then there is stuff like context free LALR grammars, dynamic typing, operator overloading and various syntactic sugar that makes things go sooo much faster when coding.
Religion is regarded by the common people as true, by the wise as false, and by rulers as useful.
I played with go quite a bit in the first week after it was released and was considering using it on an upcoming project. If they've added significant whitespace, the language is dead for me. I'm not sure they have given...
A quick search turns up this go proposal (again from Rob Pike):
That's very different than significant white space, it's simply making semicolons optional. Is it really significant white space or simply FUD based on the proposal above that everyone's up in arms about?
Personally I cannot stand languages that lock you in. Meaning that if you cannot link your program to a C system library or a Fortran math library, I won't be using it. Like Java. So how does Go work with other languages ?
Non-Linux Penguins ?
Go suffers from the same design mentality behind UNIX and C.
[ken's] insane, short-sighted design decisions are responsible for so many software engineering problems
would you care to elaborate on these points?
Most of the stuff I see "pooled" isn't memory but things like database connections, which are significantly more expensive to set up and tear down than memory objects.
You can't do that if you map each co-routine to a unique thread.
OS threads are klunky and heavy-weight - you have to state how big the stack size is in advance.
Go designers made the right decision.
I'll agree with your points, but many vehicles have wheels and motors and there is still a clear preference
I am sorry but your car analogy does not compute.
print "Python is the bestest!! OMG!!" * 1000000