Even if you’re a beginner, you can learn to write a professional program on any computer, in any programming language. . . . From understanding computer fundamentals to mastering the fine points of professional programming, you’ll find everything you need to: Build a computer program from scratch; Apply the concepts that underlie every popular language, including ASSEMBLY, ADA, PASCAL, and C; Create professional quality, low maintenance software. . . .
--From the book jacket
What does this book actually deliver? It is a fairly well informed collection of topics about programming, mostly assembly programming. My main problem is with the assembly emphasis. In the author’s words, “I personally believe that all programmers should be trained to program in assembly language before learning to program in high-level language. My reasoning is that only with a proficiency in assembly language can a programmer produce a truly professional product in a high-level language. . . . If you know assembly language cold, you should be able to take home the programming manual for any high-level language and produce an acceptable program in that language in a few days. Not just acceptable, but better than a programmer with considerable experience in just that one language.”
In my experience, high-level languages like C are supplanting assembler in the programming marketplace because they get the job done faster and better. But even for people who agree with the author’s assembly bias, the book is still deficient in not actually teaching the reader how to program. It talks about programming. There are no programming examples, no exercises, no questions. It could, however, be useful as supplementary reading to accompany an introduction to a specific assembly language. Here is what the book covers: basic assembly concepts; data structures (strings, stacks, list, etc.; all pictures, no code); addressing modes; instruction sets (a survey of four different architectures); modular programming (basic design theory); structure of a program (input, processing, output, etc.); debugging; program modification; input/output; files (devices, blocks, clusters, extents, cylinders, etc.); languages (14 languages in eight pages); macro assembler; standards and conventions; and system development.