Andrew Koenig (programmerare)
Andrew Koenig | |
---|---|
Född |
Andrew Richard Koenig
Juni 1952 70 år )
New York City , USA
|
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 |
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
- The Snocone Programming Language , Bell Labs Computing Science Technical Report #124, 19 augusti 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.