Hacker News new | past | comments | ask | show | jobs | submit login
Interview with Ken Thompson - on writing Unix, Go language and Dennis Ritchie (drdobbs.com)
68 points by jemeshsu on May 19, 2011 | hide | past | web | favorite | 19 comments

My favorite quote, regarding Go: "When the three of us [Thompson, Rob Pike, and Robert Griesemer] got started, it was pure research. The three of us got together and decided that we hated C++."

That's not surprising. Even among its adherents, C++ evokes a love-hate relationship. I really don't like the language, but reading Stroustrup's "The C++ Programming Language" and Josuttis's "The C++ Standard Library", I have to say that I can respect what they have done.

And when you read something like "Effective C++", you learn to appreciate (or pity) developers who have to keep that much information in their heads in order to code. I personally gave up on it years ago and went over to C, but I like to keep up-to-date with what is going on in that world.

I found this interesting (regarding Go): "we started off with the idea that all three of us had to be talked into every feature in the language, so there was no extraneous garbage put into the language for any reason".

As a fan of minimalism over complexity, I like the idea, but I can't help but wonder if three of the world's best programmers are the best qualified to decide what programmers in general need. For example, if you can dash off a correct, performant, and theoretically sound version of a data structure in a couple dozen lines of code and 15 minutes, I bet generics seem much less useful.

However, I do prefer that to designing to the lowest common denominator.

The older I am the more I come to the conclusion that best programmers aren't those who can bang out complex code, but those who can find a reasonably simple way to implement even complex concepts. This does not work all the time, but mostly when I start to write "heroic" code I simply back up and try to find what I am doing wrong. Maybe this is the case with the authors of Go.

Keeping things simple is hard. It takes a willingness to admit your mistakes and the time to go back and correct them.

If you want something to last, you've got to fight to keep it from rotting under the weight of its own design. The less design, the more easily it can adapt to change.

Ingrained in the Go project is the philosophy that things are always worth fixing, no matter how small. I don't think the value of this idea can be overstated.

Ken Thompson wrote Dennis Ritchie? I didn't realize he was that good a hacker.

So they named their early IM program "writ", but pronounced it "write". These are also the people that named the file creation system call "creat" instead of "create".

Could the next person who interviews Ken please ask him what he has against ending words with "e"? I wonder if there is an interesting story behind that.

Ken Thompson was once asked what he would do differently if he were redesigning the UNIX system.

His reply: "I'd spell creat with an e."

-- http://en.wikiquote.org/wiki/Kenneth_Thompson#Attributed

He got his chance with Go... when he added the O_CREATE symbol (an alias for O_CREAT) his comment was:

spell it with an "e"

-- http://code.google.com/p/go/source/detail?r=4a3f6bbb5f0c6021...

And then, recently, we removed O_CREAT from Go entirely! :-)


hell yeah. go is the next C

Haha, good job!

The last sentence of the interview "Google makes us do that" is very interesting. It's not that Ken is convinced it is a good idea, it is that Google is forcing him to do it. Google knows best after all, implied is that Ken is nobody so special that he can decide how he himself works best.

The original Plan 9 file server, kenfs, is a kind of versioning system. He must have thought it was a good idea at the time.

For anyone interested: The Plan 9 File Server by Ken Thompson: http://doc.cat-v.org/plan_9/2nd_edition/papers/fs

(Geoff Collyer later added 64bit support: http://doc.cat-v.org/plan_9/2nd_edition/papers/fs and eventually Bell Labs replaced kenfs with Fossil: http://doc.cat-v.org/plan_9/4th_edition/papers/fossil/ although some members of the Plan 9 community still prefer the simplicity of kenfs)

I wouldn't take it that way. It's more that it would be insane to work on shared code with thousands of engineers without version control. At Bell there were far fewer programmers, so keeping track of changes would be much more straightforward.

I agree that version control is nearly essential. But Ken's phrasing was not "Well of course I use SCM for everything." it's "Google is making me." The way he said it, even in jest, suggests a bit of resentment and a feeling that it's not something he feels is best for this project for some reason.

A giant amongst men.

Absolutely. Compare and contrast with http://news.ycombinator.com/item?id=2560879

Registration is open for Startup School 2019. Classes start July 22nd.

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact