Andrew Koenig (programmerare)

Andrew Koenig
Född
Andrew Richard Koenig

Juni 1952 ( 1952-06 ) ( 70 år )
Nationalitet amerikansk
Alma mater Columbia University (BS, matematik; MS, datavetenskap, 1977)
Ockupation Datorvetenskapsman
Känd för C++ , programmering, skrivning, " Koenig lookup ", " anti-pattern "
Anmärkningsvärt arbete

C Traps and pitfalls (1988) Ruminations on C++ (1997) Accelerated C++ (2000)
Make Barbara E. Moo
Föräldrar)
Seymour H. Koenig Harriet Koenig
Hemsida www .acceleratedcpp .com /authors /koenig

Andrew Richard Koenig ( IPA: [ˈkøːnɪç] ; född juni 1952) är en före detta AT&T och Bell Labs forskare och programmerare. Han är författare till C Traps and pitfalls och medförfattare (med Barbara Moo ) till Accelerated C++ och Ruminations on C++ , och hans namn är associerat med argumentberoende namnuppslagning, även känd som "Koenig lookup", även om han inte är dess uppfinnare. Han fungerade som projektredaktör för ISO/ANSI-standardkommittén för C++ och har skrivit över 150 artiklar om C++ .

Tidigt liv och karriär

Koenig föddes i New York City och är son till fysikern Dr. Seymour H. Koenig, en tidigare chef för IBM Watson Laboratory , och Harriet Koenig, en författare och samlare av indiankonst.

Han tog examen från The Bronx High School of Science 1968 och fortsatte med en Bachelor of Science-examen och en Master of Science-examen från Columbia University i New York. Han var en framstående medlem av Columbia University Center for Computing Activities (CUCCA) i slutet av 1960- och 1970-talet. Han skrev det första e-postprogrammet som användes vid universitetet.

1977 gick han med i den tekniska personalen på Bell Labs i Murray Hill, New Jersey, från vilken han senare gick i pension.

Den första boken han skrev, 1987, C Traps and Pitfalls , hade motiverats av hans tidigare papper och arbete, mestadels som anställd vid Columbia University, på ett annat datorspråk, PL/I . 1977, som en nyligen anställd personal vid Bell Labs, presenterade han ett dokument som heter "PL/I Traps and pitfalls" vid ett SHARE- möte i Washington, DC

Patent

  • Användarautentiseringssystem som använder krypteringsfunktioner, #4,590,470. "Kombinerar slumpmässig utmaning-svar-autentisering med offentlig nyckel med att dölja autentiseringsalgoritmen i en enhet som endast gör algoritmens in- och utgångar tillgänglig. Det säkrar sessionen mot avlyssning och omspelning och kräver ingen hemlig information om värden."
  • Lagring av träd i navigerbar form, #5 530 957. "En teknik för att lagra träd (som representationer av källprogram i en programmeringsmiljö) som helt eliminerar utrymmeskostnader som normalt är förknippade med lagring av pekare, samtidigt som det fortfarande tillåter vanliga navigeringsoperationer med rimlig tidseffektivitet."
  • Metod och apparat för att analysera källkod med användning av prefixanalys, #5 812 853, "En teknik för att påskynda preliminär bearbetning, såsom makroförbearbetning, i en kompilator genom att komma ihåg användbara prefixsträngar för inmatningsprogrammet i en trädliknande datastruktur och knappa in dessa strängar till kompilatorns ihågkomna tillstånd."
  • Metod och anordning för personsökning av alternativa användare, #6 057 782, "Idén att tillåta personsökningssystem som stöder bekräftelser att ordna om sin lista med destinationer för framtida sidor baserat på bekräftelsen eller bristen därav på tidigare sidor."

Vald bibliografi

Böcker

  •   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

Papper

1999

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

1998

  • En tyst revolution. JOOP 10(8): 10–13, 16 (1998)
  • Rapport från Morristown. JOOP 10(9): 5-8 (1998)
  • En programmeringsrevolution i språk grundade på objektlogik. JOOP 11(1): 13-16 (1998)
  • Är abstraktion bra? JOOP 11(2): 66-69 (1998)
  • Simulering av dynamiska typer i C++, del 1. JOOP 11(3): 76–78, 80 (1998)
  • Simulering av dynamiska typer i C++, del 2. JOOP 11(4): 63-67 (1998)
  • Varför är vektorer effektiva? JOOP 11(5): 71-75 (1998)
  • En standard C++ aptitretare. JOOP 11(6): 85-87 (1998)
  • Andrew Koenig, Barbara Moo: Undervisning i standard C++. JOOP 11(7): 11-17 (1998)

