Five Years of the Go Programming Language
omar.sahal writes Go celebrates five years of its existence with this blog post recapping a little history, future and some philosophy. "Five years ago we launched the Go project. It seems like only yesterday that we were preparing the initial public release: our website was a lovely shade of yellow, we were calling Go a 'systems language,' and you had to terminate statements with a semicolon and write Makefiles to build your code. We had no idea how Go would be received. Would people share our vision and goals? Would people find Go useful?" The Go programming language has grown to find its own niche in the cloud computing word, having been used to code Docker and the Kubernetes projects. The developers also announced details of further projects to be released, such as a new low-latency garbage collector and support for running Go on mobile devices.
Call HR. The candidates are not liars anymore.
For all intensive purposes, "whom" is no longer a word. That begs the question, "who cares"?
Go was developed in large part by Rob Pike who has a long history of concucrrency programming going back to Plan 9 from Bell Labs and earlier.
Some of his more interesting papers about concurrency are:
http://swtch.com/~rsc/thread/n... (The Newsqueak Programming Language)
http://swtch.com/~rsc/thread/n... (Newsqueak Implementation)
https://www.usenix.org/legacy/... (A Concurrent Window System)
You can even see some hints of what was to come in his paper outlining the design of the Blit terminal for Unix:
http://doc.cat-v.org/bell_labs...
...but it's being eaten...by some...Linux or something...
Do they explain why their mascot is a flying, startled, anthropomorphic burrito?
Unity? Screw that: XFCE. Slashdot Beta? Screw that: SoylentNews. Australis? Screw that: Pale Moon. UX developers DIAF
The Japanese word for 5 is "go".
Can anyone name a large (non-Google) project written in Go?
It says right in the summary. Docker is one of them. Here's a few others: Doozer(Heroku) DropBox backend services CloudFlare SoundCloud BBC uses it pretty extensively etc....etc
"Some books contain the machinery required to create and sustain universes."-Tycho
What's that in English?
Oh, I'm sorry sir, I thought you were referring to me, Mr. Wensleydale.
Docker? (http://www.docker.com)
So that's one, then, from several replies. And pretty much the only project suggested.
Not a great endorsement.
Next question: Could someone have written Docker in other languages just as easily?
Language bindings still broken on Mac OS.
It's not that surprising, since they implement their own system call stubs, rather than linking the Go runtime against the system C language bindings.
The definition of the system call boundary on Mac OS X is "at the top of libSystem", *NOT* at the user/kernel boundary.
As a consequence, the language bindings used by Go omit information and parameters needed by the actual system calls.
For example, the "kill" system call on Mac OS X takes 3 parameters, while the "kill" libSystem routine is POSIX compliant, and takes two parameters. The third parameter is used to provide a behavioural hint to the OS as to whether you want traditional Mac OS X behaviour, or whether you want strict POSIX behaviour. One of these places is where a signal is sent to a process group of which the sender is a member (done by using a negative PID to indicate via the sign bit that the PID is actually a PGROUP).
What that means is that whatever the hell happens to be in the third parameter register determines whether sending a kill to your own PGROUP also sends the kill to yourself (POSIX) or you sit around on your thumb waiting for a kill that's never going to come, because you wrote to the POSIX behaviour, but selected the traditional Mac OS X behaviour instead.
There are about 40 of these "gotcha's" in the Go use of direct system call bindings that the Go developers failed to take into account on Mac OS X; I can only believe that there are similar issues on other platforms (mostly because I know of two of those issues on BSD platforms).
It's pretty much a given that composite APIS that use descriptors to avoid changing the user visible implementation underlying the upper level code (based on a contract change between the C library and the kernel, without a contract change between the C library and the application) also fall into that category. This includes most of the pthread_attr_t using/providing APIs, posix_spawn, POSIX semaphores, and so on.
I have a great deal of respect for Rob Pike as a language designer, but I have to say, the way language bindings have been handled in Go is pretty abysmal.
On the client side, we really need a bytecode standard that will allow developers to choose from multiple language "frontends". That would take the major browser makers coming together on this like they did for HTML5.
On the backend, we have dozens of VMs to choose from. What does Go bring that Java and JVM target languages, Ruby, Python, etc does not already give us?
Docker was the obvious suggestion, since it's right there in the article.
Here is a list of some projects written in Go: http://code.google.com/p/go-wi... . A few are Google projects. Most are not.
> Could someone have written Docker in other languages just as easily?
I don't know, you'll have to ask the Docker authors. You could start at http://www.slideshare.net/jpet... .
and the list goes on and on with startups (http://blog.iron.io/2013/03/how-we-went-from-30-servers-to-2-go.html) and big names (https://github.com/dropbox/godropbox https://github.com/facebookgo) alike. Just google for more or explore github.
Tons. I don't really need to trot out some project names for you, do I? But what I can point to: do google search on variations of "google code", "google projects", "google api", search for various apis on github, and you may be startled by the number of those projects that are written, some times in part but often whoally, in C++.
Python: 'And then suddenly you have a language which says "we're all stuck with whatever the whiniest coder wants".'
There's Go! and there's Go
Seems pretty obvious to me :P.
Goodbye Slashdot. You've changed.
polyforphism? seriously?
CLI paste? paste.pr0.tips!
Go, not to be confused with Go!
"No man's life, liberty, or property are safe while the legislature is in session." -- Judge Gideon J. Tucker
If that's your point, you might want to get off your operating system as well. That thing is doing all kinds of stuff while running your program that you didn't tell it to do, leading to all kinds of unexpected behavior.
I am so old, over the hill! So out of it! Completely fell off the wagon when it comes to shiny new things.
I don't even know about monoforphism!
Rust? No GC with safety.