We Software People are not Worthy - All Hail the Hardware Gods
Hardware has advanced leaps and bounds in the last 10 years, but software, and in particular programming languages, are failing to take advantage of this while also holding back the hardware itself. We continue to impose old abstractions on the programming model, such as coherent shared memory, we teach CS students that hash tables have O(1) search, our compilers regularly emit code with suboptimal instruction memory dependence, our memory allocators produce fragmented and unpredictable memory access, and we lean on branch prediction and hardware prefetching to solve our problems. We don’t even use formal verification as much as hardware does. As we move from concurrent computing problems we haven’t solved to distributed computing problems we haven’t imagined, how can we do better? I’ll talk about some of the ways Pony has tried to approach these problems and some of the ways it has failed to do so, I’ll ask why we aren’t all using FORTH, and ask the workshop the big question: are we getting it wrong, or is the hardware not solving the big problems?