Jump to content

Recommended Posts

11 hours ago, drac030 said:

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

 

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.

Meta is written in Polish notation, it should be intuitive to you. ?

 

Human-friendly doesn't necessarily equal REBOL-like, but REBOL was explicitly designed to be human-friendly, as was its predecessor Logo. Actually, I'm making a number of small tweaks to REBOL to increase its human-friendliness.

 

The blurb on top of the website alludes to what is meant by human-friendly. Do you have a suggestion what could be added so that people will understand what is meant?

Edited by Kaj de Vos
Link to comment
Share on other sites

3 hours ago, Kaj de Vos said:

The blurb on top of the website alludes to what is meant by human-friendly. Do you have a suggestion what could be added so that people will understand what is meant?

I think primarily we do not understand how you understand the "human-friendly" term in relation to your programming language.

"Human-friendly" usually in case of IT is synonym to "user-friendly", where it means that it's so intuitive that can be used without explanation. Meta isn't like this. You wrote above "The thing is that I have never claimed that it is easy to read and understand." which in my opinion is contradictory to being human-friendly. Actually, you claimed easiness on the top of the website "This leads to an exceptionally expressive language that is easier to learn for beginning and occasional programmers". While Logo was easy to learn because of the language simplicity and focus on the Turtle Graphics, Rebol (and therefore Meta) is not simple anymore. You have to learn ton of stuff to use it, a lot of equivalents of keywords, operators and standard library functions, more than in other languages that are considered easy to learn.

Claim that "it is user-friendly after you have learned it" is applicable to any programming language, so doesn't make Meta anyhow exceptional in this context. You provide different examples among the features but, at least according to comments here so far, they are not very convincing, and many features (maybe except "homo-iconic") are present in other modern programming languages.

On 12/9/2021 at 3:20 PM, Kaj de Vos said:

I worked most answers to most of Ilmenit's questions into the website in the past weeks. I will keep giving priority to progress on the project, so you can continue with it.

If I could give an advice, DO NOT spend time answering my question and instead focus on writing the language documentation and a set of examples. Currently the page provides a bold vision of the language and very little useful and actionable information. Comparing these two it give quite pretentious impression, which I assume you want to avoid. Take a look e.g. at the page of Zig or Odin, or for 8bit Millfork or Prog8 - they tell what the language is about without big claims, provide a code example, and give easy access to documentation and examples. 

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

1 hour ago, ilmenit said:

If I could give an advice, DO NOT spend time answering my question and instead focus on writing the language documentation and a set of examples.

Will do; we had already established that.

 

I appreciate the discussion with you and think that your information is of high quality. But I don't know if we will ever agree, because most times you present an example, I think it proves the opposite of what you think it proves. This has been a common, albeit mysterious, phenomenon during REBOL's lifetime. It can only be solved if people learn the language with an open mind and try it for some time.

 

1 hour ago, ilmenit said:

Currently the page provides a bold vision of the language and very little useful and actionable information. Comparing these two it give quite pretentious impression, which I assume you want to avoid.

I suspected this would be part of the problem. Originally, I kept the website to the bare minumum, like the language. But everything I left out was criticised here, particularly by you, so these past few months I was forced to unfold my complete plan and motivations. That means that, indeed, the website now projects where the language is going, but has not arrived yet. And I'm pointing that out at every turn.

 

And again, I don't see much of a difference with the Zig and Odin languages you point to. I studied them before, and they, too, have claims on top of their sites that seem quite bold to me. I need to promote the language, and it's not much use doing that by stating that it's nothing special. I know where Meta is special, so I will promote that.

 

1 hour ago, ilmenit said:

"Human-friendly" usually in case of IT is synonym to "user-friendly", where it means that it's so intuitive that can be used without explanation. Meta isn't like this.

Of course not, Meta is a traditional, text-based programming language. It is easy and human-friendly compared to other traditional programming languages. That's why I never call it user-friendly. Of course it's not for users, it is for programmers. What a programmer will be able to do, though, is offer a specialised dialect to let users control a program in an advanced way.

Link to comment
Share on other sites

32 minutes ago, Kaj de Vos said:

I appreciate the discussion with you and think that your information is of high quality. But I don't know if we will ever agree, because most times you present an example, I think it proves the opposite of what you think it proves. This has been a common, albeit mysterious, phenomenon during REBOL's lifetime. It can only be solved if people learn the language with an open mind and try it for some time.

I think here we agree: we won't agree ?

