Llenguatge B

De Viquipèdia
Dreceres ràpides: navegació, cerca

B fou el nom d'un llenguatge de programació desenvolupat als Laboratoris Bell, predecessor del llenguatge de programació C.

Fou majoritàriament un treball de Ken Thompson amb contribucions de Dennis Ritchie. Va aparèixer primer sobre l'any 1969.

Història[modifica | modifica el codi]

B fou essencialment una simplificació del llenguatge BCPL, eliminant qualsevol component que Thompson considerés prescindible de manera que capigués 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àctes d'un programa típic).

A l'igual que BCPL, B només tenia un tipus de dades, que corresponia amb una paraula de màquina. La majoria d'operadors ho manejaven com un enter; per exemple + (suma), - (resta), * (multiplicació) ó / (divisió). Altres operadors ho tractaven com una direcció 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ó[modifica | modifica el codi]

La naturalesa sense tipus de B tenia sentit en el Honeywell, en la PDP-7 i moltes altres computadores antigues, 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 de computadores modernes suportaven. Començant el 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 fou l'addicció de tipus de dades diferents per a les variables.

Durant 1971 i 1972 B evolucionà primer en "Nou B" (New B, NB) i després en C. Més tard, a principis 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àndar" (standard I/O ó stdio) del llenguatge C.

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 suficientment bo com per a fer el treball.

L'enormement influent AberMUD fou escrit en B.

Nom[modifica | modifica el codi]

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[modifica | modifica el codi]

La següent funció d'exemple està presa de l'Users' Reference to B per Ken Thompson:

/* La següent funció imprimeix un número no-negatiu, n, en
 base b, on 2<=b<=10. Aquesta rutina utilitza el fet
 que en el joc de caràcters ANSCII, els digits 0 a 9
 tenen valors de codi sequencials.
 */

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

 if(a=n/b) /* asignació, no comprovació d'igualtat */
 printn(a, b); /* recursiu */
 putchar(n%b + '0');
}

Aquest programa d'exemple en B utilitza la funció anterior per a sumar tres números imprimint per pantalla el resultat.

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

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

Enllaços externs[modifica | modifica el codi]