• ayyy@sh.itjust.works
    link
    fedilink
    English
    arrow-up
    4
    ·
    edit-2
    20 hours ago

    Edit: TL;DR look up “toy languages” to see people experimenting and trying shit.

    This is an entire branch of computer science that people dedicate their lives to, called language design. You’re correct that we use software to translate a programming language into assembly language. That software is called a compiler.

    As far as developing new languages, typically one starts by defining a “formal grammar”, typically in the .lex format. Since writing a whole compiler can be complicated and time consuming, most people just build off of the work of others and adapt an existing compiler such as “LLVM” to understand the grammar of their new language.

    It sounds crazy to the uninitiated, but the best way to start learning about how to make computer languages is to learn about what a Turing tape machine is, and what it’s capable of. Then you will be able to understand what the difference between a “context-free” grammar and a “stateful” grammar.

    • Apathy Tree@lemmy.dbzer0.com
      link
      fedilink
      English
      arrow-up
      2
      ·
      20 hours ago

      Excellent thanks, I’ll look into that, and thank you for the information :)

      You say “we” which hints that you have (some?) experience in the field, do you have any insight as to why one would want to create a new language rather than just helping to refine an existing one or something? Do they end up too bloated or do they function inherently differently or some other thing I haven’t thought of…?

      • ayyy@sh.itjust.works
        link
        fedilink
        English
        arrow-up
        2
        ·
        19 hours ago

        I say “we” because I work in software which, past a basic level, involves endless arguing amongst colleagues about what the “best” language to use is for a particular project haha. Your question of why new languages is a really great one, with controversial answers haha.

        What it boils down to is that every language is a set of opinions and compromises. Sometimes the assumptions that a language maker has just become less true over time. For example the language for making websites that was written in the 90s assumed that all you would need is a way to describe titles, paragraphs, columns, and some pictures. Websites do a lot more than that now, so people have come up with new languages for building websites.

        A lot of it also comes down to people/politics. Since making and maintaining a language can be complex and expensive, it is frequently only taken on by large corporations. Those corporations are always doing their best to lock you into their ecosystem, and they use their language as a carrot. If you use our language and our services, everything will just work the way you want without hassle! By the way next year we are doubling the price of our services but whatcha gonna do about it, you already wrote a bunch of expensive code and hired a bunch of people that are only familiar with our language…pay up now!

        • Apathy Tree@lemmy.dbzer0.com
          link
          fedilink
          English
          arrow-up
          1
          ·
          19 hours ago

          That makes sense as to why Mozilla would be developing rust, then, thank you :)

          One last (probably) follow-up question - is the payment to those companies for support purposes, or is it a license to even use the language? Like if you write your whatever in one language and then decide to swap…… umm… service providers I guess (maybe MSP situation?), do you need to re-write your entire whatever to no longer use it, or do you just no longer have support for issues?

          • ayyy@sh.itjust.works
            link
            fedilink
            English
            arrow-up
            2
            ·
            19 hours ago

            Thats definitely one of the reasons Mozilla is developing rust, but not the only one. The goal of Rust is to make it harder to write insecure code. That requires more upfront work for the coder, and can be less efficient with computer resources, but provides more peace of mind that the finished product doesn’t have as many bugs. Thats a trade off Mozilla and Rust users think is worthwhile, but not everyone agrees with that.

            In terms of vendor lock-in from language choice, it’s a big fat It Depends™ lol. Theres a ton of money in big tech, so there are a lot of clever people who work full time trying to lock you onto platforms without it looking to you like you’re falling into their trap, and they use a myriad of tools.

            It is rare, but not unheard of for there to be license fees just for using a language like you said. (And sometimes there is even disagreement about who gets to charge licensing fees for a language: See the Java debacle with Google v. Oracle.) However typically the issue is more around being able to use the new features of a platform when a vendor introduces them. For example, Apple really wants you to use Swift to write iPhone apps. You can use alternatives, but then when Apple introduces the new iWiping feature that revolutionizes buttholes, you won’t be able to provide that feature to your users until your language of choice gets updated to support iWipes. That could take a year and means your app is behind your competitor, who just used Swift so Apple made sure they could support iWipes on the day the feature came out.

            Another extremely common example is that entire businesses are run through complicated formulas in Excel spreadsheets. Sure, there are many other ways to run a business and keep track of the numbers, but most people start small and then the complexity of their spreadsheets just grows and grows and grows. Those people will be forever stuck paying for an excel subscription (that didn’t even used to be a subscription when the business started, but now it is for some reason!) because the complexity of replacing everything is scary.