Jump to content

Recommended Posts

Introduction thread here:

 

Meta is a new, human-friendly programming language that supports and started on Atari:

https://language.metaproject.frl

 

The old links from the early development period in the introduction thread are gone, and a few of the method names in the program examples have changed. I will post progress here now, so that the website is on top, and examples on the website, where they can be updated.

 

MortalCoil.thumb.png.4e437d77f26b34ad6735dd55a84d9503.png

 

Release thread here:

 

Edited by Kaj de Vos
  • Like 2
  • Thanks 1
Link to comment
Share on other sites

  • 4 weeks later...
20 minutes ago, Kaj de Vos said:

I open-sourced the compiler client:

https://language.metaproject.frl/#get

Um... Looking at this source... Are you sure the language fulfills the promise of "human-friendly syntax" and the tagline "Meta, Human-Friendly Programming Language"?

		[..]
		Either headers= try open meta [
			Until any [
				is-tail headers
				text?= find/match find/match/tail take/line headers
					"Content-type: "  "text/plain"
			] []

			Close headers

			Either text? [
				either report= try open out [
					Write report
					Close report
				][
					; Save the occurred error from overwriting
					Error: system/error

					Write/error "File error: could not access "  Write/error out  Write/error ": "
						Write/error/line error
				]
			][
				Write "Result is in file "  Write/line out
			]
		[..]            

  

Edited by ilmenit
  • Haha 1
Link to comment
Share on other sites

That's because it's different, and therefore, I keep stipulating, you need to learn it, like every other computer or human language. You could start with Atari Logo if you want to learn the different principles.

 

Nowhere do I claim it is human-readable. I claim it is human-friendly. There is a difference.

Link to comment
Share on other sites

50 minutes ago, Kaj de Vos said:

Nowhere do I claim it is human-readable. I claim it is human-friendly. There is a difference.

My bad, even so it's not human friendly as I've stated before, I look at the examples and think I may have some

remote idea what the code is doing, apart from the rare obvious ones, the rest might as well be hieroglyphics 

Link to comment
Share on other sites

Every language that you've already learned is simple, even ones like Arabic, Hungarian or Polish - even small kids can use them, so they are human-friendly.

Logo (that Rebol and Meta base on) was designed to teach kids programming. However:

1. the way of learning by children is not the way for learning by adults and teaching methods are different.

2. what kids need to learn is different from the adult use-cases e.g. you teach children to write "BOB HAS A CAT" but for adults other form and syntax is required "Alice's sister, Bob, has a Persian-like cat.".   

 

Logo was designed to teach "BOB HAS A CAT" of programming. It is looking great and is very readable... but for simple cases. It is looking great for linear execution of code of functions with 1 parameter, so it's good for 1 line examples or for teaching children a "turtle graphics", example:

to square
  repeat 4 [ fd 100 rt 90]
end

then conditional/decision instructions come, that still look good for 1 condition and one execution path, example for teaching recursion:

to spiral_recur :n
  if :n < 1 [stop]
  fd :n
  rt 20
  spiral_recur 0.95 * :n
end

still looking great, or for other cases:

to randomwalk
  make "r random 3
  if :r = 0 [ fd 20 ]
  if :r = 1 [ rt 90 fd 20 ]
  if :r = 2 [ lt 90 fd 20 ]
end

very readable and human friendly. And then we are coming to 'ifelse' in Logo or 'either' in Rebol/Meta and we hit a wall of "human friendliness" of this syntax (from one Meta example):

  either is-odd RND [write "/"] [write "\"]

Until you know how many parameters 'either' takes and how many 'is-odd' takes and how many RND takes (or if it's function call or variable), you have no idea if it's not:  

either(is-odd,RND(write("/"),write("\"));

lets compare the friendliness with e.g. Python:

    if is_odd(RND):
        print("/")
    else:
        print("\")

we know that RND is not a function call, we know what 'if' and 'else' are, because they are reserved keywords, we know how many parameters is_odd takes. All because the syntax isn't as reduced as in Meta/Rebol. However yes, it's just a syntax that you can learn. I think Rebol has many more issues as a language than syntax. Also learning curve for some concepts like Series and their internal enumerators/smart-pointers in my opinion is steeper than working with arrays/lists and their indexes.  

 

I'm also curious how you are going to implement a few highlighted features like "The language design is homo-iconic" (code is data) that allows self-modification but here in compiled language. Other promise is "Dialects can be constructed from it that do have grammar. Any computer language could be constructed.". Considering that "any computer language could be constructed" I'm curious how Meta will allow to construct C language dialect with its finesse syntax, functions with variable number of parameters, pointers etc. Seems that Rebol cannot make 1:1 dialect of even as simple DSL as SQL (take a look at ORDER BY) on http://www.rebol.org/documentation.r?script=sql-protocol.r . 

Edited by ilmenit
  • Like 1
Link to comment
Share on other sites

41 minutes ago, ilmenit said:

either is-odd RND [write "/"] [write "\"]

Meta offers training wheels. You can write it like this if you want, pretty much like in Lisp:

(either (is-odd (RND)) [(write ("/"))] [(write ("\"))])

 

41 minutes ago, ilmenit said:

Until you know how many parameters 'either' takes and how many 'is-odd' takes and how many RND takes (or if it's function call or variable), you have no idea if it's not:

How can you write or even read this? It seems to have no structure. How do you know the arity of "until", "know", "takes", etcetera?

Edited by Kaj de Vos
Lots of Irritating Single Parentheses
Link to comment
Share on other sites

42 minutes ago, Kaj de Vos said:

Meta offers training wheels. You can write it like this if you want, pretty much like in Lisp:


(either (is-odd (RND [(write ("/"))] [(write ("\"))])))

 

maybe it's personal opinion but while solving ambiguity it's making it even less readable.

42 minutes ago, Kaj de Vos said:

How can you write or even read this? It seems to have no structure. How do you know the arity of "until", "know", "takes", etcetera?

Why it has no structure? English language HAS structure defined by English grammar, look for instance here https://www.scientificpsychic.com/grammar/enggram1.html . Like in the most of programming languages there is even a syntactic sugar in form of a Capital letter, coma, colon, brackets, apostrophe and so on to improve readability. Because of ambiguity English language cannot be fully parsed by EBNF, but majority of it can be , so well... still better than Meta ;-)

Edited by ilmenit
  • Like 1
Link to comment
Share on other sites

2 minutes ago, ilmenit said:

maybe it's personal opinion but it's making it even less readable.

Exactly, that's why Lisp earned the nickname of "Lots of Irritating Single Parentheses", why REBOL programmers never write it like this, and why I assume that Meta programmers won't write it like this after their learning period. Still, it can very well be used in training courses, for kids and adults.

 

4 minutes ago, ilmenit said:

Why it has no structure? English language HAS structure defined by English grammar, look for instance here https://www.scientificpsychic.com/grammar/enggram1.html . Like in the most of programming languages there is even a syntactic sugar in form of a Capital letter, coma, colon, brackets, apostrophe and so on to improve readability. Because of ambiguity English language cannot be fully parsed by EBNF, but majority of it can be.

Right, and in a similar way, Meta also has structure, which can be learned like English, but which is unambiguous like Lisp. And the syntactic sugar can also be applied if you want.

Link to comment
Share on other sites

1 hour ago, ilmenit said:

I'm also curious how you are going to implement a few highlighted features like "The language design is homo-iconic" (code is data) that allows self-modification but here in compiled language. Other promise is "Dialects can be constructed from it that do have grammar. Any computer language could be constructed.". Considering that "any computer language could be constructed" I'm curious how Meta will allow to construct C language dialect with its finesse syntax, functions with variable number of parameters, pointers etc. Seems that Rebol cannot make 1:1 dialect of even as simple DSL as SQL (take a look at ORDER BY) on http://www.rebol.org/documentation.r?script=sql-protocol.r . 

Gentlemen, answers first, philosophy later :] 

Link to comment
Share on other sites

That declared "human-friendliness" seems to cause much confusion here, perhaps it would help if you defined it more precisely. Because, as stated several times already, pretty much everything in this world is human-friendly, even king cobra, once you have already learned how to deal with one.

 

From the mere declaration one expects the language to be intuitive, but it apparently is not your intention, for nobody needs to learn things which are intuitive (that is the definition of intuitiveness). So what does this mean really?

 

  • Like 2
Link to comment
Share on other sites

16 minutes ago, Kaj de Vos said:

I agree about the confusion, so I added many qualifications to the website.

Maybe some of these qualifications could be moved to the beginning of the explanations in the website, such as:

Quote

It's a project for REBOL fans

and

Quote

REBOL has a human-friendly syntax of great clarity and is highly productive.

because these two are greatly clarifying your definition of "human-friendly" :)

Link to comment
Share on other sites

54 minutes ago, danwinslow said:

I think it's your repetition of the claim that it is easy to read and understand. You've promoted that as a selling point, so people are mentioning when they don't agree. I don't find it readable at all either, but of course everything takes some effort and if I were interested I would put the effort in.

The thing is that I have never claimed that it is easy to read and understand. I claim that it is user-friendly after you have learned it, and that the process of learning it is closer to human language than other computer languages.

Link to comment
Share on other sites

45 minutes ago, drac030 said:

Maybe some of these qualifications could be moved to the beginning of the explanations in the website, such as:

and

because these two are greatly clarifying your definition of "human-friendly" :)

I thought long and hard about the order of sections on the website, and adapted the order when I added new paragraphs. The problem is that everybody wants their current question answered right away, so everyone wants that answer to be on top, but everyone has a different question, and when it's answered, they want their next question to be on top. I have to make choices, the website is not a mind reader.

Link to comment
Share on other sites

4 hours ago, Kaj de Vos said:

I have to make choices, the website is not a mind reader.

That is perfectly understandable. However, the website's title says:

 

Quote

A New, Human-Friendly Programming Language

And so, whereas "new", or "programming language" are not obviously striving for strict definition, "human-friendly", for the reasons specified above, may need some explanation on the top of the website, at least as long as the rest of it suggests in a veiled way that "human-friendly" = REBOL-like.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...