# Llenguatge B

B és el nom d'un llenguatge de programació desenvolupat als Laboratoris Bell l'any 1969 i es considera el predecessor del llenguatge de programació C. Fou majoritàriament desenvolupat per Ken Thompson amb contribucions de Dennis Ritchie.

## Història

El llenguatge B és essencialment una simplificació del llenguatge BCPL, eliminant qualsevol component que Thompson considerés prescindible per tal de fer-lo caber en la memòria de les minicomputadores de l'època. El llenguatge també va incloure alguns canvis d'acord amb les preferències de Thompson (la majoria per a reduir el nombre de caràcters d'un programa típic).
Igual que BCPL, B només tenia un tipus de dades, que corresponia amb una paraula de màquina. La majoria d'operadors ho consideraven com un enter; per exemple + (suma), - (resta), * (multiplicació) o / (divisió). Altres operadors tractaven la paraula de màquina com una adreça de memòria a la qual fer referència: un punter. B oferia operadors que permetien obtenir la direcció d'una determinada variable, o escriure en la direcció apuntada per una variable punter.
Les primeres implementacions foren per a les minicomputadores PDP-7 i PDP-11 executant versions antigues de UNIX; i per als mainframes de 36 bits Honeywell Bull executant el sistema GCOS.

## Evolució

La naturalesa sense tipus de B tenia sentit en el Honeywell, en la PDP-7 i molts altres ordenadors antics, però fou un problema en la PDP-11 perquè era difícil accedir a tipus de caràcters de dades que la PDP-11 i la majoria d'ordinadors moderns suportaven. A principi del 1971, Ritchie va fer canvis al llenguatge al mateix temps que convertia el seu compilador per a produir llenguatge màquina nadiu. El més notable d'aquests canvis fou l'addicció de tipus de dades diferents per a les variables.
Durant el 1971 i 1972 el llenguatge B evolucionà primer en «Nou B» (New B, NB) i després en C. Més tard, a principi de 1973, va ser afegit un preprocessador a petició d'Alan Snyder. L'esforç va ser suficientement complet en aquest any com perquè durant l'estiu el nucli del sistema UNIX per a la PDP-11 fos reescrit en C.
Durant el període 1972-1973 va haver la necessitat de portar-lo al Honeywell 635 i a l'IBM 360/370, de manera que Mike Lesk va escriure el "paquet d'E/S portable" que es convertiria en l'"E/S estàndard" (standard I/O o stdio) del llenguatge C.
El llenguatge B es va continuar utilitzant fins als anys 90 en els mainframes Honeywell i en altres sistemes per una varietat de raons, incloent-hi l'ús de maquinari limitat en aquests sistemes; llibreries extensives, eines; o simplement perquè era prou bo com per a fer el treball.
L'enormement influent AberMUD fou escrit en B.

## Nom

B fou enormement influenciat per BCPL, i el seu nom fou probablement una contracció de "BCPL". Encara que és possible que el seu nom s'hagués basat en el llenguatge de programació Bon, un llenguatge més antic i no relacionat amb B, dissenyat per Thompson per al seu ús en Multics.

## Exemples

La següent funció d'exemple està presa de l'Users' Reference to B per Ken Thompson:
Aquest programa d'exemple en B utilitza la funció anterior per a sumar tres números imprimint per pantalla el resultat.

## Referències

* ↑ Ritchie, Dennis M. «The Development of the C Language». ACM SIGPLAN Notices, 28, 3, 01-03-1993, pàg. 201–208. Arxivat de l'original el 2013-06-22. DOI: 10.1145/155360.155580 [Consulta: 17 novembre 2006]. Arxivat 2015-03-28 a Wayback Machine.

## Enllaços externs

* The Development of the C LanguageArxivat 2013-05-23 a Wayback Machine., Dennis M. Ritchie. Posa B en el context de BCPL i C.
* Users' Reference to B Arxivat 2006-07-06 a Wayback Machine., Ken Thompson. Descriu la versió per a PDP-11.
* The Programming Language B Arxivat 2007-08-08 a Wayback Machine., S. C. Johnson & B. W. Kernighan, Technical Report CS TR 8, Bell Labs (Gener 1973). Descriu la versió per a GCOS.