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.

Contents

Biography

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, known for the development of the C++ programming language. He led the Large-scale Programming Research department at Bell Labs, served as a professor of computer science at Texas A&M University, and spent over a decade at Morgan Stanley while also being a visiting professor at Columbia University. Since 2022 he has been a full professor at Columbia.

<span class="mw-page-title-main">Computer program</span> Instructions a computer can execute

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">Programming language</span> Language for communicating instructions to a machine

A programming language is a system of notation for writing computer programs.

In computer programming and software design, code refactoring is the process of restructuring existing source code—changing the factoring—without changing its external behavior. Refactoring is intended to improve the design, structure, and/or implementation of the software, while preserving its functionality. Potential advantages of refactoring may include improved code readability and reduced complexity; these can improve the source code's maintainability and create a simpler, cleaner, or more expressive internal architecture or object model to improve extensibility. Another potential goal for refactoring is improved performance; software engineers face an ongoing challenge to write programs that perform faster or use less memory.

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

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 systems like microcomputers or to make operating systems like Linux or Windows. It is usually 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.

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 abstraction layer or abstraction level is a way of hiding the working details of a subsystem. Examples of software models that use layers of abstraction include the OSI model for network protocols, OpenGL, and other graphics libraries, which allow the separation of concerns to facilitate interoperability and platform independence.

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.

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.

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

Douglas C. Schmidt is a computer scientist and author in the fields of object-oriented programming, distributed computing and design patterns.

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.