3 ms·
sorry, but i don't agree with that assertion. algorithmic skills are never going to be out of date. true, widespread availability of high quality implementatio
by signa11 6y ago
sorry, but i don't agree with that assertion. algorithmic skills are never going to be out of date.
true, widespread availability of high quality implementations may obviate the need to implement such structures 'by hand'. however, the developer must understand not only the operations that a data-structure supports, but also their complexity. one needs to understand the fundamental properties of data-structures to use them properly, so that the application satisfies it's own complexity requirements.
and complexity here is not just asymptotic complexity, but also the machine cycle count (ofcourse benchmarking helps here. a lot) this also implies that one must understand the architecture of modern machines f.e. how the cache-hierarchy affects performance etc. etc.
every decade (or even less !) new architectures are sufficiently different from the previous generation that makes a mockery of our 'intuition' of their performance characteristics. data structures that might work wonderfully on old pdp machines would probably not be a good choice on modern machines with multiple layers of caches etc.
this constant tension between abstractness and efficiency is what makes, imho, programming such a joy :)