Après des études de physique théorique, il s’engage dès 1955 dans le domaine de l’informatique alors naissante, dont il est l’un des pionniers les plus éclairés. Parmi ses contributions se trouve un algorithme de calcul du plus court chemin dans les graphes, connu sous le nom d’algorithme de Dijkstra.
Dijkstra a joué un rôle important dans le développement du langage Algol à la fin des années 1950 et développé ensuite « la science et l’art des langages de programmation », contribuant grandement à notre compréhension de leur structure, de leur représentation et de leur implémentation ». C’est aussi un adepte du bel algorithme, y compris pour des sujets difficiles à traiter en programmation structurée comme les perles de Dijkstra (disposer des perles de trois couleurs sur un fil de façon à ce qu’il n’y ait jamais deux séquences adjacentes identiques).
Dijkstra, connu pour son caractère difficile et son intransigeance, était réputé pour ses aphorismes, lesquels résumaient sa vision de la science informatique.
« Tester un programme peut démontrer la présence de bugs, jamais leur absence. »
« Se demander si un ordinateur peut penser est aussi intéressant que de se demander si un sous-marin peut nager. »
« La programmation par objets est une idée exceptionnellement mauvaise qui ne pouvait naître qu’en Californie. »
« Les progrès ne seront possibles que si nous pouvons réfléchir sur les programmes sans les imaginer comme des morceaux de code exécutable. »
« Autrefois les physiciens répétaient les expériences de leurs collègues pour se rassurer. Aujourd’hui ils adhèrent à FORTRAN et s’échangent leurs programmes, bugs inclus. »
« À propos des langages : il est impossible de tailler un crayon avec une hache émoussée. Il est vain d’essayer, à la place, de le faire avec dix haches émoussées. »
« Il est pratiquement impossible d’enseigner la bonne programmation aux étudiants qui ont eu une exposition antérieure au BASIC : comme programmeurs potentiels, ils sont mentalement mutilés, au-delà de tout espoir de régénération. »
« Le plus court chemin d’un graphe n’est jamais celui que l’on croit, il peut surgir de nulle part, et la plupart du temps, il n’existe pas. »
L’aphorisme « L’informatique n’est pas plus la science des ordinateurs que l’astronomie n’est celle des télescopes. » souvent attribué à Dijkstra, est en fait une phrase de Michael R. Fellows et Ian Parberry dans un article du journal « Computing Research News »
L’instruction GOTO
Constatant les dégâts provoqués par l’usage incontrôlé de l’instruction goto en programmation, il rédige en 1968 pour les Communications of the ACM un article qu’il nomme A Case against the GOTO Statement (Un Procès contre l’instruction GOTO). Voulant publier rapidement l’article sous la forme d’une lettre à l’éditeur, l’éditeur Niklaus Wirth le rebaptise « Go To Statement Considered Harmful » (« L’Instruction Go To considérée comme nuisible »).
Ce nouveau titre, tout autant que le propos de l’article, devient alors célèbre dans le milieu de l’informatique. Les titres de la forme X considered harmful se multiplient, jusqu’à un « Dijkstra considered harmful ».
L’instruction goto est rapidement marginalisée, et presque éliminée, par la programmation structurée (concept de Wirth et Dijkstra, présenté entre autres dans EWD). En programmation structurée, le goto est remplacé par des instructions comme if … then … else …, while … do, repeat … until qui furent introduites par Wirth dans Algol W : chaque instruction contient une seule entrée et une seule sortie, ce qui rend enfin possible des tests systématiques exhaustifs impossibles avec le « code spaghetti ».
Des conditions peuvent aussi être imposées à l’entrée unique et des caractéristiques postulées à la sortie unique, ce qui ouvre la porte à des outils ajoutés à la syntaxe, comme assert (voir Logique de Hoare) et plus tard à la programmation par contrat du langage Eiffel.