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.

Ne doit pas être confondu avec le langage formel B utilisé dans la Méthode B

B (langage)
Date de première version
Influencé par BCPL

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.[réf. nécessaire]

Exemple de 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

  1. (en) Ken Thompson, « Users' Reference to B » [html], Bell Laboratories, (consulté le )

Voir aussi

Articles connexes

  • Portail de la programmation informatique
Cet article est issu de Wikipedia. Le texte est sous licence Creative Commons - Attribution - Partage dans les Mêmes. Des conditions supplémentaires peuvent s'appliquer aux fichiers multimédias.