Alexandrescu at ACCU 2009
|Born||1969 (age 44–45)
|Nationality||Romanian, American |
|Education||Politehnica University of Bucharest and University of Washington|
|Occupation||Research scientist at Facebook|
|Known for||Expert on C++ and D programming|
Andrei Alexandrescu is a Romanian-American C++ and D language programmer and author. He is particularly 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 MOJO library. He contributed to the C/C++ Users Journal under the byline "Generic<Programming>". Alexandrescu is currently a research scientist at Facebook.
He became an American citizen in August 2014.
He is a developer of the D programming language.
Education and career
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.
- Andrei Alexandrescu (February 2001). Modern C++ Design: Generic Programming and Design Patterns Applied. Addison-Wesley. ISBN 978-0-201-70431-0.
- Herb Sutter, Andrei Alexandrescu (November 2004). C++ Coding Standards: 101 Rules, Guidelines, and Best Practices. Addison-Wesley. ISBN 978-0-321-11358-0.
- Andrei Alexandrescu (June 2010). The D Programming Language. Addison-Wesley. ISBN 978-0-321-63536-5.
Expected is a template class for C++ envisaged by Andrei Alexandrescu which has been proposed for inclusion in Boost. Alexandrescu proposes  Expected<T> as a class for use as a return value which contains either a T or the exception preventing its creation, which provides a improvement over use of either return codes or exceptions exclusively. Expected can be thought of as an extension to simpler Optional types in various languages such as Maybe, Option, Nullable, optional<T>
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
For example, instead of any of the following common function prototypes:
int parseInt(const string&); // Returns 0 on error and sets errno.
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
- Metz, Cade (July 7, 2014). "The Next Big Programming Language You’ve Never Heard Of". Wired.com. Wired. Retrieved July 27, 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."
- Alexandrescu, Andrei (1 February 2003). "Move Constructors". Dr. Dobbs Journal. Archived from the original on 7 May 2009. Retrieved 25 March 2009.
- Reddit.com: "Sixteen years ago, at 28, I landed in New York with $300 to my name. Today I became a US citizen. It's been a wild ride that I hope will go on!"
- Andrei Alexandrescu: Resumé
- ACCU Spring Conference 2001
- ACCU 2008: Speakers
- ACCU 2010: Speakers
- Computer Science & Engineering, Recent Ph.D. Graduates (Summer 2009). University of Washington.
- Botet; Talbot. "A proposal to add a utility class to represent expected monad".
- Alexandrescu. "Systematic Error Handling in C++".
- Alexandrescu's homepage - Contains links to downloadable Loki libraries for various compilers.
- (Romanian) Interviu MONEY.ro: Facebook face angajări în România, 1 March 2010