Hacker News new | ask | show | jobs
Show HN: Arturo – Simple, expressive and portable programming language (arturo-lang.io)
207 points by stchacademy 1863 days ago
11 comments

I am so used to C inspired syntax with curlies that this seems a bit foreign to me.

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.

I totally understand what you mean.

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

I would call this rather sweet.

If you have any comments/ideas/questions/suggestions, please feel free to shoot me! :)

You are also welcome in our "official" Discord channel: https://discord.gg/YdVK2CB

Very good job with the documentation. Ultra nice and clean.

By the way, what's up with the "?" functions? Are they all predicates? And what about "if" vs "if?" ?!

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've played with Arturo before when it was first announced here. Judging by the website revamp, I guess I should give it a second look. Nice effort!!!
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! :)
Thanks a lot for the reply, sir!

P.S. I love your examples section too. That must be one of the best documented languages at an initial stage of development!

Very interesting syntax, clearly REBOL-inspired.
Thanks a lot for your nice comments.

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! :)

Impressive work, especially for an one-man project! I've seen Aguila and Grafito. Would you say they are production-ready?
No offence intended, but what does yet another programming language bring to the table?
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. :)
Does Arturo have TCP/UDP socket support? What about async operations?
Good question.

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!

I had tried to make a simple chat server but without much success. Let me see if I can manage to come up with something now.
Very interesting. Does it run on Windows 10? Android?
Short answer: it does (yep, both on Windows AND Android).

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! :)

Cool language!!!
Thanks! It means a lot to me.

Please, let me know in case you have any issues or questions. I'm all ears! :)