this post was submitted on 27 Sep 2024
-43 points (23.5% liked)

Programming

17686 readers
148 users here now

Welcome to the main community in programming.dev! Feel free to post anything relating to programming here!

Cross posting is strongly encouraged in the instance. If you feel your post or another person's post makes sense in another community cross post into it.

Hope you enjoy the instance!

Rules

Rules

  • Follow the programming.dev instance rules
  • Keep content related to programming in some way
  • If you're posting long videos try to add in some form of tldr for those who don't want to watch videos

Wormhole

Follow the wormhole through a path of communities [email protected]



founded 2 years ago
MODERATORS
-43
submitted 3 months ago* (last edited 3 months ago) by [email protected] to c/[email protected]
 

@[email protected] Why is C hidden gold?

Let's say you decide to learn programming. You have two options. Either use the education system (college or courses) or become self-taught. In the first case, you will learn the programming languages that are imposed on you. The education system (universities, colleges, courses) uses the "modern" development stack. Because what matters to them is what can later bring income to companies and you in life, and taxes to the state. They are part of the system and that's how it works. Or because they want to get certificates from industry giants and use everything in their implementation - from development tools to ideology. Only a very few colleges and courses specializing in a very narrow field, such as embedded devices, can teach you the C language.

If you choose to learn programming on your own, the first thing you will do is go to the Internet to determine where to start and what you need to learn today. Naturally, you will find there a lot of articles and posts on the topic of "what programming language to learn in X year". And they will contain a detailed or not very detailed comparison of “modern” languages. But you are unlikely to find the C language among them. Moreover, almost all of these languages will have the intention of being “C replacements”. Naturally, you will choose a new, powerful, and promising language that will replace the “dying C”, while you “look to the future”. You will never find phrases like “Rust is a replacement for Zig” or vice versa, they will all be “replacements for C”. And by doing this they are trying to hide the C language.
We have seen why the C programming language is hidden.

But suddenly one wonderful day you came across a post with the words “give C language a try”, or, if you are over 40, you remembered where you started learning programming as a child before you started writing all this “SaaS garbage”. And you thought “well, okay, what if there is something, here is nothing to lose anyway”. And you started learning C, simultaneously integrating into the C community. And then you discover, to your surprise, that the C language is simple and effective, applicable everywhere, and continues to develop. And the community is kind, not pompous, without hype, and buzzing with interesting projects. You realized that the C language is not dying and is not going to die, as the "gurus" on youtube taught you and representatives of the "modern" language communities argued with foam at the mouth. And that it is unlikely that C will be able to replace anything in the near future. It's as if you have found "your home" again, something you have been looking for a long time, but could not express in words. You have returned to the roots.
And this is why the C language is gold.

Look for your "gold", never give up. When you find it, you will know for sure that this is it. Thanks for reading!

you are viewing a single comment's thread
view the rest of the comments
[–] [email protected] 3 points 3 months ago* (last edited 3 months ago)

On the one hand, you're right, C is waaaay higher-level than many people realize, and the compiler and processor do wild things to make code go faster. On the other hand, the C abstract machine is close enough to how computers "really work" to give you a fairly useful mental model, in a way that no other mainstream high-level language can.

Even so, if you want to know how low-level code works, you should probably just learn one or more actual assembly languages and write a few small programs that way.

C has another advantage, though: firmware, OS kernels, and virtual machines (other than browser JS engines) are still almost entirely written in C. So while it doesn't teach you accurately how processors work, it is relevant if you want to know about the system software that meditates between the hardware and high-level software.