# Edsger Dijkstra

Edsger Wybe Dijkstra (Roterdã, 11 de maio de 1930 — Nuenen, 6 de agosto de 2002; AFI: (ouvir)) foi um cientista da computação holandês, conhecido por suas contribuições nas áreas de desenvolvimento de algoritmos e programas, de linguagens de programação (pelo qual recebeu o Prêmio Turing de 1972 por suas contribuições fundamentais), sistemas operacionais e processamento distribuído.
A pronúncia aproximada em português para Edsger Dijkstra é étsrrar déikstra.
Entre suas contribuições para a ciência da computação está incluído o algoritmo para o problema do caminho mínimo (também conhecido como algoritmo de Dijkstra), o sistema operacional THE e a construção de semáforos para coordenar múltiplos processadores e programas. Outro conceito desenvolvido pelo cientista foi a auto-estabilização na área de sistemas distribuídos, uma forma alternativa de garantir a confiança de um sistema.
O cientista também foi conhecido por seus ensaios sobre programação, tendo sido o primeiro a alegar que programação é tão inerentemente difícil e complexa que os programadores precisam realizar qualquer abstração possível para gerenciar a complexidade com sucesso.
Uma das figuras mais influentes da geração fundadora da ciência da computação, Dijkstra ajudou a moldar a nova disciplina, tanto da perspectiva da engenharia quanto da teoria . Suas contribuições fundamentais abrangem diversas áreas da ciência da computação, incluindo construção de compiladores , sistemas operacionais, sistemas distribuídos , programação sequencial e simultânea, paradigma e metodologia de programação, pesquisa em linguagem de programação., design do programa, desenvolvimento do programa, verificação do programa, princípios de engenharia de software, algoritmos de gráficos e fundamentos filosóficos da programação e ciência da computação. Muitos de seus artigos são a fonte de novas áreas de pesquisa. Vários conceitos e problemas que agora são padrão em ciência da computação foram identificados pela primeira vez por Dijkstra ou ostentam nomes cunhados por ele. Como principal oponente da visão mecanicista da ciência da computação, ele refutou o uso dos conceitos de 'ciência da computação' e 'engenharia de software' como termos genéricos para as disciplinas acadêmicas .
Até meados da década de 1960, a programação de computadores era considerada mais uma arte (ou um ofício) do que uma disciplina científica. Nas palavras de Harlan Mills (1986), "a programação [antes da década de 1970] era considerada uma atividade privada de resolução de quebra-cabeças de escrever instruções de computador para funcionar como um programa". No final dos anos 1960, a programação de computadores estava em um estado de crise . Dijkstra fazia parte de um pequeno grupo de acadêmicos e programadores industriais que defendiam um novo estilo de programação para melhorar a qualidade dos programas . Dijkstra, que tinha formação em matemática e física, foi uma das forças motrizes por trás da aceitação da programação de computadores como disciplina científica. Ele cunhou a frase "programação estruturada "e, durante a década de 1970, essa se tornou a nova ortodoxia da programação. Suas idéias sobre programação estruturada ajudaram a estabelecer as bases para o nascimento e o desenvolvimento da disciplina profissional de engenharia de software , permitindo que os programadores organizassem e gerenciar projetos de software cada vez mais complexos. Como observou Bertrand Meyer (2009), "A revolução nas visões de programação iniciada pela iconoclastia de Dijkstra levou a um movimento conhecido como programação estruturada, que defendia uma abordagem racional e sistemática da construção de programas. A programação estruturada é a base de tudo o que foi feito desde a metodologia de programação, incluindo programação orientada a objetos ".
O estudo acadêmico da computação simultânea começou na década de 1960, com Dijkstra (1965) creditado como o primeiro artigo nesse campo, identificando e resolvendo o problema de exclusão mútua. Ele também foi um dos pioneiros da pesquisa sobre os princípios da computação distribuída . Sua obra fundamental sobre a concorrência, semáforos , exclusão mútua, impasse (abraço mortal), encontrando caminhos mais curtos em grafos , tolerância a falhas , auto-estabilização, entre muitas outras contribuições, compreende muitos dos pilares sobre os quais o campo da computação distribuída é construído. Pouco antes de sua morte, em 2002, ele recebeu o prêmio ACM PODC-Influential-Paper Award em computação distribuída por seu trabalho em auto-estabilização da computação de programas. Este prêmio anual foi renomeado para o Prêmio Dijkstra (Prêmio Edsger W. Dijkstra em Computação Distribuída) no ano seguinte, em sua homenagem. Como prêmio, patrocinado em conjunto pelo Simpósio ACM de Princípios de Computação Distribuída (PODC) e pelo Simpósio Internacional EATCS de Computação Distribuída (DISC), reconhece que "Nenhum outro indivíduo teve uma influência maior na pesquisa nos princípios da computação distribuída".

