B (langage)
Le langage de programmation B est un langage 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 
B était 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, à savoir le « mot » (word) d'ordinateur. La plupart des opérateurs (+, -, *, /) considéraient le mot comme un entier (integer) tandis que d'autres le voyaient comme une adresse mémoire. Sur d'autres points, B peut être vu comme une version primitive de 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 

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, en 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 une évolution d'un ancien langage, Bon, du nom de l'épouse de Ken Thompson, prénommée Bonnie.

Exemple de code 
L'exemple suivant est tiré de la référence utilisateur au langage B écrite par Ken Thompson
/* 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

Voir aussi

Articles connexes 

Langage de programmation