For the last four and a half years I’ve been developing OS X and iOS software using the Objective-C programming language. Whilst I have very few problems with Objective-C itself I do occasionally find myself having to drop down into C and this is something I do tend to struggle with. The problem is that my development career (around 18 years now) has never encompassed C itself and, despite Objective-C being a superset of C, not having to write C code means that I’m not comfortable with it and certainly don’t embrace it. This is something I’m now going to fix.
As well as a wide range of web sites, blog posts, discussion groups and more, there are a plethora of C programming books to choose from.
One of the most well known and highly though of is The C Programming Language by Brian Kernighan and Dennis Ritchie. It has the advantage of being relatively concise (the second edition is 272 pages long) but it is not a title that has ever clicked with me (I’ve tried to work through it three times in the past).
An alternative which is also highly regarded is C Programming by K. N. King. This is not a concise title (the second edition runs to 860 pages), not is it cheap, costing around £50 in the UK and around $100 in the USA. However I did buy a copy a couple of years ago and I remember enjoying reading it and according to a dusty bookmark actually read the first 150 or so pages. I can’t remember why I stopped but it was was probably due to some other demand on my time and then a lack of self-discipline resulting on it going back on a bookshelf.
What I do remember is that the writing C code in Xcode seemed to be over-kill and add a lot of unnecessary cruft to the process but similarly writing the code in something like Vim and compiling it in Terminal is just too torturous. However a few days ago I came across CodeRunner because I’d just used another application written by Nikolai Krill, the excellent regular expressions Patterns.
CodeRunner seems ideal for the sort of C code I’ll be writing. It is a simple, light-weight and functional editor with features such as syntax highlighting, code completion, intelligent bracket matching and tabs. It is really quick and easy to use and just what I was looking for.
With any luck I’ll have worked through C Programming by the end of this year but even if I don’t manage that I am determined to end this process as a competent C programmer who no longer worries about digging down into C as and when necessary.