Thursday, November 17, 2011

Thursday, November 03, 2011

Programming books 2

A while ago, I wrote about some of my favourite programming books. I was just reminded of a couple of books that deserved a special mention. I mentioned Stroustrup last time, but what I neglected to point out was the clever and witty epigraphs that appear at the head of each chapter. The only other book I've found to compare in that respect is Hal Fulton's The Ruby Way - sheer genius!

Wednesday, November 02, 2011

Recent gems

When I first bought Conrad Cork's the New Guide to Harmony with LEGO bricks, I was horrified to learn that I was expected to find literally hundreds of tracks. I had been dimly aware of Spotify, but it's great.

Yesterday, through a link in Hacker News I think, I discovered SciRuby. That is a project that could easily eat up all my spare time. I have oddly ambivalent views towards Python and Ruby. Like Ash in Alien, I admire Ruby's OO purity, whereas Python just works, in a DWIM kind of way - it's so good, it's boring!

Saturday, October 15, 2011

Dennis Ritchie

I missed Radio 4's Last Word yesterday, but I've just looked it up on iPlayer. I particularly wanted to hear what they had to say on Dennis Ritchie, who died on Wednesday. I was shocked to find no mention of him. The BBC certainly noted his death, and acknowledged his immense contribution to today's IT. So why did they have nothing to say in their primary obituary programme?

For those who don't know, Dennis Ritchie invented the C programming language. Much of Windows is written in C; some of it is written in C++, which is based on C. If you prefer Mac to Windows, Mac OS X is based on the Unix operating system, which was written in C. In fact, Dennis Ritchie wrote much of the original Unix; that's why he invented C.

The importance of C cannot be over-estimated. By the TIOBE Index, C is, at the time of writing, the second most popular programming language in the world. But its influence spreads far and wide. Look at family trees of computer languages; at the time of writing, of the top 10 languages in the TIOBE Index, all but Visual Basic owe some of their heritage to C.

In the early days of the Web, any pages that were generated dynamically would typically be written in C or Perl. Nowadays, much of that back-end code might be written in PHP, Ruby or Java. Some major Web companies, including Google, Yahoo! and Youtube, use Python. All of these languages have to be interpreted or compiled, that is translated to machine code, before the computer can run them. With the exception of Java, the interpreters for all of these languages are generally written in C. Several Java compilers exist, typically written in C++.

Ritchie's influence extends to smartphones. Apple's iOS iPhone operating system is based on BSD, a variant of Unix. Google's Android is based on Linux, which is a functional copy of Unix. iPhone apps are written in Objective-C and Android apps are written in Java, both languages based on C.

I've written before about my slightly odd habit of reading computer manuals. It started with Kernighan and Ritchie (Yes, Ritchie - him again!) It took me about a quarter of a century to find another computer manual that came close in terms of readability.

There has been much written in the past couple of weeks about Steve Jobs. He was an architect, not a builder. He could say what he wanted software to do, but he couldn't write it. His fame stems mainly from his being a charismatic salesman. The artisan programmers who made his vision a reality did so using tools made by Dennis Ritchie.