Skip to content(if available)orjump to list(if available)

Pony: An actor-model, capabilities-secure, high-performance programming language

voidUpdate

I wish these language websites would put an example of some code right there on the homepage so I can see what the language "feels" like. I finally found some code in the tutorials https://tutorial.ponylang.io/getting-started/hello-world

sitkack

It is funny you say this, because nearly every posting of the Pony language includes this comment. And it is always apologized as you need to go to https://tutorial.ponylang.io/ which still doesn't have source on it.

https://github.com/KittyMac/PonyCAT/blob/master/pony-cheat-s...

The project looks hostile to any sort of adoption.

nallerooth

I think Nim has a good homepage, with some bullet points explaining what the language is all about coupled with several code examples. I'm not saying Nim is better, but I visited the page the other day and thought it was neat.

https://nim-lang.org/

1980phipsi

The D language home page has something similar with a drop down with code examples

https://dlang.org/

Alifatisk

I was about to mention Dlangs website aswell, very well designed and clearly presents the language

voidUpdate

Yeah, that's exactly the thing I'd hope to see on anything trying to sell me on using a new language. Tell me about what it does, and show me how it does it

johnisgood

Yeah I think Nim's website is well-made. You can see the features / pros of the language, with many different (and IMO cool) examples.

mvieira38

It still looks great with Javascript off, 3rd party frames disabled and no remote fonts, too, for us privacy nuts

whalesalad

Nim feels like the perfect language to me. Keep meaning to give it a shot for something.

maleldil

The way it handles imports is weird. Default to importing everything from the module without qualification? I know you can choose to qualify everything, but that seems to go against the language's conventions.

bargainbin

Highly recommend you give it a go! Good community, great libraries and the language itself is just bonkers performant without even trying.

jbritton

I see this comment on all language postings and I just don’t get it. I’m much more curious about the motivation behind the language. If the syntax was that of APL, Forth, or Prolog would you just instantly ignore it because it doesn’t look like Java. I think if the language motivation is compelling then you can decide to dive into a tutorial where the syntax will be explained step by step. I don’t see how syntax can be judged before it is understood. Do you accept/reject languages over simple syntax like curly braces vs begin/end or significant white space, or abbreviations you don’t like eg. def, fun, defun, function, procedure.

thesz

Examples such as Hello, World! can tell you many things.

They can tell you whether language is statically typed or not, does it have an effect typing (it necessarily needs higher order types), does it have type inference, etc,

A syntax of one is semantic of other.

Twey

I've always loved Factor's homepage, which includes a random snippet of non-trivial (i.e. small but not ‘hello world’) code: https://factorcode.org/

gmfawcett

(also, velociraptors)

jillesvangurp

I was also wondering what kind of language this is and where they were hiding all the code. Even the tutorial requires clicking past several pages of (more) introduction before you get to see any code. Probably better to lead with the code. Less waffling, more code would be my recommendation.

jibal

The syntax is the least interesting thing about the language, and hello-world examples demonstrate almost none of the syntax.

This bit from the About page is notable: "never write a programming language. That’s like rule #1. Everybody will just tell you it isn’t needed and then argue about syntax."

Mawr

The way a Ferrari looks is the least interesting part of it too. I still want to see the thing front and center on its homepage.

The syntax is the language. To show me the language you have to show me its syntax.

jibal

"The syntax is the language."

This is obviously false.

poulpy123

> The syntax is the least interesting thing about the language, and hello-world examples demonstrate almost none of the syntax.

