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