I’m writing a book!

I’m rather delighted to confirm that I’m now writing a book!

You might have seen my articles in the Pragmatic Programmers’ in-house magazine. (If not, start with this one from August 2012. There’s eleven articles in the series.) The book will be an expanded version of those articles, with more careful and detailed explanations and some more examples.

The articles took a wider look at functional programming (FP), about why it is useful and how to use it effectively. Thinking in terms of data played a big part in the articles, as did the use of a good type system to guide the solutions: types help to describe what data we have and how we transform the data. The series ended by looking past “mainstream” FP towards dependent types, which provide a significantly better language for describing data and its transformations, to the point of giving us a new paradigm for programming. The book will take roughly the same path.

Assuming I finish the book to the satisfaction of the publishers (and it looks good so far (-:), it will appear under the Pragmatic Programmers label http://pragprog.com/),
hopefully early in 2014 – with a possibility of a beta release before the end of 2013.

I’m rather “stoked” (to use a current term) that the Pragmatic Programmers are publishing the book! They’ve got a great range of high-quality titles, plus I really like their attitude and enthusiasm for technology. (For example, not all publishers have something like http://pragprog.com/magazines or http://forums.pragprog.com/, you know.) I’m also delighted that my editor will be former Dr Dobbs editor Michael Swaine, who also edits the PragPub magazine and several of their books, and I look forward to working with him to get my earlier material into good shape. I hope my book will meet the Prags’ standards and be useful and interesting to their audience.

What would such a tome be titled? Well, my working title is “Beyond Functional Programming”. I chose it to convey a bit of controversy, and to differentiate the book from other recent titles. Firstly, I will be looking at the wider picture of programming and programming languages, and how to use them well. Secondly, I’ll look beyond current languages to the new possibilities opening up with dependent types. There’s also a nod to Bruce Tate’s book “Beyond Java”.

“Programming in X” it isn’t. My aim is more “Programming, with some X”. The comma is very deliberate, and important! I feel that too often, undue emphasis is placed on some language rather than the underlying techniques. Instead, I’ll be using language X as a vehicle to cover certain ideas. I won’t be covering language X in the usual level of detail: for one thing, there are several fine books and resources which already do that. My book aims to complement such resources.

The X in the first half of the book will be Haskell. I could have used other languages, but as a vehicle Haskell is ideal. It is the R1150GS of programming languages IMHO. The R1150GS is an excellent motorbike, very well designed, reliable, good performance – but with a few interesting quirks, like the “agricultural character” of the gearbox. The phrase “they all do that, sir” crops up regularly on forums too. Riders of these bikes (like me) refer to such features as “character”, and most of us love the bike for it.

It’s always a touchy and difficult question for an R1150GS owner over which bike they’d want to ride next. Should they stick with the R1150GS? It’s a feasible option, and the bikes are built to last! But can the bike be bettered? Probably. BMW have other more recent models, like the R1200GS, but these are a bit too smooth for my taste. So, like with programming languages, what else can we have? That will be the question in the last third of the book, as we look towards languages and related technology that use very powerful ideas about types.


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s