David F. Bacon

Last updated
David Francis Bacon
Born (1963-02-24) 24 February 1963 (age 60)
CitizenshipAmerican
Alma mater U.C. Berkeley
Awards ACM Fellow
Scientific career
Fields Computer science
Institutions IBM Watson Research Center
Harvard Computer Science Dept.
Google
Thesis Fast and Effective Optimization of Statically Typed Object-Oriented Languages  (1997)
Doctoral advisor Susan L. Graham

David Bacon is an American computer programmer.

Career

Bacon began working as a programmer at age 16 and worked for a startup during his senior year of high school. At Columbia College, Columbia University, he worked first with David E. Shaw on the NON-VON supercomputer, [1] and then on network algorithms and simulation with Yechiam Yemini, creating the NEST Network Simulator, [2] which served as the basis for a number of other network simulators including Cornell's REAL [3] and thence LBL's ns simulator.

Contents

IBM Research

Bacon spent a large portion of his career at IBM's Thomas J. Watson Research Center, starting as a programmer in 1985 working on the Hermes distributed programming language, [4] and eventually becoming a Principal Research Staff Member.

He took a sabbatical in 2009 as a visiting professor of computer science at Harvard. [5]

Much of his work at IBM focused on garbage collection. In 2009 he was inducted as an ACM Fellow "for contributions to real-time systems and to object-oriented language design and implementation". [6]

His work on the Metronome [7] hard real-time tracing garbage collector became the basis for the IBM WebSphere Real Time Java virtual machine, [8] which was used in the software for the Navy's DDG 1000 Destroyer. [9] The original research was subsequently selected for the 2013 Most Influential Paper Award of the Symposium on Principles of Programming Languages. [10]

His work on garbage collecting cyclic structures [11] in reference counted systems has been used in a number of scripting languages, including PHP. [12]

In 2013 he published the first garbage collector implemented completely in hardware,[ clarification needed ] [13] which was selected as an ACM Research Highlight. [14] [15]

In addition to garbage collection, his work has focused on the implementation of concurrent and object-oriented languages. His thesis work on Rapid Type Analysis (RTA) [16] [17] has been used in many compilers and analysis frameworks to construct call graphs for object-oriented languages, including Soot [18] and Go. [19] In 2004, his work on high-performance locking for Java [20] appeared on the list of the 50 most influential PLDI papers of all time. [21]

Google

In 2014 he joined Google, where he is now a Principal Engineer, working on the Spanner distributed database system. He is responsible for Spanner's Database engine.

Related Research Articles

<span class="mw-page-title-main">Garbage collection (computer science)</span> Form of automatic memory management

In computer science, garbage collection (GC) is a form of automatic memory management. The garbage collector attempts to reclaim memory which was allocated by the program, but is no longer referenced; such memory is called garbage. Garbage collection was invented by American computer scientist John McCarthy around 1959 to simplify manual memory management in Lisp.

In computer science, reference counting is a programming technique of storing the number of references, pointers, or handles to a resource, such as an object, a block of memory, disk space, and others.

In computing, a virtual machine (VM) is the virtualization or emulation of a computer system. Virtual machines are based on computer architectures and provide the functionality of a physical computer. Their implementations may involve specialized hardware, software, or a combination of the two. Virtual machines differ and are organized by their function, shown here:

SIGPLAN is the Association for Computing Machinery's Special Interest Group on programming languages.

In software engineering, profiling is a form of dynamic program analysis that measures, for example, the space (memory) or time complexity of a program, the usage of particular instructions, or the frequency and duration of function calls. Most commonly, profiling information serves to aid program optimization, and more specifically, performance engineering.

<span class="mw-page-title-main">Matthias Felleisen</span> German-American computer science professor and author

Matthias Felleisen is a German-American computer science professor and author. He grew up in Germany and immigrated to the US in his twenties. He received his PhD from Indiana University under the direction of Daniel P. Friedman.

The annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL) is an academic conference in the field of computer science, with focus on fundamental principles in the design, definition, analysis, and implementation of programming languages, programming systems, and programming interfaces. The venue is jointly sponsored by two Special Interest Groups of the Association for Computing Machinery: SIGPLAN and SIGACT.

