UKUUG home


(the UK's Unix & Open Systems User Group)






Book Discounts

Other Discounts

Mailing lists






Programming from the Ground Up Jonathan Bartlett
Published by Bartlett Publishing
332 pages
£ 19.95
Published: 1st July 2004
reviewed by Owen Le Blanc
   in the December 2004 issue (pdf), (html)

Jonathan Bartlett sets a quite specific, explicit, and carefully limited goal in this book: he wants to write an introduction to programming, a book that students will use as their first programming book. The programming language he wishes to use is assembler language, indeed i386 assembler language under Linux. He writes:

A reader who has finished working through the book should understand how programs work, learn new programming languages quickly, and have in general a good basis for going further in computer science.

It would be dishonest to review this book without admitting openly that I disagree with the author's views: I don't think assembler should be a student's first programming language, and despite the easy availability of machines having the i386 architecture, I think the inherited backwards-compatibility of those processors make their assembler languages more difficult to learn than, most other processors. Considerations of this kind may colour what I have to say.

The book is released under the GNU Free Documentation license, and this published version is its seventh version, according to the included documentation history. The back of the title page includes full instructions for downloading a copy from

I gather that the first 5 versions were available only online, and that printed copies became available only in January 2004.

The text contains an introduction, 12 further chapters, and an index. The introduction contains, among other advice, the recommendation to use Knoppix if you don't have a Linux of your own and can't get an account under Linux from some ISP. The author assumes that the student has already learned to use some text editor.

The chapters cover computer architecture, writing your first program, (including compiling and running it), functions, files, input and output, and optimisation. Other chapters discuss robust programming, writing and using shared libraries, memory, number representations (decimal, binary, octal, and hexadecimal), and high level languages. The last chapter gives a considered list of books which a student may wish to study after completing this one.

The book's appendices cover GUI programming (using Gnome libraries), x86 instructions, important system calls, debugging with GDB, and an index.

Perhaps because the book aims to reach an audience of beginners, it is written in an unusually clear and careful style. Each chapter begins with a little summary, which states the goals towards which the chapter aims. If necessary, it explains why they student should read and study that chapter. Each chapter ends with a review, with sections titled `Know the Concepts' (a list of questions the student should be able to answer), `Use the Concepts' (a list of exercises), and `Going Further' (topics for research). The chapters vary slightly in length, but average about 20 pages each.

I have tried quite a number of the example programs and code fragments, and I have not found anything that doesn't work. I think the author develops his theme with great care, carrying the reader through one topic to the next. I am impressed, despite my scepticism. Nevertheless I have some concerns. The editing (attributed to Dominick Bruno, Jr.) leaves much to be desired; for example:

(P.7; awkward phrasing, the word `architecture' three times in a short sentence, and the unidiomatic `based off of'.)

(P.51; unclear word order and ambiguity about whether `storage' is singular or plural.)

(P.115; the text hasn't run through a spelling checker.)

Overlooking these minor irritants -- and there are, to be fair, not very many of them -- I could happily recommend this book for use as an introduction to assembler language as a second programming language. Despite my disagreements with the author, I found this an impressive book. Perhaps its open GPLD license will lead to a swift correction of its remaining weaknesses.

Back to reviews list

Tel: 01763 273 475
Fax: 01763 273 255
Web: Webmaster
Queries: Ask Here
Join UKUUG Today!

UKUUG Secretariat
More information

Page last modified 02 Apr 2007
Copyright © 1995-2011 UKUUG Ltd.