Andrew Koenig (programmer)

From Wikipedia, the free encyclopedia
Andrew Koenig
Born
Andrew Richard Koenig

June 1952 (1952-06) (age 71)
NationalityAmerican
Alma materColumbia University (B.S., Mathematics; M.S., Computer Science, 1977)
OccupationComputer scientist
Known forC++, programming, writing, "Koenig lookup", "anti-pattern"
Notable workC Traps and Pitfalls (1988)
Ruminations on C++ (1997)
Accelerated C++ (2000)
SpouseBarbara E. Moo
Parent(s)Seymour H. Koenig
Harriet Koenig [1]
Websitewww.acceleratedcpp.com/authors/koenig

Andrew Richard Koenig (IPA: [ˈkøːnɪç]; born June 1952) is a former AT&T and Bell Labs researcher and programmer.[2] He is the author of C Traps and Pitfalls and co-author (with Barbara Moo) of Accelerated C++ and Ruminations on C++, and his name is associated with argument-dependent name lookup, also known as "Koenig lookup",[3] though he is not its inventor.[4] He served as the Project Editor of the ISO/ANSI standards committee for C++,[5] and has authored over 150 papers on C++.

Early life and career[edit]

Koenig was born in New York City and is the son of the physicist Dr. Seymour H. Koenig,[6] a former director of the IBM Watson Laboratory, and Harriet Koenig, an author and collector of Native American Indian art.[7]

He graduated from The Bronx High School of Science in 1968 [8] and went on to receive a Bachelor of Science degree and a Master of Science degree from Columbia University in New York. He was a prominent member of the Columbia University Center for Computing Activities (CUCCA) in the late 1960s and 1970s. He wrote the first e-mail program used at the university.[9]

In 1977, he joined the technical staff of Bell Labs in Murray Hill, New Jersey, from which he later retired.

The first book he authored, in 1987, C Traps and Pitfalls, had been motivated by his prior paper and work, mostly as a staff member at Columbia University, on a different computer language, PL/I. In 1977, as a recently hired staff member at Bell Labs, he presented a paper called "PL/I Traps and Pitfalls" at a SHARE meeting in Washington, D.C.[10]

Patents[edit]

  • User Authentication System Employing Encryption Functions, #4,590,470. "Combines public-key random challenge-response authentication with hiding the authentication algorithm in a device that makes available only the algorithm's inputs and outputs. That secures the session against eavesdropping and replay and requires no secret information on the host."
  • Storing trees in navigable form, #5,530,957. "A technique for storing trees (such as representations of source programs in a programming environment) that completely eliminates space overhead normally associated with storing pointers, while still permitting common navigational operations with reasonable time efficiency."
  • Method and apparatus for parsing source code using prefix analysis, #5,812,853, "A technique for speeding up preliminary processing, such as macro preprocessing, in a compiler by remembering useful prefix strings of the input program in a tree-like data structure and keying those strings to remembered states of the compiler."
  • Method and apparatus for paging alternate users, #6,057,782, "The idea of allowing paging systems that support acknowledgments to reorder their list of destinations for future pages based on the acknowledgment or lack thereof on previous pages."

Selected bibliography[edit]

Books[edit]

  • Koenig, Andrew, C Traps and Pitfalls, Reading, Mass.: Addison-Wesley, 1988, c1989. ISBN 0-201-17928-8
  • Koenig, Andrew; Moo, Barbara, Ruminations on C++, Addison-Wesley, 1997. ISBN 0-201-42339-1
  • Koenig, Andrew; Moo, Barbara, Accelerated C++, Addison-Wesley, 2000.ISBN 0-201-70353-X

Papers[edit]

1999[edit]

  • Andrew Koenig, Barbara Moo: Teaching Standard C++, Part 2. Journal of Object Oriented Programming (JOOP) 11(8): 64-67 (1999)
  • Andrew Koenig, Barbara Moo: Teaching Standard C++, Part 3. JOOP 11(9): 59-63 (1999)

1998[edit]

  • A Quiet Revolution. JOOP 10(8): 10–13, 16 (1998)
  • Report from Morristown. JOOP 10(9): 5-8 (1998)
  • A Programming Revolution in Languages Founded on Object Logic. JOOP 11(1): 13-16 (1998)
  • Is Abstraction Good? JOOP 11(2): 66-69 (1998)
  • Simulating Dynamic Types in C++, Part 1. JOOP 11(3): 76–78, 80 (1998)
  • Simulating Dynamic Types in C++, Part 2. JOOP 11(4): 63-67 (1998)
  • Why Are Vectors Efficient? JOOP 11(5): 71-75 (1998)
  • A Standard C++ Appetizer. JOOP 11(6): 85-87 (1998)
  • Andrew Koenig, Barbara Moo: Teaching Standard C++. JOOP 11(7): 11-17 (1998)

1997[edit]

  • C++ in the Classroom: A Look Forward. JOOP 10(1): 59-61 (1997)
  • Turning an Interface Inside out. JOOP 10(2): 56-58 (1997)
  • Which Container Should we Teach First? JOOP 10(3): 10-12 (1997)
  • A ++decade of C++. JOOP 10(4): 20–23, 34 (1997)
  • Inheritance and Abbreviations. JOOP 10(5): 6–9, 21 (1997)
  • Report from London. JOOP 10(6): 11-16 (1997)
  • Compile-Time Type Computation. JOOP 10(7): 11-14 (1997)
  • The Importance — and Hazards — of Performance Measurement. JOOP 9(8): 58-60 (1997)
  • Iterator Iterators and Temporal Sequences. JOOP 9(9): 66–67, 71 (1997)

