About this book
Programming languages evolve in steps. They began with weakly typed lan guages like FORTRAN and progressed to strongly typed languages like PAS CAL. This had the positive effect of moving the detection of many programming errors from run-time to compile-time. Unfortunately, it was soon recognized that it had the negative effect of limiting the generality of functions since they were now bound to a specific data type. This virtually eliminated the writing of reusable software components. The result was that programmers had to re-implement common algorithms and data structures over and over again. Newer languages, like C++, provide a way to decouple algorithms and data structures from the data types upon which they operate. C++ provides this capa bility via the template mechanism. Suddenly, it became possible to write generic algorithms and data structures that could be reused. In effect, this provides de bugged software components that can be combined to form programs much faster than by re-implementing the components each time they are needed. At the same time that programming languages were evolving, computer hard ware was becoming incredibly inexpensive compared to programmers' salaries. This provided a strong incentive to reduce costs by increasing programmer pro ductivity. Software reuse was seen as one way to increase programmer productivity.
C++ programming language Standard Template Library algorithms complexity data structures template