Hacker News new | ask | show | jobs
by JonChesterfield 1476 days ago
I want an implicitly parallel programming language. Write code that looks single threaded, doesn't have any mutex/spawn/channel stuff in it, that runs on one core locally or the nearby cluster with the same behaviour and lower wall clock time.
2 comments

I developed such a language, about a decade ago; though it was also happy to run on multiple cores locally. Alas, the gap between an operational language core and a useful development tool was too large for one person to bridge in their free time, and there is no business model for programming languages.
Do you have any documentation left over? Curious which design tradeoffs you made.
I'm afraid I don't. There came a point where I had to accept that the project was not going anywhere, and move on; I let the blog & web site expire.

I did eventually post the code on github, though it's missing most of its history, and the work is stalled out mid-transition from one code generator backend to another, so it doesn't actually run; but you can get a sense of the language style from the 'samples' and 'validation' directories:

https://github.com/marssaxman/radian

In a nutshell, name-rebinding and an indirection operator provided the flavor of a mutable, object-oriented language over immutable datastructures and functional semantics. Loops were all range-based, and the dataflow graph was decomposed into maps & reduces; maps were applied in parallel, via work-stealing.

Were I to do it over again, I might be a little less opinionated about the syntax - but I was having fun at the time.

this is called "erlang"
Not so much. Erlang does the one machine or many feature but only by writing your program as a bunch of objects communicating by message passing. Elixer seems to be the same. I'm thinking more along the lines of Id or parallel Haskell.
Also achievable with elixir (via erlang)