Andrew Koenig (programador) - Andrew Koenig (programmer)

Andrew Koenig
Nascer
Andrew Richard Koenig

Junho de 1952 (idade   ( 1952-06 ) 68)
Nacionalidade americano
Alma mater Columbia University (BS, Matemática; MS, Ciência da Computação, 1977)
Ocupação Cientista da computação
Conhecido por C ++ , programação, escrita, " pesquisa Koenig ", " anti-padrão "
Trabalho notável
C Traps and Pitfalls (1988)
Ruminations on C ++ (1997)
Accelerated C ++ (2000)
Cônjuge (s) Barbara E. Moo
Pais) Seymour H. Koenig
Harriet Koenig
Local na rede Internet www .acceleratedcpp .com / author / koenig

Andrew Richard Koenig ( IPA: [ˈkøːnɪç] ; nascido em junho de 1952) é um ex- pesquisador e programador da AT&T e Bell Labs . Ele é o autor de C Traps and Pitfalls e co-autor (com Barbara Moo ) de Accelerated C ++ and Ruminations on C ++ , e seu nome está associado à pesquisa de nome dependente de argumento , também conhecida como "pesquisa Koenig". Ele atuou como Editor de Projetos do comitê de padrões ISO / ANSI para C ++ e é autor de mais de 150 artigos sobre C ++ .

Juventude e carreira

Koenig nasceu na cidade de Nova York e é filho do físico Dr. Seymour H. Koenig, ex-diretor do IBM Watson Laboratory , e Harriet Koenig, autora e colecionadora de arte indígena nativa americana.

Ele se formou na Bronx High School of Science em 1968 e recebeu um diploma de bacharel em ciências e um mestrado em ciências pela Columbia University em Nova York. Ele foi um membro proeminente do Centro de Atividades de Computação da Universidade de Columbia (CUCCA) no final dos anos 1960 e 1970. Ele escreveu o primeiro programa de e-mail usado na universidade.

Em 1977, ele se juntou à equipe técnica da Bell Labs em Murray Hill, New Jersey , da qual mais tarde se aposentou.

O primeiro livro de sua autoria, em 1987, C armadilhas e ciladas , tinha sido motivado por seu papel antes e trabalho, principalmente como um membro da equipe da Universidade de Columbia, em uma linguagem de computador diferente, PL / I . Em 1977, como um membro da equipe recém-contratado no Bell Labs, ele apresentou um artigo chamado "PL / I Traps and Pitfalls" em uma reunião do SHARE em Washington, DC

Patentes

  • Sistema de autenticação do usuário com funções de criptografia, # 4.590.470. "Combina a autenticação de resposta de desafio aleatório de chave pública com a ocultação do algoritmo de autenticação em um dispositivo que disponibiliza apenas as entradas e saídas do algoritmo. Isso protege a sessão contra espionagem e reprodução e não requer informações secretas sobre o host."
  • Armazenamento de árvores em forma navegável, # 5.530.957. "Uma técnica para armazenar árvores (como representações de programas fonte em um ambiente de programação) que elimina completamente a sobrecarga de espaço normalmente associada ao armazenamento de ponteiros, ao mesmo tempo que permite operações de navegação comuns com razoável eficiência de tempo."
  • Método e aparelho para analisar o código-fonte usando a análise de prefixo, # 5.812.853, "Uma técnica para acelerar o processamento preliminar, como o pré-processamento de macro, em um compilador, lembrando cadeias de prefixos úteis do programa de entrada em uma estrutura de dados semelhante a uma árvore e digitando-as strings para estados lembrados do compilador. "
  • Método e aparelho para usuários alternativos de paging, # 6.057.782, "A ideia de permitir que sistemas de paging que suportam confirmações reordenem sua lista de destinos para páginas futuras com base na confirmação ou falta dela nas páginas anteriores."

Bibliografia selecionada

Livros

  • 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

Papéis

1999

  • Andrew Koenig, Barbara Moo: Padrão de Ensino C ++, Parte 2. Journal of Object Oriented Programming (JOOP) 11 (8): 64-67 (1999)
  • Andrew Koenig, Barbara Moo: Padrão de Ensino C ++, Parte 3. JOOP 11 (9): 59-63 (1999)

1998

  • Uma revolução silenciosa. JOOP 10 (8): 10-13, 16 (1998)
  • Relatório de Morristown. JOOP 10 (9): 5-8 (1998)
  • Uma revolução na programação em linguagens baseadas na lógica de objetos. JOOP 11 (1): 13-16 (1998)
  • A abstração é boa? JOOP 11 (2): 66-69 (1998)
  • Simulando Tipos Dinâmicos em C ++, Parte 1. JOOP 11 (3): 76-78, 80 (1998)
  • Simulando Tipos Dinâmicos em C ++, Parte 2. JOOP 11 (4): 63-67 (1998)
  • Por que os vetores são eficientes? JOOP 11 (5): 71-75 (1998)
  • Um aperitivo C ++ padrão. JOOP 11 (6): 85-87 (1998)
  • Andrew Koenig, Barbara Moo: Ensino Padrão C ++. JOOP 11 (7): 11-17 (1998)

