Live data from Hacker News

Rob Pike interview

evrone.com

231–240 of 273 posts

Re: Rob Pike interview

#231

Earlier quoted context omitted.

> Go is a great language for software engineering Is it though? While tests in go are not terrible, to be a truly effective software engineer (vs just a programmer or dev) you want a very good test and documentation story, and there are languages out there with far, far, better tests and documentation primitives than Go.

Can you name a few? Genuine question. I've only really written a lot of tests in Python and Go, and I really dislike the python tests I've had to write. I don't think it's so much the language itself, but that python is so flexible with the mocking you can do that it enables code that is really tedious to test. With Go you have much more limited ability to mock things, so there are added constraints for code to be te…

> With Go you have much more limited ability to mock things, so there are added constraints for code to be testable.

I agree Go makes things more difficult to mock, but it's also the language I've used where it's easiest to avoid mocks and test the real thing. We have tests for REST and RPC services that... just make a service. There's relatively little boilerplate to make a gRPC or HTTP service with some basic expectations/fake data attached and just run your real client against that real fake server. ("Relatively" meaning, less than the equivalent mocks in Java, for a substantially more realistic test outcome.) And once you have this fake server, it's probably useful in multiple projects, while mock setup tends to be suite- or even case-specific.

Re: Rob Pike interview

#232

What are the chances of Rust or another language coming to the fore for cloud infra?

The fight is not technical but political / business-oriented. Each language is a much more than its syntax. It is a complete ecosystem with network effects. Rust can overcome go, if it would provide a lot of open source libraries, as well as growing number of programmers. To do that, it would need the backing of big tech (e.g. MS), that have a big budget to evangelize it. In any rate, the choice of language today is…

Speaking of MS,

https://msrc-blog.microsoft.com/2020/04/29/the-safety-boat-k...

https://msrc-blog.microsoft.com/2019/09/30/building-the-azur...

https://blogs.windows.com/windowsdeveloper/2020/04/30/rust-w...

Re: Rob Pike interview

#233
post #127

Earlier quoted context omitted.

This comment is transparently trying to incite a flame war, but I'll try to take it on a more productive tangent. > eg stop-the-world GC pauses, a longstanding issue that any experienced Java engineer could commiserate at length about This is a really interesting example, because it shows the lack of nuance in the anti-GC position. By your logic, because Java's 100ms GC pause times have been problematic (and yes, I'm…

> This is a really interesting example, because it shows the lack of nuance in the anti-GC position. I wouldn't call my position strictly anti-GC. I would simply say that GC isn't the panacea it's made out to be and it is at least in part a false economy for at least three reasons: 1. You may need to tune your VM/GC parameters (as you mention). There's a cost to this; 2. GC can make it harder to identify memory leaks…

My experience at CERN ATLAS HLT means that those C++ processes would also have a highly tuned custom multithreaded memory allocator, malloc() and new aren't even in the game to start with, and most likely one is doing a custom protocol at IP level.

Re: Rob Pike interview

#234
post #97

Earlier quoted context omitted.

> 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. What exactly do you mean by systems programming? Many successful databases (Cassandra, Kafka, ElasticSearch) are built on the JVM.

I guess "systems programming" is an ambiguous term here like I personally wouldn't call something "systems programming" just because it's server-side. What I mean is things that are basically kernel-level or embedded.

So given embedded soft real time bare metal Java AOT compilers, Java gets to be a systems language as well. :)

https://www.ptc.com/en/products/developer-tools/perc

As does Go actually,

https://www.f-secure.com/en/consulting/foundry/usb-armory

https://labs.f-secure.com/blog/tamago/

Re: Rob Pike interview

#235

Earlier quoted context omitted.

> 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. Already with the release of Go 1 it was quite clear that Go has its best fit as a Server language. I don't think the usage of a language can really be planned. But looking at the previous works of the language authors, it's clear that they worked on solutions for…

> Already with the release of Go 1 it was quite clear that Go has its best fit as a Server language. CLIs as well. Before Go, how did you build a native CLI in a garbage collected language?

I don't know, by using one that had support for AOT compilers?

Something like Java, .NET, OCaml, Haskell, D, Scheme, Common Lisp?

Yes, it isn't a typo regarding Java and .NET, there are AOT compilers for them since around 2000.

Re: Rob Pike interview

#236
post #118

Earlier quoted context omitted.

Go is reasonably big on the open source side of the cloud space.

Not sure what you mean by "open source side" of the cloud space. PostgreSQL is still C, and Mongo is still C++ + Node.js.

The two don't belong to "cloud infrastructure".

Re: Rob Pike interview

#237
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…

> garbage collection made any systems language a nonstarter There are a significant number of systems that demonstrate otherwise: LISP machines, SmallTalk, Oberon.

Also written in Go, https://www.f-secure.com/en/consulting/foundry/usb-armory

Re: Rob Pike interview

#238
post #130

> Although it's far from certain, after over a decade of work it looks like a design for parametric polymorphism, what is colloquially but misleadingly called generics... What exactly is misleading about generics? The psychology of thought leaders is fascinating. The term generics is colloquially understood to mean parametric polymorphism and here's Pike redefining the term to draw some distinction that doesn't reall…

This is probably just age. I had two CS professors, one in the late 90s and the other around 2004, draw a similar distinction.

"Parametric polymorphism" was the "whole" feature, while "generics" meant specifically generic containers, usually wholly agnostic about their type parameters, like std::map or std::list. Since the rise of Java Generics (which are really somewhere in between, more than containers but less than full parametric polymorphism) I don't hear this distinction anymore.

Re: Rob Pike interview

#239
post #118

Earlier quoted context omitted.

Go is reasonably big on the open source side of the cloud space.

Not sure what you mean by "open source side" of the cloud space. PostgreSQL is still C, and Mongo is still C++ + Node.js.

Sure, but Go has enabled a lot of great software in a very short amount of time. If you are in the cloud business, you'd better take a serious look at Go if you don't want to be out competed. It hits a sweet spot between performance and ease of use - feels almost like Python, performs almost like C++.

Re: Rob Pike interview

#240
post #91

Earlier quoted context omitted.

> 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?

So I wanted to find a good source for this and interestingly came across this article from 2011, titled "Go to C: Could Go Replace C?" [1] (HN submission [2]) and this point came up even then [3]. I also found there are subsets of Go aimed at filling this use case because of the GC issue [4] (eg Emgo [5], TinyGo [6]). The Fuchsia Language Policy [7] also points to this. Fun fact: the networking stack in Fuchsia was w…

F-Secure's TamaGo supports full Go on bare metal, though.

https://www.f-secure.com/en/consulting/foundry/usb-armory

Post reply on HN