4 ms·
Pony is an amazing language, but I feel like it burned its entire complexity budget. Reference capabilities are really great, but they have this weird special s
by staticassertion 6y ago
Pony is an amazing language, but I feel like it burned its entire complexity budget. Reference capabilities are really great, but they have this weird special syntax around them, and they're all termed in a very unique way.
I very much want a language like Pony because, as this talk demonstrates, it's doing some incredibly cool and powerful things. But it's pretty confusing.
Rust types like Arc, Mutex, &, &mut, and affine, have been wayyyy easier to learn for me because they aren't totally new concepts - I know what Arc is, Mutex, references are, moves are new but that's just one thing and it wasn't too crazy coming from C++. I know how to convert between these types because they're regular structures, with methods and documentation like all other structures. This is in really direct contrast to my experience with Pony where I had to learn like 6 new keywords, try to map them back to my own reference model, and, worst of all, trying to remember the strange incantation to map between them. I bet this is a "learn it once" thing, and it would be fine if that were the only new thing, but it's not - there are object capabilities, actors, learning the runtime/GC, learning new libraries, etc - there just isn't enough complexity budget in my brain for all of these things.
I contrast this with Rust, which people consider quite hard to learn, and Pony has just been way, way harder. It's a little "too good" - nothing in Pony is unjustifiable, like not having assertions/ failures, but I really want those things! Division by 0 is a perfectly fine thing to define as returning 0, I seriously don't even care, but it's just one more straw.
All in all, I was so hooked on learning Pony at first, totally enamored, and then I just found that I couldn't justify putting in the time.
I ended up writing an actor library inspired in part by Pony for Rust, using macros, and I've been fairly satisfied - though there's much more Pony offers, by far. I'd really like to see more actor model languages crop up, and incorporating many features that Pony has, but maybe making some 'worse is better' decisions in a few places.
- pjmlp 6y agoThe team behind Pony are also the main designers on Project Verona, so they are taking up on those learnings as well.
- rurban 6y agoBut with Verona they took a step back to Rust instead of keeping all the advantages of Pony over Rust. Natural syntax, proper safeties, faster. Rust's only advantage is its immense overhype which leads to more usage and libraries. Verona's advantage would have been memory regions, which fits better to shared memory models with threads.
- rkallos 6y agoI had the opposite experience to you. I found Pony much easier to learn than Rust. Reference types are probably the trickiest bit to learn, especially in how they relate to Pony's generics. Everyone is different, but I found learning the 6 reference capabilities to be a lot easier than trying to understand borrowing and lifetimes in Rust. I readily accept other reasons not to pursue Pony; it's library ecosystem is budding, the runtime is still a bit unstable, and there is limited support for non-x86_64 architectures. However, I invite anyone reading this comment to form their own opinion of the language. I feel I've benefited greatly from learning it. Also, Pony has a pretty active community on Zulip, where you will find people who will jump at the chance to help you get unstuck while you're writing Pony. https://ponylang.zulipchat.com/ https://ponylang.zulipchat.com/
- staticassertion 6y agoThat's really interesting. I was trying to learn pretty early on, so I could believe that was part of it. But I tried to play around with it in some off time only just a few months ago and I hit a wall on reference types yet again :\ Funny how that works.
- vanderZwan 6y ago> I feel I've benefited greatly from learning it. I have this feeling (or maybe I should say "hope") that once you learn Pony reasonably well, you kind of take that "reference type awareness" with you and it will make you a better programmer no matter what language you are programming in. It basically makes explicit what you should already be doing implicitly. I really should put in the effort to learn it someday