I agree for the hello world but I disagree with the syntax. It is the first thing you see and the characteristic you can never escape. It is like the layout and typesetting of a text: the substance is of course more important, but it is still very important. I personally find much more readable languages that have a concise-but-not-too-much syntax, that use not too many special characters, and that is read like fortran/pascal/c/etc (I don't how to define it, but for example lisp is different)

zem

the way i like to put it is that the syntax is the user interface of the language. if your user interface sucks, your product will not be pleasant to use, no matter how capable it is.

jibal

For Pony in particular, the syntax is not important ... it's simply not the point of the language.

pxeger1

The designer's syntax decisions tell you a lot about their semantic decisions, which languages they take inspiration from, and the language's philosophy about things like flexibility, correctness, and opinionatedness.

jibal

Or not. Mostly not in this case.

klas_segeljakt

It's not only about showing off syntax. It's also about showing what type of applications the language makes easy to implement.

jibal

But that's not what was asked for. To find that out, one must dig fairly deeply into the documentation ... at least read the About page.

brightball

August 15th and 16th there will be a talk on Pony at the Carolina Code Conference in Greenville, SC.

https://carolina.codes

pseudocomposer

Was this meant to be a reply to the top-level story, and not a specific comment?

It seems really bizarre to respond to “there should be easily-accessible examples of code that demonstrate the language’s key features on the website” with “there’s a $200 conference in South Carolina where there will be a talk on it.” Honestly, it comes across as not just bizarre, but somewhat disrespectful (though I’m sure that was not your intention).

brightball

I just clicked the first reply button in a hurry when I saw the Pony thread. It's hard to turn off the conference promoter mode. :-)

My apologies.

ratdragon

Example pony applications: https://github.com/ponylang/ponyc/tree/main/examples

Playground: https://playground.ponylang.io/

They're on HP https://www.ponylang.io/ unfortunately the article link points to /discover/

pjmlp

Without wanting to derail the conversation too much.

Its original designer, Sylvan Clebsch, is nowadays working at Microsoft Research on languages like Verona [0], the last paper he contributed to, which has Guido as well among the collaborators, is about adding regions to dynamic languages, using Python as example implementation,

https://www.microsoft.com/en-us/research/publication/dynamic...

[0] - https://www.microsoft.com/en-us/research/project/project-ver...

CharlieDigital

Notable the Microsoft has not one but two actor model "frameworks": Orleans (for .NET) and Dapr Actors (for containerized workloads).

guiriduro

The .NET ecosystem itself has another mature actor-based framework in Akka.NET, being probably closest to the Erlang/Elixir supervisor style, in C#/F#.

halfmatthalfcat

Highly recommend Akka(.NET). Batteries included framework that scales really well.

pjmlp

Probably even more, most folks aren't aware of how many research is sponsored by Microsoft Research across all their university sites.

threatofrain

Is Verona still receiving attention? Seems like a quiet project.

titzer

Last I chatted with Tobias Wrigstad, work is still happening on Verona.

pjmlp

The paper I mentioned, is also done as part of Verona project

https://www.microsoft.com/en-us/research/project/project-ver...

Maybe they are now mostly behind MS walls, or have indeed decided to look elsewhere for their research goals.

tomsmeding

I'm going to join the choir saying that languages need a concise description of what makes them special easily accessible — but while syntax is important, with a language like Pony (where the cool stuff is in the semantics), the cool semantics should be upfront.

It seems, from some skimming of the first like 10 pages of the guide, that Pony is an object-oriented language with actors, and a built-in concept of mutability of references. What kind of references are there? You say that deadlock is impossible; how — do you have session types or something? You say that nulls don't exist; how — do you have linear typing? How do you express capabilities?

Essentially, give me a one-page overview of the static and dynamic semantics (i.e. type system and runtime semantics) that gives me all I need to know about this language to decide whether I want to learn more about it.

The language looks cool, but all documentation I've seen so far seems to assume that the reader doesn't even know what static typing is. To get knowledgeable people interested, I think it's useful to have a pitch that appeals to people who are already familiar with a bunch of languages.

ameliaquining

I agree with you, but also, it is legitimately hard to explain concisely the unique aspects of Pony's semantics. My short attempt at it from a couple years ago: https://news.ycombinator.com/item?id=33980738

tomsmeding

Thank you! This is quite illuminating. It's not enough for me to know precisely how the language works or how it feels to program in it, but it allows me to put the language in a box so that I know what concepts it introduces and what problems it tries to fix. :)

bccdee

What I haven't seen anyone mention yet is that syntax exists to concisely express semantics. If you want to give me an immediate feel for your interesting semantics, show me how you express them syntactically.

It may be easier to explain (for instance) Rust's borrow-checker in prose, but if you show me a snippet of code using `&mut`, it'll click for me intuitively that something conceptual and important is happening here. That's why I want an illustrative example at the top of the front page.

TOGoS

I don't have a one-page overview of Pony, but I did listen to https://corecursive.com/055-unproven-with-sean-allen/ in the car a couple of times and that made me want to try it.

throwaway328

Request to HN mods: that the link be changed from

https://www.ponylang.io/discover/

to

https://www.ponylang.io/

On the second link, as another commenter mentions, the "Try it in your browser" is one click away, near the top. On the first link, it's two clicks away, but the first of those clicks is a perhaps surprising backwards-lick to get back to the homepage...

Unfortunately, many of the diehard language enthusiasts here seem to be getting quite worked up over how inaccessible the code examples are. Instead of being able to immediately see the syntax so they can rush back here to make insightful and educated comments on how that syntax compares to $their_fave_lang, they are forced to spend up to 4 or even 5 minutes reading documents clearly describing the design of the language, and being obliged to click on their mouses up to 10 times even in some cases.

If a member of the Pony team sees this: even though it's more than a tad ridiculous and you have in fact made a lovely website with loads of clear information, maybe consider adding the "Try it in your browser" link as another option in the burger menu thing on the left. That way it follows everyone around, and you never have to suffer a HN discussion getting needlessly derailed by the resident PL fanatics.

Mawr

> Instead of being able to immediately see the syntax so they can rush back here to make insightful and educated comments on how that syntax compares to $their_fave_lang, they are forced to spend up to 4 or even 5 minutes reading documents clearly describing the design of the language, and being obliged to click on their mouses up to 10 times even in some cases.

Welcome to interface design! Your way of thinking could not be more wrong if you tried :)

