Post:

If you’re still shipping load‑bearing code in C, C++, Python, or vanilla JavaScript in 2025, you’re gambling with house money and calling it “experience.”

As systems scale, untyped or foot‑gun‑heavy languages don’t just get harder to work with—they hit a complexity cliff. Every new feature is another chance for a runtime type error or a memory bug to land in prod. Now layer LLM‑generated glue code on top of that. More code, more surface area, less anyone truly understands. In that world, “we’ll catch it in tests” is wishful thinking, not a strategy.

We don’t live in 1998 anymore. We have languages that:

  • Make whole classes of bugs unrepresentable (Rust, TypeScript)
  • Give you memory safety and concurrency sanity by default (Rust, Go)
  • Provide static structure that both humans and LLMs can lean on as guardrails, not red tape

At this point, choosing C/C++ for safety‑critical paths, or dynamic languages for the core of a large system, isn’t just “old school.” It’s negligence with better marketing.

Use Rust, Go, or TypeScript for anything that actually matters. Use Python/JS at the edges, for scripts and prototypes.

For production, load‑bearing paths in 2025 and beyond, anything else is you saying, out loud:

“I’m okay with avoidable runtime failures and undefined behavior in my critical systems.”

Are you?

Comment:

Nonsense. If your code has reached the point of unmaintainable complexity, then blame the author, not the language.

  • grue@lemmy.world
    link
    fedilink
    arrow-up
    63
    ·
    10 days ago

    Python isn’t “untyped;” it is, in fact, strongly-typed. (And is markedly different than and superior to JavaScript on that point.)

    This rant feels like it was written by an OO programmer who was never able to wrap his head around functional programming.

    • someacnt@sh.itjust.works
      link
      fedilink
      English
      arrow-up
      6
      ·
      10 days ago

      Do you mean python has something to do with functional programming, or did I misread? Because I would say e.g. Typescript is (slightly) closer to FP than Python.

      • grue@lemmy.world
        link
        fedilink
        arrow-up
        3
        ·
        edit-2
        10 days ago

        Yes. Python is a multi-paradigm language, but IMO proper “pythonic” python looks a lot more functional than OO, with liberal use of duck-typed list comprehensions and such.

    • ThirdConsul@lemmy.mlBanned
      link
      fedilink
      arrow-up
      4
      ·
      9 days ago

      You might be confusing using functions with functional programming. Python is Object Oriented language at it’s core, most people use it as procedural, and like most modern languages it supports also functional paradigms.

    • douglasg14b@lemmy.world
      link
      fedilink
      arrow-up
      9
      ·
      9 days ago

      According to all teams I’ve worked on.

      Pretty fucking hard.

      I know this is satire, But really though better languages that make various classes of defects unrepresentable reduce defects. It’s wild that such a statement needs to be made, but our industry is filled with folks who don’t critically think about decisions like these.

      • Flipper@feddit.org
        link
        fedilink
        arrow-up
        15
        ·
        10 days ago

        It’s not widely used. Some car manufacturers(Toyota if I remember correctly) have started testing it. Some parts are really nice.

        There is exactly one hal for i2c, spi and Io pins. As long as both your chip and peripheral driver implement against it, it just works. There are more unified abstractions in the work for things like DMA, but they are not officially stable yet.

        Cooperative Multi threading can easily be integrated thanks to Async rust and executors like embassy.

        All the crates that are no_std compatible can be included.

        It’s not perfect, but it’s getting there.

      • Ephera@lemmy.ml
        link
        fedilink
        English
        arrow-up
        13
        ·
        10 days ago

        In my corner of the embedded world, it feels like everyone is practically jumping to integrate Rust. In the sense that vendors which haven’t had to innovate for 10+ years will suddenly publish a Rust API out of the blue. And I’m saying “out of the blue”, but I do also regularly hear from other devs, that they’ve been pestering the vendors to provide a Rust API or even started writing own wrappers for their C APIs.

        And while it’s certainly a factor that Rust is good, in my experience they generally just want to get away from C. Even our management is well aware that C is a liability.

        I guess, I should add that while I say “jumping”, this is the embedded world where everything moves extremely slowly, so we’re talking about a multi-year jump. In our field, you need to get certifications for your toolchain and code quality, for example, so lots of work is necessary to formalize all of that.

      • ozymandias117@lemmy.world
        link
        fedilink
        English
        arrow-up
        8
        ·
        10 days ago

        Bindings have been getting added to the Linux kernel so drivers can theoretically be written in Rust

        Android has moved its IPC mechanism, Binder, over to Rust

      • Scrath@lemmy.dbzer0.com
        link
        fedilink
        arrow-up
        6
        ·
        10 days ago

        I know that some people have managed to get it working but I have yet to see it in practice. Granted, my experience in the industries is currently only what I learned during my studies and 2 internships.

        In general, C is supported. C++ is sometimes supported and very few people even talk about Rust.

      • pelya@lemmy.world
        link
        fedilink
        arrow-up
        20
        ·
        9 days ago

        It’s Javascript with types. You are still using one hundred NPM packages to do the simplest thing. Any string can be JSON. And Node is single-threaded, so if you plan to create some kind of parallel computation, you’d need to run 16 Docker containers of your Node server, one per CPU core, with NGINX or some other load balancer at the business end, and hope that your database engine won’t reorder transactions. And yeah, Docker is mandatory, because Node version in your latest Ubuntu release is already outdated.

        • mEEGal@lemmy.world
          link
          fedilink
          arrow-up
          2
          ·
          5 days ago

          Okay I see your point

          I personnally work in a servesless environment, and doubt many business applications really need parallelism. (Btw, you have to have at deast 1000 IQ to do it properly in C, C++ or Rust) Plus there are other TS runtimes now, so you don’t have to use Node

          As for strings as JSON, I don’t understand the problem. You can do runtime validation to ensure what you’re handling is of the right shape.

          As for the numerous packages for the most basic thing, how is it different from C, C++ or Rust ? I prefer this approach to Java, where one framework does it all, bc there’s innovation going on like crazy in the JS ecosystem and some established solutions feel like garbage now…

          Personnally, I fell in love with TS because it’s orders of magnitude better than plain JS and because the type system is very well designed. It’s good enough for many usecases. Don’t get me wrong, I’d love doing it in Rust on a daily basis, but my business needs rarely justify it

          • pelya@lemmy.world
            link
            fedilink
            arrow-up
            1
            ·
            5 days ago

            JSON-in-a-string is a commonplace method of having a generic or any type when you are too lazy to write a proper structure for it, or want to save an object into a database without creating an additional table. In all fairness it has nothing to do with the language itself, and more with lazy coders. Postgresql even have additional SQL operators to access individual JSON fields inside a record, so yeah, you can dump a whole new unstructured database into a row of your existing database, it’s totally an acceped practice.

              • pelya@lemmy.world
                link
                fedilink
                arrow-up
                1
                ·
                5 days ago

                As for languages that are acceptable for business logic, C++ is lolno, Java is kinda surprisingly okay because so much business logic is already written in it and debugging is trivial, Python is not worse than Java for the same reason when you are using proper linter to catch typos, C# / Go / Ruby are probably the best because they are most modern with the lowest footgun ratio.

  • Bane_Killgrind@lemmy.dbzer0.com
    link
    fedilink
    English
    arrow-up
    26
    ·
    10 days ago

    Nonsense. If your code has reached the point of unmaintainable complexity, then blame the author, not the language.

    I feel like there’s about one person that can cast this stone, and that’s because preventing this has turns Torvalds into an abusive bridge troll sometimes, but he’s actually been successful.

    • chatokun@lemmy.dbzer0.com
      link
      fedilink
      arrow-up
      15
      ·
      10 days ago

      Maybe, but always remember LLMs are trained on real people. Some people naturally use similar styles to some LLM tica as it was stolen from them in the first place.

      • Bazoogle@lemmy.world
        link
        fedilink
        arrow-up
        2
        ·
        9 days ago

        If you see more than 3 EM dashes in a body of text, it’s 100% AI. I have found random online articles where there is at least two em dashes every paragraph. No human wrote that shit. A human is lucky to get away with one em dash (and it’s been that way before AI).

        • andioop@programming.dev
          link
          fedilink
          English
          arrow-up
          5
          ·
          9 days ago

          one heartbroken anti-AI human who loves em dashes replying ☹️ we’re split into two classes: the type who abandons our typing habits to avoid being told our human efforts are definitely AI, and the type who stubbornly carries on using em dashes

  • Atlas_@lemmy.world
    link
    fedilink
    arrow-up
    17
    ·
    10 days ago

    Go and Python and Typescript all have their own footguns.

    I assume Rust is the same, but haven’t used it personally to see

    • danhab99@programming.devOP
      link
      fedilink
      arrow-up
      12
      ·
      10 days ago

      Rust is the foot gun, it’s so perfect that you genuinely cannot just sit down and type out what you need.

      • fnrir@lemmy.blahaj.zone
        link
        fedilink
        arrow-up
        1
        ·
        edit-2
        8 days ago

        Skill issue

        - sincerely, someone making a DST crate

        EDIT: To clarify…

        There are some things that are only doable on nightly Rust (like specialization, const fn in traits, etc.) and the reason for that is to avoid future issues. In that regard, Rust will not be as good as C++… at least until those get stabilized.

        Some of the nightly functionality (like ptr_metadata) can be achieved with unsafe code and it’s fine to do that, as long as it’s only done when necessary and it’s properly documented.

        It’s okay to want to use C++, but that language has it’s own issues and footguns (virtual destructors, “move semantics”, C-style casts, header files and more) that Rust wants to avoid.

        EDIT 2: Specialization is also kinda doable with deref coercion, but that’s another can of worms I don’t wanna open here.

        EDIT 3: And if I had to mention some of Rust’s footguns:

        • unwrap panics, which isn’t bad in and of itself, but it’s short so you’ll probably want to use it instead of other error handling methods (see recent Cloudflare outages)
        • unsafe functions implicitly allows using unsafe operations (fixable by adding #! [deny(unsafe_op_in_unsafe_fn)])
  • Echo Dot@feddit.uk
    link
    fedilink
    arrow-up
    14
    ·
    9 days ago

    So there is apparently a problem with languages such as JavaScript and the solution is to use languages such as TypeScript.

    Wut?

    • keegomatic@lemmy.world
      link
      fedilink
      arrow-up
      10
      ·
      edit-2
      9 days ago

      Well, yes. TypeScript mitigates one big problem with JavaScript (type safety). That’s why it exists. It’s a dumb idea to choose vanilla JS over TS if you’re starting a new project today, IMO.

      Whether or not you should use TS as your core language is debatable and situational, but in terms of using TS instead of JS, yeah, that’s a no brainer.

  • hddsx@lemmy.ca
    link
    fedilink
    arrow-up
    11
    ·
    10 days ago

    Dunno, I picked python as my language for personal projects because it has type hinting now and jobs I was looking at wanted it. I’d like to use C# but I need to find a good IDE on Linux.

    I’ve gotten pretty good at C because it’s what my company uses but god damn I am tired of fixing memory errors from bad programming. Nobody uses best practices and it’s horrid. Best practices came about to avoid issues. Use them. Please. I don’t want to be the guy to answer “please fix my memory issues” tasks. If you don’t know what you’re doing, please choose a different god damn language.

    I’ve only gotten this way because I’ve tried to read the fucking manual. Stop telling me I’m wrong when you don’t know how it works. Stop telling me I’m wrong when you don’t check for errors. I’m telling you this not because I want to talk. I’m telling you because I learned the hard way fixing your code and I don’t want to do it anymore.

    • folekaule@lemmy.world
      link
      fedilink
      arrow-up
      5
      ·
      10 days ago

      I just use VS code with c# extensions on Linux. It works fine. I also use vim with lsp support for C# sometimes.

      If you want more, you may also want to check out Rider from Jetbrains.

        • folekaule@lemmy.world
          link
          fedilink
          arrow-up
          2
          ·
          10 days ago

          Thank you for the recommendation. I would consider it again if my day job switched to Linux (unlikely).

          I did try Rider on Linux a while back, but just couldn’t get my head around it. I’ve become too used to Visual Studio on Windows (with Resharper).

          I don’t do a lot of C# outside of my day job, though, so VS code is fine for my uses.

          • Mihies@programming.dev
            link
            fedilink
            English
            arrow-up
            3
            ·
            9 days ago

            Yep, I feel you, it’s quite a bit different philosophy compared to VS. However, if you use other Jetbrains products, it helps that they share a lot of features so you eventually grasp the different approach. And sure, if VS Code is good enough for you, great.

      • hddsx@lemmy.ca
        link
        fedilink
        arrow-up
        1
        ·
        10 days ago

        I can’t use codium because on sway the file open dialog doesn’t work and I haven’t figured out why

        • folekaule@lemmy.world
          link
          fedilink
          arrow-up
          3
          ·
          10 days ago

          Unfortunately I can’t help you there. I just use plain old kde plasma on Fedora. If your favorite code editor supports Language Server Protocol (LSP), you can probably get it to do code completion for C# one way or another. Vim, neovim, Kate, and many others do.

        • Sonotsugipaa@lemmy.dbzer0.com
          link
          fedilink
          English
          arrow-up
          2
          ·
          10 days ago

          Just in case you have this problem with other software: it’s probably an XDG desktop portal issue, I haven’t used Sway specifically for a while but it took me a lot of trial and error to wrangle my portals into submission without using Plasma.

          • hddsx@lemmy.ca
            link
            fedilink
            arrow-up
            2
            ·
            8 days ago

            I tried to set it up, and installed dolphin as well but I could never get it to work. Must have something configured wrong in my end but could never figure out what

            • Sonotsugipaa@lemmy.dbzer0.com
              link
              fedilink
              English
              arrow-up
              1
              ·
              8 days ago

              o7
              I did random bullshit written on the Internet for DAYS to get my browser to use a decent file chooser, it’s harder than it has any right to be

    • orgrinrt@lemmy.world
      link
      fedilink
      arrow-up
      2
      ·
      edit-2
      9 days ago

      I believe zed has extensions for c#, and I guess more importantly, dotnet.

      At this point, unless you have the money to grab sublime (or specifically want foss or even just free as in beer), and you aren’t sold on the way of life of the old guard like the modern vims or emacs, zed is pretty much the best there is.

      I used to be such a jetbrains guy, but that was back when they did actually have something nobody else really offered outside of Microsoft. Before that, for a good long time, I was an emacs guy, until I had to use a windows computer for work and emacs just doesn’t fit well there, couldn’t get a good equivalent of the daemon going consistently, had to switch. And to be frank, lisp is the fucking worst.

      Nowadays, there are so many options though, even, or especially, on foss side. Or even just free. Hard to justify the jetbrains kinds of specialized tools, now that the same sugary, smooth experience is almost exactly achievable on those. And faster.

      I have been happy with zed for quite a while now. Apart from the (disableable, thank god) first class AI stuff, I haven’t a single complaint. It feels as fast and responsive as sublime, and while the ecosystem isn’t there yet, I can get all my stacks and tooling to run currently like it was a jetbrains ide from back in the day. Rust, dotnet, deno/ts, it all just works after setup.

      I would still go for sublime just for the ecosystem, but I haven’t the economics at a point where I can choose convenience for a price, if a close equivalent exists with the price of nothing but contributions occasionally. The zed source being open, even if my PRs don’t get merged, I can just live with my fork and have it natively the way I want, without working around the extension limitations.

      • hddsx@lemmy.ca
        link
        fedilink
        arrow-up
        1
        ·
        10 days ago

        I’m confused. I looked at zed and it’s Apache 2.0. Isn’t that open source? I do specifically want FOSS

        • orgrinrt@lemmy.world
          link
          fedilink
          arrow-up
          3
          ·
          9 days ago

          Sorry, I go on tangents and end up just confusing people. It is! That was my point, though failed to deliver it. Gpl3, agpl and apache.

          They do have a pricing model for enterprises with some proprietary extra stuff on top (shared billing, SSO, premium support and stuff like that), and a tier for expanded AI stuff (entirely ignorable, and the editor works with pretty much everything, so if you need those things, you can just set up whichever service you want yourself), but those can both be ignored, the main editor is FOSS and committed to remain so.

  • thedeadwalking4242@lemmy.world
    link
    fedilink
    arrow-up
    9
    ·
    10 days ago

    I half way agree. I always say form shapes function. Sure you can write good code in any language. But some encourage it more then others. Ultimately it’s the programmer fault when things get over complex though

    • douglasg14b@lemmy.world
      link
      fedilink
      arrow-up
      3
      ·
      edit-2
      9 days ago

      Honestly, I more than half agree because the factor most seem to conveniently ignore is that languages and environments that encourage better and safer code are aimed at the lowest common denominator.

      The lowest common denominator of developers are the ones that benefit the most from a reduction in defects or unsafe code they may produce. They are the biggest pool of developers. And in my experience, the ones least likely to proactively take measures to reduce defect rates unless it’s forced upon them and/or baked into their environment.

      They are the ones that will slap any in typescript to resolve errors instead of actually resolving them, or the ones that will use dynamic in C# instead of actually fixing the bad design … etc

  • marcos@lemmy.world
    link
    fedilink
    arrow-up
    6
    ·
    edit-2
    10 days ago

    Well, the author is to blame for the choice of language.

    That is, unless somebody forced their hand. What happens a lot in professional settings. Then it’s that other person to blame.

  • thericofactor@sh.itjust.works
    link
    fedilink
    arrow-up
    6
    ·
    10 days ago

    I’ve written thousands of lines of untyped python code for a system (still) used daily by hundreds of users, handling time critical as well as financial data. It made the company I worked for millions and it worked. Was it bug free? Nope, bugs would appear in production from time to time, but they were very easy to detect, and very quickly solved, especially because of the fact that python is an interpreted language. In 7 years of working on that application there was only one bug that caused data corruption and required us to reprocess some data that took a day or three. That was the worst thing to happen in the entire lifetime of that codebase. I totally agree that if you structure your code properly, log properly and give your developers the trust and permissions to actually solve stuff in production quickly, you might even get a competitive advantage.