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.
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 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.
^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. ISBN978-0-13-389537-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. CiteSeerX10.1.1.13.6486. doi:10.1145/604131.604155. ISBN978-1581136289. S2CID52819687.
^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. ISSN0001-0782. S2CID52901561.