Live data from Hacker News

Jonathan Blow on Rust

np.reddit.com

41–50 of 52 posts

Re: Jonathan Blow on Rust

#41
post #3

The only specific statements about Rust quoted in that thread appears to be: > And so Rust has a good set of ingredients there. The problem that I have with it is when I'm working on really hard stuff, I don't exactly know what I'm doing for a long time. And so if the cost of experimentation is driven too high, it actually impairs my ability to get work done. The rest seems to be a discussion about the problems of me…

I'm finding exactly the same problem with Rust -- I am do exploratory programming in GAP (a Python-like language), then rewriting to Rust once I'm confident I have all the basic data structures and code down. The compile speed of Rust alone is painful. Also, when converting C++ code to Rust, I find many places where I'm having to de-optimise code to get it past the borrow checker. Large cyclic data structures which a…

Use vector granphs.

Re: Jonathan Blow on Rust

#42
post #3

The only specific statements about Rust quoted in that thread appears to be: > And so Rust has a good set of ingredients there. The problem that I have with it is when I'm working on really hard stuff, I don't exactly know what I'm doing for a long time. And so if the cost of experimentation is driven too high, it actually impairs my ability to get work done. The rest seems to be a discussion about the problems of me…

I'm finding exactly the same problem with Rust -- I am do exploratory programming in GAP (a Python-like language), then rewriting to Rust once I'm confident I have all the basic data structures and code down. The compile speed of Rust alone is painful. Also, when converting C++ code to Rust, I find many places where I'm having to de-optimise code to get it past the borrow checker. Large cyclic data structures which a…

> Large cyclic data structures which are freed as one piece are annoyingly difficult in Rust.

If you really are deallocating the cyclic structure all at once, just use an arena and represent each element as an indice. Like https://docs.rs/petgraph/0.5.0/petgraph/ or https://docs.rs/specs/0.15.1/specs/

Re: Jonathan Blow on Rust

#43
post #13

I would recommend the entire episode, it was very good. Only a small part is about Rust. I’ve listened to plenty of interviews and talks/rants by Jonathan Blow, and while I think he has a lot of interesting ideas, he also has a well earned reputation for being very blunt in how he expresses his opinions. Bryan Cantrill was an excellent interviewer, and managed to bring out the best side of Blow.

There's a very good Noclip doco on the Witness too if you enjoy hearing Blow talk about his craft

https://www.youtube.com/watch?v=YdSdvIRkkDY

Re: Jonathan Blow on Rust

#44

Earlier quoted context omitted.

Is it possible to use the speech to text feature of your OS to transcribe the podcast quickly? Just curious...

A hacky solution is to point your speakers at a device running Google Docs with speech-to-text turned on, but I haven't found anything that handles multiple speakers well - especially with overlapping voices, as happens often in this episode.

Yup overlapping voices should be a problem. I was thinking more along the lines of you playing the podcast to yourself via headphones and repeating what Jonathan Blow says into your speech to text program. :)

Re: Jonathan Blow on Rust

#45

Earlier quoted context omitted.

I'm finding exactly the same problem with Rust -- I am do exploratory programming in GAP (a Python-like language), then rewriting to Rust once I'm confident I have all the basic data structures and code down. The compile speed of Rust alone is painful. Also, when converting C++ code to Rust, I find many places where I'm having to de-optimise code to get it past the borrow checker. Large cyclic data structures which a…

> Large cyclic data structures which are freed as one piece are annoyingly difficult in Rust. If you really are deallocating the cyclic structure all at once, just use an arena and represent each element as an indice. Like https://docs.rs/petgraph/0.5.0/petgraph/ or https://docs.rs/specs/0.15.1/specs/

Jon Blow addresses this in some earlier rant here: https://www.youtube.com/watch?v=4t1K66dMhWk

His point being that now you're effectively implementing a form of manual memory management to circumvent the borrow checker.

Re: Jonathan Blow on Rust

#46
post #22

Earlier quoted context omitted.

I like this idea too, but bear in mind that the world of SMT in general (Z3 not an exception) seems to have a lot of cosmetically-similar formulations some of which are trivial and some of which will take forever to solve. The honeymoon with SMT is often brief. You've gotten through the whole 'hooray, now I can nuke Sudoko and those "Mr Brown lives on the same street as the baker, who has a white house" problems' and…