In computer science, pointer analysis, or points-to analysis, is a static code analysis technique that establishes which pointers, or heap references, can point to which variables, or storage locations. It is often a component of more complex analyses such as escape analysis. A closely related technique is shape analysis.

In proof theory, the Geometry of Interaction (GoI) was introduced by Jean-Yves Girard shortly after his work on linear logic. In linear logic, proofs can be seen as various kinds of networks as opposed to the flat tree structures of sequent calculus. To distinguish the real proof nets from all the possible networks, Girard devised a criterion involving trips in the network. Trips can in fact be seen as some kind of operator acting on the proof. Drawing from this observation, Girard described directly this operator from the proof and has given a formula, the so-called execution formula, encoding the process of cut elimination at the level of operators.

In computer science, capability-based addressing is a scheme used by some computers to control access to memory as an efficient implementation of capability-based security. Under a capability-based addressing scheme, pointers are replaced by protected objects which specify both a location in memory, along with access rights which define the set of operations which can be carried out on the memory location. Capabilities can only be created or modified through the use of privileged instructions which may be executed only by either the kernel or some other privileged process authorised to do so. Thus, a kernel can limit application code and other subsystems access to the minimum necessary portions of memory, without the need to use separate address spaces and therefore require a context switch when an access occurs.

<span class="mw-page-title-main">Incremental computing</span> Software feature

Incremental computing, also known as incremental computation, is a software feature which, whenever a piece of data changes, attempts to save time by only recomputing those outputs which depend on the changed data. When incremental computing is successful, it can be significantly faster than computing new outputs naively. For example, a spreadsheet software package might use incremental computation in its recalculation feature, to update only those cells containing formulas which depend on the changed cells.

Hermes is a language for distributed programming that was developed at IBM's Thomas J. Watson Research Center from 1986 through 1992, with an open-source compiler and run-time system. Hermes' primary features included:

In type theory, a refinement type is a type endowed with a predicate which is assumed to hold for any element of the refined type. Refinement types can express preconditions when used as function arguments or postconditions when used as return types: for instance, the type of a function which accepts natural numbers and returns natural numbers greater than 5 may be written as . Refinement types are thus related to behavioral subtyping.

In computer science, region-based memory management is a type of memory management in which each allocated object is assigned to a region. A region, also called a zone, arena, area, or memory context, is a collection of allocated objects that can be efficiently reallocated or deallocated all at once. Like stack allocation, regions facilitate allocation and deallocation of memory with low overhead; but they are more flexible, allowing objects to live longer than the stack frame in which they were allocated. In typical implementations, all objects in a region are allocated in a single contiguous range of memory addresses, similarly to how stack frames are typically allocated.

Typestate analysis, sometimes called protocol analysis, is a form of program analysis employed in programming languages. It is most commonly applied to object-oriented languages. Typestates define valid sequences of operations that can be performed upon an instance of a given type. Typestates, as the name suggests, associate state information with variables of that type. This state information is used to determine at compile-time which operations are valid to be invoked upon an instance of the type. Operations performed on an object that would usually only be executed at run-time are performed upon the type state information which is modified to be compatible with the new state of the object.

<span class="mw-page-title-main">Kathryn S. McKinley</span> American computer scientist

Kathryn S. McKinley is an American computer scientist noted for her research on compilers, runtime systems, and computer architecture. She is also known for her leadership in broadening participation in computing. McKinley was co-chair of CRA-W from 2011 to 2014.

Trellis Owl is a defunct object-oriented programming language created by Digital Equipment Corporation. A programming environment, just called Trellis, was also produced.

Sanjay Ghemawat is an Indian American computer scientist and software engineer. He is currently a Senior Fellow at Google in the Systems Infrastructure Group. Ghemawat's work at Google, much of it in close collaboration with Jeff Dean, has included big data processing model MapReduce, the Google File System, and databases Bigtable and Spanner. Wired have described him as one of the "most important software engineers of the internet age".

