Why? On which fields? Is there something C can do better than Java or C#?
Why? On which fields? Is there something C can do better than Java or C#?
* Linux
* GNU
* Apache
* Ruby
* Python
* nginx
* mysql
* posgresql
* Redis
* VMWare
* OpenSSL
* Almost everything "embedded"
Because C allows extreme control and performance. Anecdotally, a lot of people write in higher level languages, then rewrite critical bits in C for that speed boost. In many cases they just start at C if they know it requires certain levels of performance, for instance code on massive super computers or super low latency communications packages.
I'm not sure why you are pointing this out.
Think about what a gc pause would do to an OS - it could kill performance for every single process on the system, cause issues with input buffers overflowing, and other related issues. A microsecond here and there in call latency may not matter most of the time, but in thousands of syscalls or in low level network processing have large cumulative effects.
Don't get me wrong, I love my high level languages and modern GC runtimes, but there are days and places when microseconds and bytes still matter, and for those, I still grab C. Just like the nailgun hasn't fully replaced the hammer, or the vacuum hasn't fully replaced the broom, there is a good reason C still exists and finds acceptance.
Maybe Go or Rust will start to creep even more into the C space than JVM etc already have, but I really don't see it fully going away, it is just too useful and a well understood proper tool for some jobs.
The alternatives you give are not really the best examples either. C# is only a viable development platform for serious/professional work if you're targeting Windows, and if there is one language that doesn't do anything better than the many alternatives that compare favorably to it, it would be Java.
I write systems code in C and Assembly for a living. I couldn't possibly do my job using Java or C#. In fact, as an experienced C programmer, I honestly can't imagine choosing to use C# or Java to do anything -- I'd rather be writing either in C or in something "higher level".
Python, Ruby, Perl, PHP.. these are overused (except for solo work, prototypes, toys, glue) and in my experience fall down in teams.. but dynamic typing now seems completely asinine to me after slinging Scala for the past handful of months.
Also, systems with hard real time requirements, such as audio/video, the signal processing code in your phone, wifi router, etc, are incompatible with almost all managed runtimes.
[1] Okay, I know there are academic ones that are. As far as I know, no productions systems are.
It's a good option for low-level work.
Why the quotes?