> I'd love it if there were more "intermediate" level documentation sets on SMT - aimed not at people who have just started using SMT, but also not aimed at people who are going to start doing SMT research. Agreed. I've been doing some research to create an SAT Solver and found surprisingly low amount of learning material. I'd love some recommendations from HN crowd.

I learned a good foundation of how SAT solvers work in this course: http://resources.mpi-inf.mpg.de/departments/rg1/teaching/aut...

Lecture notes are there; exercises are available in the linked earlier instances of the course.

Re: Jonathan Blow on Rust

#47
post #18

I've been arguing lately that C++ should do something like this: Add a full-on theorem-prover to the language so that I can write my own safety rules specific to how my program works. In the Cloudflare Workers runtime we have a sort of analogous problem to what Blow has in his game engine. We have certain objects that live on the JavaScript heap (which is garbage collected), or are directly owned by objects on the JS…

Wouldn't Frama-C and some of its plugins do this job? I've seen (I think?) Airbus (working with Atos?) people write custom Frama-C plug-ins to implement some static analysis & proof on their code, with great success.

Re: Jonathan Blow on Rust

#48
post #25

About a year ago I really devoured Jonathan Blow's opinions. He is definitely correct in many, many aspects. I've been paying less and less attention lately because he explains the problems of virtually any language, then explains how his language solves it all perfectly. I am personally incapable of taking firesale arguments like that seriously. I too have many great ideas, but you need to be honest about the limita…

> I've been paying less and less attention lately because he explains the problems of virtually any language, then explains how his language solves it all perfectly.

I seriously doubt that he would say that his language "solves it all perfectly." He's still making changes to his language to fix things that don't work right or to change his language to implement features that either didn't exist before, or don't solve the problem as he now sees it (which is different than how he saw it when he initially implemented that feature).

> I am personally incapable of taking firesale arguments like that seriously.

I would challenge you to understand how Jonathan Blow talks. He says what he says, and nothing more. He does not give you things to read "between the lines" or anything like that. He says what he says, and if he did not say some thing, he did not mean that thing, barring mistaken speech, of course. He also continually learns and adapts what he says, which can appear as if he says one thing on one occasion and something different on another, which is of course what happens to anyone who talks about things as they are learning those things.

> Rust has a place alongside Jai, they don't have to compete.

This is, of course, correct. Jon mentions Rust as he does because it doesn't solve the problems that he (specifically) has. Rust is just not an option for him, so he's creating something that is an option for him, and for other people who value the things he values in a language. I don't think Jon will lose any sleep at all if you don't like his language once it is generally available.

Re: Jonathan Blow on Rust

#49
post #18

I've been arguing lately that C++ should do something like this: Add a full-on theorem-prover to the language so that I can write my own safety rules specific to how my program works. In the Cloudflare Workers runtime we have a sort of analogous problem to what Blow has in his game engine. We have certain objects that live on the JavaScript heap (which is garbage collected), or are directly owned by objects on the JS…

the next big thing for C++:

- reduce compile time by at least 100000000000000000000x

- shrink stl by at least 100000000000000000000000000x

Re: Jonathan Blow on Rust

#50
post #18

I've been arguing lately that C++ should do something like this: Add a full-on theorem-prover to the language so that I can write my own safety rules specific to how my program works. In the Cloudflare Workers runtime we have a sort of analogous problem to what Blow has in his game engine. We have certain objects that live on the JavaScript heap (which is garbage collected), or are directly owned by objects on the JS…

VCC[1] was a substantial piece of research from MSR aimed at supporting the verification of C (not C++) via a theorem prover. However, it appears in a study[2] of its application to parts of the Hyper-V code-base, there were some practical difficulties relating to proving performance in the developer workflow. Still, fascinating to see work like this on real-world code-bases with established languages. You can also s…

There are also efforts at ETH to verify Rust using SMT solvers using methods similar to VCC and Dafny, see https://www.pm.inf.ethz.ch/research/prusti.html

Adding verification once you have code is generally more difficult, though in case of VCC it was helpful to have a large example code base to make sure the tool would cover the major patterns, especially relating to concurrency primitives.

Post reply on HN