@programming@programming.dev 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!

  • shnizmuffinA
    link
    fedilink
    English
    arrow-up
    30
    ·
    10 days ago

    In my experience, and in the experience of my coworkers/contemporaries, our formal education taught us how to program which is distinct from which language we program in. For instance, my Java dev friend learned to program in C++ because that’s what was being instructed. I was forced to learn ActionScript 2 and then was forced to migrate to ActionScript 3, because that’s what was being taught. The experience of programming something and iterating on it was far more valuable than knowing a language like C++ or ActionScript.

    Languages come and go, some faster than others, and you’ll eventually get to a point where your personal preferences stop mattering as much as which language is best for the task at hand.

    PHP is dead. Long live PHP.

    • xmunk@sh.itjust.works
      link
      fedilink
      arrow-up
      5
      ·
      10 days ago

      As someone who writes high throughput PHP code I can confirm that it’s much more about technique than language capabilities (though in an embedded setting things with dynamic GCs are simply unusable unless static memory management can be enabled with a compiler switch).

      For most projects you’d be much more rewarded for focusing on tools/framework/libraries available for the different languages (since that’s where most initial effort will go) and then build up any missing functionality as needed ontop of that base.

      Most languages can do pretty much anything these days. The technical advantages are much smaller than the impact the right approach will have… it’s one reason that I hold “maintainability” as the most important attribute of a project.

      • shnizmuffinA
        link
        fedilink
        English
        arrow-up
        3
        ·
        10 days ago

        I made sure answering, “Has someone figured this out already?” is a formal step in defining project scope at my company.

        • xmunk@sh.itjust.works
          link
          fedilink
          arrow-up
          4
          ·
          10 days ago

          NIH (Not Invented Here) is absolutely the downfall of many tech companies. Code costs constant money to maintain - it may sound illogical since it’s unchanged from the day it was written but it absolutely is the case.

          • shnizmuffinA
            link
            fedilink
            English
            arrow-up
            3
            ·
            10 days ago

            The answer has been “No” a few times and boy does that suck.

            “No one has ever attempted something so convoluted/silly/impossible before. Guess we get to see if we’re actually programmers or not.”