A&B Computing
1st July 1984
Publisher: Addison-Wesley
Machine: BBC B/B+/Master 128
Published in A&B Computing 1.08
Good old Addison-Wesley have released yet another book about the BBC Micro, as a second part to an earlier publication 'The BBC Micro Book... BASIC, Sound and Graphics'. There are few prerequisites to using this book other than a sound knowledge of the manual, very little reference is made to the earlier book and should thus be suitable as an independent source of text other than the User Guide.
Presentation And Content
Presentation is very important to a book such as this. A colourful cover depicts the BBC flying over a jungle with reference to certain projects found later in this book. It is itself not one of those publications which is a virtual re-write of the manual; it holds many examples, illustrations and projects to complete which may be suited as classword although I feel that some of the exercises are just a little too difficult. It is really up to the teacher to decide which are suitable for use and which are not.
Self-Contained
Each chapter is self-contained and requires no reference to earlier or later chapters other than the Introduction. I found it enjoyable moving from chapter to chapter in this haphazard fashion giving the impression of one strolling about the insides of the computer. Very nice.
"Advanced Programming Techniques..." sets out from the beginning to develop your programming style, it assumes that you have already mastered BBC Basic and that you have developed a good knowledge of the BBC's Operating System, this is an important prerequisite and it is stated quite clearly in the Preface. If you are unsure about your knowledge on any of the above, then the companion publication may be more useful.
One main advantage that "Advanced Programming Techniques..." has is that each chapter is a separate tutorial on its own, the programming style is clearly geared towards structured programming (which you either love or hate) and leads to a beautifully ordered and structured synopsis of the PROCedures involved, in fact in all but one case PROCedures were used instead of GOTOs (and the latter proved unavoidable in the circumstances). If you do decide to read the book sequentially (i.e. chapter to chapter) then you are treated to a whole self-contained course of tips, aids and projects which all individually highlight the features of programming the BBC in a manner which is both interesting and informative, the authors McGregor and Watt cleverly hold your interest by introducing a Basic "Space Invader"-type game and invite interaction and improvement throughout, making use of speed and memory-saving devices which could be applied to just about any application you could think of in Basic. There is some quite hefty use of mathematics in the third chapter which deals with matrix multiplication in order to perform a number of transformation on an object; again, there are some very clear illustrations and these (alongside clear screen dumps) give very pleasing effects. The Math aspect increases when we begin to use wireframe drawings and hidden line removal (a classic problem which causes great confusion in other books) and it would be wise just having a quick browse over this chapter a couple of times before tackling the subject if you are a bit woolly headed when it comes to maths.
The book moves from wireframe graphics to animation. This chapter raises some points about computer aided learning and word animation alongside user-defined characters and even a Micro mouse project. This is certainly a better introduction to UDGs than the manual's but is this advanced programming? Certainly in the light of the other projects it isn't, but nevertheless it does raise some useful points.
'Advanced uses of sound' is a very useful chapter; it introduces not only the basics of harmony and tempo, but also applies this with relevant coontrol over the hardware to achieve this. There are some useful algorithms here which tie into a project at the end of the chapter. Musical knowledge may be useful but it is certainly not as expected as music terminology is clearly explained.
Probably the second most classic exercise is that of string searching and sorting, the book gives some very powerful algorithms for searches including simple exchange sorts and linear search routines. Really advanced methods such as binary chopping and direct access to subtables are also handled well although at this level, I feel that Basic is totally unsuited for the purpose. This chapter leads on to the subject of recursion and culminates in graphic drawings of Sierpinski curves and its variations. The age-old "Tower Of Hanoi" routine is given and solutions are sought interactively.
In a way the last two chapters lead on from this to introduce tree-branching and fundamentals of artificially intelligent games, which are exemplified in a series of exercises building up a 'Tic Tac Toe' style of game. The last chapter centres around a Basic interpreted 'Logo' language, whose listing is given in its entirely (separated for explanation purposes). The book is finished off with five appendices, all of which are extensions of their relevant chapters but also include colour tables and an ASCII chart.
Conclusions
As a whole, the book was delightfully easy to use and read, although I feel that the print quality lets it down somewhat; a shame because of the whole the examples are clear and concise with plenty of diagrams and illustrations where needed. The program listings were readable and thoroughly error-free, obviously there has been great thought over the subject matter, providing a useful source text as a supplement to the User Guide since it centres around developing a conscious programming style and although the book retails at £7.95 it certainly represents good value for money and would be a useful extension to those who feel confident in branching out from simple programming.
On the teaching side, the book is a good and thorough series of lessons in advanced Basic programming, there are exercises in which you can either interact or avoid, and each subject has, at least one or two useful features. McGregor and Watt (the authors) have found an unfilled niche in an already overcrowded market, many of which are appallingly bad and centre around 'Getting Started'. 'Advanced Programming...' takes you far beyond that and invites the reader to stretch his brain and start thinking about problems which are made both painless and enjoyable which should make this book a must for any BBC owner and/or programmer.