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.
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.
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.
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.
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.