Seriously. There’s so many floating around. It feels like there’s a cycle of

Random programmer thinks xyz language sucks -> she/he makes a slightly different, slightly faster, slightly more secure version -> by luck this gains mass adoption-> random programmer thinks new xyz language sucks

I propose when the revolution comes and the last guillotine falls we decide a general-purpose programming language that coders should stick to. I vote Lisp or any of the dialects (scheme, clojure, racket), but i also feel something about the Julia language for scientific research. Maybe we can decriminalize using C. Absolutely ban and hunt down the use of any of the hipster languages teenagers are into these days.

Nim? Zig? Crystal?? I am absolutely losing my damn mind. It compiles to bytecode people. Make up ur damn minds. To jail with all of u

  • volcel_olive_oil [he/him]
    ·
    7 months ago

    When the revolution comes we need to unify tools

    Hammer? Screwdriver? Spanner? One of these should be enough

  • hotcouchguy [he/him]
    ·
    7 months ago

    All these cutting edge new languages are just wrappers around the same C libraries some anonymous grad students wrote in the 70s funded by some tiny government grants.

    • RussianEngineer [she/her]
      ·
      7 months ago

      "You could not live with your own failure. Where did that bring you? Back to C."

    • RedWizard [he/him, comrade/them]
      ·
      7 months ago

      All these cutting edge new languages are just wrappers around the same assembly code by Kathleen Booth in the 1940s for her university computer.

    • PaX [comrade/them, they/them]
      ·
      edit-2
      7 months ago

      Programming languages and operating systems are really best developed together tbh

      Otherwise you end up building an new, extremely unimaginative operating system into your programming language that is usually permanently linked with the operating system you developed it with anyway

  • Feinsteins_Ghost [he/him]
    ·
    7 months ago

    After the revolution we should just unify english. Theres so many spoken languages around.

  • TheDoctor [they/them]
    ·
    7 months ago

    Language design and theory has made some legitimate gains over the past couple decades. And different languages have different strengths suited for different problems. I think the issue is that even people who agree with this aren’t gonna agree on the language to standardize on. It’s the XKCD comic.

  • Adkml [he/him]
    ·
    7 months ago

    there are 28 coding languages

    "We need to invent a universal language that brings all these together so everybody can just use one"

    there are 29 coding languages

    • PaX [comrade/them, they/them]
      ·
      edit-2
      7 months ago

      Show

      There's a lot of languages but people usually have a favorite that probably isn't very unique lol

      There's no such thing as a universal language but we can build better languages (and operating systems) that dominate

        • PaX [comrade/them, they/them]
          ·
          7 months ago

          Yeahh that graph is based on the TIOBE index: https://en.wikipedia.org/wiki/TIOBE_index which is based on search engine queries lol. Kinda bad methodology but I guess it does reflect something

          I'm primarily a C programmer who likes to work on operating systems and sometimes you just need assembly for certain things tbh and it can't be avoided. There's a significant amount of people working on low-level operating system or compiler or firmware stuff who have to write a lot of assembly, usually for machine specific things. It's really not that bad but ofc it depends on the machine you are programming (x86 is fucking awful)

          • Water Bowl Slime@lemmygrad.ml
            ·
            7 months ago

            Oh so assembly is that high up on the chart because people keep googling for help, that makes much more sense lol. My heart goes out to the assembly programmers. World's strongest soldiers

            • silent_water [she/her]
              ·
              7 months ago

              a lot of searches about assembly are because some languages let you embed it (C, rust, etc). there are also lots of tiny devices that you can't target with a lot of languages (or do so in an efficient way, anyway). so you wind up mixing assembly with C or rust to get anything useful done.

  • FourteenEyes [he/him]
    ·
    7 months ago

    And then we can use our unified programming language to write a program so tall it breaches Heaven itself

    • aldalire@lemmy.dbzer0.com
      hexagon
      ·
      7 months ago

      I swear my personal conspiracy theory is that corporations like to introduce flashy new programming languages to divide programmers so they don't get too powerful for their own britches and rise up against the executives that control them.

      Imagine if there was a single, unified programming language, used both in industry, research and for hobbyists. Then we can standardize all of tech

    • xj9 [they/them, she/her]
      ·
      7 months ago

      At least we recognize that programming in sex pressions is the right way to go

  • silent_water [she/her]
    ·
    7 months ago

    learn more languages - it makes the code you write more effective on the human level. like learning Haskell taught me how to conceive of ideas that you would just solve by duplicating code or building a shitty interface that falls apart when you need to combine it with anything else. code is math and code is a means by which you communicate with other people. and you need to learn to express yourself in more ways in order to come to a deeper understanding of both of those facets.

    I don't want fewer languages. I want more diversity and more experimentation. I'd love to see more domain-specialized languages that borrow ideas from the more academic languages and refine them. look at Elm and how much ground it broke - so much so that it's impacted how new javascript UI frameworks are designed. but Elm couldn't exist without languages like Haskell and Ocaml. and those couldn't exist without ML, Miranda, etc, etc.

    putting limits on human creativity defeats the entire purpose of the left. we dream of being unshackled, of the genuine freedom that can only come from the defeat of capitalism and the dawn of a new, socialist political economy. perhaps if one day I write a better Lean, it will inspire someone to write a web language that brings proofs into the developers' lexicon and we will all have less shitty, poorly conceived, brittle code to maintain. and maybe you'll inspire me with a great idea of your own.

  • thetaT [none/use name]
    ·
    edit-2
    7 months ago

    I like Guile with its compiler tower. You can use multiple languages on the same VM, even using libraries from one language on another, which is fucking cool. The core language for Guile is Scheme, and it supports standards from R4RS-R7RS, along with plenty of built-in SRFIs, some implemented out-of-tree and many of its own Guile-specific extensions.

    For the compiler tower, so far we've got the aforementioned ballin' Scheme implementation, Emacs Lisp, an unfinished JavaScript implementation that doesn't even fully implement ES3, Brainfuck, Python, wonky Lua, and Guile-specific Clojure. Hopefully there's more to come and there's some I missed.

    While the main purpose for the compiler tower is to lower a language into the IR (Tree-IL) (although you can lower a language into another language too, which then itself can be lowered into IR), which gets lowered to more verbose IR (CPS), then bytecode - we can also raise IR through decompilation. For example, Guile-JavaScript compiles Scheme to IR, then decompiles the IR and raises it to JavaScript.

    Then there's also Guile Hoot, which I believe lowers the IR into WASM. In theory, when its complete, the above languages could work with Hoot and he compiled to Hoot, but I'm not entirely sure on this.

      • thetaT [none/use name]
        ·
        7 months ago

        https://www.gnu.org/software/guile/manual/html_node/Compiler-Tower.html

        Guile’s compiler is quite simple – its compilers, to put it more accurately. Guile defines a tower of languages, starting at Scheme and progressively simplifying down to languages that resemble the VM instruction set (see Instruction Set).

        Each language knows how to compile to the next, so each step is simple and understandable. Furthermore, this set of languages is not hardcoded into Guile, so it is possible for the user to add new high-level languages, new passes, or even different compilation targets.

        Let's use the tower metaphor for a moment. Consider Scheme:

        Scheme
           |
           |
           v
        Tree Intermediate Language (Tree-IL)
           |
           |
           v
        Continuation-Passing Style (CPS)
           |
           |
           v
        Bytecode
        

        To compile Scheme to Bytecode, it's lowered through different stages until it's Bytecode.

        We can also decompile, and raise code instead of lowering it - for example, here's how Guile-JavaScript works, which compiles Scheme to JavaScript, by first lowering Scheme to Tree-IL, then raising that Tree-IL to JavaScript through decompilation.

        Scheme         JavaScript
          |                ^
          |                |
          v                |
        Tree Intermediate Language (Tree-IL)
        

        We take code through the tower to transform it into its desired form.

        Hope this made sense. Or maybe it confused you even more =).

    • aldalire@lemmy.dbzer0.com
      hexagon
      ·
      edit-2
      7 months ago

      For example, Guile-JavaScript compiles Scheme to IR, then decompiles the IR and raises it to JavaScript.

      Guile it is then. Also, that's pretty cool. You're saying Guile can compile scheme into javascript? I've been looking at clojurescript for this exact same purpose actually

      • thetaT [none/use name]
        ·
        edit-2
        7 months ago

        Yes. It can. But I believe some other Schemes can actually do this better, and the Scheme->JavaScript implementation for Guile is beyond, beyond unfinished.

        You'll proboably have a better time with Guile Hoot, which compiles Scheme to WASM. It's also unfinished, but it's much more complete and currently making a lot of progress. It's meant to allow Goblins, an actor-based decentralized framework by the same people that made ActivityPub (Spritely Institute), to run on the web.

        Also Guile's lead developer, and Hoot's project lead, Andy Wingo, may or may not be a Marxist - reading his blog, and watching some of his talks, I've noticed some references to Hegel and Lenin, but I'm not quite sure on this. He's also called out sexism at various developer conferences he's been to, from GNU Hackers' meetings to FOSDEM.

        Did I mention Guile is a GNU Project?

        • aldalire@lemmy.dbzer0.com
          hexagon
          ·
          7 months ago

          Upon further reading, I conclude that he is based

          A frequent objection to workplace change comes in the form of a pandering explanation of what companies are for, that corporations are legally obligated to always proceed along the the most profitable path.

          I always find it extraordinarily ignorant to hear this parroted by people in tech: it's literally part of the CS canon to learn about the limitations of hill-climbing as an optimization strategy. But on the other hand, I do understand; the power of just-so neoliberal narrative is immense, filling your mind with pat explanations, cooling off your brain into a poorly annealed solid mass.

          The funny thing about corporate determinism that it's not even true. Folks who say this have rarely run companies, otherwise they should know better. Loads of corporate decisions are made with a most tenuous link on profitability, and some that probably even go against the profit interest. It's always easy to go in a known-profitable direction, but that doesn't mean it's the only way to go, nor that all the profitable directions are known.

        • aldalire@lemmy.dbzer0.com
          hexagon
          ·
          edit-2
          7 months ago

          reading his blog

          Quote from his blog

          Then, with luck, you meet the world: you build, you organize, you invest, you double down. And in that doubling, the ideas waver, tremble, resonate, imperceptibly at first, reinforced in some ways, impeded in others. The world works in specific ways, too, and you don’t really know them in the beginning: not in the bones, anyway. The unknowns become known, enumerate themselves, dragons everywhere; and in the end, what can you say about them? Do you stand in a spot that can see anything at all? Report, observe, yes; analyze, maybe, eventually; prophesize, never. Not any more.

          And then, years later, you are still here. The things you see, the things you know, other people don’t: they can’t. They weren’t here. They aren’t here. They hear (and retell) stories, back-stories, back-back-stories, a whole cinematic universe of narrative, and you know that it’s powerful and generative and yet unhinged, essentially unmoored and distinct from reality, right and even righteous in some ways, but wrong in others. This happen in all domains: macroeconomics, programming languages, landscape design, whatever. But you see. You see through stories, their construction and relation to the past, on a meta level, in a way that was not apparent when you were young.

          I tell this story (everything is story) as an inexorable progression, a Hegelian triptych of thesis-antithesis-synthesis; a conceit. But there are structures that can to get you to synthesis more efficiently. PhD programs try: they break you down to allow you to build. They do it too quickly, perhaps; you probably have to do it again in your next phase, academia or industry, though I imagine it’s easier the second time around. Some corporate hierarchies also manage to do this, in which when you become Staff Engineer, you become the prophet.

          • thetaT [none/use name]
            ·
            7 months ago

            He also makes a reference to "What is to be done?" in one of his talks. Or maybe it was a blog post. It was somewhere.

            Anyways, what do you think?

      • thetaT [none/use name]
        ·
        7 months ago

        "configuration language" is a bit of an understatement, as most of Guix itself is written in Guile, along with the PID 1, called Shepherd. Guile is literally the first thing the kernel starts on Guix.