I do this with C++'s algorithms, numerics and containers. Also, getting into the practice of naming things and letting the optimizer inline really helps. Have a loop, put it into a small function and name it. The code starts to look like it is full of C++ algorithms and reads at the same abstraction levels at each method body