BKIWWWHP.RVW 20000420 "Internet and World Wide Web How to Program", H. M. Deitel/P. J. Deitel/T. R. Nieto, 2000, 0-13-016143-8, U$67.33 %A H. M. Deitel deitel@deitel.com %A P. J. Deitel deitel@deitel.com %A T. R. Nieto deitel@deitel.com %C One Lake St., Upper Saddle River, NJ 07458 %D 2000 %G 0-13-016143-8 %I Prentice Hall %O U$67.33 +1-201-236-7139 fax: +1-201-236-7131 %P 1157 p. + CD-ROM %T "Internet and World Wide Web How to Program" Deitel and Deitel have made a name for themselves, and obtained a commanding presence in the programming textbook market. Their books are generally well structured, in terms of advancing through the material in such a way that the student is able to progressively add to his or her arsenal of skills. Unfortunately, the books are not always as careful about the specific contents of the text. This material is rather heavily dependent upon Microsoft products. The book comes with Internet Explorer and FrontPage Express on the CD-ROM, and examples use the Microsoft versions. This is acceptable in a work which is, after all, intended to take students through a course of study and wants to minimize the variations in environment. However, while there is mention of the fact that browsers, and even versions of the scripting languages, may vary, this does not appear to be pointed out in practice through the book. Chapters one and two are very simplistic introductions first to computers in general, and then to the Internet and World Wide Web. The presentation of HTML (HyperText Markup Language) that is given in chapters three and four is clear enough for the basic operations, but emphasizes stylistic elements over functional ones. Complications are brushed aside, as when forms are proposed with a not-yet-covered Perl script, rather than the more accessible mailto function that students could use right away. Three commercial products are promoted in chapters five to seven. Chapter eight begins instruction in JavaScript programming. Unfortunately, some important points are mentioned tersely, or not at all. Having seen a number of examples of HTML in the previous material, we are suddenly confronted with a DOCTYPE statement, and no idea of why or how it may be needed. There is a brief reference to the fact that these initial scripts are being created in document headers and a promise that inline scripts will be covered later, but no explanation or specifics. Server side programming is not reported. Again, formatting of material is presented earlier, and in more detail, than more substantive commands like window.prompt and parseInt. The material is definitely presented in a field independent manner, which makes it easy to get started producing programs, but quite difficult to understand what is actually going on. For example, although the terms are used correctly, there is no discussion of the differences between keywords, object, methods, and functions. Therefore, novice readers may misunderstand, for example, the assertion that keywords never have capital letters since built in functions quite clearly do. Still, the text does not assume any prior familiarity with programming, and touches on, albeit lightly, a number of basic and important concepts. Chapters nine and ten deal with control structures. (Occasionally the book disregards its own advice: while earlier material stressed the importance of aligning indentation for nested statements, the sample code for labeled breaks is very confusing.) Functions are illustrated in chapter eleven. Once again a limitation in prior material presents a problem: the ability of a form to call a script as action is passed over too briefly. (There is also a typo in the one reference to help in chapter fourteen: it's in sixteen.) Chapter twelve takes a fairly standard look at arrays. The talk of objects in chapter thirteen may be misleading: it is only specific JavaScript object methods (commands or operations) that are discussed, and not object-oriented programming as such. It should also be noted that, despite the number of topics covered, this section overall is really only an introduction to JavaScript. Variations between JavaScript 1.0, 1.1, 1.2, ECMAscript, and Microsoft's JScript get such scant mention that one might as well say that they are not covered at all. Internals of the language, and inconsistencies in behaviour of variables and operators, are not presented either. Readers will be able to start generating simple "active" content on Web pages, but only at a level that could be duplicated by other methods. Dynamic HTML (aka DHTML) starts with Cascading Style Sheets (CSS) in chapter fourteen. The notion of the Object Model, in fifteen, may be confusing. It begins with a reference to changing a P element, and is the first mention of a paragraph element having any attributes. (Understanding of the point is not assisted by the very terse introduction of the P element back in chapter three, and the inconsistent use of the closing tag.) There is also no discussion of the use of more basic technologies to accomplish, for example, timed changing of pages. Chapter sixteen's promised Event Model really only lists the events that can be used to trigger an action. Filters likewise are a list of graphic effects in chapter seventeen. Chapters eighteen to twenty describe some ActiveX controls for data, graphics, and animation. A variety of multimedia (and other) programs are suggested in chapter twenty one. Chapter twenty two introduces VBScript very briefly, starting with the differences between JavaScript and VBScript, looking at some string functions, and then wandering into a confusing look at object-orientation. Electronic commerce and security is covered mostly in terms of press releases in chapter twenty three. Details are few: the discussion of shopping carts doesn't mention cookies, the secion on auctions doesn't mention fraud, and Authenticode is stated to be reliable. Chapter twenty four gives detailed instructions on two Microsoft Web servers, along with a brief mention of those others that have the majority of the market. Database access is discussed in chapter twenty five. The material on Active Server Pages (ASP), in chapter twenty six, concentrates on example scripts, and does not explain either the basic concepts or the security weaknesses of the system. There is a rather slapdash introduction to Perl, and a brief mention of CGI (Common Gateway Interface) in chapter twenty seven. Chapter twenty eight looks at XML (Extensible Markup Language) but even if you know SGML it doesn't explain much. Some samples of Java servlets and cookies are included in chapter twenty nine. The primary target audience for this book is college courses or self- study for programmers. The questions, both self-review and other exercises) are therefore fairly important to the work. Unfortunately, the practice sessions are weak. The questions are, for the most part, simplistic and serve primarily to determine whether the student has read the material, not whether it has been understood at any depth. Still, these may be useful as review, as are the collections of tips and common errors at the end of each chapter. It is also disappointing to find that the book has no command reference for the programming sections, although there are summary lists in various sections. This book does touch on a number of Web programming topics, although touch seems to be the operative word. Instructors would be well advised to go through the material for themselves, first, and be certain they have identified the traps and errors. copyright Robert M. Slade, 2001 BKIWWWHP.RVW 20000420