Edsger Dijkstra carregou a ciência da computação nos ombros (2020)

A influência desproporcional de Edsger Dijkstra na ciência da computação leva a uma reflexão sobre como suas ideias moldaram a programação moderna e a pedagogia. Os comentadores destacam seu papel na popularização da programação estruturada e do raciocínio sobre a correção de programas, ao mesmo tempo que revisitam suas famosas críticas a GOTO, COBOL e à programação orientada a objetos à luz das linguagens e práticas atuais. Além dos debates técnicos, muitos recordam seus padrões rigorosos, hábitos de trabalho distintos e aforismos contundentes, ponderando se seu rigor e sua aspereza acabaram ajudando ou prejudicando a área.

Âmbito da influência de Dijkstra

  • Muitos comentadores dizem que associaram imediatamente o título a ele e o veem como uma figura central em CS, à semelhança de gigantes históricos da matemática.
  • Contribuições destacadas: algoritmo do menor caminho, semáforos, programação estruturada, influência no ensino/raciocínio sobre programas.
  • Alguns contestam a grandiosidade do título, argumentando que ele foi uma entre várias figuras-chave, e não “a” pessoa que carregou a CS.

Programação Estruturada, GOTO e Correção

  • Discussão sobre sua defesa do fluxo de controle estruturado e de blocos com “uma única entrada, uma única saída”.
  • Críticos observam que saída única pode forçar código convoluto e entrar em conflito com o estilo comum de “guard clause” e retornos antecipados.
  • Outros enfatizam que o objetivo era a compreensibilidade humana e um raciocínio mais fácil, não garantias formais de correção.
  • GOTO é debatido: versões irrestritas são vistas como prejudiciais ao raciocínio; formas restritas (break/continue/goto/longjmp) são consideradas administráveis, mas ainda arriscadas.

Paradigmas de Programação: FP vs OOP e Além

  • Alguns ligam sua posição anti-GOTO a estilos funcionais modernos (sem saídas antecipadas, recursão, TCO).
  • Debate sobre por que linguagens funcionais são nichadas: um comentador culpa seu estilo “convoluto”, outros contestam isso e enfatizam seus sistemas de tipos fortes e desempenho.
  • Longo fio sobre OOP:
    • Críticas: acoplamento estreito entre dados e comportamento; hierarquias de classes frágeis; dificuldade de evolução de sistemas; “inferno de padrões de projeto”.
    • Defesas: OOP como uma ferramenta útil entre outras, tipagem forte e encapsulamento como vantagens; composição em vez de herança como prática comum.
    • Vários observam que muitos benefícios “de OOP” (composição, interfaces) não são exclusivos de OOP.

Citações, Filosofia e Cultura

  • Muitas citações favoritas foram compartilhadas, tanto admiradas quanto criticadas: sobre COBOL, OOP, contagem de linhas, máquinas pensantes, abstração e “CS vs computadores”.
  • A citação sobre submarinos/“can machines think” provoca debate sobre antropomorfismo, precisão linguística e relevância prática desse tipo de pergunta.
  • Alguns veem seu estilo contundente como revigorante e motivador; outros o veem como emblemático de uma cultura arrogante e excludente que prejudica a área.

Personalidade, Estilo de Trabalho e Anedotas

  • Retratado como escritor intensamente cuidadoso e lento (rascunhos únicos, quase finais; ~3 palavras por minuto), com ênfase profunda em pensar em vez de digitar.
  • Evitava TVs, computadores pessoais e telefones móveis; adorava canetas-tinteiro e uma van-camper apelidada de “Touring Machine”.
  • Múltiplas anedotas o descrevem como exigente quanto à precisão na linguagem e na notação, deixando em alguns colegas um “crítico interno” duradouro moldado por seus padrões.