7 ms·
An Introduction to the Go Language
- kmicklas 13y agoThe really sad thing about Go is that it actually is mostly better than its (non-obscure) competitors. I am disappointed in Google because they could have done so much better. All the problems in Go are basically "solved" problems. They just chose to take the "New Jersey" approach. This article summarizes the situation pretty well: http://monoc.mo.funpic.de/go-rant/ http://monoc.mo.funpic.de/go-rant/
- jff 13y agoDo you know the origin of the name, "New Jersey approach"? It was these guys. These guys invented the New Jersey approach. Go is the result of 40 years of OS and programming language work primarily done at Bell Labs in Murray Hill.
- UbuntuJon 13y agoFunny that the link to Java page on Wikipedia is for the Indonesian Island :)
- Baustin 13y agoAhhh damn! I mean... you've found the Easter Egg, congratulations! [Fixed the link]
- david927 13y agoTo paraphrase Alan Kay: Go makes you think that the new ideas are like the old ones. Go is the most distressing thing to hit computing since Java.
- pekk 13y agoWhy is Go "distressing"? If you don't like it, you don't have to use it?
- jacobparker 13y agoFor anyone that doesn't know the original quote: Java is the most distressing thing to happen to computing since MS-DOS. — Alan Kay (I'm not sure if this is a real quote, but you can see it here: http://harmful.cat-v.org/software/java http://harmful.cat-v.org/software/java . There is a different unverified version here: http://c2.com/cgi/wiki?AlanKayQuotes http://c2.com/cgi/wiki?AlanKayQuotes )
- throwit1979 13y agoMy understanding is that Go haters take issue with three things: - Lack of generics (this will be resolved in the future) - nil exists - interface{} is a *void style type safety loophole These are all very minor issues, but the Go haters just love to harp on them. 99% of the time, I find they hold up ml-style languages as some sort of Holy Perfection. (lulz)
- lucian1900 13y agoThose three flaws are brought up repeatedly because they are a sad regression from the current state of the art in programming language construction. It could've been a much nicer language with very little effort, but its designers chose not to do so.
- jerf 13y agoIt's not that nil exists... it that it exists everywhere (on the types that support it), with no way of restricting it. It's actually the one criticism I find the most frustrating because, unlike generics and unlike interface{} (which is sort of a repeat of the generic complaint, that's an effect), it's so easy to fix that during the initial design, and it would not have profoundly affected the rest of the language. In fact it could still be bolted on after the fact, it's that easy and low-impact. That not all types support nil in Go is itself an interesting point; zero types are better than nil, so why didn't we propagate the idea that is already in Go through the language consistently, and not let anything be nil unless we explicitly request it in the type? With most of the rest of the criticisms it's not necessarily clear how to fix Go (that is, it may be fixable but there's no one obvious solution that just works), but that's not the case for non-nullable types. They were always possible, have been for decades, and there's just no reason not to have them and use them as much as possible in the standard lib. Also, I'm not a hater... unless your definition of "hater" is "doesn't like every last detail about Go", in which case, sure, under that degenerate definition I'm a "hater". You really shouldn't sling that term around in a preemptive attempt to marginalize your opponent like that, for a topic like programming languages. Save it for politics. ("Programming languages ARE politics." Well, they shouldn't be. Don't fall into that trap.)
- lelf 13y agoBoldly Going Where No Man Has Ever Gone Before Eh.. where?
- happy_dino 13y agoI agree. These absurd claims are increasingly disturbing. Seems like a lot of Go fans have lost touch with reality.
- deleted 13y ago[deleted]
- jff 13y agoIt's a (rather poor) take on the name "Go". Boldly GOing. But by all means, ascribe it to some mental failing of Go programmers, any more so than say Scala programmers.
- happy_dino 13y agoAt least I'm acting better than people who think they need to stalk my comment history before replying. And, no, not all communities are behaving like Go fans do.
- tux1968 13y agoIt was just a play on words... not meant to be taken literally or seriously.
- iand 13y agoBizarre that the HN audience are self selecting articles like these with their upvotes. How many more introductory blog posts on Go do we need?
- Jabbles 13y agoIndeed. Go is awesome, but this article is not. If you seek to learn more about Go, try http://tour.golang.org/#1 http://tour.golang.org/#1
- Baustin 13y agoThis article may not be as interactive as the tour, but I do think it's still a good introduction to the language, written by a Google employee.
- trailfox 13y agoArticles with titles containing 'Go' seem to get upvotes simply for including the magic word.
- pjmlp 13y agoSpecially if they tend to ignore most Go features were already available in the Pascal/Modula/Oberon language family. They might be new features for all script kids seeing a strong typed compiled language for the first time, but for us old timers, it is a repeating deja-vu.
- coldtea 13y ago>Specially if they tend to ignore most Go features were already available in the Pascal/Modula/Oberon language family. OK, Go is not Oberon/Modula, we got it already man!
- gnur 13y agoGo is one of the least exciting languages introduced in recent years but is still one of the more popular languages. I think that it really is a selling point how boring go is, there are no quirks, no unexpected side effects, no amazing flexibility and when something compiles, it very often does exactly what you wanted it to do. With php and python I always felt very clever for doing some things in amazing ways. With Go I never have that feeling, but when I look at the code I imagine that the developers of Go themselves were extremely clever, I can make concurrent programs with little extra effort. What's going on in the compiler, I don't know (and probably don't want to know), but it is one heck of a language for it. Event-based programming without all the callbacks and event loops.
- dons 13y ago> no unexpected side effects No one ever expects the side effects
- deleted 13y ago[deleted]
- hntester123 13y agoYour comment reminds me of Google search, which is also quite simple in front (the UI/usage) and very complex under the hood.
- chrismorgan 13y ago> In fact, Go is probably the only language that can claim to have a fully working Web server as part of its standard library. Seriously? Python has SimpleHTTPServer to serve a directory plus the associated, less-well-known modules BaseHTTPServer (which SimpleHTTPServer is based on) and CGIHTTPServer, and wsgiref as the reference implementation of the WSGI interface, which makes it a fully-fledged web server. And I find it impossible to believe that there would not be many more languages with a web server in their standard libraries.
- dragonwriter 13y ago> > In fact, Go is probably the only language that can claim to have a fully working Web server as part of its standard library. > Python has SimpleHTTPServer And Ruby has WEBrick. Erlang comes with one in the standard inets library. Racket has one, too, in the standard distribution (it doesn't actually use, that I am aware of, the "standard library" name, and given the structure of the documentation one might argue that the web server is outside of the standard library, but I'm not sure that is a significant distinction.) Web servers as part of the standard library or distribution are pretty common for languages these days.
- unoti 13y agoYou're right of course, but it bears mentioning that the way the Python web server is implemented, it cannot handle any significant load. It's not a "real" web server in the sense that it'd generally be a bad idea to try to use it for real work.
- trailfox 13y agoRuby has http://en.wikipedia.org/wiki/WEBrick http://en.wikipedia.org/wiki/WEBrick
- netghost 13y agoAnd Node most of of Node's standard lib is for its web server. Otherwise the articles more or less on point.
- matart 13y ago
- human_error 13y ago> Go has a rich standard library which covers a lot of areas. The last time I've looked at it there wasn't queue, deque, stack libraries in standard library. There wasn't even a UUID library. I'm not sure if it has these libraries in 1.1. > In fact, Go is probably the only language that can claim to have a fully working Web server as part of its standard library. Python has a built-in HTTP server (including a CGI one too). > Go has built-in concurrency, which allows parallelism in an easier way than is possible in other languages. How does Go make it easier than those unnamed languages? Go didn't even have race detection tool until 1.1.
- tptacek 13y agoPython's built-in HTTP server isn't well-suited for production apps. Golang's HTTP server is the production standard. That's not an apples-apples comparison. Ruby and Python "have" stacks, queues, and (in Python's case) deques, but they're rarely used, because, like Golang, they have a flexible variable-length array ADT and a table ADT. Golang has lists and rings, along with slices and maps, which capture "queue" and "stack" easily. More importantly, unlike Python and Ruby, Golang provides direct control over memory layout and a safe pointer abstraction; it's much better suited to building fussy data structure libraries than Ruby or Python. I'm not sure I'd choose a language based on the richness of its UUID libraries. It's funny to critique a language for "not even having" a tool that few other development environments have "until 1.1".
- gnuvince 13y ago> Ruby and Python "have" stacks, queues, and (in Python's case) deques, but they're rarely used, because, like Golang, they have a flexible variable-length array ADT and a table ADT. When all you have is a hammer...
- tptacek 13y agoThe reality is that Python lists usually work as serviceable queues and stacks. Criticizing a language for not having a standard queue or stack is a little weird.