1997

  • C++ i klassrummet: A Look Forward. JOOP 10(1): 59-61 (1997)
  • Att vända ett gränssnitt ut och in. JOOP 10(2): 56-58 (1997)
  • Vilken container ska vi lära ut först? JOOP 10(3): 10-12 (1997)
  • Ett ++decennium av C++. JOOP 10(4): 20–23, 34 (1997)
  • Arv och förkortningar. JOOP 10(5): 6–9, 21 (1997)
  • Rapport från London. JOOP 10(6): 11-16 (1997)
  • Compile-Time Type Computation. JOOP 10(7): 11-14 (1997)
  • Vikten – och riskerna – med prestandamätning. JOOP 9(8): 58-60 (1997)
  • Iterator Iteratorer och temporala sekvenser. JOOP 9(9): 66–67, 71 (1997)

1996

  • Idiomatisk design — inbjudet föredrag för ACM OOPSLA '95; publicerad i Post-conference Proceedings och omtryckt i förkortad form i CACM Vol. 39, nr 11, november 1996.
  • Funktionsadaptrar. JOOP 8(8): 51-53 (1996)
  • Kompatibilitet kontra framsteg. JOOP 8(9): 48-50 (1996)
  • Generic Input Iterators. JOOP 9(1): 72-75 (1996)
  • Minnestilldelning och C-kompatibilitet. JOOP 9(2): 42–43, 54 (1996)
  • C++ som förstaspråk. JOOP 9(3): 47-49 (1996)
  • Design, beteende och förväntningar. JOOP 9(4): 79-81 (1996)
  • Gränssnitt och initiativ. JOOP 9(5): 64-67 (1996)
  • Aritmetiska sekvensiteratorer. JOOP 9(6): 38–39, 92 (1996)
  • Samling i C++: Inget universalmedel, men användbart. JOOP 9(7): 55-57 (1996)

1995

  • Introduktion till Iterator-adaptrar. JOOP 7(8): 66-68 (1995)
  • Polymorfa reflektioner. JOOP 7(9): 65–67, 80 (1995)
  • Mönster och antimönster. JOOP 8(1): 46-48 (1995)
  • Är programmering som fotografering? JOOP 8(2): 73-75 (1995)
  • Avslutar standarden. JOOP 8(3): 60-62 (1995)
  • Ett exempel på språkkänslig design. JOOP 8(4): 56–58, 61 (1995)
  • Funktionsobjekt, mallar och arv. JOOP 8(5): 65–68, 84 (1995)
  • Variationer på ett handtagstema. JOOP 8(6): 77-80 (1995)
  • Ännu en handtagsvariation. JOOP 8(7): 61-63 (1995)
  • Idiomatisk design. OOPS Messenger 6(4): 14-19 (1995)
  • Andrew Koenig, Bjarne Stroustrup: Foundations for Native C++ Styles Softw., Practice. Exper. 25(S4): S4/45-S4/86 (1995)

1994

  • En anekdot om slutledning av ML-typ, USENIX Very High Level Languages ​​Symposium, oktober 1994, Santa Fe
  • När ska man skriva buggyprogram. JOOP 7(1): 80-82 (1994)
  • Bibliotek i dagligt bruk. JOOP 7(2): 68–72, 80 (1994)
  • Mallar och generiska algoritmer. JOOP 7(3): 45-47 (1994)
  • Surrogatklasser i C++. JOOP 7(4): 71–72, 80 (1994)
  • Generiska iteratorer. JOOP 7(5): 69-72 (1994)
  • Tankar om abstraktion. JOOP 7(6): 68-70 (1994)

1992

  • Utrymmeseffektiva träd i C++. C++ Conference 1992: 117-130

1991

  • 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

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

1988

  • Associativa arrayer i C++, Usenix Conference sommaren 1988 (s. 173–186), San Francisco

1986

1984

  • Automatic Software Distribution, Usenix Conference sommaren 1984 (s. 87–106), Portland, Oregon

1977

  • "PL/I Traps and pitfalls", presenterad på SHARE- konferensen, 1977.

externa länkar