Initially I thought that you are designing a new language and there will be place for discussions, especially in context of making a language for 8bit Atari, but you have very clear vision of where you are going (that I understand currently as "compiled Rebol"). The argument of not being open minded and not open to change the concepts can be therefore applied to you but... there is nothing wrong with it. It's your language, you believe in it's greatness, so follow your vision and dream of making it a mainstream language. Great, change the world, I can be wrong.

What you call "common, albeit mysterious, phenomenon" may have a very simple explanation: I'm not the target audience for the language. I think I was open minded enough to understand Rebol documentation and concepts and write a few programs. I see some interesting ideas in such languages but what you consider as revolutionary I do not see as beneficial for modern mainstream programming. I see the benefits of some concepts for specific cases (simple scripting, linear processing of high-level data, reactive programming, server-side processing) but these are not my areas of interest, and definitely not my area of interest for 8bit Atari. 

So, it's like discussion of a long-term user of fork with a long-term user of chopsticks - one will not convince the other that his approach is better ;-)

  • Like 1
Link to comment
Share on other sites

2 minutes ago, ilmenit said:

What you call "common, albeit mysterious, phenomenon" may have a very simple explanation: I'm not the target audience for the language.

It's not about you, there is a certain percentage of existing programmers who react this way to the REBOL family of languages. Other families of distinctive languages, such as Lisp, have much the same experience. I was hoping we could avoid this for a while by focusing on Atari, but that percentage of programmers here has made it clear that they want to focus on their objections, instead of spending their energy on their language of choice.

 

So I was forced to delineate my target audience on the website, and then that's another reason to consider me closed and arrogant.

 

I have listened to the feedback of people here, thought hard about it, worked it into the website, and changed some small things in the language and how I present it. But you're right, I'm not going to change the design into some other language that some other people already like, because that is futile and not the point of the project.

  • Like 1
Link to comment
Share on other sites

7 hours ago, Kaj de Vos said:

It's not about you, there is a certain percentage of existing programmers who react this way to the REBOL family of languages. Other families of distinctive languages, such as Lisp, have much the same experience. 

You are very correct here. Lisp is a great example here because - just like Rebol - it didn't get popularity, while there are many advocates of Lisp superiority over other languages. For me Rebol is an attempt to "beautify" Lisp by removing parentheses and using Logo syntax, but keeping Lisp ideas of ability to create dialects and homo-iconicity (and I'm really curious about your plan for adding it in a compiled language). 

I finally found the essay from the times when I was learning Lisp, that allowed me to understand the whole buzz about the language: https://www.defmacro.org/ramblings/lisp.html - I really recommend to read it to everyone who does not know Lisp or even the language concepts.

Just like with Rebol, I consider ideas in Lisp interesting and useful for specific cases. However, the ability to reduce code complexity by defining domain specific languages (like to simplify database access in the essay) in my opinion leads to more issues than benefits. To give an example - in my current side-project in C# I'm using a growing set of external libraries - for serialization, entity component system, state machines, rendering, audio, assets management, logging, user interface, input handling, tilemaps, animation, tweening, runtime console... and the list will grow with the project progress. Going through the documentation of all the libraries to understand their interface, dependencies, use-scenarios, caveats, performance impact, security etc. was very time consuming and I'm still making mistakes using them. They all have one big benefit - I do not need to learn a domain specific language to use them. Additionally, I already switched serialization and logging libraries to other ones, so the waste effort would be even bigger. Yes, the DSL would make the code shorter, but it's not worth the price I would need to pay. Besides, modern languages like C# offers nice alternatives to capabilities of languages like Rebol or Lisp, offering so much more that they have for me very little to offer. 

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

11 hours ago, ilmenit said:

I finally found the essay from the times when I was learning Lisp, that allowed me to understand the whole buzz about the language: https://www.defmacro.org/ramblings/lisp.html - I really recommend to read it to everyone who does not know Lisp or even the language concepts.

I quite enjoyed that, thanks for the "light" reading, I can Identify with some of the concepts you presented.

Back in the 90's I was using "C" on a platform that sent/received user transactions to a mainframe, writing the code

was quite tedious and long winded (embedded SQL database access), even a relatively small program could take a couple of weeks.

So I decided to write a program to write the programs using the database tables as the input, the result was a program

that in a few minutes could write over 95% of the final code with no errors, all it required was a little 

top and tailing by hand which took less thank an hour.

 

The beauty of this apart from the massive time saving was when changes were made to the transactions (which happened quite often)

and were very time consuming having to trawl through hundreds/thousands of line of code to make changes.

 

All that was needed was a re-run of the programmer, quick tweak and it was done. 

  • Like 1
Link to comment
Share on other sites

I used to do similar things in REBOL. When I was a Lotus Notes consultant and IBM introduced conversion of the databases to XML, I wrote a REBOL dialect that would generate the XML. Similar huge savings in time and avoidance of errors. This is what REBOL is great for, and Meta will be.

 

When you do that for some time, you grow tired of using those non-REBOL systems at all, and try to do everything with pure REBOL systems.

Link to comment
Share on other sites

17 hours ago, ilmenit said:

You are very correct here. Lisp is a great example here because - just like Rebol - it didn't get popularity, while there are many advocates of Lisp superiority over other languages. For me Rebol is an attempt to "beautify" Lisp by removing parentheses and using Logo syntax, but keeping Lisp ideas of ability to create dialects and homo-iconicity (and I'm really curious about your plan for adding it in a compiled language). 

I finally found the essay from the times when I was learning Lisp, that allowed me to understand the whole buzz about the language: https://www.defmacro.org/ramblings/lisp.html - I really recommend to read it to everyone who does not know Lisp or even the language concepts.

Just like with Rebol, I consider ideas in Lisp interesting and useful for specific cases. However, the ability to reduce code complexity by defining domain specific languages (like to simplify database access in the essay) in my opinion leads to more issues than benefits. To give an example - in my current side-project in C# I'm using a growing set of external libraries - for serialization, entity component system, state machines, rendering, audio, assets management, logging, user interface, input handling, tilemaps, animation, tweening, runtime console... and the list will grow with the project progress. Going through the documentation of all the libraries to understand their interface, dependencies, use-scenarios, caveats, performance impact, security etc. was very time consuming and I'm still making mistakes using them. They all have one big benefit - I do not need to learn a domain specific language to use them. Additionally, I already switched serialization and logging libraries to other ones, so the waste effort would be even bigger. Yes, the DSL would make the code shorter, but it's not worth the price I would need to pay. Besides, modern languages like C# offers nice alternatives to capabilities of languages like Rebol or Lisp, offering so much more that they have for me very little to offer. 

Agreed on most.

 

Except that dialects would somehow be more costly to use than traditional function API's. As the linked essay points out, the cost is for the abstraction implementer, while it reduces cost for the abstraction user. A dialect is just a form of interface to some form of library. Any library needs an interface that you need to learn. Dialects are interfaces that are more flexible than function interfaces. They can be used to make the interface less costly to learn and use.

 

There are multiple options for defining interfaces. Many interfaces fit quite well in the functional language. They can just be a traditional function collection. For example, I tweaked the common assembler notation a bit to fit inline assembly in Meta into the default functional do dialect. That means an assembly instruction is just a method, that can be mixed with high-level Meta methods. No separate assembler dialect is needed.

 

Abstraction over multiple things means unifying interfaces. REBOL and Meta do much more unification in their data types. Aggregate data types are all series!, with a unified interface. However, REBOL has no user-defined data types and only applies the series! abstraction to its native data types. Meta also applies the series! abstraction to external data. This is a big win in simplifying interfaces, including to external libraries. All the standard series! methods can apply to external data types and functions. No special dialect needed. Once such an abstraction is written, you don't have to learn different methods for each library.

 

Surely there are many libraries available for C#, but they don't offer this abstraction and unification, and they don't run on Atari.

 

REBOL implements all this abstraction at run time in an interpreter, but much of it can be done at compile time. That's how Meta is much more efficient. To implement the dynamic behaviour, I will implement a JIT compiler that needs to be compiled into the program. This will take a long time to implement, and most of it will not fit into 8-bits. The REBOL interpreter is monolithic, but I will implement the JIT compiler in pieces as much as possible, so that as much as possible will fit into small systems.

 

Thanks for the linked essay. I will work it into the Meta documentation somewhere.

 

For the reasons mentioned, Lisp is only used by advanced programmers who succeeded in understanding the language principles.

 

REBOL succeeded in teaching these principles to beginners, as you say by cleaning up Lisp's syntax with using principles from Logo. REBOL is Logo for grown-ups, with its own inventions added. This leads to the odd make-up of the REBOL community, that consists of advanced programmers and people who may not be able to program if they didn't have REBOL. They get along fine, but they fill different roles.

 

The essay is an admirable attempt to convince the middle group, the existing programmers in more primitive languages. It shows how big a detour you have to make, along very over-complicated systems, to get the points through. This can't be the general way to teach Meta, but I will try to come up with a variant aimed at Meta and this specific group. I'm not getting my hopes up too high, though. It's a really thorny problem.

 

