I am asking here from the perspective of a C programmer using mostly Unix. Is it still worth it to do system programming in C?
Well, there are some research projects and experiments in using higher-level programming languages for systems development as well as even new languages for that task. But as far as the current reality is concerned, I don't think C is dead.
However, for many tasks (and I'm seeing many application programming in the UNIX world being done in C, too–which I consider dead-wrong) C is probably more a legacy than a feature nowadays. It's tradition and most people adhering to that tradition don't look around very much even though there may be suitable HLLs for the task.
No, it's not dead. Yes, it's worth it. There is still progress to be made:
- Better (faster, more stable) drivers
- Smarter file systems
- Better schedulers
- ...
First of all, hardware changes and its new capabilities need to be exploited. But aside from that, it is also not the case the we theoretically proven that e.g. the optimal process scheduler has been created. The same holds for nearly all other software too. So there is still plenty of work to be done.
Embedded systems is a huge market for systems programming in C. Huge.
If performance is important, then yes. Unfortunately, there is not yet an adequate substitute.
yes it is. Seriously though, large exisiting codebase, compiler availability for exotic platforms, etc. etc. etc. c is still very much "in use" and will be for the forseeable future.
C is definitely not dead.
Looking at Tiobe Programming community index, C is the 2 more popular language, right behind java.
The development in higher-level languages of systems has only just begun on modern desktop PC's. Don't forget about microchips, embedded processors, hand helds, etc... Some of those haven't even moved on to C++ yet.
Any language that forces garbage collection on it's user is, in my opinion, doomed to never be a systems language. And that's okay, they weren't made for that. I think a language like D would be an optimal system programming languages, being an elegant mix of of the low-level stuff in C, and only the good high-level stuff in C++. It has optional garbage collection, which can do all sorts of wondrous things. Sadly, it's dead, because of C/C++. See the point?
There are some really wild system programming things going on right now - just ask Google, who've in recent times developed at least three new operating systems, coded largely in C and C++.
EDIT: ES-OS was originally developed by Nintendo, but Google's in charge of it now.
I'm working on a project now which is a rewrite of an existing .Net application in pure C++ (although with a C++/CLI layer for .Net UI clients).
Outside of the embedded world, which has already been mentioned, there is a lot of use for it in HPC/ Grid computing - especially in the banks (which is where I'm using it right now).
Application programming aims to produce software which provides services to the user, whereas Systems programming aims to produce software which provides services to the computer hardware.
Now, look how many devices you have at home. Many of them have already Operating System inside; all of them require some interface with hardware.
Even many modern LED displays have some OS inside, and a lot of functionality (like channels management in case of TV-set, Picture in Picture (PiP), Digital Signal Processing to filter noise in sound/video, etc.) is done in system level using C programs! It is De-Facto standard to use C in system programming.
The World goes Embedded. System programming worth!
C is not going to be dead for another 25 years. Nothing is futureproof, but C is............
The big challenge these days is how to take the most power from multi core CPUs and from GPUs. System programming in C is a great choice for achieving this.