Profile

Cover photo
Rob Pike
2,344,084 views
AboutPostsPhotosYouTube

Stream

Rob Pike

Shared publicly  - 
 
 
I've lived enough of life to know this paper saved my career.   Pragmatic industrial languages like Go come along once in a half generation or less.  I'm glad it came my way.

http://talks.golang.org/2012/splash.article
Abstract. (This is a modified version of the keynote talk given by Rob Pike at the SPLASH 2012 conference in Tucson, Arizona, on October 25, 2012.) The Go programming language was conceived in late 2007 as an answer to some of the problems we were seeing developing software infrastructure at ...
5 comments on original post
107
28
William Beegle's profile photoMykola Aleshchanov's profile photoTamer Fahmy's profile photoAswini S's profile photo
10 comments
 
+Chapi Chapo I am a hardcore Haskell programmer and general programming languages enthusiast and researcher. Yet I think Go has a lot to offer despite not being a product of the POPL community. I read and review lots of code in many languages every day for my job -- and I am startled at how much easier I find Go code reviews compared to other languages (even Haskell --- which I have coded in more than any other language as the first Glasgweigan Glasgow Haskell Compiler user).  And it is not just Google. I work on a daily basis with systems like Docker that are written in Go as are a growing number of infrastructure/web systems. I think it is too easy to dismiss Go features like fast compilation and readability -- but in real life -- I think they make a big difference. Happy to discuss further offline. satnam@raintown.org
Add a comment...

Rob Pike

Shared publicly  - 
 
 
Gophers, propping up infrastructure at the New York Times.

As they use Go for data processing, they invited me to give a talk on how we use Go extensively when writing MapReduces at Google. +Sameer Ajmani and +Brad Fitzpatrick came along for Q&A. Excellent audience.
1 comment on original post
80
3
Frederick Kautz's profile photoDomenico Chierico's profile photoYuheng Kuang's profile photojing mi's profile photo
3 comments
 
+David Crawshaw +Rob Pike Is there a recording online?
Add a comment...

Rob Pike

Shared publicly  - 
 
In this post by +Brett Slatkin, he talks about the orthogonality of features in Go (he calls it "emergent behavior", which is the wrong term). Orthogonality of features in a programming language is hard to achieve, and we worked hard to achieve it, so I'm glad he appreciates that.

I was struck, though, by this comment from John Haugeland:

"Gasp! A bunch of stuff you can do in most languages, and a misunderstanding of what emergent behavior is, presented by an author who doesn't realize this is all old hat. Truly, that is the power of go."

He means this a snide dig, of course, but it's true. It is old hat. The thing is, he doesn't appreciate that the service he's using to write that comment is written by programmers, not as facile in some of the more abstract languages and mathematical notions as he is, for which these ideas are not old hat. And making these (and other) ideas available to working programmers as opposed to programming language researchers is indeed the "power of go". And that, too was deliberate.

So I accept his barb, and acknowledge it with a smile.

Gophercon was awesome, by the way.
 
I just got back from Gophercon and had a great time. One of my favorite sessions was Q&A with the Go team. Rob, Andrew, Brad, and Robert took questions from the audience for an hour. By far the best question was "What was the first thing you saw in Go that surprised you?" Here is what I learned.
What was the first thing you saw in Go that surprised you?
9 comments on original post
111
9
Ramon Hernandez's profile photoMatt Dragon's profile photoJeff Hall's profile photoDenis Baudinot's profile photo
14 comments
 
Orthogonality in PL design goes all the way back to Algol 68 (and possibly earlier): http://en.wikipedia.org/wiki/Orthogonality#Computer_science . van Wijngaarden's description in that article is very succinct and describes the philosophy behind the Go design perfectly.

The same article describes what is meant with "emergent behavior" resulting from (in our case) orthogonal base properties.

(I see little connection with "supervenience").
Add a comment...

Rob Pike

Shared publicly  - 
 
 
"Thanks for the security system!"

"This is my new roommate Cleo with her nemesis the gopher, aka the most useful thing anyone has ever given me. Cleo likes to chew everything, especially shoes and the contents of my nightstand, but for some reason she's terrified of the gopher.  So now the gopher lives in the nightstand, standing guard."
3 comments on original post
50
3
Michael Lausch's profile photoJeff Aigner's profile photo

Rob Pike

Shared publicly  - 
 
Comments on the original.
 
How to make user-level profiling work on a Mac. Comments here appear on the blog post.
My last post described how user-level CPU profilers work, and specifically how Google's pprof profiler gathers its CPU profiles with the help of the operating system. The specific feature needed from the operating system is the profiling timer provided by setitimer(2) and the SIGPROF signals ...
18 comments on original post
29
8
Marwan Burelle's profile photoDonald Lee's profile photo

Rob Pike

Shared publicly  - 
 
Comments on the original.
 
The internals of Google's pprof CPU Profiler (for C++ and Go). Comments here appear on the blog post.
When I spent a summer as a Google intern in 2006, one of the many pleasant surprises was Google's pprof tool, which makes profiling a C++ program's CPU and memory usage incredibly easy. It had already been open sourced, and when I returned to grad school, I incorporated pprof into my standard ...
18 comments on original post
37
10
Janarthanam Ramalingam's profile photoMichael Lausch's profile photo

Rob Pike

Shared publicly  - 
 
Sun in H-α during the eclipse. The sunspot was a real bonus. Nice filaments too. Prettiest partial eclipse I've ever seen.

The image is monochrome; I added color just for effect.
240
23
David Eilers's profile photoNicola Del Gobbo's profile photoJames Sanford's profile photoArlene Mahood's profile photo
15 comments
Add a comment...

Rob Pike

Shared publicly  - 
33

Rob Pike

Shared publicly  - 
 
 
(Public post)

I probably shouldn't worry about this as much as I do. +Rob Pike
132
8
Mike Mok's profile photoHai Thanh Nguyen's profile photo

Rob Pike

Shared publicly  - 
 
While searching my archives for a very very old document, I found a very old document, a "Research Statement" from 2002, written as part of the hellish requirements of searching for a job.

Here's an excerpt that seems as relevant today as it was a decade ago when I wrote it:


"Through my research since the early 1980s I have become a firm believer in the power of concurrent programming for the writing of system software. Modern systems run in a world that includes networks, multiple input and output streams, graphical devices, and user interfaces, and that world is well modeled as a set of independently executing, communicating processes. The best way to connect to that model is by expressing the control software the same way. Hoare's CSP was a good starting point for this way of thinking; I have worked (along with many others) at applying Hoare's ideas to systems programming. But too much of the public discussion of concurrency focuses on the precise definition of processes and threads, when the critical aspect is how those processes communicate. Get the communication model right and problems of synchronization, deadlock, and even overall design become not only tractable but easy. Approached properly, concurrency is not a problem to be overcome, but rather a clean and productive approach to the writing of software."
290
36
Jesús Gómez's profile photoAkshat Aranya's profile photoionut jula's profile photoCraig Naylor's profile photo
14 comments
 
+Jesús Gómez
+Rob Pike Right. Maybe he can write one. :)
Add a comment...

Rob Pike

Shared publicly  - 
 
Stumbled on this Go code I wrote ages ago. It's an interesting use of the String method. (To see it in action, visit http://play.golang.org/p/MX7eFmtHh_)


// tab indents itself when printed.
type tab int

func (t tab) String() string {
  n := int(t)
  if n > len(tabs) {
    n = len(tabs)
  }
  return tabs[0:n]
}
66
14
milos chmel's profile photoKishore Balakrishnan's profile photoDavid Cheney's profile photoBrian Nelson's profile photo
3 comments
 
That's pretty clever. Maybe a little too clever.
Add a comment...
Basic Information
Gender
Male
Links
YouTube