Linguaxe de programación B
B | |
---|---|
Paradigma | imperativo (procedural) |
Data | 1969 |
Deseñador | Ken Thompson, Dennis Ritchie |
Postas en funcionamento | múltiples |
Influído por | BCPL |
Influíu | C |
B é o nome dun linguaxe de programación desenvolvido nos Bell Labs, predecesor do linguaxe de programación C.
Foi maioritariamente un traballo de Ken Thompson con contribucións de Dennis Ritchie. Apareceu primeiro sobre o ano 1969.
Historia
B foi esencialmente unha simplificación da linguaxe BCPL, eliminando calquera compoñente que Thompson considerase prescindible de forma que coubese na memoria das minicomputadoras da época. A linguaxe tamén incluíu algúns cambios de acordo coas preferencias de Thompson (a maioría para reducir o número de caracteres dun programa típico).
Do mesmo xeito que BCPL, B só tiña un tipo de datos, que correspondía cunha palabra de máquina. A maioría de operadores manexábano como un enteiro; por exemplo + (suma), - (resta), * (multiplicación) ó / (división). Outros operadores tratábano como unha dirección de memoria á que facer referencia: un punteiro. B ofrecía operadores que permitían obter a dirección dunha determinada variable, ou escribir na dirección apuntada por unha variable punteiro.
As primeiras implementaciones foron para as minicomputadoras PDP-7 e PDP-11 executando versións antigas de UNIX; e para os mainframes de 36 bits Honeywell executando o sistema GCOS.
Evolución
A natureza sen tipos de B tiña sentido no Honeywell, na PDP-7 e moitas outras computadoras antigas, pero foi un problema na PDP-11 porque era difícil acceder a tipos de caracteres de datos que a PDP-11 e a maioría de computadoras modernas soportaban. Comezando en 1971, Ritchie fixo cambios á linguaxe ao mesmo tempo que convertía a súa compilador para producir linguaxe de máquina nativo. O máis notable foi a adición de tipos de datos diferentes para as variables.
Durante 1971 e 1972 B evolucionou primeiro en Novo "B" (New B, NB) e despois en C. Máis tarde, a principios de 1973, foi engadido un preprocesador a petición de Alan Snyder.
O esforzo foi o suficientemente completo neste ano como para que durante o verán o núcleo do sistema UNIX para a PDP-11 fose reescrito en C.
Durante o período 1972-1973 houbo a necesidade de portalo ao Honeywell 635 e ao IBM 360/370, polo que Mike Lesk escribiu o "paquete de E/S portable" que se convertería na "E/S estándar" (standard I/Ou ó stdio) da linguaxe C.
B continuouse utilizando ata os anos 90 nos mainframes Honeywell e en certos sistemas embedidos por unha variedade de razóns, incluíndo o uso de hardware limitado nestes sistemas; librerías extensivas, ferramentas; ou simplemente porque era o suficientemente bo como para facer o traballo.
O enormemente influencial AberMUD foi escrito en B.
Nome
B foi enormemente influenciado por BCPL, e o seu nome foi probablemente unha contracción de BCPL "". Con todo é posible que o seu nome baseouse no linguaxe de programación Bon, unha linguaxe máis antiga e non relacionado con B, deseñado por Thompson para o seu uso en MULTICS.
Exemplos
A seguinte función de exemplo está tomada do Users' Reference to B por Ken Thompson:
/* A seguinte función imprime un número non-negativo, n, en base b, onde 2<=b<=10. Esta rutina utiliza o feito de que no xogo de carácteres ANSCII, os digitos 0 a 9 teñen valores de código secuenciales. */ printn(n,b) { extrn putchar; auto a; if(a=n/b) /* asignación, non comprobación de igualdade */ printn(a, b); /* recursivo */ putchar(n%b + '0'); }
Este programa de exemplo en B utiliza a función anterior para sumar tres números imprimindo por pantalla o resultado.
main( ) { extrn printn; auto a, b, c, sum; a = 1; b = 2; c = 3; sum = a+b+c; printn(sum,10); }
Ligazóns externas
- The Development of the C LanguageArquivado 23 de maio de 2013 en Wayback Machine., Dennis M. Ritchie. Pon B no contexto de BCPL e C.
- Users' Reference to B, Ken Thompson. Describe a versión para PDP-11.
- The Programming Language B, S. C. Johnson & B. W. Kernighan, Technical Report CS TR 8, Bell Labs (Xaneiro 1973). Describe a versión para GCOS.