“Systems programming” is a category of programming that requires high speed, demanded by such applications as operating systems, network servers, and databases. For many years, and even today, C is the go-to programming language for such work — but over the years, a growing number of other languages have been joining this space, most notably C++, and more recently D, Go, and Rust. What do each of these languages have to offer, and what do the languages’ designers prioritize in their designs? This panel brings together Bjarne Stroustrup (C++), Rob Pike (Go), Andrei Alexandrescu (D), and Niko Matsakis (Rust) to discuss what they think about programming languages, language design, community, and future directions.
The Go language has become extremely popular in the last few years. This highly parallel, open-source language sponsored by Google is a systems language, meaning that it’s meant to be used for high-performance operations where C and C++ currently rule. As Go has matured, developers have found that certain practices make it easier to write and maintain their programs. In this talk, Rob Pike proposes a number of “Go Proverbs,” which should help to instruct, direct, and influence developers as they go about designing and implementing their software in Go.
The Go language continues to rise in popularity. What is it about Go that makes it popular? And why should you consider it for your upcoming projects? In this talk, Thomas Wilde introduces the language, starting with its origins and motivations, and moving into basic syntax and some of Go’s most famous features, such as goroutines. If you have always been curious about Go, but haven’t had a chance to learn it, this talk is a good introduction to the language, and where it might be useful in your projects.
Go (aka Golang) is a relatively new programming language from Google that bridges the gap, in some ways, between high-level languages (e.g., Python) and low-level languages (e.g., C). It is highly concurrent, cross platform, and compiles into fast-executing code. Now that Go has been used for a while in production, it’s time to ask: What is using it like? Where does it shine? And where does it not? In this talk, Vincent Batts reviews his experience using Golang on a number of projects, and describes what he believes to be the language’s advantages and disadvantages.
Two different technologies have growing mindshare when it comes to high-performance Web applications: node.js and the Go language. How do these compare, in terms of development, community, and performance? What happens when a company decides to move from node.js to Go? Is it a clear win? If not, what are the trade-offs? In this talk, Kelsey Falter describes the decision-making process that she and her company went through in making such a transition. She provides an interesting comparison between node.js and Golang, and how a company might decide between the two.
Go is an open-source systems language that has gotten a great deal of attention for the ease with which it lets you create concurrent services, and especially network services. In this talk, Mark Smith demonstrates how to create a network service in Go, using Go’s patterns such as goroutines and channels. If you’re interested in creating network services that can scale massively, or just in how Go works, this talk will likely be of interest to you.
Android is (as we all know) a major mobile platform. To date, virtually all Android programs have been written in a version of Java. However, it is now starting to be possible to write Android programs using Go. Go was designed to be a new, compiled system programming language, meant to replace C for many modern tasks. If you are interested in Go, Android, or both, then it’s worth learning about this new direction in which the mobile application world may be moving.
Mark Bates introduces the Go language to a community of Ruby programmers, pointing to the reasons why many Rubyists are using Go in high-performance situations.