Using Pony for Fintech [video]
infoq.com
infoq.com
* Actor-model
* Concurrency-aware type system
* Zero-copy message queues
* Work-stealing topology-aware scheduling
* Fully concurrent GC with no stop the world
Since there's no such thing as a perfect language for all problems, I wonder what's "the catch" with this language - besides the obvious "not enough libraries yet"?My list of catches would be:
* Reference capabilities take a while to grasp. No more than Rust's borrowing or ATS viewtypes though.
* Garbage collection occurs between behaviour calls only. If you do something in a loop that allocates a lot in a single behaviour then you'll get memory issues.
* There's no blocking calls. You need to structure your code so that actors receive notifications of things occurring instead.
* Behaviours don't return anything as they are asynchronous. This requires using promises or passing callbacks.
That said, once you grasp these it's nice to program in. Fast, readable, and makes concurrent/parallel code easy to write and safe to pass data around. The C FFI is easy to use. You can package Pony code as a library callable from C too.
Once you get your head around them it's not so bad, but to a newcomer it's quite daunting. In my opinion the code becomes less immediately readable when compared to a language like Go, for instance.
Still love it though.
Erlang grew out of a need to program telecom switches for Ericsson, but it seems Pony was designed with the various industries the author was involved in - fintech, milsims, video games, and others for 24 years. I like that it has real world roots, and has a proven type system.
I have heard good things about it, and it can run on Android, Raspberry Pi, and other small platforms too.