No offence taken. I guess this (quite common) question could go for a wide variety of things... but then, many things would have been left without been invented or even tried. Now, to try to properly answer your question: I guess the simple answer was that I couldn't find what was I was looking for - in a language, in this case. So, I decided to create it myself. :)
Thanks a lot for your kind words! I've worked very hard on it - both the language and the website - so, I definitely appreciate it. Feel free to join the community and let me know in case you have any questions whatsoever! :)
I've done my best. As for the inspiration, as I've said before, although the two languages (or the 3 of them, if I include Red) did end up looking quite similar, when I started out I had no knowledge of Rebol (other than the name). So, basically, I designed something from scratch, with its own characteristics. Now, given that, afterwards I sure have studied Rebol/Red a lot, and I must admit that both have served as an interesting source of ideas as well.
Looking forward to your feedback once you play a bit with it! :)
Thanks a lot for your kind words. I really appreciate it! :)
Regarding "?"-functions.
Yes, the idea was this: to separate "normal" functions (that is, functions returning something or altering a value in-place) from functions returning a boolean values - let's call them predicates. That's not a rule, it's merely by convention (at least in the built-in library).
Re: "if" vs "if?", as I said before... the second one is a predicate, meaning: it does return a boolean value (that of the passed condition parameter). And the main use is... chaining with an "else". ;-)
I found it fairly easy to pickup syntax since they had many similarities with each other. How to represent functions, assignments, if/for/while seems quite consistent.
I found Arturo quite hard to grasp and make sense of.
However - and not because I'm the author of the language - once you get the general idea of Arturo (or any of the languages of the Rebol family: be it Rebol, Red, or Arturo), I assure you that you will find it very tempting not to ever go back to the C-inspired languages.
If I could sum up the whole (not-so-)syntax of Arturo, I would say that every "command" takes takes the necessary parameters on its right. And that's pretty much it.
print 10 ; that's a valid function call for example
or
print add 1 2 ; that's also a valid function call (or 2, to be precise)
and...
a: 1 + 2 ; that's how you "assign" meaning to a symbol
other than these super-basics, having a look into the library is pretty much all you'll need in order to get started.
I guess this isn't that difficult. :)
P.S. Feel free to ask any question you want. Feedback and input of any kind is more than welcome too. Also, our Discord channel is fairly active, so... I would even invite you there, so that we could actually exchange ideas about it in a more... interactive way.
Well, perhaps it does take some getting used to, but as soon as you appreciate its simplicity, you'll most likely love it. Former REBOL addict speaking. Have a look at this QuickSort implementation -> https://arturo-lang.io/playground?example=sorting%20algorith...
26 comments
[ 2.8 ms ] story [ 65.8 ms ] threadP.S. I love your examples section too. That must be one of the best documented languages at an initial stage of development!
As a matter of fact, the question has been asked again (see here @ our "official" discord channel: https://discord.com/channels/765519132186640445/765519132186...)
As I mention in that specific request, socket programming support is planned but not yet in. But I'll work in it.
And yes, given that you're talking about async operations, probably this is the most challenging part to be dealt with.
Stay tuned!
You are also welcome in our "official" Discord channel: https://discord.gg/YdVK2CB
I've done my best. As for the inspiration, as I've said before, although the two languages (or the 3 of them, if I include Red) did end up looking quite similar, when I started out I had no knowledge of Rebol (other than the name). So, basically, I designed something from scratch, with its own characteristics. Now, given that, afterwards I sure have studied Rebol/Red a lot, and I must admit that both have served as an interesting source of ideas as well.
Looking forward to your feedback once you play a bit with it! :)
By the way, what's up with the "?" functions? Are they all predicates? And what about "if" vs "if?" ?!
Regarding "?"-functions.
Yes, the idea was this: to separate "normal" functions (that is, functions returning something or altering a value in-place) from functions returning a boolean values - let's call them predicates. That's not a rule, it's merely by convention (at least in the built-in library).
Re: "if" vs "if?", as I said before... the second one is a predicate, meaning: it does return a boolean value (that of the passed condition parameter). And the main use is... chaining with an "else". ;-)
Please, let me know in case you have any issues or questions. I'm all ears! :)
Java, javascript, php, C, C++, C#, Typescript, Rust, golang, Python
I found it fairly easy to pickup syntax since they had many similarities with each other. How to represent functions, assignments, if/for/while seems quite consistent.
I found Arturo quite hard to grasp and make sense of.
However - and not because I'm the author of the language - once you get the general idea of Arturo (or any of the languages of the Rebol family: be it Rebol, Red, or Arturo), I assure you that you will find it very tempting not to ever go back to the C-inspired languages.
If I could sum up the whole (not-so-)syntax of Arturo, I would say that every "command" takes takes the necessary parameters on its right. And that's pretty much it.
print 10 ; that's a valid function call for example
or
print add 1 2 ; that's also a valid function call (or 2, to be precise)
and...
a: 1 + 2 ; that's how you "assign" meaning to a symbol
other than these super-basics, having a look into the library is pretty much all you'll need in order to get started.
I guess this isn't that difficult. :)
P.S. Feel free to ask any question you want. Feedback and input of any kind is more than welcome too. Also, our Discord channel is fairly active, so... I would even invite you there, so that we could actually exchange ideas about it in a more... interactive way.
I would call this rather sweet.
Long answer: Arturo's aim is to be able to run, easily and effortlessly, on anything you can imagine.
Right now, it supports macOS, Linux, Windows, Raspberry (ARM-based Linux), FreeBSD + Web/JS.
Windows support may leave a tiny bit to be desired, but that's exactly what I'm here for: to make Arturo better. And better.
Looking forward to your feedback! :)