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

<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">Java (programming language)</span> Object-oriented programming language

Java is a high-level, class-based, object-oriented programming language that is designed to have as few implementation dependencies as possible. It is a general-purpose programming language intended to let programmers write once, run anywhere (WORA), meaning that compiled Java code can run on all platforms that support Java without the need to recompile. Java applications are typically compiled to bytecode that can run on any Java virtual machine (JVM) regardless of the underlying computer architecture. The syntax of Java is similar to C and C++, but has fewer low-level facilities than either of them. The Java runtime provides dynamic capabilities that are typically not available in traditional compiled languages.

<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 for making things like microcomputers or to make operating systems like Linux or Windows. 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 resources used to develop a computer program

In computer science, a library is a collection of read-only resources that is leveraged during software development to implement a computer program.

<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 design pattern describes a relatively small, well-defined aspect of a computer program in terms of how to write the code.

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 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">Go (programming language)</span> Programming language

Go is a statically typed, compiled high-level programming language designed at Google by Robert Griesemer, Rob Pike, and Ken Thompson. It is syntactically similar to C, but also has memory safety, garbage collection, structural typing, and CSP-style concurrency. It is often referred to as Golang because of its former domain name, golang.org, but its proper name is Go.

<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 or components 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. Archived from the original on 2 May 2024. 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. Archived (PDF) from the original on 9 August 2017. 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. Archived from the original on 10 May 2017. Retrieved 18 September 2018.
  7. "Woodworking Portfolio". www.drhanson.net. Archived from the original on 4 September 2018. Retrieved 18 September 2018.