The Go programming language has recently been getting some developer love. My former boss’ boss, Shopify CEO Tobias “Tobi” Lütke, tweeted on September 12th:
I have now completed two projects in Go. I predict that it’s going to be the dominant language for server work. #golang
A day after Tobi’s tweet, O’Reilly Radar posted Why We Need Go, an article featuring a video interview with Google developer, Canadian geek, co-creator of UTF-8 and one of the co-creators of Go, Rob Pike:
A couple of days after that, Jordan Orelli posted Why I Went From Python to Go (and Not Node.js) on his blog. As a Python programmer searching for a suitable way to write concurrent server-side code, he was disappointed with his options:
…concurrency is possible in Python, but it is an awkward affair that often feels bolted on, fractures the experienced Python programmers into different factions (Twisted is better! No, Tornado is better! Wait, you’re both dumb, use Brubeck!), and confuses the inexperienced Python programmers. To say that concurrency is possible in Python, but it is not idiomatic in Python, would be an understatement.
He also tried Node.js, but as he puts it, “I’m happy that the notion of concurrency is put front and center, but now parallelism feels bolted on.”
A recommendation from Patrick Crosby (former OKCupid CTO, founder of StatHat, which is built in Go) led Orelli to Go, and he writes “and I’ve never looked back.”
Why Go?
Go, a Jordan Orelli observed, has concurrency baked in. When written idiomatically, Go’s compiler creates applications that run concurrently and scale to various architectures. On single-core machines, the compiler time-slices; on multicore machines, it distributes jobs across threads.
Go features goroutines (a play of words on coroutines), which are like functions that complete asynchronously. Communications between goroutines is done explicitly via strongly-typed input and output channels that limit interactions between threads. Goroutines are also less memory-intensive than C threads by orders of magnitude, allowing your program to perform more parallel operations on the same architecture.
Go was designed to reduce the clutter that has crept into a number of programming languages with a simple syntax, lean keyword set, and the elimination of archaic things like header files, forward declarations and “stuttering” such as foo.Foo* myFoo = new(foo.Foo).
Go feels like the love-child of Python and C: high-level and rich enough so that you’re not doing so much yak-shaving, low-level enough for speed and control.
The starting place for all things Go is the Go programming language site, which features downloads for various OSs and architectures, documentation, the “Try Go” experimentation sandbox and other goodies such as this introductory video:
Addison-Wesley has a couple of books: Programming in Go and The Go Programming Language Phrasebook. I’ve got the Phrasebook, and it’s a great way for someone familiar with programming and C-syntax languages to quickly get up to speed with Go programming.
For your convenience and weekend viewing, here are videos for the recent Apple iPhone 5, Amazon Kindle Family and Nokia Lumia 920 announcements, all in one place. Enjoy!
Last night, I got this message from RT Lechow via Facebook:
“I no tech lunch” over the past few months was because I decided to go on summer vacation. Now that summer vacation’s over and I’m back at work making mobile software, it’s time to revive the monthly tech lunch. Ladies and gentlemen, I present to you the return of…
…the Toronto Techie Dim Sum! Here are the details:
When: Wednesday, September 19th, from noon until about 1:30 p.m.. Sometimes we get really deep into a conversational topic.
How much: We split the bill evenly, and no matter how much we’ve managed to gorge ourselves, I’ve never seen it go higher that $12 a person.
Why: Because I love doing the community-building thing and want to catch up with all of you.
As always, this is just a lunch gathering of Toronto-area people who either work in tech, hang out with people who work in tech, or who just simply like tech and techies. There’s no agenda, no set topics, no presentations – just good people, good conversation and good (and inexpensive) food.
Once again, you don’t have to be a developer to attend! If you take part in the activity of writing software, building web sites or cobbling together technologies, or if you just like hanging out with the very nice people who comprise Toronto’s active and vibrant tech scene, you’re more than welcome to join us for lunch!
…they’re holding the Visual Studio 2012 Virtual Launch from 12:30 p.m. to 3:30 p.m. Eastern/UTC-4 today, Wednesday, September 12th, 2012.
That’s right: they’re holding it at about the same time as the iPhone 5 keynote scheduled to start at 1:00 p.m. Eastern/UTC-4. There’s a fine line between chutzpah and masochism, and the folks at Redmond are downing a 40 of malt liquor and driving a Big Wheel all over it.
Microsoft announced the date for this event before Apple announced the date for theirs. Still, the Visual Studio 2012 Virtual Launch is an online event (not counting the “studio audience”) and could’ve easily been moved. I suppose that Microsoft weighed their options and thought “either we move the event and tacitly admit that Apple is now controlling our schedule or we keep the date and hope that our audience cares more about developer tools than the new iPhone and iOS and prefer a live-streamed video of our launch over liveblogs of the Apple event”.
The silver lining in the double-booking is that the iPhone event is drawing away enough people to guarantee that the video feed of the Visual Studio launch’s streaming video is smooth as silk.
This photo reminds of a time when I was working at Microsoft and rather dismayed that the big Indigo bookstore at the Eaton Centre filed all the Windows 7 books under “Computing for Seniors” and all the iOS books under “New and Hot”.