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...
I will care about Go when they get it.
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".
I'd totally forgotten about it. Has anyone ever gotten paid to write code in Go?
Must be able to coordinate efforts with multiple teams in self-directed manner.
8 years with one or more of the following languages: Go, Swift, Dart, Erlang
Be able to explain the most influential sorting algorithms in your life.
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?
Go was created in 2003, which by my reckoning, means it's 11 years old.
Am I in some kind of a time warp here?
http://en.wikipedia.org/wiki/Go!_(programming_language)
"low-latency garbage collector"
Well, that ends my interest right there. No language should be doing anything I didn't tell it to do. Ever.
bzzzt,