Origins of the D programming language

Walter Bright, Andrei Alexandrescu, Michael Parker
<span title="2020-06-12">2020</span> <i title="Association for Computing Machinery (ACM)"> <a target="_blank" rel="noopener" href="" style="color: black;">Proceedings of the ACM on Programming Languages (PACMPL)</a> </i> &nbsp;
As its name suggests, the initial motivation for the D programming language was to improve on C and C++ while keeping their spirit. The D language was to preserve the efficiency, low-level access, and Algol-style syntax of those languages. The areas D set out to improve focused initially on rapid development, convenience, and simplifying the syntax without hampering expressiveness. The genesis of D has its peculiarities, as is the case with many other languages. Walter Bright, D's creator, is a
more &raquo; ... mechanical engineer by education who started out working for Boeing designing gearboxes for the 757. He was programming games on the side and, in trying to make his game Empire run faster, became interested in compilers. Despite having no experience, Walter set out in 1982 to implement a compiler that produced better code than those on the market at the time. This interest materialized into a C compiler, followed by compilers for C++, Java, and JavaScript. The best known of these would be the Zortech C++ compiler, the only C++-to-native compiler to have been developed by a single person. The D programming language began in 1999 as an effort to pull the best features of these languages into a new one. Fittingly, D would use the mature C/C++ back end (optimizer and code generator) that had been under continued development and maintenance since 1982. Between 1999 and 2006, Walter worked alone on the D language definition and its implementation, although a steadily increasing volume of patches from users was incorporated. The new language would be based on the past successes of the languages he had used and implemented, but would be clearly looking to the future. D started with choices that are obvious today but were less clear winners back in the 1990s: full support for Unicode, IEEE floating point, two's complement arithmetic, and flat memory addressing (memory is treated as a linear address space with no segmentation). It would do away with certain compromises from past languages imposed by shortages of memory (for example, forward declarations would not be required). It would primarily appeal to C and C++ users, as expertise with those languages would be readily transferable. The interface with C was designed to be zero cost. The language design was begun in late 1999. An alpha version appeared in 2001 and the initial language was completed, somewhat arbitrarily, at version 1.0 in January 2007. During that time, the language evolved considerably, both in capability and in the accretion of a substantial worldwide community that became increasingly involved with contributing. The front end was open-sourced in April 2002, and the back end was donated by Symantec to the open source community in 2017. Meanwhile, two additional open-source back ends became mature in the 2010s: gdc (using the same back end as the GNU C++ compiler) and ldc (using the LLVM back end). The increasing use of the D language in the 2010s created an impetus for formalization and development management. To that end, the D Language Foundation was created in September 2015 as a nonprofit corporation Authors' addresses: Walter Bright, The D Language Foundation,
<span class="external-identifiers"> <a target="_blank" rel="external noopener noreferrer" href="">doi:10.1145/3386323</a> <a target="_blank" rel="external noopener" href="">fatcat:vlsjnroggbg2bk6hhhktrqafj4</a> </span>
<a target="_blank" rel="noopener" href="" title="fulltext PDF download" data-goatcounter-click="serp-fulltext" data-goatcounter-title="serp-fulltext"> <button class="ui simple right pointing dropdown compact black labeled icon button serp-button"> <i class="icon ia-icon"></i> Web Archive [PDF] <div class="menu fulltext-thumbnail"> <img src="" alt="fulltext thumbnail" loading="lazy"> </div> </button> </a> <a target="_blank" rel="external noopener noreferrer" href=""> <button class="ui left aligned compact blue labeled icon button serp-button"> <i class="external alternate icon"></i> </button> </a>