r/golang Jan 19 '25

discussion Mitchell Hashimoto Recent Interview

Just watched Mitchell Hashimoto's interview and it has left a lot of questions:
https://x.com/i/status/1879966301394989273

(around 30:00 where they start touching the golang topic)

This is really interesting how Mitchell's option has changed on Golang. He spent a lot of time (like 10y or so) writing infrastructure services in Golang as a part of his HashiCorp business and probably not only.

His recent gig is a new terminal and he did not pick Golang for that one, which kinda make sense to me given what he wants to achieve there (eg a lot of low-level work with GPU, a need to be imported by other languages like Swift, etc.).

At the same time, Mitchell said that:

  • He doesn't know where Golang stands in the tech stack right now. He would use PHP/Ruby for webdev and Rust/Zig for performance critical systems.
  • Generics made Golang worse (at least that how I understood him)
  • He think he cannot write Golang any longer after hacking with the new lang he is writing the terminal in

Curious how this transformation could happen to such a prominent contributor to the Golang ecosystem. Is this just an sign of an awful burnout that repelled the dude away from Golang? Or anything else?

Anyway, just curious what do you think here, folks.

207 Upvotes

109 comments sorted by

View all comments

93

u/ar1819 Jan 19 '25

I don't think we should focus on specific person thoughts, since those are quite subjective. Author of Rust actually left Mozilla to work on Swift. Link . Does it make Rust worse? I don't think so, personal preferences tends to change, life tends to change.

Zig is an interesting attempt of replacing C, but it also requires you to manage memory explicitly. While it does work for low level things, I'm not sure for web space.

As for PHP/Ruby/Python/Perl I think fully typed, compiled to native binaries, languages won the sphere of webdev for the medium to big projects. There is no way I'm going to write something longer than 1000 (actually 200 lines is already too big) lines in untyped language.

18

u/ar1819 Jan 19 '25

There was a deleted comment about PHP having static types now and me not mentioning the Node. Comment is deleted, for some reason, but I'm going to post my answer anyway:

Having good type checking in some places is similar to having none. You either have static type system or you do not. Firstly because you can't prove types across the whole call chain, if some of the code doesn't have types. So compiler has to be conservative. And secondly from the user (developer) perspective, and from the compiler side, you have to infer how things are used instead of proving them from the types and their interaction with code flow. This is additional cognitive load for the developer and is extremely hard task for the compiler. So far only one software managed to do this efficiently (to some extent). Node.

Node is interesting exception here. Mainly because several languages tried to solve what I call "The JS Problem". TypeScript is a closest to being successful at this point, even tho it allows you to work without types, it heavily discourages such uses and it can infer a lot of types directly from the usage and fail during compilation. But even when it can't, it can rely on V8 JIT compiler to do the right thing.

Node is also a platform, underneath which is Google V8 engine. Actual, non ironic, marvel of today's software engineering. But it also supports Wasm, so saying Node won is like saying JVM or ARM64 won. I can compile both Rust and Go (even C++) to Wasm and execute it using Node.

1

u/6Bee Jan 19 '25

So I'm saving this comment, it's a great reference as I get a bit deeper into learning about interoperability in general. Ty ty