Comparing Sams Teach Yourself Allaire ColdFusion in 21 Days, Programming ColdFusion (O’Reilly), and Professional ColdFusion 5.0 (Wrox Press)
ColdFusion is unlike any other programming language in existence. No other widespread language shares anything at all like it’s syntax, and no other language is nearly as effective for beginners, or anyone looking to engage in Rapid Application Development (RAD). With a technology as unique as ColdFusion, one of two things can happen: it can lounge in obscurity due to its specific and strange nature or it can spread the word well enough to convince people to write about it and increase the incentive/ability to learn about. Allaire accomplished the latter and the Internet is a better place because of it.
I consider myself fortunate because I had the opportunity to use three books at once in my quest to become familiar with CFML. I also got to see these books from the best perspective possible in terms of a review: that of a beginner. This battle is essentially between three of the very best publishers around when it comes to these kinds of subjects: Sams Net (MacMillian Publishing), O’Reilly, and Wrox Press (a personal favorite of mine - though I’ll attempt to be objective). Which of these came out on top? Read on.
First off: “Professional ColdFusion 5.0” from Wrox Press. The first thing that struck me about this book is it’s raw size; including all appendices and other texts at the end (index, etc), it’s nearly 1200 pages long! As I soon found out, CFML is much more advanced and intricate than it appears to be. As is the Wrox custom, the first few chapters cover installation and getting things set up and ready to go. Beyond that, I must praise the order of learning: printing to the screen, variables, data types, operators, basic string operations (concatenation, etc.), a little bit on precedence, and then a section on some commonly used CFML-functions.
From there, the effective structure continues: basic flow control, switch statements, loops, and even some execution control (aborting execution of the page if necessary). Out of these, I’d say the part focusing on basic flow control was the only one with any problems. It was far too short for such a widespread thing. If/else if/else statements are likely to be used in virtually all scripts that the user writes and yet they receive all of 2 pages in terms of introduction to them. Since I was already familiar with basic programmatic logic, this was not a problem for me, but from a beginner’s point of view, it should have been more in-depth.
After that, it spends a chapter on form processing and what it calls “Complex Data Objects.” The former is fabulous: it’s full of practical, real-world examples that are easily learned and applied, without getting into anything too advanced. The latter, however, is a bit odd. I’ve always felt that variables and arrays should be taught back-to-back, seeing as how they’re so very similar. However, in this book, Lists and Arrays (no, they’re not the same thing) apparently fall under the “Complex Data Objects” heading. I disagree with the way that chapter was put together.
However, I have to admit that the next section (containing three chapters) more than makes up for it. It moves onto the REAL power of CFML: database connectivity. Despite some scattered problems (do we really need to learn about the
The next few chapters cover more advanced concepts, such as cookies, sessions, SSI, and custom tags. The chapter on custom tags is especially impressive. Custom tags are the key to really putting together a streamlined CFML application. It’s a painfully important subject, and I’m proud to report that Wrox delivered when it counted in that respect. However, it does seem to dance around the sessions issue a bit. From what I understand, CFML does not hold the same level of session support that many other languages do, and, consequentially, is reduced to using cookies in an attempt to simulate sessions in the way, say, PHP handles them. An ongoing problem I have is that too many web programming books try to sell you on the language, rather than acknowledge its flaws and virtues honestly. It’s a minor complaint, however.
The rest of the book is a lot of fluff. There are chapters on wireless technologies, on XML, on client-side/delivery technologies, and lots of other miscellaneous things. Only a fraction of these are useful to most people looking to learn the basics of CFML. All in all, however, the book is quite good. I found myself turning to it more often than I did the other two books.