Wouter
06/21/2019, 5:02 PMIvan Reese
Ivan Reese
Ivan Reese
Wouter
06/21/2019, 6:15 PMshalabh
06/21/2019, 6:15 PMWouter
06/21/2019, 6:17 PMshalabh
06/21/2019, 6:17 PMWouter
06/21/2019, 6:19 PMWouter
06/21/2019, 6:21 PMshalabh
06/21/2019, 6:23 PMWouter
06/21/2019, 6:24 PMWouter
06/21/2019, 6:25 PMshalabh
06/21/2019, 6:25 PMWouter
06/21/2019, 6:27 PMWouter
06/21/2019, 6:31 PMshalabh
06/21/2019, 6:32 PMif all the things we can try to improve about this world, changing the hardware is about the furthest from our abilities 🙂 It may suck, but there's little point in complaining about it@Wouter - yeah I think this is the situated vs radical perspectives that came up earlier. How much we want to work with existing tech, how much we want to reinvent and rethink etc. If we're looking at this as research and imagining ~50+ years out, ideas today may end up being actualized. So it's still worth and interesting to explore and develop the ideas. Depends on the end goals and motivations.
Wouter
06/21/2019, 6:34 PMWouter
06/21/2019, 6:35 PMWouter
06/21/2019, 6:37 PMshalabh
06/21/2019, 6:54 PMrather than local RAM bit fiddling optimizers
you will always need the latterAgree, but I'm saying that it could be much simpler than millions of LOC and the C++ language spec without cost.
This LLVM level optimization you so dislike controls 99% of data center costsYes, I'm well aware. But also looking at how much proxying, redundant encoding/decoding, RPC fan-out and model duplication happens across all the services, it seems we're losing a lot as well. I don't dislike LLVM, I think it's pretty solid. I'm arguing for exploring a different model starting top-down. Not just LLVM but all language runtimes/compilers come from a world where 'process' meant OS/Unix process (maybe your whole world was a single OS instance). But processes in large scale systems are very different and we're kind of hacking them on top as a separate layer.
I guess I personally prefer to work on designs I can implement myself, today 🙂 Maybe I'm conservative?Why not do both? 😄
Wouter
06/21/2019, 6:55 PMIvan Reese
shalabh
06/21/2019, 7:44 PMI have limited timeFair. I guess I'm not arguing for other folks to take this position but just that these positions focused on managed/higher level systems with longer term horizons are valuable and can become net wins.
shalabh
06/21/2019, 8:03 PMAlso, even 50 years may not be enough to turn the tide in whatever way you thinkYes, yes. It may not turn at all or likely even turn a completely different way. But these ideas are still very interesting to me.
fyr
06/21/2019, 9:26 PMDoug Moen
06/22/2019, 2:49 AMin the previous 50 years, we've seen little to no fundamental change in basic technologies like CPUs, memoryWe have GPUs, which have a radically different architecture from CPUs optimized for running C programs, and which are capable of a wider range of general purpose computing than is admitted by conventional wisdom. And we now have non-volatile RAM. Current software doesn't fully exploit this hardware: we need new languages and operating systems for that.
Doug Moen
06/22/2019, 3:04 AMThe levels to which a compiler like LLVM can collapse both code and data in C++ to almost nothing is crazy, nothing in the managed world compares."Managed" means uses a garbage collector, or compiles to VM code, or both. There's no necessary conflict between "managed" and using LLVM as a backend code generator, it's just a matter of designing the language or compiler to support this. My Curv language is an interpreted, dynamically typed language, with a subset that compiles into highly optimized machine code for the CPU and GPU.
wtaysom
06/22/2019, 4:36 AMDoug Moen
06/22/2019, 11:42 AMdon't forget RAM cachesK is a dynamically typed, interpreted language used for performance critical applications (high speed financial trading). It is super fast in part because the entire interpreter and runtime fits in L1 cache.
Ken Kan
06/25/2019, 1:35 AMDoug Moen
06/25/2019, 12:44 PMDoug Moen
06/25/2019, 2:27 PMKen Kan
06/25/2019, 7:50 PM