B (langage)

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher
Page d'aide sur l'homonymie Ne doit pas être confondu avec le langage formel B utilisé dans la Méthode B

Le langage de programmation B est un langage depuis longtemps obsolète qui a représenté la transition entre BCPL et le langage C. C'est principalement l'œuvre de Ken Thompson et il apparut pour la première fois en 1969 environ.

Description[modifier | modifier le code]

C'était en fait le BCPL privé de tout ce que Thompson pensait ne pas être essentiel, afin de pouvoir être utilisé sur de petits ordinateurs et avec quelques changements pour correspondre aux goûts de Thompson (principalement réduire le nombre de caractères dans un programme).

Comme le BCPL et le Forth, le B avait un seul type de donnée, le « mot » (word) d'ordinateur. La plupart des opérateurs (+, -, *, /) le considéraient comme un entier (integer) mais d'autres comme une adresse mémoire. Sur d'autres points, il pourrait se faire passer pour une ancienne version du C. Quelques bibliothèques de fonctions existaient, dont certaines ressemblaient vaguement aux fonctions d'entrée-sortie de la bibliothèque standard du C.

Historique[modifier | modifier le code]

Les premières implémentations étaient pour les mini-ordinateurs de DEC, PDP-7 et PDP-11 et ont été développées en même temps que UNIX.

Le langage B a été implémenté sur les ordinateurs de la série Honeywell 6000 et leurs successeurs (mainframes) par une équipe de l'université de Waterloo, dans l'Ontario, au Canada, afin de pouvoir écrire pour le time-sharing de ces machines un succédané des commandes UNIX baptisé UW-Tools. Le compilateur B et les UW-Tools étaient distribués gratuitement en France par Bull, jusque vers l'année 2000.

D'après Ken Thompson, le B a été grandement influencé par BCPL, mais le nom B lui-même n'a rien à voir : c'était en fait une évolution d'un ancien langage, Bon, du nom de l'épouse de Ken Thompson, prénommée Bonnie.

Exemple de code[modifier | modifier le code]

L'exemple suivant est tiré de la référence utilisateur au langage B écrite par Ken Thompson[1]

/* The following function will print a non-negative number, n, to
   the base b, where 2<=b<=10.  This routine uses the fact that
   in the ASCII character set, the digits 0 to 9 have sequential
   code values.  */
 
printn(n,b) {
        extrn putchar;
        auto a;
 
        if(a=n/b) /* assignment, not test for equality */
                printn(a, b); /* recursive */
        putchar(n%b + '0');
}

Notes et références[modifier | modifier le code]

  1. (en) Ken Thompson, « Users' Reference to B » [html], Bell Laboratories,‎ 7 janvier 1972 (consulté le 11 avril 2014)

Voir aussi[modifier | modifier le code]

Articles connexes[modifier | modifier le code]