Origins of the D Programming Language

Mike Parker aldacron at gmail.com
Sun Sep 1 01:44:06 UTC 2019


On Sunday, 1 September 2019 at 00:20:11 UTC, Max Haughton wrote:

>
> Ranges are mentioned a few times, but I don't think what they 
> are is explained. If there is space it would be worth defining 
> the basic ranges and explaining the evolution from iterators to 
> ranges

I suppose some background is in order, not just for you Max, but 
for everyone looking to provide feedback.

This draft is significantly different in structure and scope from 
the first draft linked in the first post of this thread (where we 
did include a section on ranges, among other D2 features). When 
we were accepted to Round 2, it was conditional on the part of 
three of our reviewers. One of the things we got dinged on was 
that the paper was half a history and half a technical 
description of the language, which isn't what a HOPL paper should 
look like.

For round 2, they provided us a document that gave some examples 
of the sort of thing they're looking for, and it isn't technical 
writing. With that as a starting point and with inspiration from 
certain modern history authors, we restructured the paper into a 
coherent timeline with a focus on how some of the language 
features came together. We also kept the content inline with the 
title (the *origins* of D) and focused on the development of the 
language up to 1.00.

So descriptions of D2 features, and any features added to D1 
after 1.00, are out of scope. We mention some of them in passing 
solely as a device to tie off some sections by referencing how a 
feature evolved or affected other future features, but they are 
never the focus. To the same purpose, we summarize some major D2 
features at the end to tie off the paper.

Another point is that we want to avoid broader discussions of the 
language features we do cover. We've tried to keep them in 
context. For example, the section on mixin templates (which I'm 
still not entirely happy with) provides a description of the 
feature that's intended to a) contrast it with standard templates 
and b) show how it serves to cover a particular use case of the C 
preprocessor. The C preprocessor is established early on as 
something Walter wanted to avoid, and features that cover a 
particular use case are presented in that context. In other 
words, the details of a feature aren't as important to the 
document as how it came into being and, where appropriate, how it 
fits in to the original vision.



More information about the Digitalmars-d mailing list