I have to utterly disagree with EKR. 1) I make substantial effort to make sure my code is readable. If the so-called programmers you know don't do that, well, so what? Every class I had when getting my degree drummed structured coding, comments and readability in to me. Maybe some coders don't do that, but many people can't write clear English either, and that doesn't make English not a language for humans to read. 2) Comments exist EXPLICITLY to communicate to humans. 3) free() is no less "for my benefit" than "char *foo". Sure, Java doesn't have free(). Lisp doesn't have "char *foo". "So what?" -- in different languages, there are different models of computation. Keeping track of memory in an algorithm is just as important as knowing what types are in certain models. Your example is completely specious. Source code exists for people first, computers second. If this were not the case, we'd all just write code in machine language. High level languages exist *explicitly* to make it easier for people to comprehend computation tasks. Communicating algorithms, both to the reader who is not the author, and later to the author of the code himself, is why we use high level languages. Maybe Mr. Rescorla doesn't believe it, but I do, and it is the doctrine taught in every decent CS curriculum in the world. Perry