There is more. REBOL and Red programmers are convinced their languages are tiny and rich in data types. Compared to most other languages, that's true, but the coming years I will tell them that, compared to Meta, they are bloated and type starved. It will be interesting.

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

@Kaj de Vos Thank you for the extensive answer!

I see dialects just like you - it's an interface. While they allow to write a shorter code to perform specific actions, they bring one extra layer to the learning (and later maintenance or contribution) process, that's the cost I'm talking about. I won't convince you, but I hope you understand my point of view here.

 

Mentioned properties of series! are quite common nowadays because majority of aggregate data types in programming languages are implemented over common enumeration interface. I perceive lack of need of learning of new methods for different libraries doable only in very limited set of cases (damn, I'd love to see a common library interface for 2D physics, tweening and tilemaps handling!).

 

JIT is definitely the most efficient option and it's successfully used in Julia (with LLVM) or Clojure (with JVM). Depending on how directly you generate the code to C it can be a tough topic.

 

I think problem of Lisp is not that you need an advanced programmer to understand the language principles (because they are not hard), but the problem is with explaining in convincing way benefits of the features that the language provides, in other words which problems that programmer encounters will the feature solve. I understand Lisp, did some programming in it and yet I believe that other languages fulfill my needs much better. The best way to convince someone to use your solution is to show him that you understand his problems, how your solution is going to address them (the best if on real-life examples) and why your solution is addressing the problems better than some other solutions. As a C-language programmer I recently was sold to Zig by such talk from the author: 

 

Not everyone who doesn't find Rebol/Lisp features appealing is a closed-minded average programmer. While you consider Rebol superior, when you depreciate other languages by calling them primitive it looks just like elitist attitude popular in Lisp community. If you start to despise users of other languages then you may discourage the biggest target audience of your language. 

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

1 hour ago, ilmenit said:

Not everyone who doesn't find Rebol/Lisp features appealing is a closed-minded average programmer. While you consider Rebol superior, when you depreciate other languages by calling them primitive it looks just like elitist attitude popular in Lisp community. If you start to despise users of other languages then you may discourage the biggest target audience of your language.

Wow, hold it! Why do you theorise that I would despise programmers of other languages? Classifying languages as primitive is just a technical summary of the essay you linked. It's nothing personal, I would never despise people for their technical choices. I'm trying to improve programming for everyone, as stated by the project goals:

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

Nor do I consider "everyone who doesn't find Rebol/Lisp features appealing a closed-minded average programmer". In fact, I started out by declaring everybody my target audience, but I was told here that this is impossible, and some people here are hostile to the point that I had to accept that position and make an attempt to limit my target audience:

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

There, I tell people how it is, like the essay you presented. Meta can't read your mind, and it will only benefit you if you make the effort to open your mind and learn it.

Link to comment
Share on other sites

17 hours ago, Kaj de Vos said:

Come on now, you wrote at least three programs. ?

Quote

In one of Moscow's kindergartens, a lady asks children:
- In which country do children have the prettiest toys?
- In the Soviet Union - the children answer in chorus.
- And in which country do children have the best clothes?
- In the Soviet Union - the children answer again.
- And in which country do the happiest people live?
- In the Soviet Union - the children answer again.
Suddenly, the teacher notices that one of the children is standing in the corner and crying.
- Why are you crying?
- Because I would love to live in the Soviet Union so much.

I'm just waiting for you to achieve something of what is supposed to be the main strength of the META. Now I can only read about it.

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

Sure, my plan was to slowly build up the website at the same time I was building up the language. I was hoping we could do that here by focusing on the limited needs on an Atari. But that turned out to be impossible due to all the questions and attacks here. Now I have explained on the website where the project is going. I am happy with that work, because it anticipates future questions, but you will need patience to get there.

  • Like 1
Link to comment
Share on other sites

Not really. You don't just have a hammer, you compare your new tool REBOL with other tools on merit. I did those evaluations for decades on many other tools. On the other hand, if you refuse to consider REBOL as a tool, you are more likely to only consider a hammer for every task.

 

From the outside, when you haven't sufficiently considered REBOL, it may look like REBOL people do that. There are certainly cases where you have to work around limitations in REBOL to avoid the limitations in other tools. But then you have still made the calculation that the limitations in those other tools cost you more than the limitations in REBOL.

 

What I'm doing with Meta is removing many of the limitations in REBOL, so it becomes an even better Swiss knife, and you need other tools even less. One of those limitations is making use of other tools from REBOL, so Meta is actually much more suitable to use other tools in combination with Meta:

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

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...