Live data from Hacker News

Rob Pike interview

evrone.com

61–70 of 273 posts

Re: Rob Pike interview

#61
post #27

This sounds like him trying to do PR to get everyone thinking everyone else is already doing it so they try to catch up. Act like something is true to make it true when everyone jumps on the bandwagon.

I disagree. I've noticed that a lot of infra tools that would have been written in Python 5 years ago are now in Go. I know Docker is written in Go, and I believe the Kubernetes ecosystem uses it heavily, so those are compelling evidence for Pike's argument by themselves.

And I know many small and medium level go projects being rewritten in rust. Maybe rust is the future.

Deno comes to mind.

Re: Rob Pike interview

#62
post #45

Really? Outside Google, I'm not aware of major orgs that use GO. I see the same .net C# stack, python, Ruby...... Java and PHP.

How hard are you looking? Facebook, Dropbox, Uber, Apple and literally thousands of other companies, big and small, use Go.

What people want to know is the trajectory of current relationship that a company has with a technology, otherwise I'll tell you that Facebook is a Haskell company and Amazon is a TLA+ company.

Re: Rob Pike interview

#63
post #26

I have huge respect for Rob Pike but there's a bit of revisionist history going on here. Go was originally envisioned as a systems programming language. It was often called "a better C". This exposed Rob Pike's lack of experience in the area (IMHO) because anyone who had done any systems programming at all knew that garbage collection made any systems language a nonstarter. Where Go succeeded was completely unintenti…

> it was (and is, IMHO) a better Python

Also a better NodeJS and PHP.

Re: Rob Pike interview

#64
post #43
post #35

Earlier quoted context omitted.

> Go was originally envisioned as a systems programming language. It was often called "a better C". This exposed Rob Pike's lack of experience in the area (IMHO) because anyone who had done any systems programming at all knew that garbage collection made any systems language a nonstarter. Yeah, Rob Pike and Brian Kernighan definitely lacked experience in C and systems programming.

AFAIK Brian Kernighan was never involved with the development of Go. He just likes to try new things and wrote a book about it. Rob Pike is probably most famous for his involvement in Plan9 (prior to this). I honestly don't know what this experience entailed.

Kernighan helped write Unix and Plan 9, literally wrote the book on C, and is the "K" in awk, among other achievements.

Rob Pike worked on Unix, helped design and implement Plan 9 and Inferno, and co-designed UTF-8.

Re: Rob Pike interview

#65
post #12

Earlier quoted context omitted.

Reasonably high. There is a good deal of frustration with Go from experienced programmers that worked with it for several years and grew tired of the tedium involved. Rust has some obstacles to overcome to supplant Go on a wider scale though. Namely compile time and learning curve - especially in relation to concurrency and async which are key features to replacing Go as it's main draw is it's green runtime.

I'm not seeing that. It seems like there's lots of enthusiasm to use Rust, but that people can't justify choosing it over Go probably because Rust is quite a lot more tedious than Go and its strong performance and correctness guarantees aren't worth the tradeoff for very many applications. I'm hopeful that things like rust-analyzer will help close that gap, but I don't think it will ever completely close much less re…

This is true. It's worth remembering why Go got it's shot though which is at the time of Docker being written it was originally written in Python. A few members of the container/orchestration community pushed to try writing it in Golang as Golang was also new and combining the enthusiasm of 2 communities was likely to result in greater success (turned out to be correct).

On the other hand Rust hasn't had an oportunity for a killer app, in fact it's main sponsor project Servo/Firefox is pretty much the opposite. It's a browser, the definition of a complex and slow moving behemoth of a project.

I attribute Rust's slow takeoff compared to Go mostly to this phenomenon.

After Docker was written in Go and started popularising containers outside of the lxc/openvz/other hardcore guys doing their own stuff directly on top of the kernel APIs then it was only natural that stuff would want to integrate with Docker and using the same language was a way to capture some of that enthusiasm. This resulted in software like Flynn, Deis and Kubernetes all picking Golang. The resulting network effect is very strong.

To some degree this is also down to the strength of the Go standard library. It has an excellent HTTP and TLS stack, encoding/decoding etc. All of this made it a good fit to write software that is fundamentally fairly "dumb" quite quickly. i.e software the mostly shuffles bytes from one socket to another.

Rust will most likely not find such a killer app so I think people need to be realistic about how long it will take Rust to find a marketshare. The big difference though is one can actually make good arguments to use Rust over C/C++ where you can't in most cases for Go. C is the largest software ecosystem right now and Rust is best positioned to take some of this market share away.

Re: Rob Pike interview

#66
post #45

Really? Outside Google, I'm not aware of major orgs that use GO. I see the same .net C# stack, python, Ruby...... Java and PHP.

How hard are you looking? Facebook, Dropbox, Uber, Apple and literally thousands of other companies, big and small, use Go.

Use - maybe. Is it the most used lang in these companies? Probably not.

Re: Rob Pike interview

#67

Go is the language that made me realize I’m not much of a production quality software engineer. Normally I would be quite happy riffing with ideas in Ruby or Python, and just running my code and iterating trying to figure out what to do. When I tried this in Go, every time I wanted to change the shape of my code to try doing things slightly differently I had to do a lot of work to get the code to compile again. I fee…

> When I tried this in Go, every time I wanted to change the shape of my code to try doing things slightly differently I had to do a lot of work to get the code to compile again. Ha. Try Rust if you like a challenge: at least you will get outstanding compiler diagnostics while refactoring, and far better performance as an end result.

I love Rust like I love Dark Souls.

It's difficult, but fair. I can not praise enough the software developers that realize proper errors are vastly superior to extensive docs.

Re: Rob Pike interview

#68
post #25

Earlier quoted context omitted.

This isn't true at all. Go is not the tool of choice for experienced professional programmers for exactly this reason. The ability to quickly refactor code is very important and Go fails at it horribly for a number of reasons. 1) sheer verbosity. 2) multiple return makes altering function signatures tedious. 3) no generics mean code is written in hard to refactor styles out of the box 4) poor reflection support 5) po…

use a better editor. VSCode, vim with vimgo, emacs with whatever those apes use.

I shouldn't need an industrial-strength editing engine to efficiently express my ideas. (And don't, if I'm using a nice expressive language.)

Re: Rob Pike interview

#69
post #26

I have huge respect for Rob Pike but there's a bit of revisionist history going on here. Go was originally envisioned as a systems programming language. It was often called "a better C". This exposed Rob Pike's lack of experience in the area (IMHO) because anyone who had done any systems programming at all knew that garbage collection made any systems language a nonstarter. Where Go succeeded was completely unintenti…

> anyone who had done any systems programming at all knew that garbage collection made any systems language a nonstarter

Very interesting, can you elaborate with an example?

Re: Rob Pike interview

#70
post #57
post #26

I have huge respect for Rob Pike but there's a bit of revisionist history going on here. Go was originally envisioned as a systems programming language. It was often called "a better C". This exposed Rob Pike's lack of experience in the area (IMHO) because anyone who had done any systems programming at all knew that garbage collection made any systems language a nonstarter. Where Go succeeded was completely unintenti…

There is 'kernel device driver' kind of systems, and there is 'kubernetes module' kind of systems. Most of the modern infrastructure work happens for the latter use-case. GC is a very reasonable choice, provided you know what you're doing.

I agree that the term "systems programming" is getting stretched a bit thin. Maybe we need a new term for the k8s variety - I propose "infrastructure programming".
Post reply on HN