| Donald Knuth | |
|---|---|
| Conhecido(a) por | The Art of Computer Programming, TeX, METAFONT, Algoritmo de Knuth-Morris-Pratt, algoritmo de Knuth–Bendix, MMIX |
| Nascimento | |
| Nacionalidade | Estadunidense |
| Alma mater | Case Western Reserve University, Instituto de Tecnologia da Califórnia |
| Prêmios | Prêmio Grace Murray Hopper (1971), Prêmio Turing (1974), Gibbs Lecture (1978), Medalha Nacional de Ciências (1979), Prêmio W. Wallace McDowell (1980), Prêmio Leroy P. Steele (1986), Medalha Franklin (1988), Medalha John von Neumann IEEE (1995), Prêmio Kyoto (1996), Prêmios Fronteiras do Conhecimento (2010), Medalha Faraday (2011) |
| Carreira científica | |
| Orientador(es)(as) | Marshall Hall |
| Orientado(a)(s) | Andrei Broder, Michael Fredman, Leonidas John Guibas, Scott Kim, Bernard Marcel Mont-Reynaud, Luis Trabb Pardo, Vaughan Pratt, Robert Sedgewick, Jeffrey Vitter |
| Instituições | Universidade Stanford |
| Campo(s) | Matemática, ciência da computação |
| Tese | 1963: Finite Semifields and Projective Planes |
| Notas | Página pessoal |
Donald Ervin Knuth ([kəˈnuːθ] kə-NOOTH-'; nascido em 10 de janeiro de 1938) é um cientista da computação e matemático americano. Ele é professor emérito na Universidade de Stanford. É o recipiente de 1974 do Prêmio Turing da ACM, considerado informalmente como o Prêmio Nobel da ciência da computação. Knuth tem sido chamado de "pai da análise de algoritmos".
Knuth é o autor da obra em múltiplos volumes The Art of Computer Programming ("A Arte da Programação de Computadores"). Ele contribuiu para o desenvolvimento da análise rigorosa da complexidade computacional de algoritmos e sistematizou técnicas matemáticas formais para isso. No processo, ele também popularizou a notação Big O. Além de contribuições fundamentais em vários ramos da ciência da computação teórica, Knuth é o criador do sistema de diagramação computadorizada TeX, do sistema de definição e renderização de fontes relacionado METAFONT e da família de tipos de letra Computer Modern.
Como escritor e estudioso, Knuth criou os sistemas de programação de computadores WEB e CWEB projetados para incentivar e facilitar a programação literata, e projetou as arquiteturas de conjunto de instruções MIX/MMIX. Ele se opõe fortemente à concessão de patentes de software e expressou sua opinião ao Escritório de Patentes e Marcas dos Estados Unidos e à Organização Europeia de Patentes.
Donald Knuth nasceu em Milwaukee, Wisconsin, filho de Ervin Henry Knuth e Louise Marie Bohning. Ele descreve sua herança como "luterana alemã do meio-oeste".:66 Seu pai possuía uma pequena gráfica e ensinava escrituração contábil. Quando estudante na Milwaukee Lutheran High School, Knuth pensava em maneiras engenhosas de resolver problemas. Por exemplo, na oitava série, ele entrou em um concurso para descobrir o número de palavras que as letras em "Ziegler's Giant Bar" poderiam formar; os juízes haviam identificado 2.500 dessas palavras. Com o tempo ganho fora da escola devido a uma falsa dor de estômago, Knuth usou um dicionário completo e determinou se cada entrada do dicionário poderia ser formada usando as letras da frase. Ele identificou mais de 4.500 palavras, vencendo o concurso.:3 Como prêmios, a escola recebeu uma nova televisão e barras de chocolate suficientes para todos os seus colegas de escola comerem.
Knuth recebeu uma bolsa de estudos em física no Case Institute of Technology (agora parte da Case Western Reserve University) em Cleveland, Ohio, matriculando-se em 1956. Ele também se juntou ao Capítulo Beta Nu da fraternidade Theta Chi. Enquanto estudava física no Case, Knuth foi apresentado ao IBM 650, um computador comercial antigo. Depois de ler o manual do computador, Knuth decidiu reescrever o código de montagem e compilador para a máquina usada em sua escola porque acreditava que poderia fazê-lo melhor.
Em 1958, Knuth criou um programa para ajudar o time de basquete de sua escola a vencer seus jogos. Ele atribuiu "valores" aos jogadores para avaliar sua probabilidade de marcar pontos, uma abordagem inovadora sobre a qual a Newsweek e o CBS Evening News relataram posteriormente.
Knuth foi um dos editores fundadores do Engineering and Science Review do Case Institute, que ganhou um prêmio nacional como melhor revista técnica em 1959. Ele então mudou da física para a matemática e recebeu dois diplomas do Case em 1960: seu Bacharelado em Ciências e, simultaneamente, um mestrado em ciências por uma premiação especial do corpo docente, que considerou seu trabalho excepcionalmente notável.
No final de seu último ano no Case em 1960, Knuth propôs à Burroughs Corporation escrever um compilador ALGOL para o B205 por $5.500. A proposta foi aceita e ele trabalhou no compilador ALGOL entre sua formatura no Case e sua ida para o Caltech.:66:7
Em 1963, com o matemático Marshall Hall como seu orientador, ele obteve um doutorado em matemática pelo Instituto de Tecnologia da Califórnia, com uma tese intitulada Finite Semifields and Projective Planes ("Semicorpos Finitos e Planos Projetivos").
Em 1963, após receber seu doutorado, Knuth ingressou no corpo docente do Caltech como professor assistente.
Enquanto estava no Caltech e após o sucesso do compilador ALGOL para o Burroughs B205, ele se tornou consultor da Burroughs Corporation, juntando-se ao Departamento de Planejamento de Produtos. No Caltech, ele atuava como matemático, mas na Burroughs como programador, trabalhando com as pessoas que ele considerava terem escrito o melhor software da época: o compilador ALGOL para o computador B220 (sucessor do B205).:9
Knuth recusou um contrato de $100.000 para escrever compiladores na Green Tree Corporation, decidindo em vez disso otimizar a renda e continuar no Caltech e na Burroughs. Ele recebeu uma Bolsa da National Science Foundation e uma Bolsa da Woodrow Wilson Foundation, mas elas tinham a condição de que o beneficiário não pudesse fazer mais nada além de estudar como aluno de pós-graduação, então ele não poderia continuar como consultor da Burroughs. Ele optou por recusar as bolsas e continuou com a Burroughs.:12 No verão de 1962, ele escreveu um compilador FORTRAN para a Univac, mas considerou que "eu vendi minha alma ao diabo" para escrever um compilador FORTRAN.:15
Após se formar, Knuth retornou à Burroughs em junho de 1961, mas não lhes disse que havia se formado com um mestrado, em vez do bacharelado esperado. Impressionado com o gráfico de sintaxe do ALGOL, a tabela de símbolos, a abordagem de descida recursiva e a separação das funções de varredura, análise sintática e emissão do compilador, Knuth sugeriu uma extensão para a tabela de símbolos: que um símbolo poderia representar uma cadeia de símbolos. Isso se tornou a base do DEFINE no Burroughs ALGOL, que desde então foi adotado por outras linguagens. No entanto, alguns realmente não gostaram da ideia e queriam que o DEFINE fosse removido. A última pessoa a achar que era uma ideia terrível foi Edsger Dijkstra em uma visita à Burroughs.:17
Knuth trabalhou em linguagens de simulação na Burroughs, produzindo SOL 'Simulation Oriented Language' ("Linguagem Orientada a Simulação"), uma melhoria em relação ao estado da arte, co-projetada com J. McNeeley. Ele participou de uma conferência na Noruega em maio de 1967, organizada pelas pessoas que inventaram a linguagem Simula. Knuth influenciou a Burroughs a usar Simula. Knuth teve uma longa associação com a Burroughs como consultor de 1960 a 1968 até sua mudança para um trabalho mais acadêmico em Stanford em 1969.
Em 1962, Knuth aceitou uma comissão da Addison-Wesley para escrever um livro sobre compiladores de linguagem de programação de computadores. Enquanto trabalhava neste projeto, ele decidiu que não poderia tratar adequadamente o tópico sem primeiro desenvolver uma teoria fundamental da programação de computadores, que se tornou The Art of Computer Programming ("A Arte da Programação de Computadores"). Ele originalmente planejou publicar isso como um único livro, mas à medida que desenvolvia seu esboço para o livro, concluiu que precisaria de seis volumes, e depois sete, para cobrir completamente o assunto. Ele publicou o primeiro volume em 1968.
Pouco antes de publicar o primeiro volume de The Art of Computer Programming, Knuth deixou o Caltech para aceitar um emprego na Divisão de Pesquisa em Comunicações do Institute for Defense Analyses, então situada no campus da Princeton, que estava realizando pesquisas matemáticas em criptografia para apoiar a Agência de Segurança Nacional.
Em 1967, Knuth participou de uma conferência da Society for Industrial and Applied Mathematics e alguém perguntou o que ele fazia. Na época, a ciência da computação era dividida em análise numérica, inteligência artificial e linguagens de programação. Com base em seu estudo e no livro The Art of Computer Programming, Knuth decidiu que na próxima vez que alguém perguntasse, ele diria: "Análise de algoritmos".
Em 1969, Knuth deixou sua posição em Princeton para se juntar ao corpo docente da Universidade de Stanford, onde se tornou Professor de Ciência da Computação Fletcher Jones em 1977. Ele se tornou Professor de The Art of Computer Programming em 1990 e é emérito desde 1993.
Knuth é um escritor além de cientista da computação.
"A melhor maneira de se comunicar de um ser humano para outro é através de histórias."
— Donald Knuth
Na década de 1970, Knuth chamou a ciência da computação de "um campo totalmente novo sem identidade real. E o padrão das publicações disponíveis não era tão alto. Muitos dos artigos que saíam eram simplesmente errados. ... Então, uma das minhas motivações foi endireitar uma história que havia sido contada muito mal."
De 1972 a 1973, Knuth passou um ano na Universidade de Oslo entre pessoas como Ole-Johan Dahl. Foi lá que ele originalmente pretendia escrever o sétimo volume de sua série de livros, que trataria de linguagens de programação. Mas Knuth havia terminado apenas os dois primeiros volumes quando chegou a Oslo, e assim passou o ano no terceiro volume, além de lecionar. O terceiro volume saiu logo após Knuth retornar a Stanford em 1973.
Concrete Mathematics: A Foundation for Computer Science ("Matemática Concreta: Uma Fundação para a Ciência da Computação") originou-se com uma expansão da seção de preliminares matemáticas do Volume 1 do TAoCP. Knuth descobriu que havia ferramentas matemáticas necessárias para o Volume 1, mas faltando em seu repertório, e decidiu que um curso introduzindo essas ferramentas para estudantes de ciência da computação seria útil. Knuth introduziu o curso em Stanford em 1970. As notas do curso desenvolvidas por Oren Patashnik evoluíram para o texto de 1988, com os autores Ronald Graham, Knuth e Patashnik. Uma segunda edição de Concrete Mathematics foi publicada em 1994.
Em 2011, o Volume 4A do TAoCP havia sido publicado. Em abril de 2020, Knuth disse que previa que o Volume 4 do TAoCP teria pelo menos as partes A a F. O Volume 4B foi publicado em outubro de 2022.
Knuth é também o autor de Surreal Numbers ("Números Surreais"), uma novelinha matemática sobre a teoria dos conjuntos de John Horton Conway da construção de um sistema alternativo de números. Em vez de simplesmente explicar o assunto, o livro busca mostrar o desenvolvimento da matemática. Knuth queria que o livro preparasse os alunos para fazer pesquisa original e criativa.
Em 1995, Knuth escreveu o prefácio do livro A=B de Marko Petkovšek, Herbert Wilf e Doron Zeilberger. Ele também contribui ocasionalmente com quebra-cabeças linguísticos para a Word Ways: The Journal of Recreational Linguistics.
Knuth se aprofundou na matemática recreativa. Ele contribuiu com artigos para o Journal of Recreational Mathematics a partir da década de 1960 e foi reconhecido como um importante colaborador em Mathematics on Vacation ("Matemática nas Férias") de Joseph Madachy.
Knuth também aparece em vários vídeos do Numberphile e Computerphile no YouTube, onde discute tópicos desde a escrita de Surreal Numbers até por que ele não usa e-mail.
Knuth havia proposto o nome "algoritmica" como um nome melhor para a disciplina de ciência da computação.
Knuth fez uma contribuição substancial para o estudo do Problema do Emparelhamento Estável.
Além de seus escritos sobre ciência da computação, Knuth, um luterano, também é o autor de 3:16 Bible Texts Illuminated ("3:16 Textos Bíblicos Iluminados"), no qual ele examina a Bíblia por meio de um processo de amostragem sistemática, ou seja, uma análise do capítulo 3, versículo 16 de cada livro. Cada versículo é acompanhado por uma representação em arte caligráfica, contribuída por um grupo de calígrafos liderados por Hermann Zapf. Knuth foi convidado a dar um conjunto de palestras no MIT sobre as visões sobre religião e ciência da computação por trás de seu projeto 3:16, resultando em outro livro, Things a Computer Scientist Rarely Talks About ("Coisas sobre as quais um Cientista da Computação Raramente Fala"), onde publicou as palestras God and Computer Science ("Deus e a Ciência da Computação").
Knuth se opõe fortemente à concessão de patentes de software para soluções triviais que deveriam ser óbvias, mas expressou visões mais matizadas para soluções não triviais, como o método de ponto interior da programação linear. Ele expressou sua discordância diretamente tanto ao Escritório de Patentes e Marcas dos Estados Unidos quanto à Organização Europeia de Patentes.
Na década de 1970, os editores do TAOCP abandonaram o Monotype em favor da fotocomposição. Knuth ficou tão frustrado com a incapacidade do último sistema de se aproximar da qualidade dos volumes anteriores, que foram diagramados usando o sistema mais antigo, que ele reservou um tempo para trabalhar em diagramação digital e criou o TeX e o Metafont.
Ao desenvolver o TeX, Knuth criou uma nova metodologia de programação, que chamou de programação literata, porque acreditava que os programadores deveriam pensar nos programas como obras de literatura:
Em vez de imaginar que nossa principal tarefa é instruir um computador sobre o que fazer, concentremo-nos antes em explicar aos seres humanos o que queremos que um computador faça.
Knuth incorporou a ideia de programação literata no sistema WEB. A mesma fonte WEB é usada para tecer (weave) um arquivo TeX e para embaralhar (tangle) um arquivo fonte Pascal. Estes, por sua vez, produzem uma descrição legível do programa e um binário executável, respectivamente. Uma iteração posterior do sistema, CWEB, substitui Pascal por C, C++ e Java.
Knuth usou o WEB para programar o TeX e o METAFONT, e publicou ambos os programas como livros, ambos originalmente publicados no mesmo ano: TeX: The Program (1986); e METAFONT: The Program (1986). Por volta da mesma época, o LaTeX, o pacote de macros agora amplamente adotado baseado no TeX, foi desenvolvido pela primeira vez por Leslie Lamport, que mais tarde publicou seu primeiro manual do usuário em 1986.
Donald Knuth casou-se com Nancy Jill Carter em 24 de junho de 1961, enquanto era aluno de pós-graduação no Instituto de Tecnologia da Califórnia. Eles têm dois filhos: John Martin Knuth e Jennifer Sierra Knuth.
Knuth dá palestras informais algumas vezes por ano na Universidade de Stanford, que ele chama de "Computer Musings" ("Divagações Computacionais"). Ele foi professor visitante no Departamento de Ciência da Computação da Universidade de Oxford no Reino Unido até 2017 e membro honorário do Magdalen College.
Knuth é organista e compositor. Ele e seu pai serviram como organistas para congregações luteranas. Knuth e sua esposa têm um órgão de 16 registros em sua casa. Em 2016, ele completou uma peça para órgão, Fantasia Apocalyptica, que ele chama de "tradução do texto grego do Apocalipse de São João em música". Foi estreada na Suécia em 10 de janeiro de 2018.
O nome chinês de Knuth é Gao Dena. Ele recebeu este nome em 1977 por Frances Yao pouco antes de fazer uma viagem de três semanas à China. Na tradução chinesa de 1980 do Volume 1 de The Art of Computer Programming, Knuth explica que abraçou seu nome chinês porque queria ser conhecido pelo número crescente de programadores de computador na China na época. Em 1989, seu nome chinês foi colocado no topo do cabeçalho do Journal of Computer Science and Technology, o que, segundo Knuth, "me faz sentir próximo de todos os chineses, embora eu não fale sua língua".

Knuth costumava pagar uma taxa de localização de $2,56 por quaisquer erros tipográficos ou enganos descobertos em seus livros, porque "256 centavos são um dólar hexadecimal", e $0,32 por "sugestões valiosas". De acordo com um artigo na Technology Review do Instituto de Tecnologia de Massachusetts, esses cheques de recompensa de Knuth são "entre os troféus mais cobiçados do mundo da computação". Knuth teve que parar de enviar cheques reais em 2008 devido a fraudes bancárias e agora dá a cada localizador de erro um "certificado de depósito" de um saldo listado publicamente em seu fictício "Banco de San Serriffe".
Ele uma vez avisou um correspondente: "Cuidado com bugs no código acima; eu apenas provei que está correto, não o testei."
Knuth publicou seu primeiro artigo "científico" em uma revista escolar em 1957 sob o título "The Potrzebie System of Weights and Measures" ("O Sistema Potrzebie de Pesos e Medidas"). Nele, ele definiu a unidade fundamental de comprimento como a espessura da Mad No. 26, e nomeou a unidade fundamental de força como "whatmeworry". A Mad publicou o artigo na edição nº 33 (junho de 1957).
Para demonstrar o conceito de recursão, Knuth intencionalmente referiu "Definição circular" e "Definição, circular" uma à outra no índice de The Art of Computer Programming, Volume 1.
O prefácio de Concrete Mathematics tem o seguinte parágrafo:
Quando DEK ensinou Matemática Concreta em Stanford pela primeira vez, ele explicou o título um tanto estranho dizendo que era sua tentativa de ensinar um curso de matemática que era difícil em vez de fácil. Ele anunciou que, ao contrário das expectativas de seus colegas, ele não iria ensinar a Teoria dos Agregados, nem o Teorema da Incorporação de Stone, nem mesmo a compactificação de Stone–Čech. (Vários alunos do departamento de engenharia civil se levantaram e saíram silenciosamente da sala.)
Na Conferência TUG 2010, Knuth anunciou um sucessor satírico do TeX baseado em XML, intitulado "iTeX" (en, pronunciado enquanto tocava uma campainha), que suportaria recursos como unidades irracionais escaladas arbitrariamente, impressão 3D, entrada de sismógrafos e monitores cardíacos, animação e som estereofônico.
Em 1971, Knuth recebeu o primeiro Prêmio Grace Murray Hopper da ACM. Ele recebeu vários outros prêmios, incluindo o Prêmio Turing, a National Medal of Science, a Medalha John von Neumann e o Prêmio Kyoto.
Knuth foi eleito Membro Distinto da British Computer Society (DFBCS) em 1980 em reconhecimento às suas contribuições ao campo da ciência da computação.
Em 1990, foi-lhe concedido o título acadêmico único de Professor da Arte da Programação de Computadores; o título foi posteriormente revisado para Professor Emérito da Arte da Programação de Computadores.
Knuth foi eleito para a Academia Nacional de Ciências em 1975. Ele também foi eleito membro da Academia Nacional de Engenharia em 1981 por organizar vastas áreas temáticas da ciência da computação para que fossem acessíveis a todos os segmentos da comunidade da computação. Em 1992, tornou-se associado da Academia Francesa de Ciências. Também naquele ano, aposentou-se da pesquisa regular e do ensino na Universidade de Stanford para terminar The Art of Computer Programming. Em 1996, foi agraciado com o grau de Doutor Honoris Causa na área de Ciências Matemáticas pela Faculdade de Informática da Universidade Masaryk em Brno. Ele foi eleito Membro Estrangeiro da Royal Society em 2003.
Knuth foi eleito Fellow (primeira turma de Fellows) da Society for Industrial and Applied Mathematics em 2009 por suas contribuições notáveis à matemática. Ele é membro da Academia Norueguesa de Ciências e Letras. Em 2012, tornou-se fellow da Sociedade Matemática Americana e membro da Sociedade Filosófica Americana. Outros prêmios e honrarias incluem:
Uma lista curta de suas publicações inclui:
The Art of Computer Programming:
Computers and Typesetting (todos os livros são de capa dura, a menos que indicado de outra forma):
Livros de artigos coletados:
Outros livros:
I fondly hope that many Chinese computer programmers will learn to recognize my Chinese name Gao Dena, which was given to me by Francis Yao just before I visited your country in 1977. I still have very fond memories of that three-week visit, and I have been glad to see Gao Dena on the masthead of the Journal of Computer Science and Technology since 1989. This name makes me feel close to all Chinese people although I cannot speak your language.
| Precedido por Charles Bachman |
Prêmio Turing 1974 |
Sucedido por Allen Newell e Herbert Simon |
| Precedido por Stanley Cohen |
Medalha Franklin 1988 |
Sucedido por Hugh Huxley e David Turnbull |
| Precedido por John Cocke |
Medalha John von Neumann IEEE 1995 |
Sucedido por Carver Mead |