Sunday, August 29, 2010

Programming texts and literature

Stepping away from source code, let's look at the texts we use to learn programming.

There are the college texts, of course. But of late, I see very little that teaches general programming. I see many books on technology-specific programming ("C# Programming in .NET", and "Object-Oriented Programming in Java") and books on cross-training ("Java for C++ Programmers") but nothing for a average person (new to the field and not a student) to learn programming.

Perhaps the market is small. If you want to learn programming, you're going to be serious about it, not a hobbyist of the 1980s.

Perhaps there is no lingua franca and our multiple technologies are too specific for a general text. Programming in C# requires that one understand the C# concepts; programming in Java requires an understanding of Java details. The days of the universally available BASIC interpreter are gone.

Perhaps there is no constant view of programming. Each year sees advances, and every five years sees a complete turn-over in popular languages. We've gone from C to C++ to Java to C# to Perl to Python and now to Ruby (or Scala, or Haskell, or Erlang,...). Such a thought is disturbing; can we find no common concepts for programming in these different languages?

Whatever the reason, we have no standard texts for programming, no common body of knowledge. The Association for Computing Machinery has made an attempt to identify some canonical texts, but the group is too far from the mainstream to have much effect. (They probably won't like me saying such thing, either.)

Good writing is rare in our profession. The best books I have found come from O'Reilly, and even that is not a guarantee of literary quality.

Just what qualities do I desire? They fall into two catergories: writing and printing. I want books that are informative, comprehensive, and easy to read. I also want books with high quality printing: hard-cover editions with acid-free paper, elegant typesetting, comprehensive indexing, and easy-one the eyes typefaces.

In short, I want literature; works that are respected and also considered "a good read". I think that it is important that we have these works. Not just for people entering the field, but to develop our skills at composing, organizing, and presenting ideas. We need these skills, because composing, organizing, and presenting ideas is the objective of programming. We execute these skills for our programs; we should use them for our texts. To not exercise them in prose will let them atrophy, with the ultimate loss of them in our programs.


No comments: