Meta, a Human-Friendly Programming Language (language.metaproject.frl)
from armchair_progamer@programming.dev to programming_languages@programming.dev on 13 May 03:41
https://programming.dev/post/14011699

From the site:

We have entered a world in which we need to do more with less. If you, like us, have frowned at the difficulty and inefficiency of creating software, and wondered if there is a better way, Meta is for you. It is a descendant of the acclaimed REBOL and Logo computer languages. Logo was designed in academia to teach programming in a simple yet powerful way. It is widely used in education and influenced many newer systems and languages. REBOL extended this concept to professional programming. It was invented by Carl Sassenrath, the chief software designer of the famous Amiga computer, the first consumer multimedia system. Meta takes the next step by combining this design with the virtues of the C programming language, which has been the standard for software interoperability and performance for half a century.

meta-lang-examples (GitHub)

Try online (“console”)

#programming_languages

threaded - newest

hardkorebob@programming.dev on 13 May 04:14 next collapse

Awesome! Much better layout than the other post made ;) Thanks for the assist.

[deleted] on 13 May 04:59 next collapse

.

kakes@sh.itjust.works on 13 May 05:02 next collapse

For anyone curious, FizzBuzz:

Meta [
	Title:   {Fizz Buzz math "game"}
	Author:  "Kaj de Vos"
	Rights:  "Copyright (c) 2021,2022 Kaj de Vos"
	License: {
		PD/CC0
		http://creativecommons.org/publicdomain/zero/1.0/
	}
	Notes: {
		https://en.wikipedia.org/wiki/Fizz_buzz
		https://wiki.c2.com/?FizzBuzzTest
		https://www.rosettacode.org/wiki/FizzBuzz
	}
]

For counter 100 [                                   ; Count to 100
    Third?: unless modulo counter 3 [write "Fizz"]  ; Display "Fizz" every third count; remember whether we did

    Any [
        unless modulo counter 5 [write "Buzz"]      ; Display "Buzz" every fifth count
        third?                                      ; Remember earlier result
        write counter                               ; Display the number if not third or fifth
    ]
    Write " "                                       ; Separate the displayed items
]
Write new-line                                      ; Return the text cursor to the start of the line
Norodix@lemmy.world on 13 May 06:59 next collapse

I find that very hard to read.

hardkorebob@programming.dev on 13 May 12:12 next collapse

Complexity Bias. I had it too. Withers away with time.

FigMcLargeHuge@sh.itjust.works on 13 May 13:11 next collapse

What I am not seeing is how it is much different than other languages. But hey, they had me at Atari!

hardkorebob@programming.dev on 13 May 14:39 collapse
sxan@midwest.social on 13 May 14:04 collapse

It’s not so bad in a proper editor. These are very long lines and wrapping makes it worse than it is.

yuri@pawb.social on 14 May 04:06 collapse

It reads just like FiM++

mrkeen@mastodon.social on 13 May 07:24 next collapse

@armchair_progamer

Awful naming. Forgetting the fortune 500 company you're already thinking of, there's already a Meta Lang, abbreviated to ML.

Besides that, does it have any 'meta' features? E.g. Homoiconicity?

unexposedhazard@discuss.tchncs.de on 13 May 07:52 next collapse

Omg im gonna fuking rage if i see any more of these horrible names. Ever had to search for something, yeah?

Its impossible to find anything about a topic if your keyword is something like meta, signal, element, matrix, session, rust.

hardkorebob@programming.dev on 13 May 12:13 collapse

Fukin rage somewhere else. What is it with anger and programming? What in the flying hell is up with most of you keyboard junkies?

unexposedhazard@discuss.tchncs.de on 13 May 13:14 next collapse

Way to admit that you have never done anything productive with a computer in your life.

This is a post about programming in a community about programming. Anybody that ever did any programming, knows how important searchability is.

hardkorebob@programming.dev on 13 May 13:33 collapse

That makes no sense. Wth is up with all y’alls biased minds? LOL I admit I never done anything productive in my life. Are you feeling better that I agree with your so keen wise insight on my life’s work, history and activities? Interesting skill you have. You are wasting it replying to me. You could be making $$$ helping companies with that mighty skill of keen life reading ability. Very impressive!

PS: If programmers can’t find shit and complain then unlabel yourself as one. I never claimed to be one anyways smartalec.

programming.dev/c/programmer_anger

Lmaydev@programming.dev on 13 May 22:03 next collapse

This comment really doesn’t make sense.

They explained the issue. Using a generic name makes it difficult to get good search results.

It’s a pain in the ass that almost all developers will have faced.

UlrikHD@programming.dev on 14 May 04:50 collapse

While we have opened up community creation for users, please refrain from misusing the feature.

Also, as specified in our code of conduct, try to avoid personal attacks. @unexposedhazard@discuss.tchncs.de

wahming@monyet.cc on 13 May 23:13 collapse

It’s extremely ironic how this comment displays the most anger in the entire post

hardkorebob@programming.dev on 14 May 02:40 collapse

Your insight is so flawed lol 🧌

hardkorebob@programming.dev on 13 May 12:14 collapse

To be fully homoiconic, Meta needs to be able to manipulate its own code. Currently, that is done by REBOL 3. REBOL is homoiconic, and Meta is currently a REBOL 3 format. It will take a lot more to enable Meta to handle its own code, so that will take time. Even though REBOL and Red are homoiconic, they’re not implemented in themselves. REBOL has a C interpreter and Red a Red/System interpreter. Meta is two to three orders of magnitude faster and designed to be able to implement itself eventually.

Meta is for people with an open mind who want to make an effort to improve. You also need to be able to handle the fact that Meta is a work in progress. It’s good, but not perfect. Everyone will find in our projects what they are looking for. If you come to them with a preconception that they can’t be any good, or that they should be the same as other products, your brain will trick you into interpreting everything we say negatively and you will imagine to have confirmed your preconceptions. 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.

We aim to transcend a narrow focus on a specific audience. Meta is a project for developers who need power from their language, but also for occasional programmers who don’t have the time to juggle many arcane details, and for people who want to learn programming and are looking for an easier language. It’s a project for REBOL fans, but we also welcome programmers from other languages who want to expand their horizon. It’s a project for Atari and Syllable enthusiasts, but also for all the other platforms. Meta is for fun and for profit. We don’t believe in fundamental contradictions between these uses, and we don’t want to create artificial limitations. We believe that, when embraced, these uses will reinforce each other.

We make this possible through Meta’s unique combination of properties. Its human-friendly focus and high-level properties reduce the cognitive load on your brain. This brings the language within reach of beginning and occasional programmers, but also frees advanced developers to spend their energy on their application logic, instead of babysitting the language.

Meta’s low-level properties and raw performance enable it to run on more diverse platforms than most other languages, and allow advanced developers to still babysit the language when they need to.

Now this does require some mutual understanding from everyone involved. We will build an inclusive community, where anyone with good intentions can feel welcome. The project materials will cater to all knowledge levels, so that people can grow through them.

Not everyone is willing to make the effort to learn to understand Meta and the principles it is based on. This is usually not because they are not capable of doing so, but because they are already used to other computer languages based on different principles. Some of them even fiercely resist the notion that Meta could be rational and useful, in spite of the more than half a century of scientific and practical history in related languages that are highly influential on many modern computer languages and systems. To understand why this happens, read these articles:

The Backfire Effect, by The Oatmeal

Theory of Bounded Rationality

The Blub Paradox

Meta is outside their bounds of rationality, leading them to rationalisations that are bizarre to those who do understand Meta. While this is unfortunate, it also shows that Meta is a real innovation that pushes these bounds, towards greater rationality. If you want to give it a positive spin, it is also a clear way to outcompete them. We need to focus on those for whom Meta is within their bounded rationality, so they can achieve the results that show others the progress.

An odd consequence of this is that Meta needs a two-pronged approach of focusing on both beginning and advanced programmers. Beginning programmers haven’t invested much yet in different languages, so they may as well try Meta. Advanced programmers have the insight to see that Meta solves several pervasive problems in programming, and the mental capacity to learn a different language. Of course, this also makes Meta suitable for medium-level programmers, but that is not in our hands: it depends on their mental agility. One can lead a horse to water, but one can’t make it drink.

If you find yourself in the middle group, and you do want to make an effort to learn Meta, but you can’t get your head around it, it is very useful to read the following essays. They are about Logo, Lisp and Scheme, but much the same fundamental principles apply to Meta. The second essay explains them in terms of different, popular progr

porgamrer@programming.dev on 13 May 09:37 next collapse

REBOL is one of my biggest blind spots in programming language familiarity. I remember there was another REBOL revival project called RED, which always boasted huge feature sets with small amounts of code, though I never got around to investigating those claims myself.

This project seems to aim to provide strong foundations for a more performant compiler, but still lacks the most powerful REBOL features. I wonder if anyone can summarise those features? In particular, is there anything fundamental that distinguishes REBOL from Lisp, Smalltalk, Ruby, etc?

hardkorebob@programming.dev on 13 May 12:09 next collapse

Red/REBOL are a data format first. Many native data types. Lisp uses Fexpr and Red use a basic token. Each character!

Originally Posted on Hacker News by 9214

Red (and Rebol) are based on research in denotational semantics that Carl Sassenrath did. I’ll try to briefly explain the main points.

Everything starts with a UTF-8 encoded string. Each valid token in this string is converted to an internal data representation - a boxed structure 4 machine pointers in size, called a value slot or sometimes a cell.

Value slot is composed of a header and a payload. Header contains various flags and datatype ID, payload specifies exact content of the value. If content doesn’t fit in one value slot, then payload contains a pointer to an external buffer (an array of value slots, bytes, or other units + offset and start/end addresses IIRC) with extra data.

So, lexer converts string representation to a tree of value slots (this phase is called loading), which is essentially a concrete syntax tree (CST) — this is the crux of homoiconicity.

github.com/…/[DOC]-How-Red-works,-a-brief-explana…

github.com/red/red/wiki/[DOC]-Guru-Meditations#co…

github.com/red/red/…/[DOC]-Function-Evaluation

Who cares if creators cant name things great. Forget names lets use and improve technology.

hardkorebob@programming.dev on 13 May 14:38 collapse

Also to be fully homoiconic, Meta needs to be able to manipulate its own code. Currently, that is done by REBOL 3. REBOL is homoiconic, and Meta is currently a REBOL 3 format. It will take a lot more to enable Meta to handle its own code, so that will take time. Even though REBOL and Red are homoiconic, they’re not implemented in themselves. REBOL has a C interpreter and Red a Red/System interpreter. Meta is two to three orders of magnitude faster and designed to be able to implement itself eventually.

[deleted] on 13 May 14:44 next collapse

.

YIj54yALOJxEsY20eU@lemm.ee on 13 May 15:06 next collapse

People think its a joke when we say us developers are terrible at naming things.

Theres this phenomenal automation app on android called “automate”. Searching for anything marginally related is a PIA.

FizzyOrange@programming.dev on 13 May 20:47 collapse

I scrolled a lot before I gave up looking for an example. No thanks.

[deleted] on 14 May 01:21 next collapse

.

briggsyj@programming.dev on 14 May 01:25 next collapse

Wdym, examples are linked in the post’s description and in the site’s header?

kakes@sh.itjust.works on 14 May 04:27 collapse

Honestly, agreed. This reads more like a manifesto than a useful language introduction.