factograf
CA
Sign in

llenguatge de programació

Llenguatge B

All data from the card 11
Tipus
llenguatge de programació i llenguatge de programació procedural
Data de creació
~1969
Disseny
Ken Thompson
Desenvolupador
Kenneth L. Thompson, Dennis M. Ritchie
Paradigma de programació
programació procedimental
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.

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:

/* 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) /* assignació, 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

  • 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.

Read next

In 37 languages

Text from Wikipedia, CC BY-SA 4.0 · Source article