Andrei Alexandrescu
Tudor Andrei Cristian Alexandrescu is a Romanian-American programmer and author specializing in the programming languages C++ and D. He is especially known for his pioneering work on policy-based design implemented via template metaprogramming. These ideas are articulated in his book Modern [C++ Design] and were first implemented in his programming library, Loki. He also implemented the move constructors concept in his library MOJO. He contributed to the C/C++ Users Journal under the byline "Generic
He became an American citizen in August 2014.
Education and career
Alexandrescu received a Bachelor of Science degree in Electrical Engineering from Polytechnic University of Bucharest in July 1994.In September 1998, his first article was published in the C/C++ Users Journal. From April 1999 until February 2000, he was a program manager for Netzip, Inc. When the company was acquired by RealNetworks, Inc., he served there as a development manager from February 2000 through September 2001.
In 2001, Alexandrescu released the book Modern C++ Design, reviewed as one of the five most important C++ books by C++ expert Scott Meyers.
In 2003, Alexandrescu earned a Master of Science, and in 2009, a Doctor of Philosophy in computer science from the University of Washington.
In 2006, Alexandrescu began assisting Walter Bright in developing the D programming language. In May 2010, he released a book titled The D Programming Language.
From 2010–2014, Alexandrescu, Herb Sutter, and Scott Meyers ran a small annual technical conference named C++ and Beyond.
Alexandrescu worked as a research scientist at Facebook for over 5 years, before leaving the firm in August 2015 to focus on developing the D language.
In January 2022, Alexandrescu began working at Nvidia as a Principal Research Scientist.
Contributions
The D programming language
Along with Walter Bright, Alexandrescu has been one of the two main designers of the D language, and the main maintainer of the standard library Phobos from 2007–2019. He is the founder of the D Language Foundation. His contributions include the moduleranges. He is the author of The D Programming Language book.Expected
Expected is a template class for C++ which is on the C++ Standards track. Alexandrescu proposesExpected as a class for use as a return value which contains either a T or the exception preventing its creation, which is an improvement over use of either return codes or exceptions exclusively. Expected can be thought of as a restriction of sum types or algebraic data types in various languages, e.g., Hope, or the more recent Haskell and Gallina; or of the error handling mechanism of Google's Go, or the type in Rust.He explains the benefits of
Expected as:- Associates errors with computational goals
- Naturally allows multiple exceptions in flight
- Switch between "error handling" and "exception throwing" styles
- Teleportation possible across thread boundaries, across nothrow subsystem boundaries and across time
- Collect, group, combine exceptions
Example
For example, instead of any of the following common function prototypes:int parseInt; // Returns 0 on error and sets errno.
or
int parseInt; // Throws invalid_input or overflow
he proposes the following:
Expected