## EWD

Dijkstra tinha o hábito de compor manuscritos com sua caneta-tinteiro, chamados "EWD". Distribuía fotocópias entre os seus colegas, que as redistribuíam fazendo com que se espalhassem pela comunidade internacional de ciência da computação. Os tópicos mais abordados eram ciência da computação e matemática, mas também incluía relatórios de viagem, cartas e palestras. Mais de 1300 EWD foram digitalizados, e estão disponíveis nos arquivos de Dijsktra na Universidade do Texas.

## Vida
### Juventude

Nascido em Roterdã, Dijkstra era filho de um professor de química para ensino secundário e de uma matemática que não trabalhava. Durante seus últimos anos de ensino secundário, Dijkstra considerou estudar Direito, esperando representar seu país nas Nações Unidas. Entretanto, acabou escolhendo exercer uma profissão de acordo com suas habilidades e não seu idealismo, mudando para o campo da ciência.
Estudou matemática e física nos primeiros anos da Universidade de Leiden para posteriormente dedicar-se somente à física teórica, mas logo percebeu que era mais interessado em ciência da computação. Em 1951, após seu pai tomar conhecimento de um curso de programação de computadores, Dijkstra concluiu que tal habilidade seria importante em suas atribuições como físico teórico, e decidiu assistir às aulas.
Através de contatos acabou tendo um emprego oferecido como programador no Centro de Matemática do Instituto Nacional de Pesquisa em Matemática e Ciência da Computação em Amesterdão, cujo início foi em março de 1952. Tornou-se então oficialmente o primeiro programador nos Países Baixos. Em dado momento ele realizou a escolha entre continuar na física teórica ou passar para a computação, preferindo a segunda. Entretanto, continuou seus estudos de física na Universidade de Leiden como formalidade, até graduar-se em 1956. Logo após mudou-se por definitivo para Amsterdão. Edsger casou-se com Maria em 1957.
Um dos primeiros algoritmos desenvolvidos pelo cientista foi uma solução para o problema do caminho mínimo, também conhecido como algoritmo de Dijkstra. Sua intenção original era demonstrar o poder de processamento do ARMAC em sua inauguração. Apesar de concluído em 1956, foi publicado somente em 1959 por falta de mídia especializada para divulgação. Até então os algoritmos existentes para a solução possuíam complexidade cúbica em relação à quantidade de nós envolvidos, enquanto o algoritmo de Dijkstra possuía complexidade quadrada, potencialmente menor que os anteriores. Esse algoritmo quanto uma solução para o problema da árvore de extensão mínima foram publicados por Dijkstra juntos. Ainda no Centro de Matemática, trabalhou junto com J. A. Zonneveld no desenvolvimento do primeiro compilador para ALGOL 60, uma linguagem da qual ele era fã. Esse trabalho durou em oito meses, entre dezembro de 1959 e agosto de 1960. Entre as novas funcionalidades da linguagem, uma das que mais o interessavam era a recursividade, que inclusive resultou em um artigo publicado em 1960. Nesse trabalho, Dijkstra introduziu o conceito de pilha na tradução de programas recursivos. No final de 1959 Dijkstra recebeu o grau de doutor.

### Universidade de Tecnologia de Eindhoven

Dijkstra foi nomeado professor de matemática na Universidade Eindhoven de Tecnologia a partir de 1962. Na época não havia uma departamento separado para ciência da computação. Nessa época ele construiu o sistema operacional THE, introduzindo vários conceitos que serviram de base para a construção de sistemas operacionais posteriores, como camadas de abstração e semáforos para lidar com concorrência de recursos. Esse projeto é considerado como o primeiro sistema operacional concebido a ter processos sequenciais cooperativos, sincronizados explicitamente.
Sua posição contrária ao comando goto em programação de computadores, até então um recurso bastante comum na programação da época, culminou no artigo de 1968 "A Case against the GO TO Statement". Dijkstra alegava que o artifício era motivo para vários erros de programação. O artigo é considerado como um grande passo para a depreciação do comando em prol de estruturas de controle como o laço de repetição. O título mais famoso para o artigo, "Go To Statement Considered Harmful", não foi um trabalho de Dijkstra mas de Niklaus Wirth, então editor da Communications of the ACM, onde o artigo foi publicado.
Estudos da mesma época realizados pelo cientista relacionavam a produtividade do software ao rigor no desenvolvimento; também apontavam as vantagens na modularização de software, de forma que um componente seja conhecido somente por sua interface e não por sua implementação. O principal interesse de Dijkstra era a verificação formal. A opinião prevalecente na época era que deveria-se escrever um programa e então fornecer uma prova matemática sobre sua natureza correta. Dijkstra percebeu que as provas resultantes eram longas e complexas, e não indicavam como os programas deveriam ser desenvolvidos. Um método alternativo era a derivação de programa. Começa-se com uma especificação do que o programa deve realizar e aplica-se transformações matemáticas na especificação até que ela se torne um programa que pode ser executado. O resultado final e conhecido como um programa correto por construção.

