4 ms·
Since Rob Pike wrote this note in 2000, there have been many commercially important advances in systems software: - iOS and Android: Power-efficient mobile sys
by ekidd 5y ago
Since Rob Pike wrote this note in 2000, there have been many commercially important advances in systems software:
- iOS and Android: Power-efficient mobile systems, wakelocks, etc.
- Docker, Borg and Kubernetes: Container isolation, cluster orchestrators.
- Modern browser environments, with high degrees of isolation.
- Fast JavaScript runtimes and specialized JITs.
- WASM.
- Ruby and metaprogramming, which rose to considerable commercial success and then petered out. But by the standards of 2000, there's some neat language design there.
- Rust, which successfully applied a lot of lesser-appreciated academic ideas including affine types.
- Type systems retrofitted to many dynamic languages, including Typescript. Typescript is really rather remarkable, even though the types are "unsound", in the technical sense.
Some of these trends were already underway in 2000, when Rob Pike was writing. Admittedly, much of the most important implementation work happened in big tech companies, or occasionally startups. Not in academia. But that's largely a question of scale. Even as early as 1990, it was hard for a professor and a few graduate students to directly change the industry. But plenty of the items on the list above do have roots in academic research.
And Rob Pike did get to write Go. He deliberately ignored quite a bit of interesting research to focus on a specific aesthetic vision, which is fine. And a lot of good systems work has been done in Go.
- deleted 5y ago[deleted]
- 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.
- turminal 5y ago> - iOS and Android: Power-efficient mobile systems, wakelocks, etc. - Docker, Borg and Kubernetes: Container isolation, cluster orchestrators. - Modern browser environments, with high degrees of isolation. - Fast JavaScript runtimes and specialized JITs. - WASM. Would be interesting to know what Rob Pike thinks of all these.
- wbl 5y agoYou never heard of Self or the Alto, the JVM, BSD jails/Solaris zones/whatever the 360 had, etc? Mobile I'll give you, but the rest have lots of antecedents.
- kenjackson 5y agoThere’s also cloud scale OS work that was done for AWS and Azure. And moving Linux to embedded and IoT class devices.
- dekhn 5y agoRob was simply wrong. All his thinking was formed by the explosion of systems research around UNIX from the 70s to the 80s which was extremely productive. But research definitely didn't end then. It just transitioned to another dimension.
- kevinfat 5y agoTo be a contrarian here to bring up a question, do these things really count? The roots of similar ideas already existed decades ago in old journals for all of these. Maybe the phrase "System Software Research is Irrelevant" could be interpreted as saying that all the big foundational ideas have all been found. The low hanging research is done and now its all iterating on details. Please tell me why this is incorrect?