Brian Kernighan
Brian Wilson Kernighan (nascido em 30 de janeiro de 1942) é um cientista da computação canadense.
Ele trabalhou na Bell Labs e contribuiu para o desenvolvimento do Unix ao lado dos criadores do Unix, Ken Thompson e Dennis Ritchie. O nome de Kernighan tornou-se amplamente conhecido através da co-autoria do primeiro livro sobre a linguagem de programação C (The C Programming Language) com Dennis Ritchie. Kernighan afirmou que não participou do projeto da linguagem C ("é inteiramente obra de Dennis Ritchie"). Ele criou muitos programas Unix, incluindo ditroff. Kernighan é coautor das linguagens de programação AWK e AMPL. O "K" de K&R C e de AWK representam "Kernighan".
Em colaboração com Shen Lin, ele desenvolveu heurísticas bem conhecidas para dois problemas de otimização NP-completos: particionamento de grafos e o problema do caixeiro viajante. Em uma exibição de equidade autoral, o primeiro é geralmente chamado de algoritmo Kernighan-Lin, enquanto o último é conhecido como heurística Lin-Kernighan.
Kernighan é professor de Ciência da Computação na Universidade de Princeton desde 2000 e Diretor de Estudos de Graduação no Departamento de Ciência da Computação. Em 2015, ele foi coautor do livro The Go Programming Language.
Infância e educação
Kernighan nasceu em Toronto. Ele frequentou a Universidade de Toronto entre 1960 e 1964, obtendo seu diploma de bacharel em física de engenharia. Ele recebeu seu Ph.D. em engenharia elétrica pela Universidade de Princeton em 1969, concluindo uma dissertação de doutorado intitulada "Alguns problemas de particionamento de grafos relacionados à segmentação de programas" sob a supervisão de Peter G. Weiner.
Carreira e pesquisa
Kernighan é professor no Departamento de Ciência da Computação em Princeton desde 2000. A cada outono ele ministra um curso chamado "Computers in Our World", que apresenta os fundamentos da computação para não graduados.
Kernighan era o editor de software da Prentice Hall International. Sua "Ferramentas de Software" série espalhar a essência do pensamento "C/Unix" com reformas para BASIC, FORTRAN e Pascal, e mais notavelmente seu "Ratfor" (Fortran racional) foi colocado em domínio público.
Ele disse que se estivesse preso em uma ilha com apenas uma linguagem de programação, teria que ser C.
Kernighan cunhou o termo "Unix" e ajudou a popularizar a filosofia Unix de Thompson. Kernighan também é conhecido como criador da expressão "What You See Is All You Get" (WYSIAYG), que é uma variante sarcástica do original "What You See Is What You Get" (WYSIWYG). O termo de Kernighan é usado para indicar que os sistemas WYSIWYG podem descartar informações em um documento que podem ser úteis em outros contextos.
Em 1972, Kernighan descreveu o gerenciamento de memória em strings usando "hello" e "world", na linguagem de programação B, que se tornou o exemplo icônico que conhecemos hoje. A implementação original de Kernighan de 1978 de Hello, World! foi vendido no The Algorithm Auction, o primeiro leilão mundial de algoritmos de computador.
Em 1996, Kernighan ensinou CS50, que é o curso introdutório de Ciência da Computação da Universidade de Harvard. Kernighan foi uma influência para David J. Malan, que posteriormente ministrou o curso e o ampliou para ser executado em várias universidades e em vários formatos digitais.
Kernighan foi eleito membro da Academia Nacional de Engenharia em 2002 por suas contribuições ao software e às linguagens de programação. Ele também foi eleito membro da Academia Americana de Artes e Ciências em 2019.
Livros e relatórios
- Os elementos do estilo de programação, com P. J. Plauger
- Ferramentas de software, um livro e conjunto de ferramentas para Ratfor, co-criado em parte com P. J. Plauger
- Ferramentas de software em Portugal, um livro e conjunto de ferramentas para Pascal, com P. J. Plauger
- A linguagem de programação C, com o criador C Dennis Ritchie, o primeiro livro sobre C
- A Prática de Programação, com Rob Pike
- O ambiente de programação Unix, um livro de tutorial, com Rob Pike
- "Why Pascal is Not My Favorite Programming Language", uma crítica popular de Pascal de Niklaus Wirth. Algumas partes da crítica são obsoletas devido à ISO 7185 (Programming Languages - Pascal); a crítica foi escrita antes da criação da ISO 7185. (AT&T Computing Science Technical Report #100)
Algoritmos
- 1972: O primeiro programa documentado "Hello, world!", no "A Tutorial Introduction to the Language B" de Kernighan
- 1973: ditroff, ou "dispositivo troff independente", que permitiu que o troff fosse usado com qualquer dispositivo
- 1974: A língua eqn typeetting para troff, com Lorinda Cherry
- 1976: Ratfor* 1977: A linguagem de processamento de macro m4, com Dennis Ritchie
- 1977: A linguagem de programação AWK, com Alfred Aho e Peter J. Weinberger, e seu livro A linguagem de programação AWK
- 1985: A linguagem de programação AMPL
- 1988: A linguagem pic typeetting para troff
Publicações
- Os elementos do estilo de programação (1974, 1978) com P. J. Plauger
- Ferramentas de software (1976) com P. J. Plauger
- A linguagem de programação C (1978, 1988) com Dennis M. Ritchie
- Ferramentas de software em Portugal (1981) com P. J. Plauger
- O ambiente de programação Unix (1984) com Rob Pike
- A linguagem de programação AWK (1988) com Alfred Aho e Peter J. Weinberger
- A Prática de Programação (1999) com Rob Pike
- AMPL: A Modeling Language for Mathematical Programming, 2nd ed. (2003) com Robert Fourer e David Gay
- D é para Digital: O que uma pessoa bem informada deve saber sobre computadores e comunicações (2011)
- A linguagem de programação ir (2015) com Alan Donovan
- Compreender o Mundo Digital: O que você precisa saber sobre Computadores, Internet, Privacidade e Segurança (2017)
- Milhões, Billions, Zillions: Defendendo-se em um mundo de muitos números (2018)
- UNIX: A History and a Memoir (2019)
Configuração de programação
Kernighan usa um MacBook Air de 13 polegadas como seu dispositivo principal. Junto com isso, de vez em quando, ele usa um iMac em seu escritório. Ele, na maioria das vezes, usa Sam como seu editor de texto.
Contenido relacionado
Lenguaje formal
ETag HTTP
Código de escape ANSI