Ilya Sergey is a Russian computer scientist and an Associate Professor at the School of Computing at the National University of Singapore, where he leads the Verified Systems Engineering lab. Sergey does research in programming language design and implementation, software verification, distributed systems, program synthesis, and program repair. He is known for designing the Scilla programming language for smart contracts. He is the author of the free online book Programs and Proofs: Mechanizing Mathematics with Dependent Types, Lecture notes with exercises, which introduce the basic concepts of mechanized reasoning and interactive theorem proving using Coq.

References

  1. Shaw, David Elliot (1982). The NON-VON Supercomputer, Technical Report CUCS-029-82, Columbia University.
  2. Dupuy, Alexander; Schwartz, Jed; Yemini, Yechiam; Bacon, David (1990). "NEST: a network simulation and prototyping testbed". Communications of the ACM. 33 (10): 63–74. doi: 10.1145/84537.84549 . ISSN   0001-0782. S2CID   5311305.
  3. Keshav, S. REAL 5.0 Overview
  4. Strom, Robert E.; Bacon, David F.; Goldberg, Arthur P.; Lowry, Andy; Yellin, Daniel M.; Yemini, Shaula (1991). Hermes - A Language for Distributed Computing. Englewood Cliffs, NJ, USA: Prentice-Hall. ISBN   978-0-13-389537-7.
  5. Harvard EconCS Group
  6. ACM Fellows - David F. Bacon
  7. Bacon, David F.; Cheng, Perry; Rajan, V. T. (2003). "A real-time garbage collector with low overhead and consistent utilization". Proceedings of the 30th ACM SIGPLAN-SIGACT symposium on Principles of programming languages - POPL '03. pp. 285–298. CiteSeerX   10.1.1.13.6486 . doi:10.1145/604131.604155. ISBN   978-1581136289. S2CID   52819687.
  8. IBM WebSphere Real Time
  9. IBM and Raytheon Deliver Technology Solution for DDG 1000 Next Generation Navy Destroyers
  10. Most Influential POPL Paper Award
  11. Bacon, David F.; Rajan, V. T. (2001). "Concurrent Cycle Collection in Reference Counted Systems". ECOOP 2001 — Object-Oriented Programming. Lecture Notes in Computer Science. Vol. 2072. pp. 207–235. CiteSeerX   10.1.1.32.6283 . doi:10.1007/3-540-45337-7_12. ISBN   978-3-540-42206-8. ISSN   0302-9743.
  12. PHP Manual - Collecting Cycles
  13. Bacon, David F.; Cheng, Perry; Shukla, Sunil (2013). "And Then There Were None: A Stall-Free Real-Time Garbage Collector for Reconfigurable Hardware". Communications of the ACM. 56 (12): 101–109. doi:10.1145/2534706.2534726. ISSN   0001-0782. S2CID   52901561.
  14. Moss, Eliot (2013). "The cleanest garbage collection". Communications of the ACM. 56 (12): 100. doi:10.1145/2534706.2534725. ISSN   0001-0782. S2CID   9688334.
  15. ACM SIGPLAN Research Highlights
  16. Bacon, David F. (1997). Fast and Effective Optimization of Statically Typed Object-Oriented Languages (PDF) (Ph.D. thesis). University of California, Berkeley.
  17. Bacon, David F.; Sweeney, Peter F. (1996). "Fast static analysis of C++ virtual function calls". ACM SIGPLAN Notices. 31 (10): 324–341. CiteSeerX   10.1.1.69.2267 . doi:10.1145/236338.236371. ISSN   0362-1340.
  18. The Soot framework for Java program analysis
  19. Go Documentation - package rta
  20. Bacon, David F.; Konuru, Ravi; Murthy, Chet; Serrano, Mauricio (1998). "Thin locks". ACM SIGPLAN Notices. 33 (5): 258–268. doi: 10.1145/277652.277734 . ISSN   0362-1340. S2CID   16929488.
  21. 20 Years of PLDI (1979–1999): A Selection, Kathryn S. McKinley, Editor