
The Chapel Parallel Programming Language - dougb
http://chapel.cray.com/
======
cabacon
Fortress
([http://en.wikipedia.org/wiki/Fortress_(programming_language)](http://en.wikipedia.org/wiki/Fortress_\(programming_language\)))
and X10
([http://en.wikipedia.org/wiki/X10_(programming_language)](http://en.wikipedia.org/wiki/X10_\(programming_language\)))
were the other two languages that came out of the DOE HPCS program
([http://en.wikipedia.org/wiki/High_Productivity_Computing_Sys...](http://en.wikipedia.org/wiki/High_Productivity_Computing_Systems))
that might be interesting if you liked Chapel.

Other aiming-for-HPC languages include co-array Fortran
([http://en.wikipedia.org/wiki/Coarray_Fortran](http://en.wikipedia.org/wiki/Coarray_Fortran))
and Unified Parallel C
([http://en.wikipedia.org/wiki/Unified_Parallel_C](http://en.wikipedia.org/wiki/Unified_Parallel_C)).

I never really saw any of them while working in HPC, though. It was just
Fortran, C, and sometimes Python. The Python would really just call out via
SWIG to a C function for the numeric kernel.

------
ihnorton
The overview paper [1] is a reminder of the pace of change in computing:

> DARPA’s HPCS program was launched in 2002 with five teams, each led by a
> hardware vendor: Cray Inc., Hewlett-Packard, IBM, SGI, and Sun.

It also has one of the more amusing euphemisms I've heard in a while:

> In 2003, the HPCS program transitioned to phase II, and a _programmatic
> downselect_ occurred, enabling the Cray, IBM, and Sun teams to pursue their
> proposed research plans.

[1]
[http://chapel.cray.com/papers/BriefOverviewChapel.pdf](http://chapel.cray.com/papers/BriefOverviewChapel.pdf)

------
BruceIV
This looks seriously cool. I need to spend a day or so really diving into the
documentation, but if they can actually get this completely built and
optimized it looks like it has the right features to be a systems language for
the age of massively parallel and cloud computing.

I'm especially interested in the domain maps - I need to read more, but it
looks like a system that separates the semantic view of a data structure (this
is an array of integers, you can perform these functions on them) from the
implementation details of in-memory layout and distribution across systems.
Essentially, you seem to be able to adjust the algorithms on your data
structures and the (extremely performance-critical) representation of them
somewhat orthogonally.

------
julienchastang
Chapel emerged a while back from DARPA's High Productivity Computing Systems
project along with the Fortress (now defunct) and X10 programming languages.
Out of curiosity, is there a reason Chapel is a getting attention now?

------
bastawhiz
How not to promote a language: hide almost all examples of source code for the
language behind at least two clicks in PDFs. I was finally able to find an
example of defining a variable after visiting the Tutorials page and reading
through the first two and a half powerpoints, the first two not containing a
single line of Chapel code.

Seriously, if I need to spend ten minutes just to find out what the language
looks like where an example is somewhere between the extremes of the ten lines
of code in the "quick reference" chart and the 313-page formal language
definition, I'm probably not going to dive into the setup process to get the
thing running when I can just go learn Rust or whatever.

[https://twitter.com/MozElevator/status/368467593805328384](https://twitter.com/MozElevator/status/368467593805328384)

To someone on this project: you'll get a heck of a lot more community behind
your code if you have at least one or more pages that look like the following:

[http://dlang.org/comparison.html](http://dlang.org/comparison.html)
[http://coffeescript.org/#overview](http://coffeescript.org/#overview)
[https://www.python.org/doc/](https://www.python.org/doc/) [http://doc.rust-
lang.org/tutorial.html#syntax-basics](http://doc.rust-
lang.org/tutorial.html#syntax-basics) [http://learnyouahaskell.com/starting-
out](http://learnyouahaskell.com/starting-out)
[http://tour.golang.org/#1](http://tour.golang.org/#1) [http://www.scala-
lang.org/documentation/getting-started.html](http://www.scala-
lang.org/documentation/getting-started.html)
[http://clojure.org/getting_started](http://clojure.org/getting_started)
[http://www.php.net/manual/en/intro-
whatis.php](http://www.php.net/manual/en/intro-whatis.php)

~~~
binarymax
The fifth bullet point on the page has a link to the examples directory.

[http://svn.code.sf.net/p/chapel/code/branches/release/1.9/te...](http://svn.code.sf.net/p/chapel/code/branches/release/1.9/test/release/examples/)

------
mncolinlee
I worked on the Chapel team in MN about eight years ago. I'm glad to see
they're still actively working on the project. It seemed very promising then.

------
tempodox
This looks definitely interesting. I'll have a closer look and play around
with it a little to see how it goes.

------
kolev
From the little I saw, it seems to be a pretty nice language.

