18 ms·
Elena Programming Language
- shureluck 6y agoFrom a quick read-through of the docs, I really love that the language is providing a fresh take on things without the super-junior promise of trying to “solve everything”. I’m impressed and will take a closer look.
- ncmncm 6y agoFront page doesn't say whether it has obligate GC, which nowadays I guess means yes.
- KineticLensman 6y agoThis did make me curious. I couldn't find any explicit discussion of memory management, not even in the constructor section of the programming manual [0]. There isn't a section on destructors. I also searched for and didn't find 'garbage' and 'deallocation' and other similar terms. [0] https://github.com/ELENA-LANG/elena-lang/wiki/ELENA-Programming-Manual#constructors https://github.com/ELENA-LANG/elena-lang/wiki/ELENA-Programm...
- arakov 6y agoI can't imagine a modern language without GC. So yes, it has. Destructors are not yet implemented,though I do plan them.
- ncmncm 6y agoI can. Do you consider Rust not modern? Destructors are usually hard to support cleanly in the presence of obligate GC. Given destructors, GC turns out to be unnecessary. Lacking destructors, managing non-memory resources becomes foolishly difficult, particularly across library boundaries.
- arakov 6y agoas much as I can see, Rust is a special case. So I mean most of the modern languages. After all I consider C++ modern as well :)
- ncmncm 6y agoOK then! I will be interested to see how destructors are reconciled with GC. Where I have seen GC used in C++ runtimes, it is confined to specific, graph-like structures, where tracking cycles would be messy; or provided to obligate-GC languages being interpreted. In both cases it is always clear whether an object's lifetime is tracked, and the C++ runtime does not see the objects.
- arakov 6y agoI know there are problems with destructors. That's why I didn't implement them yet. But in C# they do exist. And after all you may always use explicit finalizers. I don't think that it makes the concept of obligate-GC invalid. But after all I don't care much. I'm more interested in other parts of language designs :)
- jimbob45 6y agoIs there anyone that doesn’t immediately scroll past the elevator pitch to the code examples when looking at a new language?
- mastrsushi 6y agoAbsolutely, No one here thinks you're Steve Jobs. Just show me your little toy pet project example code to convince me it's slightly less useless than the 10 other ones that get posted here everyday.
- throwaway4747l 6y agoThere's no need to be this harsh. We should always celebrate people making things even if they don't benefit us directly, to me that's even the essence of hacking
- Volt 6y agoSure, making is good and all, but if you want people to care you should put in effort to make them care. Toy programming languages is a very crowded space.
- throwaway4747l 6y agoSorry, how is it a 'crowded space'? Languages aren't startups, they don't have to compete on a market to be viable (unless they're proprietary of course). As long as someone somewhere has an interest in it, it will live on.
- mastrsushi 6y agoA language needs an active community of many users. In these days, without support for libraries that make software exciting and useful a language can definitely die as a platform. Those are some of the many qualities that persuade users to invest time into learning a new language. Otherwise, they'll go with something already established. So I disagree, there is definitely competition amongst programming languages.
- Aperocky 6y agoIt seems the language (at least in implementation) is closely coupled with Visual Studio and Windows?
- MrMorden 6y agoThe website may be out of date; current binaries are supplied for Linux and Windows... but only x86 32-bit.
- whynotwhynot 6y agoFrom a PL design perspective, I'm interested in finding out what new ideas it introduces to an already crowded field? Rust is good example of a PL design that introduces new concepts (around ownership.) Pony is another good example of PL design, for the same reason as Rust, but it differs in important ways by introducing Reference Capabilities. I tried to get some attention to it the other day: https://news.ycombinator.com/item?id=24201754 https://news.ycombinator.com/item?id=24201754 What new ideas does Elena introduce?
- mcintyre1994 6y agoI heard a good podcast about pony recently: https://corecursive.com/055-unproven-with-sean-allen-1/ https://corecursive.com/055-unproven-with-sean-allen-1/ - it’s about how Wallaroo Labs came to use it. They talk about using it to deal with some really interesting engineering challenges. One of the things that I found interesting is their comparison to Rust was that at least at the time Rust didn’t have a comparable runtime to Pony’s high performance actor based one.
- whynotwhynot 6y ago"Sean: There was one issue and that was when somebody went to upgrade something and didn’t follow the upgrade instructions. But for the stuff that we built, that was processed at the peak, about 80 million calculations second handling hundreds of thousands of incoming requests a second with packed full of data, which would blow up into like 80 million calculations a second run in for a year. Not one teeny tiny little issue that to me that’s beautiful. That’s beauty to me. Right?" Sounds poetic enough to me to get into!
- brabel 6y agoIt's a shame Pony does not get enough attention as it's a very nice language that as you say, introduces truly innovative ideas. I wrote some code in it and it was extremely fast, in the same order of magnitude as Rust/C. But it was quite complex to write, unfortunately, compared to the Rust version (which also guarantees no deadlocks and safe concurrency). On the other hand, the code looked quite a lot prettier due to its Python-like syntax. Anyway, it's one of those tools I keep in the shed, hoping to one day find a good use for it... just hope it continues evolving (specially running Actors on multiple machines would be a real killer feature - making Pony like a typed Erlang with beautiful syntax).
- amitport 6y agoCan anyone describe a use-case for "first class messages"?
- ww520 6y agoI think it's similar to partial function application. First class message is a partially applied function with some parameters bound and some "parameter holes" left unbounded. When the message is sent to a target, the rest of the parameters are filled in to build the full message to be sent. In that case, complicate messages with lots of parameters can be pre-built with parameters partially filled in. The pre-built messages can then be repeatedly used subsequently. I think that's how it works. OTOH, I could have completely misunderstood the first class message idea. Someone more familiar with the language can probably explain better.
- zelphirkalt 6y agoAlthough, could this message thing not be modelled with lambdas taking remaining "holes" as arguments, "formatting" the message, which are given as arguments to functions? The gain seems smaller than the gain from first class procedures, but it is an interesting idea, which might avoid some lambda wrapping in the code.
- bjoli 6y agoI don't think I have to explain this to you (hello fellow guiler!), but in a language with first class procedures and proper macros there doesn't have to be any lambda typing overhead. I implemented "megacut" in guile, which is a clojuresque lambda shorthand: #%(+ %1 5 (* %2 4)) => (lambda (%1 %2) (+ %1 5 (* %2 4))) in about 30 lines of code (unhygienically, though, but that should be a small fix in a psyntax-based scheme)
- zelphirkalt 6y agoHehe, you are correct, indeed I did not think of macros in the moment. We do have some megacut wrapping overhead then though ;) Can you post a link to the macro on the Guile user list? Perhaps someone can rewrite it to a hygienic macro. Some people there very proficient in macrology. I am not that proficient in macrology. I am also trying to maintain a list of libraries and things for Guile, which I could add this too.
- nine_k 6y agoOK, we see a dynamic, late-binding, object-oriented, interpreted language with a VM. If I were to try and make this language interesting to the HN audience, I'd start with two items: * What is interesting in Elena, compared to Python? * What is interesting in Elena, compared to ES6? * For bonus points: What is interesting in Elena, compared to Smalltalk? Without answering this questions, I don't see why I should take a look. And there must be some differences, e.g. around the concept of first-class messages, which apparently are related to Smalltalk.
- mumblemumble 6y agoThe overview section in the programming manual perhaps answers the bonus question: > Why not to treat the message like a normal language element with which different operations are possible : loading, passing, modifying, dispatching? Could we do it without using reflection all the way? I don't know how the guts of smalltalk are implemented, but, if there's a lot of reliance on runtime reflection involved, then maybe there's your answer. I think, then, that the answer to the first two is, "It's like Smalltalk."
- The_rationalist 6y agoNew languages would better be written on the JVM or at least on the coreclr, otherwise they loose all hopes of seamless interoperability with existing production ready ecosystems and therefore loose most hope of success.
- anentropic 6y agoIt seems like languages which compile to C have better interoperability, nearly all mainstream languages have some form of C-FFI JVM languages are in a silo off to the side where they only interop with each other
- arakov 6y agoBut it is much more fun to design VM yourself. I could not resist
- maitredusoi 6y agoTLDR; >Supported platforms > > Windows > Linux Sorry guys, not for me ...
- deleted 6y ago[deleted]
- adhoc32 6y ago"A variable name can contain any UTF-8 symbols (except special ones, white-spaces; the leading character cannot be a digit) and is case-sensitive." This is terrible.
- kungato 6y agoHow is this terrible? Isn't this pretty standard in all big languages?
- wjsetzer 6y agoI know you can use emoji as variables in Ruby. Unsure if you can in Python. Imo it's fine to allow Unicode. Latin will still be the de facto standard character set, but it allows international users to code natively and allows for Easter eggs.
- duckerude 6y agoSince PEP 3131 (https://www.python.org/dev/peps/pep-3131/ https://www.python.org/dev/peps/pep-3131/) Python supports unicode in names, but only letters, not emoji. I have occasionally used variable names like ϕ when transcribing a formula in toy code. The unicode is normalized. That can be used for trickery in rare circumstances. "global" is a keyword, but "𝐠𝐥𝐨𝐛𝐚𝐥" isn't, so you can use that if you absolutely require an attribute called "global".
- a1369209993 6y agoIt is decidedly undesireable for "⋄˄∕≡·‒⁇⁆․⌉⌋"[1] to be a valid indentifier. Especially if, as appears to be the case, "foo[⋄˄/≡·-⁇].⌉⌋"[0] is a valid expression. 0: foo[diamond_caret / indentical_middot - questionquestion ] . ceil_floor 1: utf8: E2 8B 84 CB 84 E2 88 95 E2 89 A1 CE 87 E2 80 92 E2 81 87 E2 81 86 E2 80 A4 E2 8C 89 E2 8C 8B
- throwaway4747l 6y agoDoesn't Python 3 exactly do this? Not saying I would use non-ascii characters in variable names but presumably populations that don't use the Latin alphabet have different use cases?
- jupp0r 6y ago> ELENA supports rich set of object-oriented features: > abstract classes, interfaces, singletons, class constants, > named constructors, variadic methods / constructors and > class extensions. Half of these are anti patterns that I appreciate other languages (Go, Rust) leave out (non-virtual inheritance, singletons, ...). Elena announcing them as features makes me wary.