Practical C++ Programming

By Steven Oualline

I bought this book in Lisbon in 1996 or so, when I was still an Oracle Software Engineer (or, in other words, a PL-SQL hacker), and wanted to learn C++. This book didn’t help me then, and now, when I want again to learn C++, but for a certain project, this time, it doesn’t help me either.

  • Author: Steven Oualline
  • Title: Practical C++ Programming
  • Pages: 557
  • Published: 1995
  • Publisher: O’Reilly
  • ISBN: 1-56592-139-9

Note that this notice refers to the first edition. A second edition has been published since, which may be more helpful.

The big problem with Practical C++ Programming is that is, to all intents and purpuses, Practical C Programming with a little something on the side named classes. There is, it is true, a chapter on exceptions and a chapter on templates, but those read like afterthougths. And there is no excuse to teach beginning programmers the rudiments of C instead of C++, especially when interleaved with little sermons on good programming practice. And Oualline never gets beyond rudiments, trust me on this. There’s a lot of text, but little content.

In particular, the programmer who still uses character arrays for strings when coding in C++ needs to be forcibily separated from his computer and perhaps hit repeatedly with a very large mallet.

I’ve ordered Accelerated C++, by Python luminary Andrew Koenig, in the full expectancy that it will prove to be far more useful for my purposes.

Python in a Nutshell

By Alex Martelli

Python in a Nutshell is the latest addition to the small array of books that  are always on my desk. The others are Present Day Political Organization in China, The Little Lisper, Practical C++ Programming, Van Dale Nederlands-Engels, The Nine Songs, The Songs of the South, An Introduction to Buddhism, Learning the VI Editor, GUI Programming with Python using the Qt Toolkit, Mastering Regular Expressions, The Concise Oxford, Python Cookbook and Het Romeinse Leger. One thing is clear: out of 14 books, 5 are O’Reilly titles. I must be a programmer.

  • Author: Alex Martelli
  • Title: Python in a Nutshell
  • Pages: 636
  • Published: 2003
  • Publisher: O’Reilly
  • ISBN: 0596001886

Python in a Nutshell could have been the third or fourth paper reprint of the on-line Python documentation library. It isn’t. With excellent clarity, conciseness and preciseness, Martelli explains the Python language and introduces many of the included libraries.

Chapter 4 is [ETA: was. Not any more.] available in PDF format from the O’Reilly website. This is the chapter that explains the Python language itself, and is therefore an actually useful selection. Sometimes O’Reilly has a tendency to choose the least interesting chapter to demo (as with OS X for Java Geeks), but this chapter demonstrates the good points of Martelli’s writing while giving the reader immediately useful information.

I thought the lack of mention of PyQt a bit disappointing, naturally… But GUI’s don’t get much attention anyway, in a nutshell type book. Highlights, apart from the abovementioned chapter 4 are the chapters on Strings, Threading and Debugging.

All in all, 636 pages of well-indexed knowledge and experience. Well worth the rather exorbitant sum of €44,- — the US price is only $34,95, which would translate to about 30 euros at the current rate of exchange.


SSL and TLS: Designing and Building Secure Systems

By Eric Rescorla

Yes. SSL and TLS: Designing and Building Secure Systems is exactly what the title promises. If I had already coded a rating system, I’d probably expand it for this this book.

  • Author: Eric Rescorla
  • Publisher: Addison-Wesley
  • ISBN: 0-201-61598-3
  • Published: 2000
  • Pages: 499

If you have to code an application that uses SSL or TLS — or if you have to code an SSL or TLS library, then this is the book you need. It certainly was the book I needed, and I needed it badly, when I was working on the secure messaging layer over JXTA for Tryllian’s ADK — agent development kit.

Sometimes, but all too seldom, one reads a book that simply exudes competence. This is one of those books. All through the book it is clear that Eric Rescorly indeed does know what he is talking about; he knows so well what he’s talking about that he never has to fudge, he never has to write obscurely to mask lack of knowledge, and thus he writes with complete authority. He manages to be crystal clear, surely an achievement when writing on a topic traditionally viewed as extremely obscure.

However, that is not the only commendable quality. SSL and TLS: Designing and Building Secure Systems is very well organized. Rescorla first discusses public key cryptography — the basis for SSL and TLS — with a practices ease. Then he continues to give the details of the SSL/TLS protocol in the second part. The third part shows how to use SSL or TLS in your application, using very clear example code, both in C and in Java.

An engaging feature is the clear division between general discussion and deep-down core details. Fortunately, there is no stint of either, and the core details are illustrated with dumps from Rescorla’s own packet dumper.

At all places where I needed a backreference to something discussed earlier, I found that Rescorla had anticipated my needs and added a quick ‘as discussed in chapter X, Y is needed for Z.’ — and made it possible to read the whole book in about three days.

Topics discussed are: security concepts, the SSL protocol, security issues, performance, application design, http over SSL and smtp over SSL. Two appendices complete the book.

In short: if you are working on an SSL application, and you don’t have this book, then you’re, in view of the importance of security, almost criminially negligent.

Mastering Regular Expressions

By Jeffrey E.F. Friedl

The first edition of Mastering Regular Expressions by Jeffrey E.F. Friedl tries to explain the way regular expressions work, and how you can work with them. In this edition he focuses on Perl; the second edition is said to pay more attention to Python. Not a very useful book, I’m afraid.

I consider this book rather a — what’s the English for ‘miskoop’?. Well, I shouldn’t have bought it. Not just because the moment Amazon delivered it to my doorstep, the second edition that offers more Python converage, but because the text itself is flawed.

Let me expand on that. I needed this book because I wanted to write several complex applications for which regular expressions seemed best suited. Since I’m pretty much a self-taught programmer, I haven’t had the formal training in formal languages and compiler design that would have made using regular expressions a snip.

In order to reach that goal I needed a text that would explain how regexpses work, how to use them and what the pitfalls are. Succinctly, and with a minimum of fuss.

Friedl, however, suffers from the common O’Reilly disease (and I must admit that I cheerfully copied that in my book on GUI programming with Python): the authors tries to be witty. Funny. Verbose. Countless cute metaphors about cars and engines make it difficult to find what you need, or even to read at any speed.

Part of that lack of progress is because the book doesn’t display any celerity: around page 73 we’re still dealing with common metacharacters. And after the chapter on backtracking, the differences between the various flavours of regular expressions found in Emacs, Perl, Python and so on are treated, but not in any real detail.

And chapter 7 deals just with Perl. Well, perhaps I just had the wrong expectations, or perhaps I already knew too much about a subject I thought I was pretty ignorant in…

A much better choice would have been to buy the Dragon book, that is, Compilers, Principles, Techniques and Tools, by Alfred V. Aho, Ravi Sethi, Jeffrey D. Ullman (Contributor). That explains what regular expressions are in fine detail.