The major point that I've discovered from doing this stuff for years (on considerably more complex cases than the example above) is that programming efficiently for a modern architecture is qualitatively different ...
I think this is a great point. Low-level programming has always required an in-depth understanding of the underlying hardware and that hardware is changing as fast as ever today. It may be true that a large percentage of development can live happily in a land of high-level abstractions, but there will always be a need for low-level optimization and that space is still rapidly changing in very interesting ways.
Comments
The major point that I've discovered from doing this stuff for years (on considerably more complex cases than the example above) is that programming efficiently for a modern architecture is qualitatively different ...
I think this is a great point. Low-level programming has always required an in-depth understanding of the underlying hardware and that hardware is changing as fast as ever today. It may be true that a large percentage of development can live happily in a land of high-level abstractions, but there will always be a need for low-level optimization and that space is still rapidly changing in very interesting ways.