1997

  • C ++ na sala de aula: um olhar para o futuro. JOOP 10 (1): 59-61 (1997)
  • Virando uma interface do avesso. JOOP 10 (2): 56-58 (1997)
  • Qual container devemos ensinar primeiro? JOOP 10 (3): 10-12 (1997)
  • Uma década ++ de C ++. JOOP 10 (4): 20-23, 34 (1997)
  • Herança e abreviações. JOOP 10 (5): 6–9, 21 (1997)
  • Relatório de Londres. JOOP 10 (6): 11-16 (1997)
  • Computação do tipo em tempo de compilação. JOOP 10 (7): 11-14 (1997)
  • A importância - e os perigos - da medição de desempenho. JOOP 9 (8): 58-60 (1997)
  • Iteradores Iteradores e Sequências Temporais. JOOP 9 (9): 66-67, 71 (1997)

1996

  • Design idiomático - palestra convidada para ACM OOPSLA '95; publicado em Post-conference Proceedings e reimpresso de forma abreviada em CACM Vol. 39, No. 11, novembro de 1996.
  • Adaptadores de função. JOOP 8 (8): 51-53 (1996)
  • Compatibilidade vs. progresso. JOOP 8 (9): 48-50 (1996)
  • Iteradores de entrada genéricos. JOOP 9 (1): 72-75 (1996)
  • Alocação de memória e compatibilidade C. JOOP 9 (2): 42-43, 54 (1996)
  • C ++ como primeira linguagem. JOOP 9 (3): 47-49 (1996)
  • Design, comportamento e expectativa. JOOP 9 (4): 79-81 (1996)
  • Interface e iniciativa. JOOP 9 (5): 64-67 (1996)
  • Iteradores de sequência aritmética. JOOP 9 (6): 38-39, 92 (1996)
  • Coleção em C ++: sem panacéia, mas útil. JOOP 9 (7): 55-57 (1996)

1995

  • Introdução aos adaptadores de iterador. JOOP 7 (8): 66-68 (1995)
  • Reflexões polimórficas. JOOP 7 (9): 65-67, 80 (1995)
  • Padrões e antipadrões. JOOP 8 (1): 46-48 (1995)
  • Programação é como fotografia? JOOP 8 (2): 73-75 (1995)
  • Resumindo o Padrão. JOOP 8 (3): 60-62 (1995)
  • Um exemplo de design sensível à linguagem. JOOP 8 (4): 56-58, 61 (1995)
  • Objetos de função, modelos e herança. JOOP 8 (5): 65-68, 84 (1995)
  • Variações sobre um tema de manivela. JOOP 8 (6): 77-80 (1995)
  • Outra variação de manuseio. JOOP 8 (7): 61-63 (1995)
  • Design idiomático. 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

  • Uma anedota sobre inferência de tipo de ML, Simpósio de Línguas de Nível Muito Alto USENIX, outubro de 1994, Santa Fé
  • Quando escrever programas com erros. JOOP 7 (1): 80-82 (1994)
  • Bibliotecas de uso diário. JOOP 7 (2): 68-72, 80 (1994)
  • Modelos e algoritmos genéricos. JOOP 7 (3): 45-47 (1994)
  • Classes substitutas em C ++. JOOP 7 (4): 71-72, 80 (1994)
  • Iteradores genéricos. JOOP 7 (5): 69-72 (1994)
  • Reflexões sobre a abstração. JOOP 7 (6): 68-70 (1994)

1992

  • Árvores com eficiência de espaço em C ++. C ++ Conference 1992: 117-130

1991

  • Andrew Koenig, Thomas A. Cargill, Keith E. Gorlen, Robert B. Murray, Michael Vilot: Quão útil é a herança múltipla em C ++? C ++ Conference 1991: 81-84

1990

  • Andrew Koenig, Bjarne Stroustrup: Tratamento de exceções para C ++. C ++ Conference 1990: 149-176

1988

  • Matrizes associativas em C ++, Summer 1988 Usenix Conference (pp. 173-186), San Francisco

1986

1984

  • Automatic Software Distribution, Summer 1984 Usenix Conference (pp. 87-106), Portland, Oregon

1977

  • "PL / I Traps and Pitfalls", apresentado na conferência SHARE , 1977.

Referências

links externos