Llenguatge B

De Viquipèdia

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.

Taula de continguts

[edita] Història

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 reduïr el nombre de caràctes d'un programa típic).

Al 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 que 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 executant el sistema GCOS.

[edita] Evolució

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 produïr llenguatge màquina nadiu. El més notable fou l'adicció 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 per a que durant l'estiu el nucli del sistema UNIX per a la PDP-11 fos reescrit en C.

Durant el periode 1972-1973 va haber la necesitat de portar-lo al Honeywell 635 i a l'IBM 360/370, així 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 els anys 90 en els mainframes Honeywell i en altres sistemes per una varietat de raons, incloent l'ús de hardware limitat en aquests sistemes; llibreries extensives, eines; o simplement perquè era suficientment bo com per a fer el treball.

L'enormement influencial AberMUD fou escrit en B.

[edita] Nom

B fou enormement influenciado 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, disenyat per Thompson per al seu ús en Multics.

[edita] Exemples

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( ) {
  auto a, b, c, sum;
  extrn printn;

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

[edita] Enllaços externs