Hacker News new | ask | show | jobs
by throwqwerty 2273 days ago
what are you talking about? it says it right there in literally bold letters on the home page in response to "what" rather than "why":

>Chapel is a modern programming language that is...

>parallel: contains first-class concepts for concurrent and parallel computation

>productive: designed with programmability and performance in mind

>portable: runs on laptops, clusters, the cloud, and HPC systems

>scalable: supports locality-oriented features for distributed memory systems

are you such a literalist you need literally "why? because ..."

i have a question for you: why do so many hners jump on the same silly meme over and over again even when it's not accurate?

2 comments

I sympathize with the grandparaent comment. The first three aren't exactly unique. Many languages are parallel and portable and productive.

Listing adjectives isn't a "why". A "why" would be: "Chapel is a language built for distributed memory systems. Unlike X or Y, Chapel has first class language concepts for distributed memory management, sharded storage…" etc. etc. (I just made that up.)

Then you know right off the bat whether this language is the one you need for the problem you have.

What you refer to as a silly meme might also be a legitimate critique that surfaces again and again when hackers/engineers build things that solve a problem they have, think it is cool or interesting, but aren't able to communicate the value to others.

It's not unreasonable to ask, at the very least, for a simple "why does this exist?" (An entirely reasonable answer to which might be, "because I thought it was cool!")

> A "why" would be:

«Chapel has the goal of supporting any parallel algorithm you can conceive of on any parallel hardware you want to target. In particular, you should never hit a point where you think “Well, that was fun while it lasted, but now that I want to do x, I’d better go back to MPI.» https://www.cray.com/blog/chapel-productive-parallel-program...

I guess a better question would why is it better at those things? A lot of languages claim to be all about performance, scalability, productivity and portability. Those are pretty much what every mainstream language aims for. So why would this be better at those things? Why was it created and what does it do that others can't?

I don't think things necessarily need a reason to exist, but I think asking those questions is still relevant when it comes to a programming language. They are mostly tools used to solve problems, after all.

@mardifoufs: I realize that your point is that the Chapel webpage didn't answer this question clearly / concisely for you and agree that we could and should improve that. The observations in this thread have definitely helped given me insights about how we could position ourselves better for the non-HPC audience (and I already have a longstanding intention to make the code sample on the page more compelling using Asciinema that I need to find the time for).

But to answer your specific question here: I'd say that most mainstream languages (e.g., C, C++, C#, Java, Python, Rust, Swift, ...) don't aspire to scalability in the same sense as Chapel and High Performance Computing want it, in the sense of being able to run efficiently on tens of thousands of processors with distributed memory where inter-processor communication and coordination is required. And even when they do aspire to it, it's rarely through the language itself, but through communication libraries, pragmas, and extensions. The result (in my opinion) is rarely as productive, general-purpose, and performant Chapel achieves.