20 votes

Meta: A Human-Friendly Programming Language

16 comments

  1. 1338
    Link
    Wow that webpage is painful: a single super wide column with giant meme images that take up more than a screen. And it's so important to define the Atari 2600 that they give it room on the...

    Wow that webpage is painful: a single super wide column with giant meme images that take up more than a screen. And it's so important to define the Atari 2600 that they give it room on the homepage. Meanwhile examples of the actual language are buried two clicks deep.

    Something can't be an improvement or innovative without being different. On the other hand, if you are curious and of good will and make an effort to understand what we are saying, you will find a lot to enjoy and use. You must be willing to have your thinking changed by Meta.

    Ya... I have a very different understanding of "human-friendly" than the author.

    32 votes
  2. [3]
    b9s4
    Link
    From here: This seems odd - is this a pattern seen elsewhere/in other projects? I haven't dug very deep, but I have yet to find details around what exactly are the tools involved in compilation.

    From here:

    Your program text is sent to our free Meta build service over an encrypted connection, where it is compiled to an executable program. The Meta compiler is a combination of toolchains that is complex to install and maintain. This way, you don't have to do that on your systems.

    This seems odd - is this a pattern seen elsewhere/in other projects? I haven't dug very deep, but I have yet to find details around what exactly are the tools involved in compilation.

    15 votes
    1. Narry
      Link Parent
      I missed the bit in my brief read through about off-machine compilation. That’s a full nonstarter for me. I was already wibbly wobbly at “we need a language in common for AI and humans” and that...

      I missed the bit in my brief read through about off-machine compilation. That’s a full nonstarter for me. I was already wibbly wobbly at “we need a language in common for AI and humans” and that their answer seems to be for humans to once again learn to speak some kind of computerese.

      Edit to add: HyperTalk was the best “my mind to your interpreter, my thoughts to your source code” implementation I’ve used to date.

      8 votes
    2. skybrian
      Link Parent
      It seems like making a Docker file would be a more reasonable workaround for a complex toolchain that’s hard to install, at least until the installation process is sorted out better.

      It seems like making a Docker file would be a more reasonable workaround for a complex toolchain that’s hard to install, at least until the installation process is sorted out better.

      5 votes
  3. macleod
    Link
    I like the concept, but this is surprisingly one of the harder simple languages I have ever read the source of. Some good ideas in there, but some choices that are rough....

    I like the concept, but this is surprisingly one of the harder simple languages I have ever read the source of. Some good ideas in there, but some choices that are rough.

    https://language.metaproject.frl/examples/

    8 votes
  4. stu2b50
    Link
    I feel like the concept seems a bit misguided. The main selling point and “goal” is to be more “human oriented”, but all the things that it does to do that would make it harder for beginners to...

    I feel like the concept seems a bit misguided. The main selling point and “goal” is to be more “human oriented”, but all the things that it does to do that would make it harder for beginners to learn, not easier.

    Having a limited amount of keywords is helpful to beginners. Letting everything be redefinable is interesting in an academic sense à la “lisp: everything is data”, but just makes code more confusing and harder to read as a human, because now the context of the rest of the codebase is required to make sense of any syntax. Print could send something to stdout, or the author redefined it to access the printer API somewhere earlier. Great.

    6 votes
  5. [6]
    Akir
    Link
    I wanted to share this because I found it incredibly strange and interesting. I actually found it while looking into something I hadn't seen in forever, a defunct open source operating system...

    I wanted to share this because I found it incredibly strange and interesting. I actually found it while looking into something I hadn't seen in forever, a defunct open source operating system called Syllable Desktop which was based on the earlier, also-defunct AtheOS. It looks like development has spun up again, for some reason. But the person behind it also is making this rather unusual programming language.

    Meta is still in early stages and probably isn't terribly useful to most people, but it's built upon some very interesting opinions. One of the things they did to jump-start interest was to target the Atari 8-bit computer systems as well as the 2600, and apperantly many of the people working on it are from those communities. But the thing I find much more interesting is that it considers itself to be a successor to Rebol, in which it is written. And Rebol itself is kind of crazy.

    5 votes
    1. [5]
      carsonc
      Link Parent
      Yeah, I had never heard of Rebol, but reading through the description is like finding yourself in an anarchist utopia, where there are no explicit rules, but rather unspoken ones that, when broken...

      Yeah, I had never heard of Rebol, but reading through the description is like finding yourself in an anarchist utopia, where there are no explicit rules, but rather unspoken ones that, when broken lead to terrible consequences.

      "What reserved words do you have here? Who's in charge?"

      "REBOL has no keywords; there are no restrictions on what words are used or how they are used. For instance, you can define your own function called print and use it instead of the predefined function for printing values."

      "Wait, what? Then how do you control flow?"

      We have conditional evaluation. "The if function takes two arguments. … The either function extends if to include a third argument. … The most commonly made mistake in REBOL is to forget the second block on either or add a second block to if. These both create hard-to-find errors."

      "That's crazy! Why would anyone choose to live like this?"

      "Here is a single-line program that opens a graphical user interface for sending an email written in 130 characters.

      "How can I join?"

      7 votes
      1. [2]
        1338
        Link Parent
        Some interesting things there but it lost me here: Also, today I learned about the "daytime" protocol

        Some interesting things there but it lost me here:

        In REBOL there are no special operator precedence rules for evaluating blocks. The values and words of a block are always evaluated from first to last, as shown in the following example:

        print 2 + 3 * 10
        50

        Also, today I learned about the "daytime" protocol

        7 votes
        1. cutmetal
          Link Parent
          Like 15 years ago I was working on a low-powered embedded Linux system, we thought we wanted to add support for date and time synchronization but the processes for adding packages to the system...

          Like 15 years ago I was working on a low-powered embedded Linux system, we thought we wanted to add support for date and time synchronization but the processes for adding packages to the system were byzantine, so rather than go through that to get an ntp client I mooted writing a little shell script to get time sync using daylight protocol. We didn't go that route but I still think it would have been fun and worked pretty well.

          3 votes
      2. fxgn
        Link Parent
        To be fair, that's just a matter of having an extensive standard library, not really much to do with the language itself. Wolfram Mathematica lets you publicly host a website for running quantum...

        Here is a single-line program that opens a graphical user interface for sending an email written in 130 characters

        To be fair, that's just a matter of having an extensive standard library, not really much to do with the language itself.

        Wolfram Mathematica lets you publicly host a website for running quantum computer simulations on temperatures in different countries and plotting them on a map, all in like one or two lines of code. It's impressive, but also, doesn't mean that much when it's stdlib is 10 GiB.

        7 votes
      3. skybrian
        Link Parent
        Rebol reminds me a lot of Forth. I doubt many people remember Forth much nowadays? It’s sort of like if you wanted an interpreted language that’s as flexible as Lisp, but you need it to run fast...

        Rebol reminds me a lot of Forth. I doubt many people remember Forth much nowadays? It’s sort of like if you wanted an interpreted language that’s as flexible as Lisp, but you need it to run fast (for an interpreter) on an embedded system with very little memory, and you’re willing to put up with weird syntax and no memory protection to get it.

        It’s generally considered a write-only language in that these systems tend to make a lot of sense to the author, but not so much to anyone else. Forth programmers would often learn the basic concepts and then write everything themselves, sometimes including their own Forth interpreters.

        Nowadays it’s more important that other people (and LLM’s) can read your code and that there are plenty of libraries to reuse, which tends to discourage going down the hermit path.

        2 votes
  6. unkz
    Link
    I think it’s interesting that they think a language built with Rebol style dialects as a first class feature will be friendly to AI coding agents. That sounds like a total nightmare scenario for...

    I think it’s interesting that they think a language built with Rebol style dialects as a first class feature will be friendly to AI coding agents.

    An example of Rebol's dialecting abilities can be seen with the word return. In the data exchange dialect return is just a word not having any specific meaning. In the do dialect, return is a global variable referring to a native function passing back a function result value. In the visual interface dialect (VID), return is a keyword causing the layout engine to simulate a carriage return, moving the "rendering pen" down to the beginning of the next line.

    That sounds like a total nightmare scenario for an LLM. The token overloading will be enormous, and then any user can redefine a builtin keyword to mean something else, and they encourage doing this?

    4 votes
  7. [2]
    PelagiusSeptim
    Link
    Sounds very interesting, but I don't recommend they call it that!

    Sounds very interesting, but I don't recommend they call it that!

    18 votes
    1. Akir
      Link Parent
      To be fair, they started this project with this name a few years before Facebook decided to rebrand.

      To be fair, they started this project with this name a few years before Facebook decided to rebrand.

      10 votes