5 ms·
> Admittedly, much of the most important implementation work happened in big tech companies, or occasionally startups. Not in academia > - Rust, which successf
by ogogmad 5y ago
> Admittedly, much of the most important implementation work happened in big tech companies, or occasionally startups. Not in academia
> - Rust, which successfully applied a lot of lesser-appreciated academic ideas including affine types.
There's some scepticism going round about a model of technological innovation where academics invent an idea and engineers implement it. While I accept that affine types were known to academics, I recall a precursor to them existed in the form of C++ unique pointers. I'm wondering whether the Rust creators reinvented affine types independently, instead of learning of them from the academic literature.
Also, maybe a better question is how beneficial the literature on affine types was to the Rust creators.
- saurik 5y ago> There's some scepticism going round about a model of technological innovation where academics invent an idea and engineers implement it. While I accept that affine types were known to academics, I recall a precursor to them existed in the form of C++ unique pointers. There feels like an implicit value judgment here, that the work of "academics" isn't needed because "engineers" figured it out themselves. > I'm wondering whether the Rust creators reinvented affine types independently, instead of learning of them from the academic literature. Why would this ever be a good thing? Is it "cool" somehow to be proud of not taking advantage of the hard-won knowledge of other people who actively hoped their work would get used?
- mistrial9 5y agothey are "fuzzy sets" ; in the actual world there are certainly differences, if not absolute boundaries
- vitno 5y agoI was in the space around Rust in the early days: ~10 years ago. It was 100% research based. Everyone working on the language was familiar with this literature and many of the early contributors were PL Phd people.
- steveklabnik 5y agoGraydon has forgotten more about PLT than most of us will ever know. (And several of the folks who came after Graydon have PhDs…) Early Rust didn’t have some of the things it had today, but we used to keep a list of papers that Rust either was inspired by or implemented the ideas from on the website, even if it was incomplete. I also don’t believe that smart pointers in C++ count as affine? Move semantics in C++ work quite differently than in Rust. I could be wrong about that though, but given the whole copy by default thing, I’m not entirely sure that that counts. It might though. Oh, and in the earliest days, literally Rust’s introduction inside of Mozilla, it was described as “ideas from the past, come to save the future.” Explicitly built on older PLT ideas that hadn’t made it mainstream yet. Rust may feel cutting edge for industry but it’s basically the opposite of avant garde theoretically speaking.
- vitno 5y agounique_ptr counts as a affine type, the linearity is enforced at compile time. (even if access safety is not)
- steveklabnik 5y agoYeah, thinking about it I would agree with you. I was thinking that it being copyable so easily would be disqualifying, but I wouldn’t say the same about Clone in Rust and it’s not really about explicitness, anyway. Thanks.