Llenguatge B
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.[1]
Història
[modifica]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]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
[modifica]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]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); }
Referències
[modifica]- ↑ Ritchie, Dennis M. «The Development of the C Language». ACM SIGPLAN Notices, 28, 3, 3-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
[modifica]- 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.