Years ago, D started modestly as an improved offering in the realm of systems programming languages, sharing a good deal of philosophy with C and C++. With time, however, D became a distinct language with unique features (and, of course, its own bag of mistakes). One angle of particular interest has been D’s ability to perform compile-time introspection. Artifacts in a D program can be “looked at” during compilation. Coupled with a full-featured compile-time evaluation engine and with an ability to generate arbitrary code during compilation, this has led to a number of interesting applications. This talk shares early experience with using these features of the D language. Design by Introspection is a proposed programming paradigm that assembles designs by performing introspection on components during compilation.
Romanian-born Computer Scientist Andrei Alexandrescu is an expert in a broad range of topics including software systems design and implementation, programming language design, library design, all aspects of the C++ and D programming languages, Machine Learning, and Natural Language Processing.
Andrei started publishing as a contributor to C/C++ Users Journal. His interests gravitated around devising simple, flexible design artifacts by using the generative capabilities of templates in the C++ programming language. Soon thereafter, following seminal discussions with Scott Meyers and the late John Vlissides, Andrei embarked on writing his first book, Modern C++ Design. The book, published in 2001 by Addison Wesley, coined the term “policy-based design”. Andrei’s second book, C++ Coding Standards (2004) established itself as the ultimate collection of guidelines for writing high-quality, industrial-software C++ code. The book won the Jolt Productivity Award at the Software Development Conference in 2005.
The late 2000s witnessed a shift of interest towards other fields. Andrei’s doctoral research, completed in 2009, is in Machine Learning applied to large-scale tasks in Natural Language Processing. His doctoral dissertation includes one theorem of importance to scaling graph-based methods to large learning tasks, and an original algorithm DynTrie that combines dynamic programming and the trie data structure to the end of optimizing large string similarity computations.
Simultaneously with his doctoral work, Andrei became a contributor to the D programming language, in which he recognized a potentially superior vehicle for furthering the ideas pioneered by Modern C++ Design. Since 2006 he became co-designer of the language together with Walter Bright and the main designer of D’s standard library. Andrei introduced new language features and a host of highly generic implementations of classic algorithms. His library design introduced the cross-linguistic concept of range, which combines the expressiveness of iterators as defined in C++’s Standard Template Library with the safety and convenience of the Iterator design pattern. Andrei’s third book The D Programming Language (2010) is an authoritative guide to the language.