Archive for the ‘Go’ Category
This confuses lots of people, including most recently Todd Hoff of HighScalability fame, who wrote in last week’s summary post,
Have to say, this distinction has never made sense to me: Concurrency is not parallelism: concurrency is the composition of independently executing processes, while parallelism is the simultaneous execution of (possibly related) computations. Concurrency is about dealing with lots of things at once. Parallelism is about doing lots of things at once.
I think the problem is that words are hard to understand. The Go blog post is confusing because of that. Pictures are easier. Look, a single-threaded, non-parallel, concurrent process:
Lots of tasks can run on the system, but only one of them makes progress at a time. And here’s one that’s both concurrent and parallel:
Hopefully that clears things up.
I’m scheduled to talk about Go a couple times in the upcoming weeks.
The first is May 4th in Arlington at A Day Of Foster.ly. I’ll be a participant in a panel titled Add To Your Programming Toolkit: Languages You Should Know About (Erlang, Clojure, R, Go, etc…). I’m talking about Go, naturally.
The second May 7th is at my local technology guild, the Neon Guild. I’m going to be giving a “gentle introduction” to Go. I’ve been programming in Go for less than a year, so my first impressions are still fresh. If you are in the Charlottesville area and you haven’t been to a Neon Guild meeting, do yourself a favor and show up. It’s free and no RSVP is required. Description:
It seems that every time I tell someone we’ve chosen Go as our primary language at VividCortex, they respond with something like “I’ve heard about Go! Neat! What is it like? Why did you choose it? Are you happy with it?” The answer is that Go is a fascinating language that’s working great for us. After many years of programming in everything from C to Java to C# to Perl to LISP to Shell, I’m pretty much in love with Go. There are particular reasons I chose it for our special use case, but beyond just niche considerations, it’s working great as a general-purpose, high-performance, very productive systems language. I’ll try to contain my enthusiasm and tell a story about evaluating it, learning it, and then learning it more deeply.
I hope to see you at one of these events. If you see me, wave and introduce yourself, and give me a business card so I can
stalk connect with you on LinkedIn!
Last night at the Golang-DC meetup I spoke about building (MySQL) database applications with Go. The meetup was well attended and people were very enthusiastic about Go. I spent a few minutes talking about Go in general, how VividCortex uses Go (we’ve built our agents, API servers, and all backend processes with Go), why we like it, some of the nice things it enables like making it easy to build very resilient programs, and then I gave the presentation, which I’ve embedded below.
Afterwards the discussion ranged to a lot of related topics. This was the best part of the evening for me. There were really great questions on a variety of topics, and insightful answers from everyone.