digitalmars.D - Hardware-driven language design
- bearophile (16/16) Jun 05 2011 On Reddit I have just found a thread about a paper that I didn't know:
- Timon Gehr (14/23) Jun 05 2011 On Reddit I have just found a thread about a paper that I didn't know:
- Walter Bright (2/6) Jun 05 2011 D has this (auto ref parameters).
On Reddit I have just found a thread about a paper that I didn't know:
http://www.reddit.com/r/programming/comments/hs24h/programming_language_design_and_analysis/
The paper "Programming Language Design and Analysis motivated by Hardware
Evolution" by Alan Mycroft, 2007:
http://www.cl.cam.ac.uk/~am21/papers/sas07final.pdf
The slides:
http://www.cl.cam.ac.uk/~am21/papers/sas07slides.pdf
In the slides the part I find more interesting for language design is pages
28-35.
In slide 31 it shows the syntax:
void foo(Q p) {...
This means "use either CBV or CBR but reject the body of f if it does anything
which can tell the difference" (Functions needing CBR or CBV can have it, but
CBEWE allows late binding of physical distribution.)
This also reminds me my transparent, the attribute for reference types coming
out of pure functions :-)
On page 34-35 it talks about quasi-linear types.
The topics of the paper are similar, but the focus is not the on the same
things.
From what I've seen the designers of the Chapel language have taken seriously
in account the design of future CPUs. I suggest to take a look at Chapel for
ideas.
Bye,
bearophile
Jun 05 2011
On Reddit I have just found a thread about a paper that I didn't know:
http://www.reddit.com/r/programming/comments/hs24h/programming_language_design_and_analysis/
The paper "Programming Language Design and Analysis motivated by Hardware
Evolution" by Alan Mycroft, 2007:
http://www.cl.cam.ac.uk/~am21/papers/sas07final.pdf
beaorphile wrote:
The slides:
http://www.cl.cam.ac.uk/~am21/papers/sas07slides.pdf
In the slides the part I find more interesting for language design is pages >
28-35.
In slide 31 it shows the syntax:
void foo(Q p) {...
This means "use either CBV or CBR but reject the body of f if it does
anything which can tell the difference" (Functions needing CBR or CBV can
have it, but CBEWE allows late binding of physical distribution.)
[snip.]
I think D has this (if Q is a value type). Isn't just a fancy way to signal
that
p is immutable?
So in D, this would look like
void foo(immutable Q p);
Given that signature, the compiler can effectively decide whether to use CBV or
CBR iff Q is a value type. It does not work that well for Ds reference types
(because you cannot pass them by value obv.).
Timon
Jun 05 2011
On 6/5/2011 6:43 AM, bearophile wrote:
In slide 31 it shows the syntax: void foo(Q p) {...
This means "use either CBV or CBR but reject the body of f if it does
anything which can tell the difference" (Functions needing CBR or CBV can
have it, but CBEWE allows late binding of physical distribution.)
D has this (auto ref parameters).
Jun 05 2011









Timon Gehr <timon.gehr gmx.ch> 