B (linguaxe de programación)

B é o nome dun linguaxe de programación desenvolvido nos Bell Labs, predecesor do linguaxe de programación C.

Foi maioritariamente un traballo de Ken Thompson con contribucións de Dennis Ritchie. Apareceu primeiro sobre o ano 1969.

Historia

B foi esencialmente unha simplificación da linguaxe BCPL, eliminando calquera compoñente que Thompson considerase prescindible de forma que coubese na memoria das minicomputadoras da época.
A linguaxe tamén incluíu algúns cambios de acordo coas preferencias de Thompson (a maioría para reducir o número de caracteres dun programa típico).

Do mesmo xeito que BCPL, B só tiña un tipo de datos, que correspondía cunha palabra de máquina. A maioría de operadores manexábano como un enteiro; por exemplo + (suma), - (resta), * (multiplicación) ó / (división).
Outros operadores tratábano como unha dirección de memoria á que facer referencia: un punteiro.
B ofrecía operadores que permitían obter a dirección dunha determinada variable, ou escribir na dirección apuntada por unha variable punteiro.

As primeiras implementaciones foron para as minicomputadoras PDP-7 e PDP-11 executando versións antigas de UNIX; e para os mainframes de 36 bits Honeywell executando o sistema GCOS.

Evolución

A natureza sen tipos de B tiña sentido no Honeywell, na PDP-7 e moitas outras computadoras antigas, pero foi un problema na PDP-11 porque era difícil acceder a tipos de caracteres de datos que a PDP-11 e a maioría de computadoras modernas soportaban. Comezando en 1971, Ritchie fixo cambios á linguaxe ao mesmo tempo que convertía a súa compilador para producir linguaxe de máquina nativo.
O máis notable foi a adición de tipos de datos diferentes para as variables.

Durante 1971 e 1972 B evolucionou primeiro en Novo "B" (New B, NB) e despois en C. Máis tarde, a principios de 1973, foi engadido un preprocesador a petición de Alan Snyder.

O esforzo foi o suficientemente completo neste ano como para que durante o verán o núcleo do sistema UNIX para a PDP-11 fose reescrito en C.

Durante o período 1972-1973 houbo a necesidade de portalo ao Honeywell 635 e ao IBM 360/370, polo que Mike Lesk escribiu o "paquete de E/S portable" que se convertería na "E/S estándar" (standard I/Ou ó stdio) da linguaxe C.

B continuouse utilizando ata os anos 90 nos mainframes Honeywell e en certos sistemas embedidos por unha variedade de razóns, incluíndo o uso de hardware limitado nestes sistemas; librerías extensivas, ferramentas; ou simplemente porque era o suficientemente bo como para facer o traballo.

O enormemente influencial AberMUD foi escrito en B.

Nome

B foi enormemente influenciado por BCPL, e o seu nome foi probablemente unha contracción de BCPL "".
Con todo é posible que o seu nome baseouse no linguaxe de programación Bon, unha linguaxe máis antiga e non relacionado con B, deseñado por Thompson para o seu uso en MULTICS.

Exemplos

A seguinte función de exemplo está tomada do Users' Reference to B por Ken Thompson:

/* A seguinte función imprime un número non-negativo, n, en
   base b, onde 2<=b<=10. Esta rutina utiliza o feito de
   que no xogo de carácteres ANSCII, os digitos 0 a 9
   teñen valores de código secuenciales.
 */

printn(n,b) {
        extrn putchar;
        auto a;

        if(a=n/b) /* asignación, non comprobación de igualdade */
                printn(a, b); /* recursivo */
        putchar(n%b + '0');
}

Este programa de exemplo en B utiliza a función anterior para sumar tres números imprimindo por pantalla o resultado.

main( ) {
  extrn printn;
  auto a, b, c, sum;

  a = 1; b = 2; c = 3;
  sum = a+b+c;
  printn(sum,10);
}

Ligazóns externas
 The Development of the C Language, Dennis M. Ritchie. Pon B no contexto de BCPL e C.
 Users' Reference to B, Ken Thompson. Describe a versión para PDP-11.
 The Programming Language B, S. C. Johnson & B. W. Kernighan, Technical Report CS TR 8, Bell Labs (Xaneiro 1973). Describe a versión para GCOS.

B
B