Ken Thompson and Fran Allen on abstraction
I've been reading Peter Seibel's collection of interviews Coders at Work: Reflections on the Art of Programming and I decided to read Fran Allen's interview directly after Ken Thompson's. This turned out to be an interesting way of reading the text because the two of them directly contradict each other on some big-picture stuff.
First you have Ken Thompson, who left university in the mid-1960s to work at Bell Labs, and by 1970 had co-created Unix and created a direct precursor to the C programming language, which is still the most popular programming language today. Thompson considers computer science to be at something of a dead-end. As he sees it, hardware will continue to become more efficient while programming will continue to become more abstracted and less efficient, allowing hardware advances to counteract the flaws in new software. Thompson did much of his early work in assembly language and finds the lack of familiarity new programmers have with low-level hardware operations "scary", even considering the complex interfaces and end-user functionality enabled by abstraction.
I found Fran Allen a lot more forward-looking. She joined IBM as a programmer in the late 1950s and oversaw the creation of some important early compilers designed to allow programmers to write portable code which would be optimized for computational efficiency at compile time. In her view, the industry adoption of the C programming language as an application programming language (and not just a systems programming language) was a "big blow" because it placed the responsibility of certain low-level tasks like memory management squarely on the shoulders of the application programmer. Allen argues that optimization and memory management at the compiler and hardware levels, combined with very high-level languages, will allow computer science to tackle the challenges of managing data in global networks in unified, efficient, and innovative ways that improve end-user experience.
I generally find Allen's arguments a lot more compelling, though I'm with Thompson when he says C++ overcomplicates things to the detriment of code readability.