7 ms·
Chapel: a parallel programming language designed for productivity at scale
- myrryr 10y agoChapel (from Cray), x10 (from IBM, and fortress (from sun) were all created to solve this problem (and all got funding from DARPA to do so). Fortress (which was way out there and very cool!) Died a horrid death. I think x10 still exists. Of all the languages out there, Julia may be the one to be used for this eventually.
- xiaq 10y agoI am curious, how did Fortress die?
- arthurcolle 10y agohttps://blogs.oracle.com/projectfortress/entry/fortress_wrapping_up https://blogs.oracle.com/projectfortress/entry/fortress_wrap...
- shrugger 10y agoI really enjoy Julia, and I see such amazing potential from it but I talk to so many people who hate it, or complain about it. I know most people haven't had the pleasure (/s) of programming in MATLAB and so some of decisions might not make sense, but that aside it's a damn good language. I really see Julia 'winning' in the longevity sense, but it makes me nervous sometimes seeing people misunderstand that. Do you think that similar misunderstandings have prevented Chapel and company from a more widespread success? Also, Erlang is fairly successful. According to Wikipedia, Chapel was started in 2009, and Erlang was around back then too, what does Chapel provide that obsoletes Erlang? What problem does DARPA think that Chapel/x10/etc could solve that Erlang couldn't?
- EdwardCoffin 10y agoChapel and the other two languages were part of the HPCS project. An HPCS goal [was] to create a multi petaflop systems [1]. Erlang is not really the kind of language you can use to build such systems. It's not that Chapel (or the other two) 'obsolete' Erlang, it's that they were built with completely different goals in mind. [1] https://en.wikipedia.org/wiki/High_Productivity_Computing_Systems https://en.wikipedia.org/wiki/High_Productivity_Computing_Sy...
- kem 10y agoNewcomers approach a language from different places, and depending on where they're coming from, the same language can seem like a blessing or a curse. I love Julia--it's so thoughtfully constructed, incorporating parallelism as a fundamental, and expressive but performant. Compared to something like MATLAB or R, it solves all my problems. But for someone coming from Python or C, Julia can seem unnecessary and crippled by odd conventions. To someone used to the expressiveness and libraries of Python, why would you need Julia? To someone coming from C, which can do everything and is the speed standard, why would you need Julia? Languages do really serve different roles, but we often assume otherwise. That assumption is often implicit, though, which leads to discussions where people are talking past one another. I watched and toyed with all the HPCS languages for awhile, along with OCaml, and saw that they never got the traction I was hoping for, and none seemed to become something I could just use, practically speaking. Fortress was amazing in concept, but maybe bit off more than it could chew, at least with the support at hand and situation at Sun. Things seemed dormant for awhile, and then Julia showed up, which seemed like what everyone was looking for all along. Honestly, Stanza seems really promising as well, but I wonder if it's too late to the party (although I thought that about Python long ago as well and was obviously wrong about that).
- kazinator 10y agoconfig const n = 100000; // override default using ./a.out --n=<val> What? I smell anti-pattern. `const` should promise or specify to the compiler that this value doesn't change, so it can be baked into code. Automatic translation of command line arguments to variables is useful (I have implemented this in shell scripts past as a nicer alternative to getopts). But the variables which receive command line overrides should be set apart in some way for that purpose.
- TylerE 10y agoThat's not what const means, in any language I've seen with a const qualifier.
- nightski 10y agoIn C# it is exactly what it means. const values are substituted directly during compilation. This is why sometimes it makes sense to declare a variable as static readonly instead of const.
- kedean 10y agoI'd argue that you are conflating implementation with semantics. The semantic meaning of const is 'this value will not change from here on out'. The C# compiler implements this by doing a substitution, but that is not mandated by nature of it being 'const'. Calling these variables 'config const' says 'this will be instantiated by some configuration parameter, but from here on it it will cannot change'. If someone were to patch your C# compiler such that it didn't substitute, and instead pulled from a read-only memory location, would it in any way harm the correctness of your code?
- nightski 10y agoActually I think it's the other way around. Since there is no guarantee that it is not copied, you can't assume either way. const means just that - const at compile time. As you say how the compiler chooses to utilize that information is up to the implementation. In C# you can't assign a const to a value not known at compile time for this very reason. However, you can assign a variable value to a static readonly field.
- nickpsecurity 10y agoBrings back memories as I followed the three languages for a while. Good to see a link to one plus arthurcolle's great link to a summary of Fortress's strong points. A recent foray into this theme is ParaSail language below. http://www.embedded.com/design/other/4375616/ParaSail--Less-is-more-with-multicore?page=0 http://www.embedded.com/design/other/4375616/ParaSail--Less-... Meanwhile, functional approaches like Erlang and Haskell have been most impressive. Still a need to improve with languages already there. Cilk (below) was one for C. I've also included a list on Wikipedia for people interested in this topic. http://supertech.csail.mit.edu/cilk/ http://supertech.csail.mit.edu/cilk/ https://en.wikipedia.org/wiki/Category:Concurrent_programming_languages https://en.wikipedia.org/wiki/Category:Concurrent_programmin...
- vass 10y agoHi - I am a member of the Chapel team at Cray. I will be happy to answer your questions about Chapel.