Andrei Alexandrescu
May 29 @ 9:00 AM
Duration: 50 minutes
Talk type: Presentation
Level: All
Slides
Video
Abstract: Generic Programming has a good track method as an approach to designing data structures and algorithms, as well as general libraries. However, attempts at applying it to large-vocabulary domains (the example used throughout the talk is memory allocation) are marred by rigidity of interfaces, verboseness, and a combinatorial explosion of nomenclature.
This talk proposes Design By Introspection, a scalable approach to designing software artifacts that puts static introspection, not concepts and nomenclature, at the forefront. The primitive operations supported by a component are divided in "required" and "optional"; there is no need to define a concept for each subset of optional primitives supported. For example, in range terminology, a notion of "length" may be optionally defined by any range, without any burden to define names for "input ranges with length", "forward ranges with length", and so on.
Component users (either programmers or higher-level components) use static introspection to query capabilities supported by a given component (usually received as a type parameter) and build larger design artifacts accordingly.
A flexible memory allocator is given as a running example. Except for allocate(), all primitives of an allocator component are optional. More complex, combination allocators use other allocators as type parameters and make design decisions depending on the capabilities of their parameters.
Speaker Bio: Andrei Alexandrescu coined the colloquial term "modern C++" (adapted from his award-winning book Modern C++ Design), used today to describe a collection of important C++ styles and idioms. He is also the coauthor (with Herb Sutter) of C++ Coding Standards and the author of The D Programming Language book. With Walter Bright, Andrei co-designed many important features of D and authored a large part of D's standard library. His research on Machine Learning and Natural Language Processing completes a broad spectrum of expertise. Andrei holds a Ph.D. in Computer Science from the University of Washington and a B.Sc. in Electrical Engineering from University "Politehnica" Bucharest. He works as a Research Scientist for Facebook.