Llenguatge B

De Viquipèdia
Dreceres ràpides: navegació, cerca
B
Aparegut l'any: ~1969
Desenvolupador: Kenneth L. Thompson, Dennis M. Ritchie
Tipus de dades: sense tipus (tot és considerat una paraula)
Majors implementacions múltiples
Influenciat per: BCPL, PL/I
Ha influenciat: C
Sistema operatiu: multiplataforma
Extensió dels fitxers: .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.[1]

Història[modifica | modifica el codi]

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ó[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. A principis 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 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à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 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);
}

Referències[modifica | modifica el codi]

  1. Ritchie, Dennis M.. «The Development of the C Language». ACM SIGPLAN Notices, 28, 3, març 1993, pàg. 201–208. DOI: 10.1145/155360.155580.

Enllaços externs[modifica | modifica el codi]