His first article was published in the C/C++ Users Journal in September 1998. He was a program manager for Netzip, Inc. from April 1999 until February 2000. When the company was acquired by RealNetworks, Inc., he served there as a development manager from February 2000 through September 2001.[7]
In 2006 Alexandrescu began assisting Walter Bright on the development of the D programming language.[12] He released a book titled The D Programming Language in May 2010.
From 2010 to 2014, Alexandrescu, Herb Sutter, and Scott Meyers ran a small annual technical conference called C++ and Beyond.
Alexandrescu worked as a research scientist at Facebook for over 5 years, before departing the company in August 2015 in order to focus on developing the D programming language.[13]
In January 2022, Alexandrescu began working at Nvidia as a Principal Research Scientist.[14]
Contributions
The D Programming Language
Along with Walter Bright, Andrei has been one of the two main designers of the D Programming Language, and the principal maintainer of the standard library Phobos from 2007 to 2019. He is the founder of the D Language Foundation. His contributions include the ranges module. He is the author of "The D Programmming Language" book.
Expected
Expected is a template class for C++ which is on the C++ Standards track.[15][16] Alexandrescu proposes[17]Expected<T> 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 (union) types or algebraic datatypes 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 Result type in Rust.
He explains the benefits of Expected<T> 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 (save now, throw later)
Collect, group, combine exceptions
Example
For example, instead of any of the following common function prototypes:
int parseInt(const string&); // Returns 0 on error and sets errno.
or
int parseInt(const string&); // Throws invalid_input or overflow
he proposes the following:
Expected<int> parseInt(const string&); // Returns an expected int: either an int or an exception
Scope guard
From 2000[18] onwards, Alexandrescu has advocated and popularized the scope guard idiom. He has introduced it as a language construct in D.[19] It has been implemented by others in many other languages.[20][21]
Herb Sutter, Andrei Alexandrescu (November 2004). C++ Coding Standards: 101 Rules, Guidelines, and Best Practices. Addison-Wesley. ISBN978-0-321-11358-0.
Andrei Alexandrescu (June 2010). The D Programming Language. Addison-Wesley. ISBN978-0-321-63536-5.
^andralex (14 August 2014). "No". Reddit. Archived from the original on 16 June 2022.
^ abMetz, Cade (7 July 2014). "The Next Big Programming Language You've Never Heard Of". Wired. Retrieved 27 July 2014. Today, Alexandrescu is a research scientist at Facebook, where he and a team of coders are using D to refashion small parts of the company's massive operation.