College computer science programs will have the task, during the next few years, of digesting a cohort of incoming students who learned C++ as their first programming language. One wonders if remedial programming will overtake remedial writing as a drain on teaching resources.
The college-level advanced placement computer science course switched from Pascal to C++ in 1999—and has finally seen the error of its ways. But it will take until 2003 or 2004 to make yet another transition to the language (Java) that should have been adopted in the first place.
The College Board decision is driven by three principles: safety, simplicity and object orientation. The advisory report recommending this change makes a telling distinction between "object-based" and "object-oriented" development. I would call this the difference, respectively, between defining modules that merely fit together and designing frameworks that effectively use inheritance and polymorphism for abstraction. Java, I would argue, surpasses C++ in this respect.
Lest anyone think that Im just being a Monday morning quarterback, Ill repeat what I said about C++ in 1994: "The programming languages feature—being a superset of C—is a fundamental bug." The College Board report agrees, citing the inability of C++ to prevent or handle errors in using arrays.
Industrial advisory boards also agree, for example, recommending Ada or Modula-2 ("having fewer insecurities and better type checking") for writing the software underlying automotive systems.
The College Boards short-lived adoption of C++ exemplifies a far more general IT management error: the assumption that whats popular must be good. Is it an advantage that more C++ programmers can always be found when needed? Or is it a serious problem that you always seem to need one more?