3 ms·
We do keep looking under the proverbial lamppost for the missing keys[1] when it comes to computation. Compilers for the most popular languages are pretty amaz
by CraigJPerry 3y ago
We do keep looking under the proverbial lamppost for the missing keys[1] when it comes to computation.
Compilers for the most popular languages are pretty amazing these days. Yet it’s still on the developer to make the most of them. One aspect might be performance:
- structure your problem in such a way (carefully manage dependency relationships, eliminate branches, etc). that the compiler can choose to emit vector instructions
- manage memory access patterns (e.g. prefer columnar and SoA access patterns over cache unfriendly pointer chasing structures)
- understand how to maximally exploit cache hierarchies for your problem (e.g. threading to exploit the other L1 caches rather than relying on slower L3 etc.)
Another aspect might be data security rules, e.g. tagging and labelling with the ability to enforce rules for the developer.
But there are literally hundreds of aspects to deal with. Our languages today look at the problem space through a toilet roll tube with the other eye closed.
The future of computation is guaranteed to be rich, vibrant and exciting.
[1] https://en.m.wikipedia.org/wiki/Streetlight_effect https://en.m.wikipedia.org/wiki/Streetlight_effect
- messe 3y agoI think every suggestion you have there would fall under that very same lamppost: a linear model of computation going only one direction. Sussman details in this talk a different model he calls propagators that deal with information flow back and forth, allowing for some interesting ways of working with "fuzzy" and incomplete data, while still allowing for cheap backtracking if a contradiction arises. I haven't read the Radul & Sussman's paper "The Art of the Propagator"[1] yet, but I fully intend to now having watched the talk. [1]: https://dspace.mit.edu/bitstream/handle/1721.1/44215/MIT-CSAIL-TR-2009-002.pdf https://dspace.mit.edu/bitstream/handle/1721.1/44215/MIT-CSA...
- mgaunard 3y agoFew of the things we care about need to be fast, and fewer of the things that need to be fast are held up by number crunching performance. There are already a plethora of languages designed for numerical computing. Just use that if that's what you're doing.