Wednesday 2 May 2012

To C or not to C.

I've been writing code for over 23 years. Earning a living as a software developer for 15 of these, after spending 3 years gaining a Computer Science degree. I've cut my teeth on a number of different programming languages: Basic, 6502 Assembly, Pascal, Miranda, Modula-3, Occam, 68k Assembly and C. Before moving onto C++, Delphi, PHP, VB6, VB.Net, C#.Net, JavaScript, Java and Erlang.  No doubt I've probably missed some.

Windows and Linux have always been the operating systems I've worked with. Though I've worked on a mixture of applications: low level device drivers, kernel modules, user applications, services, web services, websites and middleware. Even after all this experience I still come back to the fundamental question of which programming language to pick for my next personal programming project.

Guess that leads me to try and specify what it is I wish to develop. I intend to implement a horizontally scaling, distributed in memory key value store. This will be an enterprise ready application, so focusing on reliability and speed is important. It needs to run 24/7 and there can be no shutdown for maintenance, or slowdowns caused by things like garbage collection.

So I think I'm decided.  C is my choice.  It gives me the most control over this applications destiny.  If there's a problem with performance or a memory leak it will be mine.  Bad in some ways, but as these bugs are mine they will also be mine to fix.  At least using C anything can be fixed, it can't get buried in some third party library that I've no control of.

No comments: