David Hanson (computer scientist)

Last updated

David R. Hanson is a software engineer who worked at Google until he retired in January 2012, working in programming languages, compilers, software tools, and programming environments. Before joining Google, he was with Microsoft Research, Princeton, [1] University of Arizona, [2] and Yale. [3] He has written many journal and conference papers and two books: A Retargetable C Compiler: Design and Implementation with Christopher Fraser, which describes lcc, a widely used compiler for Standard C, [4] and C Interfaces and Implementations: Techniques for Creating Reusable Software. [5]

Hanson is largely responsible for designing and implementing the "View as Slideshow" feature for PowerPoint and attachments in Google's Gmail system. [6]

Hanson enjoys skiing and cycling. He also builds furniture. [7]

Related Research Articles

<span class="mw-page-title-main">Ada (programming language)</span> High-level programming language first released in 1980

Ada is a structured, statically typed, imperative, and object-oriented high-level programming language, inspired by Pascal and other languages. It has built-in language support for design by contract (DbC), extremely strong typing, explicit concurrency, tasks, synchronous message passing, protected objects, and non-determinism. Ada improves code safety and maintainability by using the compiler to find errors in favor of runtime errors. Ada is an international technical standard, jointly defined by the International Organization for Standardization (ISO), and the International Electrotechnical Commission (IEC). As of May 2023, the standard, called Ada 2022 informally, is ISO/IEC 8652:2023.

<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 in the City of New York beginning in 2014, where he has been a full professor since 2022.

In computing, a compiler is a computer program that translates computer code written in one programming language into another language. The name "compiler" is primarily used for programs that translate source code from a high-level programming language to a low-level programming language to create an executable program.

<span class="mw-page-title-main">Computer program</span> Instructions to be executed by a computer

A computer program is a sequence or set of instructions in a programming language for a computer to execute. It is one component of software, which also includes documentation and other intangible components.

<span class="mw-page-title-main">James Gosling</span> Canadian computer scientist

James Gosling is a Canadian computer scientist, best known as the founder and lead designer behind the Java programming language.

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

<span class="mw-page-title-main">Library (computing)</span> Collection of non-volatile resources used by computer programs

In computer science, a library is a collection of non-volatile resources used by computer programs, often for software development. These may include configuration data, documentation, help data, message templates, pre-written code and subroutines, classes, values or type specifications. In IBM's OS/360 and its successors they are referred to as partitioned data sets.

<span class="mw-page-title-main">Alfred Aho</span> Canadian computer scientist

Alfred Vaino Aho is a Canadian computer scientist best known for his work on programming languages, compilers, and related algorithms, and his textbooks on the art and science of computer programming.

In software engineering, a software design pattern is a general, reusable solution to a commonly occurring problem within a given context in software design. It is not a finished design that can be transformed directly into source or machine code. Rather, it is a description or template for how to solve a problem that can be used in many different situations. Design patterns are formalized best practices that the programmer can use to solve common problems when designing an application or system.

In computing, an interface is a shared boundary across which two or more separate components of a computer system exchange information. The exchange can be between software, computer hardware, peripheral devices, humans, and combinations of these. Some computer hardware devices, such as a touchscreen, can both send and receive data through the interface, while others such as a mouse or microphone may only provide an interface to send data to a given system.

LCC is a small, retargetable compiler for the ANSI C programming language. Although its source code is available at no charge for personal use, it is not open-source or free software according to the usual definitions because products derived from LCC may not be sold, although components not derived from LCC may be sold. It was developed by Chris Fraser and David Hanson.

In computer programming, a software framework is an abstraction in which software, providing generic functionality, can be selectively changed by additional user-written code, thus providing application-specific software. It provides a standard way to build and deploy applications and is a universal, reusable software environment that provides particular functionality as part of a larger software platform to facilitate the development of software applications, products and solutions.

In computer science, automatic programming is a type of computer programming in which some mechanism generates a computer program to allow human programmers to write the code at a higher abstraction level.

In software engineering, retargeting is an attribute of software development tools that have been specifically designed to generate code for more than one computing platform.

David Abrahams is a computer programmer and admin. He is the son of physicist Elihu Abrahams and choreographer Geulah Abrahams. 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.

<span class="mw-page-title-main">Component-based software engineering</span> Branch of software engineering

Component-based software engineering (CBSE), also called component-based development (CBD), is a style of software engineering that aims to build software out of loosely-coupled, modular components. It emphasizes the separation of concerns among different parts of a software system.

In computing, compiler correctness is the branch of computer science that deals with trying to show that a compiler behaves according to its language specification. Techniques include developing the compiler using formal methods and using rigorous testing on an existing compiler.

<span class="mw-page-title-main">API</span> Software interface between computer programs

An application programming interface (API) is a way for two or more computer programs to communicate with each other. It is a type of software interface, offering a service to other pieces of software. A document or standard that describes how to build or use such a connection or interface is called an API specification. A computer system that meets this standard is said to implement or expose an API. The term API may refer either to the specification or to the implementation. Whereas a system's user interface dictates how its end-users interact with the system in question, its API dictates how to write code that takes advantage of that system's capabilities.

Simon Thompson is a research computer scientist, author, and an emeritus professor of the University of Kent, there specializing in logic and computation. His research into functional programming covers software verification and validation, programming tool-building, and software testing for the functional programming languages Erlang, Haskell, and OCaml. He is the author of books on data type theory, Miranda, Haskell, and Erlang, and runs a massive open online course (MOOC) about Erlang for FutureLearn.

References

  1. Tölle, Wolfgang; Yasner, Jason; Pieper, Michael (2012). Study and Research Guide in Computer Science: Profiles of Universities in the USA. Springer Science & Business Media. p. 54. ISBN   9783642773938 . Retrieved 18 September 2018.
  2. Hanson, David R.; Kobayashi, Makoto (1990). "EZ Processes". Proceedings. 1990 International Conference on Computer Languages. p. 97. doi:10.1109/ICCL.1990.63764. ISBN   0-8186-2036-6. S2CID   8247463. Reprinted from Proceedings of the 1990 International Conference on Computer Languages, New Orleans, LA, Mar. 1990, 90–97
  3. David R., Hanson. "A Procedure Mechanism for Backtrack Programming* David R. HANSON + Department o£ Computer Science, The University of Arizona" (PDF). p. 401. Retrieved 18 September 2018.
  4. Hanson, David (1996). C Interfaces and Implementations: Techniques for Creating Reusable Software (first ed.). Addison-Wesley Professional. ISBN   9780201498417 . Retrieved 18 September 2018.
  5. Hanson, David; Christopher W., Fraser (1995). A Retargetable C Compiler: Design and Implementation (1 ed.). Addison-Wesley Professional. ISBN   9780805316704 . Retrieved 18 September 2018.
  6. "David R. Hanson". sites.google.com. Retrieved 18 September 2018.
  7. "Woodworking Portfolio". www.drhanson.net. Retrieved 18 September 2018.