David Abrahams (computer programmer)

Last updated
David Abrahams
Occupation(s)Computer Programmer, Admin
Employers
  • Apple Inc.
  • Google Brain
  • Adobe Inc.
Known forContributions to C++ programming, Boost libraries, Work on Swift programming language
Notable work
  • C++ Template Metaprogramming: Concepts, Tools, and Techniques from Boost and Beyond
Parents
  • Elihu Abrahams (physicist)
  • Geulah Abrahams (choreographer)

David Abrahams is a computer programmer and admin. He is the son of physicist Elihu Abrahams and choreographer Geulah Abrahams. [1] He is most well known for his activities related to the C++ programming language. In particular, his contributions to the language include the delineating of a theory of exceptions, sitting on the C++ Standards Committee, being a founding member of Boost and co-authoring a book on the subject of template metaprogramming.

Contents

Abrahams became a member of the C++ Standards Committee in 1996 and served until 2012. During the standardization process that resulted in the first ANSI standard C++ – in 1998 – Abrahams was a principal driving force behind detailing the exception safety of the C++ Standard Library. Many of the functions and methods of the standard are specified with one of three guarantees. Together these have become known as the Abrahams guarantees.

Following the standardization, Abrahams became one of the founding members of Boost.org, a community group founded to provide reusable C++ libraries. Abrahams has written several of the libraries and assisted in the development of others. Abrahams was also the founder and principal member of Boost Consulting (later BoostPro Computing), a company that offered software development and training courses for 12 years (2001–2013) with a heavy bias to use the Boost libraries, and founder of BoostCon, now C++ Now, the annual conference in Aspen, CO.

In 2013, Abrahams became an employee at Apple Inc, where he worked on the development of the Swift programming language [2] and became the lead of the Swift standard library. [3] In 2017 he joined the SwiftUI project. In January 2020 Abrahams joined Google Brain to work on the Swift for TensorFlow project. [4] In June 2021 Sean Parent announced that Abrahams had joined Adobe Inc. and together they were relaunching the Software Technology Lab. [5]

Publications

In 2003 his paper from the 1998 International Seminar on Generic Programming at Dagstuhl "Exception-Safety in Generic Components" was published in Lecture Notes in Computer Science. [6]

In 2004, Abrahams co-authored C++ Template Metaprogramming: Concepts, Tools, and Techniques from Boost and Beyond [7] with Aleksey Gurtovoy. Together with Boost's Metaprogramming Library, the book broke new ground in the practical use of template metaprogramming, including re-implementing much of the Standard Template Library in a compile-time world, with all operations on types. [8]

Significant Presentations

Related Research Articles

<span class="mw-page-title-main">Bjarne Stroustrup</span> Danish computer scientist, creator of C++ (born 1950)

Bjarne Stroustrup is a Danish computer scientist, most notable for the invention and development of the C++ programming language. Stroustrup served as a visiting professor of computer science at Columbia University beginning in 2014, where he has been a full professor since 2022.

Templates are a feature of the C++ programming language that allows functions and classes to operate with generic types. This allows a function or class declaration to reference via a generic variable another different class without creating full declaration for each of these different classes.

<span class="mw-page-title-main">C++</span> General-purpose programming language

C++ is a high-level, general-purpose programming language created by Danish computer scientist Bjarne Stroustrup. First released in 1985 as an extension of the C programming language, it has since expanded significantly over time; as of 1997, C++ has object-oriented, generic, and functional features, in addition to facilities for low-level memory manipulation. It is almost always implemented as a compiled language, and many vendors provide C++ compilers, including the Free Software Foundation, LLVM, Microsoft, Intel, Embarcadero, Oracle, and IBM.

Generic programming is a style of computer programming in which algorithms are written in terms of data types to-be-specified-later that are then instantiated when needed for specific types provided as parameters. This approach, pioneered by the ML programming language in 1973, permits writing common functions or types that differ only in the set of types on which they operate when used, thus reducing duplicate code.

<span class="mw-page-title-main">Andrei Alexandrescu</span> Romanian-American computer programmer

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>".

Template metaprogramming (TMP) is a metaprogramming technique in which templates are used by a compiler to generate temporary source code, which is merged by the compiler with the rest of the source code and then compiled. The output of these templates can include compile-time constants, data structures, and complete functions. The use of templates can be thought of as compile-time polymorphism. The technique is used by a number of languages, the best-known being C++, but also Curl, D, Nim, and XL.

In computer programming, a standard library is the library made available across implementations of a programming language. These libraries are conventionally described in programming language specifications; however, contents of a language's associated library may also be determined by more informal practices of a language's community.

In the C++ programming language, the C++ Standard Library is a collection of classes and functions, which are written in the core language and part of the C++ ISO Standard itself.

Resource acquisition is initialization (RAII) is a programming idiom used in several object-oriented, statically typed programming languages to describe a particular language behavior. In RAII, holding a resource is a class invariant, and is tied to object lifetime. Resource allocation is done during object creation, by the constructor, while resource deallocation (release) is done during object destruction, by the destructor. In other words, resource acquisition must succeed for initialization to succeed. Thus the resource is guaranteed to be held between when initialization finishes and finalization starts, and to be held only when the object is alive. Thus if there are no object leaks, there are no resource leaks.

Boost is a set of libraries for the C++ programming language that provides support for tasks and structures such as linear algebra, pseudorandom number generation, multithreading, image processing, regular expressions, and unit testing. It contains 164 individual libraries.

<span class="mw-page-title-main">Alexander Stepanov</span> Russian-American computer programmer (born 1950)

Alexander Alexandrovich Stepanov is a Russian-American computer programmer, best known as an advocate of generic programming and as the primary designer and implementer of the C++ Standard Template Library, which he started to develop around 1992 while employed at HP Labs. He had earlier been working for Bell Labs close to Andrew Koenig and tried to convince Bjarne Stroustrup to introduce something like Ada generics in C++. He is credited with the notion of concept.

Exception safety is the state of code working correctly when exceptions are thrown. To aid in ensuring exception safety, C++ standard library developers have devised a set of exception safety levels, contractual guarantees of the behavior of a data structure's operations with regards to exceptions. Library implementers and clients can use these guarantees when reasoning about exception handling correctness. The exception safety levels apply equally to other languages and error-handling mechanisms.

In generic programming, a concept is a description of supported operations on a type, including syntax and semantics. In this way, concepts are related to abstract types but concepts do not require a subtype relationship.

Comeau C/C++ is a compiler for C and C++ produced by Comeau Computing. Comeau C/C++ was once described as the most standards-conformant C++ compiler. In 2006-2008 it was described as the only mainstream C++ compiler to fully support the export keyword for exported templates.

Blitz++ is a high-performance vector mathematics library written in C++. This library is intended for use in scientific applications that might otherwise be implemented with Fortran or MATLAB.

ACCU, previously known as the Association of C and C++ Users, is a non-profit user group of people interested in software development, dedicated to raising the standard of computer programming. The ACCU publishes two journals and organizes an annual conference.

Concepts are an extension to the templates feature provided by the C++ programming language. Concepts are named Boolean predicates on template parameters, evaluated at compile time. A concept may be associated with a template, in which case it serves as a constraint: it limits the set of arguments that are accepted as template parameters.

In the C++ programming language, decltype is a keyword used to query the type of an expression. Introduced in C++11, its primary intended use is in generic programming, where it is often difficult, or even impossible, to express types that depend on template parameters.

The following outline is provided as an overview of and topical guide to C++:

Swift is a high-level general-purpose, multi-paradigm, compiled programming language developed by Apple Inc. and the open-source community. Swift compiles to machine code, as it is an LLVM-based compiler. Swift was first released in June 2014, and the Swift toolchain has shipped in Xcode since version 6, released in 2014.

References

  1. "Geulah Abrahams, Choreographer, 65". The New York Times. 1996-08-21. ISSN   0362-4331 . Retrieved 2020-01-22.
  2. Swift is an awesome new language, June 06, 2014, Ilovacha
  3. "Protocol-Oriented Programming in Swift". InfoQ. Retrieved 2020-01-14.
  4. "Dave Abrahams (@DaveAbrahams) | Twitter". twitter.com. Retrieved 2020-01-13.
  5. "Sean Parent (@SeanParent)". Twitter. Retrieved 2022-07-20.
  6. Generic Programming : International Seminar on Generic Programming, Dagstuhl Castle, Germany, April 27-May 1, 1998: selected papers. Jazayeri, Mehdi., Loos, R. (Rüdiger), 1938-, Musser, David R. Berlin: Springer. 2000. ISBN   3-540-41090-2. OCLC   45024465.{{cite book}}: CS1 maint: others (link)
  7. Abrahams, David. (2005). C++ template metaprogramming : concepts, tools, and techniques from boost and beyond. Gurtovoy, Aleksey. Boston: Addison-Wesley. ISBN   0-321-22725-5. OCLC   56051086.
  8. Woehr, Jack (June 3, 2005). "C++ x 2". Dr. Dobb's Journal.
Notes