This excellent book introduces algorithms that are heavily used in daily life, yet are unknown to the general public. The author aims to introduce them without requiring advanced knowledge:
I assumed that the great algorithms would fall into two catagories. The first category would be algorithms with some simple yet clever trick at their core – a trick that could be explained without requiring any technical knowledge. The second category would be algorithms that depended so intimately on advanced computer science … Imagine my surprise and delight when I discovered that all the chosen algorithms fell into the second category!
The book is a fun read and despite knowing some of the details already, it helped to build my appreciation of the algorithms and their applications.
The algorithms covered are:
- Search engine indexing
- Public key cryptography
- Error-correcting codes
- Pattern recognition
- Data compression
- Databases – reliability and consistency
- Digital signatures
There’s also an excellent chapter on unsolvable problems, with a nod to Alan Turing.
Seven Databases in Seven Weeks – a guide to modern databases and the nosql movement
I picked this book to learn about NOSQL which seems to be a current buzzword. I have experience writing SQL-based applications with Watcom and SQL Server, but the new database back-end choices are impressive and have neat ideas that can be generalised for other applications (e.g. resilience).
Paradox – The Nine Greatest Enigmas in Science – Jim Al-Khalili
I’m enjoying the mixture of history and pop science – Al-Khalili explains physics as well as anyone.
Clean Code – A Handbook of Agile Software Craftmanship
This book was recommended by a colleague. I agree with nearly all of it so far, but I’m intending to keep the “m_” prefix on my member variables. Would have been five stars if the examples were C++.
All About High-Frequency Trading (Michael Durbin)
This is subtitled “A detailed primer on today’s most sophisticated and controversial trading technique”. For me, it really delivers on that promise with decent coverage of the subject from a high-level and even some detail on basic trading strategies as well as a stab as system design.
Linux Kernel Development (Robert Love)
I picked up this book at the ACCU 2012 conference from their Charity Book stall (for a small donation). This is the 2005 version, so slightly out of date. I’m finding the mix of low-level detail (down to names of data types and methods) in amongst high-level theory (memory management, process scheduling) hard – but there’s certainly plenty of useful detail.
||This recent book was recommended by Herb Sutter at CppCon as a slim summary of all that C++ developers should be expected to know. It’s a good read, sprinkled liberally with example code to illustrate the techniques that make up modern C++. Having originally learn C++98, then spent a lot of time reading and trying our C++11 techniques, it’s interesting to see how the language looks when presented as a whole. Also, the book covers some C++14 additions.
The points I particularly found interesting were:
- override – use this to mark virtual methods that are declared in the base class and have an implementation in the derived class (avoids declaring a new virtual method if the signature is wrong)
- explicit – single argument constructors should by default be marked as explicit to avoid unexpected implicit conversions, unless there’s a reason not to
- delete – when defining a base class, it’s good practice to ‘delete’ the default copy and move operations, given that the default implementations will not know how to handle derived class members
- regex – the book covers the standard library as well as the language. A welcome addition is std::regex, and the chapter in this book is an excellent introduction
- vector initialisation – uniform initialisation of vectors of a struct can still use initialiser lists, even if the struct members have different types e.g. string/int
- vector::at – this method returns the same value as operator (subscript), but performs bounds-checking, which doesn’t happen with operator
Filed under C++, Tech Book