8 comments

  • thenulldevice192 days ago
    You do a good job on explaining the what of the language, but I cannot quickly find the why of the language. What is the language's purpose? Why should or could I use it?
    • egranata_aria184 days ago
      This has been a pretty frequent source of feedback, and while I had ideas on that in my head, clearly I did not communicate them well enough<p>I updated the website &amp; README with more of a rationale&#x2F;viewpoint of why Aria exists. Please take another look: <a href="https:&#x2F;&#x2F;github.com&#x2F;egranata&#x2F;aria&#x2F;blob&#x2F;master&#x2F;README.md" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;egranata&#x2F;aria&#x2F;blob&#x2F;master&#x2F;README.md</a>
    • mrbluecoat191 days ago
      Agreed. Feels like &quot;a scripting language for C developers who hate JavaScript&quot;
      • nottorp191 days ago
        That can be a decent &quot;why&quot; though...
        • egranata_aria184 days ago
          I kinda like that :-) Maybe instead of &quot;hate JavaScript&quot;, a scripting language for systems people?
  • account-5194 days ago
    I feel like I keep harping on about Nushell but as scripting languages go it&#x27;s right up there for me. Built with rust too and comes with a ton of stuff built in.<p>What&#x27;s the niche this fills? I came across roc-lang recently which seemed interesting too, again built with rust, and opinionated on certain things common in older languages.<p>It doesn&#x27;t have to, and obviously it&#x27;s your project, but what is this offering over other languages. Why would I reach for it?
    • egranata_aria194 days ago
      I hadn&#x27;t really looked at Nushell, but it (process control) is definitely something I plan to improve in Aria (<a href="https:&#x2F;&#x2F;github.com&#x2F;egranata&#x2F;aria&#x2F;issues&#x2F;21">https:&#x2F;&#x2F;github.com&#x2F;egranata&#x2F;aria&#x2F;issues&#x2F;21</a>). Right now I have a simple system() wrapper, but not much in terms of advanced subprocess control. Maybe worth investing some time in cleaning up?<p>I have tried to fill the niche of &quot;scratch my itches, please&quot;, which means Aria is intended to feel smooth, pleasant and simple to write in. There are still things I want to improve before calling it a 1.0, but the general theme is, a general purpose scripting language with just enough structure and as little ceremony as possible.<p>It may be that I struck the wrong balance somewhere (and I know of a few places, e.g. operator overloading - I plan to rewire the syntax), and that would be great to get eyes on and get feedback!
    • norman784192 days ago
      Just a side note, roc-lang is being rewritten in Zig[0]<p>[0] <a href="https:&#x2F;&#x2F;gist.github.com&#x2F;rtfeldman&#x2F;77fb430ee57b42f5f2ca973a3992532f" rel="nofollow">https:&#x2F;&#x2F;gist.github.com&#x2F;rtfeldman&#x2F;77fb430ee57b42f5f2ca973a39...</a>
  • ofalkaed195 days ago
    What would this offer me over more established scripting languages? Main thing I want to know when I see a new offering. On a quick look I find the almost but not quite C syntax more difficult to read, like the lack of parenthesis on the if statement&#x27;s test and this is my biggest issue with <i>C like</i> languages, they change things just enough that I have to think about it and I don&#x27;t see what the change offers beyond those used to C syntax having to stop and think.
    • egranata_aria195 days ago
      Good news is I can offer you parentheses, but they are indeed optional on conditionals&#x2F;loops. I am fairly sure there are other C-style syntaxes that leave those out. See <a href="https:&#x2F;&#x2F;stackoverflow.com&#x2F;questions&#x2F;2061593&#x2F;why-do-c-languages-require-parens-around-a-simple-condition-in-an-if-statement" rel="nofollow">https:&#x2F;&#x2F;stackoverflow.com&#x2F;questions&#x2F;2061593&#x2F;why-do-c-languag...</a> - you can&#x27;t have the same ambiguity if you have mandatory braces around the body. Would there be a reason to require them?<p>With that said, this will work just fine and you wouldn&#x27;t have to think about it too hard, if at all:<p><pre><code> func main() { if (1 == 2) { println(&quot;oh no!&quot;); } else { println(&quot;phew!&quot;); } } </code></pre> On the more general point, why this vs. anything else? That&#x27;s a great question. I have tried to hit a balance that I think is pleasant to write code in (e.g. I like not having __init__.aria files around to define modules :-), and I like having proper enums, and so on...). I like to think someone would pick up Aria because it is a fun little language to try out and experiment with, not because it would change the world.<p>Mileage may of course vary and you may think that balance is actually nowhere to be seen. That&#x27;s great, hit me with it.
  • plainOldText192 days ago
    Judging from the small example in the readme, the language looks pleasing to the eye.<p>What’s under the hood though? What are some of the technical choices, performance characteristics and longer term goals?
    • derdi192 days ago
      The current implementation looks like a compiler to a stack-based bytecode with a straightforward textbook interpreter. For example, here is the interpretation of the Add bytecode: <a href="https:&#x2F;&#x2F;github.com&#x2F;egranata&#x2F;aria&#x2F;blob&#x2F;master&#x2F;vm-lib&#x2F;src&#x2F;vm.rs#L500-L521">https:&#x2F;&#x2F;github.com&#x2F;egranata&#x2F;aria&#x2F;blob&#x2F;master&#x2F;vm-lib&#x2F;src&#x2F;vm.r...</a><p>So to a very rough first approximation, performance characteristics should be in CPython&#x27;s ballpark.
    • egranata_aria184 days ago
      I just noticed this comment a few days late, so sorry for the delay in answering<p>Goals are documented in a roadmap doc: <a href="https:&#x2F;&#x2F;egranata.github.io&#x2F;aria&#x2F;ROADMAP.html" rel="nofollow">https:&#x2F;&#x2F;egranata.github.io&#x2F;aria&#x2F;ROADMAP.html</a> as well as issues on GitHub, and ideas are always very welcome, so please bring yours! I&#x27;d love to chat<p>I am not (yet) focused on performance, it&#x27;s still at a point where the language and the library are changing. It runs decently well (as mentioned it&#x27;s a stack based VM) such that you could actually use it to write some real programs. Good enough for a 0.9 I think<p>Technical choices, I have a few big ideas that stand behind the overall design: - easy to pick up, flexible, run with, write code, &quot;pleasing to the eye&quot; is what you called, that&#x27;s #1; - a simple module system that works with you (with more improvements in the roadmap); - easier to reason about errors (lots of things are Maybe&#x2F;Result-style enums vs. exceptions) - this is somewhat inspired by Midori where errors are classified according to whether you can and should handle them (with exceptions as a somewhat middle ground); - using Rust under the hood provides stronger memory safety guarantees than things written in C&#x2F;C++ would out of the box (I have seen the occasional stack overflow error, and even that I would consider a bug, but no segfault core dump using Aria); - no inheritance, prefer composition, reuse via mixins which are first class in Aria - I found this works quite nicely (for example, I can provide all comparison operators based on one function + a mixin: <a href="https:&#x2F;&#x2F;github.com&#x2F;egranata&#x2F;aria&#x2F;blob&#x2F;master&#x2F;lib&#x2F;aria&#x2F;ordering&#x2F;compare.aria" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;egranata&#x2F;aria&#x2F;blob&#x2F;master&#x2F;lib&#x2F;aria&#x2F;orderi...</a>)<p>Thanks for all the questions!
  • pshirshov191 days ago
    Does it support higher-kinded types and typeclasses? Does it support call-site expansion?
    • egranata_aria184 days ago
      No. Should it? i.e. would it be useful&#x2F;valuable to do for a scripting language? I am happy to hear suggestions and thoughts on that. Open a GitHub issue &amp; let&#x27;s chat?
      • pshirshov184 days ago
        In my opinion these features (and powerful type systems in general) would be useful for any language regardless of the execution model.
        • egranata_aria184 days ago
          I am happy to have the discussion. What would help me is a GitHub issue with some example&#x2F;rationale why you think this would help. That would be an ideal starting point. As-is, I am a bit lost how typeclasses would work with dynamic typing and all that, but maybe I am missing the point.
  • drumnerd191 days ago
    Why the name conflict with aria the technology?
    • egranata_aria184 days ago
      I am not familiar, can you point me in that direction?
  • PontingClarke192 days ago
    [dead]
  • efitz192 days ago
    [flagged]
    • voidUpdate192 days ago
      I think it&#x27;s cool that someone is creating a language specifically for creating a piece of music for just one voice!<p>What do you mean, not <i>that</i> aria[1]?<p>[1]<a href="https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Aria" rel="nofollow">https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Aria</a>
      • cestith191 days ago
        I think it’s cool that someone is writing a language to find information about the Russian heavy metal band.<p><a href="https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Aria_(band)" rel="nofollow">https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Aria_(band)</a>