BKWAJAVA.RVW 980111 "Who's Afraid of Java?", Steve Heller, 1997, 0-12-339101-6, U$39.95/C$53.95 %A Steve Heller %C 525 B Street, Suite 1900, San Diego, CA 92101-4495 %D 1997 %G 0-12-339101-6 %I Academic Press/Academic Press Professional/Harcourt Brace %O U$39.95/C$53.95 800-321-5068 fax: 619-699-6380 app@acad.com %P 372 p. + CD-ROM %T "Who's Afraid of Java?" The author of an introductory text has a problem of balance: those who are just learning a language do not know enough about it to point out features of importance, while those who are well familiar with the system may have trouble recalling how it was that they learned, and what they needed to know in order as they progressed. Heller has tried to address this issue by bringing a real, honest-to-goodness novice into the process. In theory, this is somewhat akin to taping a live course, and including the questions and comments of the participants. In practice, though, a class has a number of novices with a range of background and experience. One newcomer is far less likely to bring up all the questions that are likely to arise. Heller's explanations are frequently simplistic to the point of being inaccurate. For example, at one juncture he describes a Turing machine as a kind of computer emulator, rather than as a mathematical model of the types of questions that can be computed in a reasonable time (such as less than the lifetime of the universe). At the time he offers this depiction he is trying to illustrate the Java virtual machine. Unfortunately, he never mentions the proper term (calling it only the interpreter) does not specify the difference between the Java virtual machine/bytecode interpreter and a fully interpreted language (such as BASIC, PILOT, or Logo), equates a "virtual computer" (another term he coins for the virtual machine) with application software, and generally muddies the water. It may not be important that budding Java novices fail to understand the concept of the Turing machine. However, those who *do* understand the idea are going to be bemused by Heller's exegesis, and those who don't know, or care, anything about Turing will have been misled to no advantage, since the original point to be gotten across, that of the Java virtual machine, remains a mystery. Shortly following that section we find that strictly interpreted languages are very rare (this would be a surprise to REXX, Perl, shell, and batch programmers), fail to mention the existence of straight compiled languages, and imply that opcodes written in binary differ from those in hexadecimal. A book teaching programming to those with no computer background should start at the beginning. Trouble is, Heller does assume some familiarity with the technology: the beginning of chapter one states that the reader probably has a computer and is used to working with a word processor. However, even so Heller seems to start a little bit before the beginning, taking not just baby steps, but even some baby talk to describe programming itself (in chapter one) and the computer (in chapter two). On the other hand, important concepts such as that of syntax and a programming environment (exclusive of the actual one used) are not introduced or dealt with at all. Chapter two spends pages teaching binary and hexadecimal notation, but finds transistors and CPUs too hard to think about. Chapter three starts to get into actual programming. The usual type of approach is to begin with some kind of "hello" program: a simple outline of what the code looks like so that you can begin to build on that. Heller's approach is to introduce the reader to Java bytecode level "machine" language, so that they can see what the compiler thinks of all this. I would tend to agree that a programmer who hasn't worked with machine language will never fully understand what is happening in the computer, but then I tend to think that every programmer should build an adding circuit out of transistors (or, even better, relays) in order to really appreciate the full computing process. For most people, assembly programming is a rather poor introduction to an object-oriented language. The book continues with more basic programming functions in chapter four. The inclusion of novice Susan's contributions in these sections tended to be inconsistent. Certain features would fly by with little explanation, while others were discussed in greatly detailed dialogue. As detailed as it might have been, sometimes the dialogue was little help, since it inclines towards the cute rather than the important. Chapters five and six move into more advanced work with program structure and construction. At this point, however, the material should be starting to discuss object-orientation, since it moves into classes. Instead, it shows its lineage arising out of earlier books on procedural languages by concentrating on the class strictly as a type of function or library. This objection becomes even stronger in chapters seven and eight, which look at the strong object concepts of inheritance and polymorphism, but still fail to give simple and clear explanations before throwing pages of source code at the reader. A couple of appendices seem to present material that should have been included in the book proper but wasn't. In spite of the cute conceit of having a dialogue with a learner present in the book, I can't say that this volume has much to recommend it over a number of other introductory Java texts. The logic and organization are not exceptionally poor, but they are not great, either. Explanations may, or may not, make much sense to the reader, and, as the author admits, in terms of Java itself the work is far from exhaustive. (Personal comments on authors, at least insofar as the comments do not reflect on their writing and knowledge, are generally as pointless as commenting on cover art. However, even before I got to the first page of the first chapter I had found some extremely amusing ironies. If one person can be said to be afraid of Java it is Bill Gates. Many books on Java give you Java itself: often the Java Developer's Kit, or the JDK plus some other environment. So what does this one provide? A "trial edition" of MS Visual J++, an ironic wording in and of itself in view of current legal proceedings. Then there is the fact that a distinctive of the book is the dialogue with a "designated novice" on behalf of those readers who do not get to question the author's descriptions and explanations. Through the dedication, preface and "Letter From a Novice" one keeps wondering exactly what relationship Susan Heller has to Steve Heller, and it is not until Eric Raymond gives the game away that you realize Susan is fiance, and now wife, to Steve. A number of authors acknowledge other authors who may have influenced them. Heller mentions two. While I am not going to debate their literary or philosophical merits, it is interesting to note that he probably couldn't have picked two more controversial models. Finally, there is a question that Eric Raymond asks at the end of his foreword: is Steve Heller going to give Susan co-billing on the next book? To truly appreciate this, one has to have been privy to the attacks heaped on Raymond after he published the "New Hacker's Dictionary" [cf. BKNHACKD.RVW] by those who felt that they were owed a piece of the book.) copyright Robert M. Slade, 1998 BKWAJAVA.RVW 980111