While the official NXT-G programming language included in the LEGO Mindstorms NXT set works well for many people, what if you want to increase your programming potential or simply prefer a text-based language rather than a graphical one? John C. Hansen's book provides the answer to both of these questions by teaching you how to program the NXT in NeXT Byte Codes (NBC) and Not eXactly C (NXC).
The book begins with an introduction to some basic programming concepts and then shows you how to set up NBC/NXC. Since these unofficial languages are based on the standard firmware, you don't have to download custom firmware to your microcomputer, making setup a breeze. Chapters 2 through 4 discuss the NXT hardware, NXT firmware, and basic construction concepts, respectively. If you're new to the NXT set, you'll find these chapters helpful.
Chapter 5 covers the BricxCC IDE, which supports NBC, NXC, and a number of other languages. This is definitely one of my favorite chapters. BricxCC is an incredibly powerful but user-friendly program, and this chapter shows how to effectively use and customize BricxCC. Perhaps the most interesting chapter in the book is Chapter 6, which discusses free NXT utilities that perform miscellaneous functions.
The real power programming begins in Chapters 7 and 8, which cover NXC and NBC. If, like me, you've programmed the RCX microcomputer in Not Quite C (NQC), you'll be glad to see that Hansen created NXC with a lot of the same features and same "feel." Naturally, these chapters are most easily understood if you have a background in C or programming in general, but such knowledge is not required. The book assumes you are a beginner and explains fundamental programming concepts. If you need more information about a basic concept that the book doesn't discuss in great detail (for example, using arrays), you could easily consult an online resource.
Chapters 9 through 16 teach you how to build a basic robot (Versa), program basic and advanced NXT outputs, program basic and advanced NXT inputs, create an intruder alert robot, explore "games that people play" on the NXT, and control an NXT robot remotely. It is through these chapters that you get practical experience in using NBC/NXC.
In conclusion, if you're looking for an effective and user-friendly text-based programming language for the NXT, then this book is for you. NBC, NXC, and the BricxCC IDE are outstanding resources, and this book teaches not only the basics but also quite advanced concepts (which will be of interest to expert users out there). Bear in mind, however, that this isn't primarily a book of building instructions. Its purpose is to teach you how to effectively program robots--and it accomplishes that purpose very well.