BKGBIWJS.RVW 20000509 "Web Developer.com Guide to Building Intelligent Websites with JavaScript", Nigel Ford, 1998, 0-471-24274-8, U$34.99/C$62.50 %A Nigel Ford n.ford@sheffield.ac.uk %C 5353 Dundas Street West, 4th Floor, Etobicoke, ON M9B 6H8 %D 1998 %G 0-471-24274-8 %I John Wiley & Sons, Inc. %O U$34.99/C$62.50 416-236-4433 fax: 416-236-4448 rlangloi@wiley.com %P 340 p. %T "Web Developer.com Guide to Building Intelligent Websites with JavaScript" When Ford uses the word "intelligent," he means it. Where other books might be content to have intelligence measured in remembering your name, or creating dancing fonts or shimmering logos, Ford attempts to bring the principles of artificial intelligence to Web site programming. In this, alas, he does not altogether succeed. You would need to know a lot about both JavaScript and artificial intelligence to create a smart site from this book. Chapter one starts out with a number of examples that could have been built with CGI scripts or frames. There is also an odd confusion with Java in places, even though the book does point out the difference. JavaScript events embedded in HTML (HyperText Markup Language) and forms are in chapter two, mostly using onClick. This also points out one weak area of the book: the content does not often explain the distinction between JavaScript code and HTML, and the beginning coder would likely be confused. Chapter three takes off, covering prompts, alerts, variables, arrays, functions, conditionals, and operators. There is still no talk of design (or even decent HTML). The material is easy to copy, but not necessarily to understand; the discussion of arrays and the examples are correct, but the novice would not necessarily be able to figure out that array entity numbering starts at zero. HTML and JavaScript are still mixed in chapter four, and although there is some talk of design, it isn't very good. This chapter also betrays the Netscape specific nature of the text. Chapter five promises artificial intelligence, but while it starts to deliver, the content is primarily concerned with drill and practice, conditionals, and boolean functions. Trying for a knowledge based system, chapter six attempts to get JavaScript to emulate Prolog, and presents an array based tree database along with objects. Interpretation of user input, in chapter seven, starts with simplistic input validation, and then tries to expand that to include natural language parsing. Chapter eight doesn't really get into game theory, it just gives some code for three puzzles and one game. DHTML (Dynamic HTML), cascading style sheets (CSS) and various commands dealing with appearance are covered in chapter nine. Chapter ten looks at server-side programming, but with some confusion and contradiction. For example, the text refers to server-side scripts as being compiled into bytecode (another possible confusion with Java?) but also talks about commands in the HTML code of the page. Chapter eleven lists a number of JavaScript resources on the Web. Appendix A provides an extremely terse JavaScript command reference: it's usefulness is doubtful. JavaScript is a powerful language, and it is undoubtedly possible to code artificially intelligent applications with it. However, this book does not provide sufficient background in either JavaScript or artificial intelligence for the novice in either to have a good chance of success. copyright Robert M. Slade, 2000 BKGBIWJS.RVW 20000509