How buying stuff on say Amazon works:

1. Click on picture of a car

2. Click "Buy Now"

How it would look like if we apply yours/the Pony website designers' approach:

1. Read a 10 page description of what the car is

2. Click on a link buried on page 12 that lets you buy the thing

Which approach gets more sales?

tomsmeding

Personally, I would say that if one is a real PL fanatic, one is more interested in the semantics than the syntax. :)

The problem with the linked docs on the Pony website is not that it doesn't explain the semantics (it does!) but that it seems to be written at a pace appropriate for someone who has no clue what static types even are. [1] Give a concise demonstration of the syntax and the semantics, even if that means that the latter will use terminology that not everyone will understand. Then the full tutorial is there for the details.

[1]: https://news.ycombinator.com/item?id=44722779

wongarsu

I love the syntax for checked math. a + b for wrap around, a +? b to raise an exception on under/overflow, and a +~ b for maximum performance, leaving behavior on under/overflow undefined (including floats having undefined behavior on +-Inf and NaN).

Compared to e.g. Rust (one of the better modern examples of easy rigorous math) I really like how concise they are. What I'm missing are saturating operations. I know some people find them useless, and through a "perfect results" lens they are, but they still give you the closest representable number. And they are often intuitive for humans since that's how most analog instruments work

renox

It's interesting that Rust and Pony have différent default for addition.

delifue

The difference between Pony and Rust is that Pony allows easy reference cycle.

One of the innovative point of Pony is the iso reference. iso reference means that an object graph is accessible from only that iso reference. It avoids sharing mutable data.

pjmlp

And that it has a nice garbage collector, which is good enough due to the way capabilities work, being per actor, and how references work.

burnt-resistor

Notable for the GC (ORCA) and the sharing model. They have a Zulip[0] and a weekly office hours.

Sylvan Clebsch is now working on Project Verona[1].

0. https://ponylang.zulipchat.com

1. https://www.microsoft.com/en-us/research/project/project-ver...

zelphirkalt

Having a Zulip (preferably self hosted) is sympathetic, compared to having shitty options like Slack. It indicates, that the people care about privacy. A zulip chat I would consider visiting, a Slack would be a hard pass.

sbt

This is probably my favorite programming language I would like to use if it had more backing. Their reference capabilities in particular seem like a very good match for the actor model. Alas, it does not appear to have a large corporation behind it pushing it forward, nor a compelling niche use case (e.g. it is still GC'd).

ndr

I loved playing with this a few years ago, but have lost track of it for a while.

The causality model was great, but is there a way to handle backpressure now?

mcintyre1994

I was randomly looking at examples and I think this is one showing that: https://github.com/ponylang/ponyc/blob/main/examples/under_p...

ucyo

There is a nice Podcast about choosing the right programming language for a project and in this, the final choice is relevant to this post :)

https://corecursive.com/055-unproven-with-sean-allen/

ramon156

Sorry for another complaint, but after skimming through I only see boasting paragraphs without any real information

If I click "why pony" i want to know when to use it. I want to decide for myself if I want to use this

I couldn't find a page where it's clear if I should invest my time in it

How to do this: - examples - companies/projects who use X - what this language aims to do - what this language is good at

throwthrowrow

tomhow

Thanks!

Pony – High-Performance Safe Actor Programming - https://news.ycombinator.com/item?id=25957307 - Jan 2021 (152 comments)

zelphirkalt

As always with the languages, I think about what the ecosystem looks like. What libraries exist? Seems there is a list of available packages on their website: https://www.ponylang.io/use/packages/

xnorswap

I clicked one at random (net_ssl) to get a sense of what a package looked like in this ecosystem and how to install it, but it takes you straight to a github page which says it's deprecated and to use a different package (ssl) instead, which is not listed on the packages page.

Not a great look, although it looks like it was only deprecated 2 weeks ago, so I'll give them a pass.

zelphirkalt

With such sanctified list of libraries, I think it is not unlikely, that more packages exist out there, that are simply not listed, or that there are repos out there, showing how to do things, but are not isolated libraries.

Maybe a third-party awesome list or so would be interesting.

Other than that, I guess one could get involved in the community to ask questions about things one needs for some project, or search more specifically for things one needs and hope to then find them.