### Burroughs Corporation

Em 1972 recebeu o Prêmio Turing por suas contribuições com o ALGOL e no campo de linguagens de programação. Dijkstra trabalhou como pesquisador para a Burroughs Corporation a partir de agosto de 1973. Nessa época ele já era conhecido internacionalmente, sendo frequentemente convidado para lecionar em diferentes partes do mundo. Tais visitas à diferentes lugares eram usadas para que ele pudesse entrar em contato outros cientistas da computação, para servir como mentor de jovens cientistas e para aprimorar seus habilidades com a língua inglesa. Durante essa época Dijkstra escreveu o maior número de artigos de pesquisa, escrevendo quase quinhentos documentos da série EWD. Alguns dos conceitos fundamentados pelo cientista durante essa época incluem o deadlock e sistemas com auto-estabilização (na área de sistemas distribuídos), uma forma alternativa de garantir a confiança de um sistema.

### Universidade do Texas

Edger assumiu a cadeira de ciência da computação na Universidade do Texas em Austin, Estados Unidos, em 1984. Durante esse período ele dedicou-se a servir como mentor para diversos universitários, e definiu conceitos sobre como a ciência da computação deveria ser ensinada. Em 1989 foi publicado um artigo com conclusões de Dijkstra sobre o assunto.

### Últimos anos

Dijkstra trabalhou em Austin até sua aposentadoria, em novembro de 1999. Para marcar a ocasião e comemorar seus mais de quarenta anos de contribuições seminais à ciência da computação, o Departamento de Ciências da Computação organizou um simpósio, realizado em seu aniversário de 70 anos em maio de 2000.
Dijkstra e sua esposa retornaram de Austin para sua casa original em Nuenen (Holanda), onde ele descobriu que tinha apenas meses de vida. Ele disse que queria se aposentar em Austin, Texas , mas morrer na Holanda. Dijkstra morreu em 6 de agosto de 2002, após uma longa luta contra o câncer. Ele e sua esposa Maria (Ria) Debets deixaram seus três filhos: Marcus, Femke e o cientista da computação Rutger M. Dijkstra.

### Morte

Aposentou-se a partir de 2000. Faleceu em Nuenen, Países Baixos, em 6 de agosto de 2002, após longa luta contra o câncer.

## Impactos Científicos

Como pioneiro teórico inicial em muitas áreas de pesquisa da ciência da computação, Dijkstra ajudou a moldar a nova disciplina, tanto da perspectiva da engenharia quanto da acadêmica Muitos de seus artigos são a fonte de novas áreas de pesquisa. Muitos conceitos que agora são padrão na ciência da computação foram identificados pela primeira vez por Dijkstra e / ou ostentam nomes cunhados por ele. Vários problemas importantes também foram formulados e resolvidos por ele. Uma pesquisa de 1994 com mais de mil professores de ciência da computação foi realizada para obter uma lista dos 38 trabalhos acadêmicos mais influentes no campo, e Dijkstra é o autor de cinco artigos.
Durante seus mais de quarenta anos como cientista da computação, que incluiu posições na academia e na indústria, Dijkstra fez inúmeras contribuições seminais para muitas áreas da ciência da computação, incluindo construção de compiladores, sistemas operacionais, programação simultânea (computação simultânea), programação distribuída (distribuição distribuída). paradigma e metodologia de programação, pesquisa em linguagem de programação, design de programas, desenvolvimento de programas, verificação de programas, princípios de engenharia de software, design de algoritmos e fundamentos filosóficos da programação e ciência da computação. Além disso, Dijkstra estava intensamente interessado em ensinar ciência da computação e nas relações entre a ciência acadêmica da computação e a indústria de software.