Origins of the D Programming Language

anon reviewer noreply at noreply.org
Sun Dec 16 20:25:53 UTC 2018


On Friday, 30 November 2018 at 19:34:58 UTC, Andrei Alexandrescu 
wrote:
> Over the past few months, Walter, Mike, and myself have been 
> working on a draft submission for the HOPL 2020 conference 
> (History of Programming Languages).
>
> The submission proceeds in several stages. Currently we've been 
> through one round of preliminary review. Here is the current 
> draft:
>
> http://erdani.com/hopl2020-draft.pdf
>
> We'd appreciate feedback and additional historical details.
>
>
> Thanks,
>
> Andrei (on behalf of Walter and Mike as well)

The manuscript leaves out several relevant references to prior 
work:

(1) The use of ranges (pairs of iterators) as the interface to 
algorithms was a fundamental and unique concept of the STL from 
its initial conception.
"Most of the library’s algorithmic templates that operate on data 
structures have interfaces that use ranges. A range is a pair of 
iterators that designate the beginning and end of the 
computation. A range[i, i) is an empty range; in general, a range 
[i, j) refers to the elements in the data structure starting with 
the one pointed to by i and up to but not including the one 
pointed to by j. Range[i, j) is valid if and only if j is 
reachable from i. The result of the application of the algorithms 
in the library to invalid ranges is undefined."  Alexander 
Stepanov and Meng Lee (October 31, 1995). "The Standard Template 
Library" (http://stepanovpapers.com/STL/DOC.PDF) and as defined 
in the ISO C++ standard.

(2) The pure keyword from Fortran 95 already distinguished 
between pure procedures and pure functions, with pure procedures 
allowing local mutation described as "relaxed functional purity" 
in the manuscript. (see 
https://en.wikipedia.org/wiki/Pure_function and 
https://www.ibm.com/support/knowledgecenter/SSGH4D_13.1.0/com.ibm.xlf131.aix.doc/language_ref/pure.html).

(3) The section of CTFE fails to cite the earlier research on 
this area in C++ by Daveed Vandevoorde, Edison Design Group 
(April 18, 2003). "Reflective Metaprogramming in C++", and 
others, which was widely discussed in news groups at the time.
(see 
https://en.wikipedia.org/wiki/Compile_time_function_execution).

In the section on mistakes made, it would be interesting to 
discuss the more recent efforts to re-introduce C++ style copy 
constructors.



More information about the Digitalmars-d mailing list