Rob Pike has certainly been places and done things. In the early 1980s, he worked with Brian Kernighan and Ken Thompson at Bell Labs, where he co-wrote “The Unix Programming Environment” with Kernighan and co-developed the UTF-8 character encoding standard with Thompson. Pike is now a principal engineer at Google, where he’s co-developed Go, a new programming language. Pike, who will discuss Go at next month’s OSCON convention, talks about Go’s development and the current state of programming languages in the following interview.
What were the motivations for creating Go?
Rob Pike: A couple of years ago, several of us at Google became a little frustrated with the software development process, and particularly using C++ to write large server software. We found that the binaries tended to be much too big. They took too long to compile. And the language itself, which is pretty much the main system software language in the world right now, is a very old language. A lot of the ideas and changes in hardware that have come about in the last couple of decades haven’t had a chance to influence C++. So we sat down with a clean sheet of paper and tried to design a language that would solve the problems that we have: we need to build software quickly, have it run well on modern multi-core hardware and in a network environment, and be a pleasure to use.
Although we targeted Go for a particular kind of problem, it turned out to be a much more general and adaptable programming language than we had thought. So we’re using it for a lot of different things now. I think it might have an interesting future in any number of directions.
What’s it like to program in Go?
Does Go have a robust development environment?
RP: We have an interesting set of tools now that play with the language. One of the standard libraries that comes with the distribution is a complete parser. So depending on how difficult the problem is, you can write your own tool and maybe a page of code with the existing libraries.
There’s tools that let you link in existing libraries. With large packages like OpenGL or something like that, you’re much better off just linking against existing ones. We can do that with our wrapper tool, and there’s SWIG support so we can link against C++. But the fundamental libraries are all written in Go.
Does the world need another programming language?
How does Google compare to Bell Labs?
RP: A lot has changed in both worlds. When I worked at Bell Labs, we were doing much more research-driven, publication-oriented stuff. To a large extent, the company did not understand open source. When I came to Google, it was a very different orientation. We were definitely a company trying to make things happen. And at least a little later, open source became a fundamental part of the corporate culture. So they’re very different in that regard.
As far as day-to-day work goes, I think they have a lot in common. They’re both exciting places to work and they have a lot of smart people. But culturally, there’s a difference between a telecommunications company and an Internet company. They’re fundamentally different things.
This interview was edited and condensed.