1996[edit]

  • Idiomatic Design — invited talk for ACM OOPSLA '95; published in Post-conference Proceedings and reprinted in abridged form in CACM Vol. 39, No. 11, November, 1996.
  • Function Adaptors. JOOP 8(8): 51-53 (1996)
  • Compatibility vs. Progress. JOOP 8(9): 48-50 (1996)
  • Generic Input Iterators. JOOP 9(1): 72-75 (1996)
  • Memory Allocation and C Compatibility. JOOP 9(2): 42–43, 54 (1996)
  • C++ as a First Language. JOOP 9(3): 47-49 (1996)
  • Design, Behavior, and Expectation. JOOP 9(4): 79-81 (1996)
  • Interface and Initiative. JOOP 9(5): 64-67 (1996)
  • Arithmetic Sequence Iterators. JOOP 9(6): 38–39, 92 (1996)
  • Collection in C++: No Panacea, but Useful. JOOP 9(7): 55-57 (1996)

1995[edit]

  • Introduction to Iterator Adaptors. JOOP 7(8): 66-68 (1995)
  • Polymorphic Reflections. JOOP 7(9): 65–67, 80 (1995)
  • Patterns and Antipatterns. JOOP 8(1): 46-48 (1995)
  • Is Programming Like Photography? JOOP 8(2): 73-75 (1995)
  • Wrapping up the Standard. JOOP 8(3): 60-62 (1995)
  • An Example of Language-Sensitive Design. JOOP 8(4): 56–58, 61 (1995)
  • Function Objects, Templates, and Inheritance. JOOP 8(5): 65–68, 84 (1995)
  • Variations on a Handle Theme. JOOP 8(6): 77-80 (1995)
  • Another Handle Variation. JOOP 8(7): 61-63 (1995)
  • Idiomatic design. OOPS Messenger 6(4): 14-19 (1995)
  • Andrew Koenig, Bjarne Stroustrup: Foundations for Native C++ Styles Softw., Pract. Exper. 25(S4): S4/45-S4/86 (1995)

1994[edit]

  • An anecdote about ML type inference, USENIX Very High Level Languages Symposium, October 1994, Santa Fe
  • When to Write Buggy Programs. JOOP 7(1): 80-82 (1994)
  • Libraries in Everyday Use. JOOP 7(2): 68–72, 80 (1994)
  • Templates and Generic Algorithms. JOOP 7(3): 45-47 (1994)
  • Surrogate Classes in C++. JOOP 7(4): 71–72, 80 (1994)
  • Generic Iterators. JOOP 7(5): 69-72 (1994)
  • Thoughts on Abstraction. JOOP 7(6): 68-70 (1994)

1992[edit]

  • Space-Efficient Trees in C++. C++ Conference 1992: 117-130

1991[edit]

  • Andrew Koenig, Thomas A. Cargill, Keith E. Gorlen, Robert B. Murray, Michael Vilot: How Useful is Multiple Inheritance in C++? C++ Conference 1991: 81-84

1990[edit]

  • Andrew Koenig, Bjarne Stroustrup: Exception Handling for C++. C++ Conference 1990: 149-176

1988[edit]

  • Associative arrays in C++, Summer 1988 Usenix Conference (pp. 173–186), San Francisco

1986[edit]

1984[edit]

  • Automatic Software Distribution,[11] Summer 1984 Usenix Conference (pp. 87–106), Portland, Oregon

1977[edit]

  • "PL/I Traps and Pitfalls", presented at the SHARE conference, 1977.

References[edit]

  1. ^ "Seymour Koenig, Ph.D. 16 July 1927 – 19 February 2018", International Society for Magnetic Resonance in Medicine, 2018.
  2. ^ Nair, R B (2013) 'ANDREW R KOENIG | LBS kuttipedia'. https://lbsitbytes2010.wordpress.com/2013/04/07/andrew-r-koenig/
  3. ^ Sutter, Herb (March 1998). "What's In a Class? — The Interface Principle". C++ Report. Retrieved 21 February 2010.
  4. ^ "A Personal Note About Argument-Dependent Lookup". 2012-05-03. Archived from the original on 17 March 2018. Retrieved 7 February 2014.
  5. ^ Sutter, Herb (22 October 2000). "Minutes of ISO WG21 Meeting, October 22, 2000" (PDF). ISO Working Group 21. Retrieved 21 February 2010.
  6. ^ "Seymour H. Koenig", Columbia University Computing History
  7. ^ Koenig, Harriet; Koenig, Seymour H., Navajo weaving, Navajo ways, Katonah, N.Y. : Katonah Gallery, 1986. ISBN 0-915171-03-1
  8. ^ "Notable Alumni", Bronx High School of Science Web site
  9. ^ da Cruz, Frank (6 February 2010). "Columbia University Computing History". Columbia University Information Technology. Archived from the original on 11 March 2010. Retrieved 21 February 2010.
  10. ^ Cf. Koenig, preface to "C Traps and Pitfalls".
  11. ^ McIlroy, M. D. (1987). A Research Unix reader: annotated excerpts from the Programmer's Manual, 1971–1986 (PDF) (Technical report). CSTR. Bell Labs. 139.

External links[edit]