REVIEW - Small Memory Software - Patterns for Systems with Limited Memory

Title:

Small Memory Software - Patterns for Systems with Limited Memory

Author:

James Noble

ISBN:

0201596075

Publisher:

Addison-Wesley Longman (2001)

Pages:

333pp

Reviewer:

Francis Glassborow

Reviewed:

April 2001

Rating:

★★★★★

This book is a model of what books on optimisation should be about

When I picked up this book I was feeling pretty depressed having just waded through three very disappointing books. The title stood out and I thought 'Not another of these books catching the trend.' I noticed neither the publisher nor the authors' names. Had I noticed the latter I would probably felt that I should have passed the book on because I have a high opinion of Charles Weir - I will risk reviewing the work of real friends because they will forgive me if I rip their work to shreds, but acquaintances are rather different.

I need not have worried; this book is a model of what books of this kind should be. The authors have taken their experience of writing for small memory machines and extracted a couple of dozen patterns. I am left wondering how a pair of authors located on opposite sides of the World (Charles Weir is UK based and James Noble works in New Zealand) get to collaborate on a book such as this one; modern communications and travel have a positive side for which we should be grateful.

The book deals with the problems of programming in a memory constrained environment. Memory is taken in the wide sense to cover everything from cache to backing store but that is it. They do not confine themselves to systems with a handful of bytes of RAM, some of their patterns would hardly apply in such circumstances; I cannot imagine applying garbage collection to the software for the embedded controller of a washing machine.

This book is a model of what books on optimisation should be about; a detailed study of the general principles that have proved beneficial over a period of time.

The book is divided into five principle sections with an Introduction and an Appendix (A Discussion of Forces). The main sections are Small Architecture, Secondary Storage, Compression, Small Data Structures and Memory Allocation.

Any programmer working on software that is constrained by memory resources should study this book carefully and make himself/herself familiar with the contents. Like reading many books on Patterns, your first reaction maybe that you already knew most of it. But did you, did you really or is it that once someone else categorises them they seem obvious?

Do you need me to tell you that I thoroughly recommend this book? I am very glad that I got to review it myself.


Book cover image courtesy of Open Library.