HACKER Q&A
📣 silentpuck

Why do so many developers dislike C when I find it inspiring?


I write in C, and I constantly see posts or comments calling it dangerous, outdated, or unnecessarily complex.

But for me, C feels like freedom.

I can build exactly what I want — small tools, secure utilities, no magic, no garbage collection, no telemetry.

Yes, I have to think harder about memory and safety. But that’s the point. I want to be close to the machine. I want to know what my code does, byte by byte.

Still, I find myself wondering:

Why do so many people seem to dislike C? Is it just because it doesn’t protect you from yourself? Or am I missing something that I’ll regret later?

I’d really appreciate honest thoughts — especially from those who moved away from C.

Thanks.


  👤 PaulHoule Accepted Answer ✓
I don't trust you to get it right.

One of my formative experiences was typing in a terminal emulator for CP/M from a 1984 Byte magazine and porting it to OS-9 on my TRS-80 Color Computer. It was quite the trauma to see 80% of the code was error handling with the error-prone pattern of checking errno. When I saw Java which had try-catch I was so delighted.


👤 DamonHD
For simple things I also like shell scripts. But for bigger more complex systems, especially with long life-times, many users and many developers, the sharp edges get too dangerous. In those case I move to Java or at least something with stronger typing, and less chance of memory management errors.

My last big project was 100kloc C/C++ in a radiator valve though. Not many languages with a run-time would have fit in the 32kB code space for that project.


👤 wgwwgw
I'm an old scientist that did lots of computer simulations that ate up many many cpu cycles. I started with BASIC in the 70s, then learned machine language, and used Fortran throughout the 80s. My simulation programs ran for 24 hours or more. Once I learned C, the concepts of structures and pointers were tremendously useful for storing and passing information. I don't believe any other language could be as efficient when program run times are measured in hours.

👤 apothegm
For me it’s because I enjoy building useful things more than I enjoy futzing with the details of code. I could build something useful in C. Or I could spend the same amount of time building a dozen useful things in Python. With the added benefit that they’re less likely to segfault.

WHY does it matter to you to be that close to the machine? For many of us, we value different things. What you perceive as control, we perceive as fussiness.


👤 zzo38computer
I also like C, for reasons you mention. I dislike many of the features of other more modern programming languages (even if they do have some advantages, many of the things they do are not as good in my opinion, so I prefer C programming).

👤 markus_zhang
I have never worked in a legacy C code base, but I could imagine that it might not be a pretty good experience. However, writing low level projects in C just by myself is very interesting.

👤 mikewarot
For me, I started with BASIC on various machines, then moved to CP/M, then MS-DOS. I learned Turbo Pascal to be able to maintain a program that talked to a GTEK EPROM burner, and fell in love with the language after a few months.

I stuck with it through the various iterations, right up to the point where Borland's management went insane, and they lost their chief architect to Microsoft. I tried C++ after that, but the amount of boilerplate and cruft compared to Delphi was just unbearable.

Things I personally hate about C include

  * Case Sensitivity
  * NULL terminated strings
  * Macros  (there are usually many skunks worth of code smells compressed into C macros)
  * Pointer syntax that is way to easy to confuse with line noise.
  * Slow, oh so slow compiler/linker cycles
  * Usual association with make
Pascal is faster in compile and runtime. It's smaller, and has almost magical string these days.