Articles : Décès du père du Fortran et de la notation BNF
Posté par Sytoka Modon (page perso, ). Modéré le 23 mars 2007.
John Backus est décédé samedi 17 mars à l'âge de 82 ans. Pionnier de l'informatique, il a forgé les bases de l'informatique dans les années 50-60 au travers de quelques travaux que nous avons tous plus ou moins utilisé :
NdM : les compilateurs libres gfortran et Free Pascal sont disponibles, pas encore Algol dans la GNU_Compiler_Collection ?
- Le Fortran développé entre 1954 et 1957 par lui et son équipe au sein d'IBM. Le Fortran, que l'on aime ou que l'on aime pas, a su par la suite évoluer et sa dernière mouture est toujours très utilisée en calcul intensif.
- La notation BNF (Backus-Naur Form) en 1959 permet de décrire la grammaire d'un langage de programmation indépendamment de ce langage. Cette notation est toujours très utilisée de nos jours. A l'origine, John Backus l'a introduite pour définir l'Algol.
- Il est en effet l'un des membres actif du comité international de l'Algol 58, puis de l'Algol 60 . Ce langage a rapidement été utilisé dans les années 60 par les universitaires pour décrire des algorithmes. Il a, par exemple, été le premier à utiliser la paire : "begin end" pour délimiter les blocs. Aujourd'hui au musée des langages, il a fortement marqué ses successeurs, dont le Pascal.
NdM : les compilateurs libres gfortran et Free Pascal sont disponibles, pas encore Algol dans la GNU_Compiler_Collection ?
John Backus sur Wikipedia (621 hits)
L'annonce de presse du Monde Informatique (239 hits)
Le Fortran (320 hits)
La notation BNF (343 hits)
L'Algol (216 hits)
Le Pascal (172 hits)
> Lire la dépêche (43 commentaires, moyenne: 3,7).
Vous avez demandé le commentaire #815301.




Article du Turing Award
J'en profite pour donner le lien vers sa "Turing Award Lecture" que je trouve extrêmement intéressante et facile à lire : http://www.stanford.edu/class/cs242/readings/backus.pdf
En deux mots, il explique pourquoi les langages basés sur un ordinateur vu comme une machine de Von Neumann (un cpu, une mémoire et un bus de communication entre les deux) présentent de nombreux défauts, et pourquoi selon lui les langages fonctionnels sont extrêmement prometteurs.
C'est pas très long et bien écrit, bien argumenté et sans trop de trolls, donc si le sujet vous intéresse, n'hésitez pas à y jeter un oeil.
Vous devriez vraiment visiter Aperture First !
[^]Re: Article du Turing Award
>et pourquoi selon lui les langages fonctionnels sont extrêmement prometteurs.
> [ coupé ]
> sans trop de trolls
Pour rétablir la moyenne en troll:
Petit coups d'oeil a la date du papier: 1978.
En pourcentage, on utilise probablement encore moins les langages fonctionnels en 2007 qu'en 1978, c'est une promesse longue à réaliser.
Bon plus sérieusement, il est vrai que certains concept promus par les langages fonctionnels ont été adopté par des langages utilisé par le commun des mortels: Ruby, etc.
Et Scala est probablement un des seuls langages fonctionnel (hybride en fait) qui m'a intéressé, les autres bof..
[^]Re: Article du Turing Award
Ce n'est pas parce que windows est utilisé par 98% des ordinateurs alors qu'on a Unix depuis au moins 30 ans que Windows est meilleur ou je ne sais quoi.
Par ailleurs, des langages comme Haskell, scheme ou OCaml sont utilisés par le commun des mortels. Pas autant que C++, java ou même python, mais tout de même de manière non-négligeable.
Vous devriez vraiment visiter Aperture First !
[^]Re: Article du Turing Award
en fait la notion de programmation fonctionnelle s'est retrouve de maniere implicite dans des langages comme le C ( et par consequent le C++, le Java, le C# etc...).
Ces langages utilisent un mecanisme d'evaluation d'expression tres puissant qui leur permet de reproduire tout simplement une notion de programmation fonctionnelle.
Pour resumer, la notion de "procedure" n'existe pas en C mais seulement la fonction. Alors pour aider un peu on a ajouter des function dite void qui ne renvoit rien et qui font comme les procedures (au sens pascal par exemple). Ca n'en reste pas moins des fonctions. Pour le reste tout est fonction et un expression et simplement la combinaison de fonctions. Ceci permet l'evaluation d'expression composees tres complexes et qui s'optimisent fortement. C'est une des forces mal connues du C. Essayez l'exercice qui consistent a concevoir la majeure partie d'un algorithme C en terme d'evaluation d'expressions (comme vous le feriez en Lisp).
Je vous conseille la lecture d'un bouquin bien vieux maintenant mais qui reste une reference agreable sur le C, qui s'appelle simplement le langage C aux editions Dunod ecrit par un D. Galland. La premiere partie de ce bouquin prend le contre-pied de la plupart des autres bouquins en presentant d'abord l'evaluation des expressions en C puis ensuite les instructions de controle de flot (for, if, while, etc...). Ca donne une idee de cette notion tres puissante d'expression.
Ce que je dis s'applique en gros aux autres langages comme C++, Java, C# et tout ceux qui se sont fortement appuyes sur le C (c'est aussi sans doute valable ailleurs mais je ne sais pas).
De la a dire que le C = Lisp, il n'y a qu'un pas a franchir et je le fais volontiers dans de nombreux cas. :-)
[^]Re: Article du Turing Award
ouais enfin le principe de la programmation fonctionnelle, est qu'une fonction renvoie systematiquement le meme resultat en sortie si tu lui fournis la meme entree. Ca s'approche clairement plus de la notion de fonction en mathematiques...
En C pour faire ca il faut se priver d'utiliser des variables statiques dans tes fonctions, ce qui est relativement contraignant, et que le compilateur puisse le detecter pour faire des optimisations du genre func(a,b) + func(a,b) equivalent a 2 *func(a,b)
[^]Re: Article du Turing Award
\o/ gcc
int func (int, int) __attribute__ ((pure));
mes 2 cents
[^]Re: Article du Turing Award
Tres honnetement, ton raisonnement me semble extremement tire par les cheveux. Le C est, me semble-t-il, totalement inadapte a la programmation fonctionnelle.
L'element de base indispensable (en pratique) a la programmation fonctionnelle, c'est la possibilite de definir des fonctions a la volee (on appelle ca lambda-expressions), et ca le C ne sait pas faire (contrairement au Python, par exemple).
Sans vouloir t'offenser, je ne suis pas sur que tu ais vraiment compris ce qu'est la programmation fonctionnelle, car ca n'a rien avoir avec le fois de pouvoir definir des fonctions, comme ton 3eme paragraphe le suggere. Ca, tous les langages le font. Cela dit, j'ai peut-etre simplement mal interprete ton message.
Ce qui caracterise la programmation fonctionnelle, c'est que _tout_ est fonction, au sens strict du terme, c'est a dire sans effet de bord. En particulier, la notion d'affectation de variable n'existe pas. Je renvoie le lecteur a l'article "Programmation Fonctionnelle" de Wikipedia, il n'est pas trop mal fait.