3 ms·
Obligatory quibble: Java and Lisp take care of memory safety issues, but not thread safety issues.
by oconnor663 9y ago
Obligatory quibble: Java and Lisp take care of memory safety issues, but not thread safety issues.
- jstewartmobile 9y agoI'll quibble back several things: Clojure has immutability on top of atoms/refs/agents, so while Rust is doing Nerf mutation with the borrow-checker, Clojure avoids it in the first place. That, and generally I think threads are overused. Mostly because spawning a new process has been needlessly slow in the past (especially on Windows). Even in C-land, I've seen so many cases where forking and IPC would be more than fast enough, yet far safer. And getting back to the hardware aspect, having a single thread and a badass SIMD instruction is usually faster and easier to reason about than multiple threads and general-purpose instructions where your performance gets fetch-execute-cache-hierarchy-memory-bandwidthed to death. Worst of all, I think this entire mode of computing survives primarily due to marketing reasons. Explaining how something works smarter rather than harder is a difficult sell. Printing "MORE CORES!" "MORE GIGAHERTZ!" on a brochure is an easy and effective way to make the sale.
- oconnor663 9y agoAll fair :)
- burntsushi 9y ago> And getting back to the hardware aspect, having a single thread and a badass SIMD instruction is usually faster and easier to reason about than multiple threads and general-purpose instructions where your performance gets fetch-execute-cache-hierarchy-memory-bandwidthed to death. ripgrep benefits from both having multiple threads and badass SIMD instructions.