B (linguagem de programação)

Origem: Wikipédia, a enciclopédia livre.
(Redirecionado de Linguagem de programação B)
Ir para: navegação, pesquisa
NoFonti.svg
Este artigo ou se(c)ção cita uma ou mais fontes fiáveis e independentes, mas ela(s) não cobre(m) todo o texto.
Por favor, melhore este artigo providenciando mais fontes fiáveis e independentes e inserindo-as em notas de rodapé ou no corpo do texto, conforme o livro de estilo.
Encontre fontes: Googlenotícias, livros, acadêmicoScirusBing. Veja como referenciar e citar as fontes.


B
Paradigma imperativo
Surgido em 1969
Criado por Ken Thompson[1] e Dennis Ritchie[1]
Influenciada por BCPL
Influenciou C

B é uma linguagem de programação na qual pertence ao paradigma imperativo e que foi desenvolvida nos Bell Labs de 1969, apesar de que hoje já tenha se tornado obsoleta, foi a predecessora da linguagem de programação C, que até hoje é uma das mais populares. Foi maioritariamente um trabalho de Ken Thompson com contribuições de Dennis Ritchie, projetada e implementada em Murray Hill, New Jersey nos Estados Unidos.

A linguagem foi projetava para ser recursiva, não-numérica e aplicação independentes da máquina.[2]

História[editar | editar código-fonte]

Ken Thompson e Dennis M. Ritchie, criadores da linguagem B

B foi essencialmente uma simplificação da linguagem BCPL, quitando qualquer componente que Thompson considerasse prescindível de jeito que coubesse na memória dos minicomputadores da época, é uma linguagem recomendada para computações não-numéricas. Também se realizaram algumas mudanças segundo as preferências de Thompson (a maioria das quais eram para reduzir o número de caracteres em um programa típico).

Como BCPL, B só tinha um tipo de dado, que correspondia com uma palavra de máquina. A maioria de operadores o manipulavam como um inteiro; por exemplo + (adição), - (subtracção), * (multiplicação) ou / (divisão). O sistema de tipos empregado em B se caracteriza por tipagem fraca, dinâmica e também implícita.

Outros operadores o manipulavam como um endereço de memória ao que fazer referência: um Ponteiro. B oferecia operadores que permitiam obter o endereço duma determinada variável, ou escrever no endereço apontado por uma variável apontadora ou ponteiro.

As primeiras implementações foram para os minicomputadores PDP-7 e PDP-11 executando versões antigas do UNIX; e para os mainframes de 36 bits Honeywell executando o sistema GCOS.

Evolução[editar | editar código-fonte]

A natureza sem tipos — é dizer, com um só tipo correspondente à palavra de máquina — de B tinha sentido no Honeywell, no PDP-7 e noutros computadores antigos, mas foi um problema no PDP-11 já que era difícil aceder a caracteres individuais, um novo tipo de dado que ofertava o PDP-11 assim como a maioria dos computadores modernos. Começando no 1971, Ritchie fez mudanças à linguagem ao mesmo tempo que convertia o seu compilador para produzir linguagem de máquina de forma nativa. A mais notável foi a adição de tipos de dado diferentes para as variáveis.

A linguagem B foi implementada no PDP-11, que foi uma máquina da DEC usada para fazer o primeiro arcade operado por moedas,com o Jogo Galaxy.

Durante 1971 e 1972 B evolucionou primeiro em Novo B (New B, NB) e depois em C. Mais tarde, começando 1973p, foi adicionado um pré-processador, a petição de Alan Snyder. O esforço foi o suficiente neste ano como para que durante o verão o núcleo do UNIX para o PDP-11 fosse rescrito em C.

Durante o período 1972-1973 foi preciso portá-lo ao Honeywell 635 e ao IBM 360/370, razão pela qual Mike Lesk escreveu o pacote de entrada/saída portável que se trocaria na conhecida E/S padrão (standard I/O ou stdio) da linguagem C.

B seguiu-se a utilizar até os anos 1990 nos mainframes Honeywell e em certos sistemas embarcados por uma variedade de razões, incluindo o uso de hardware limitado nesses sistemas; bibliotecas, ferramentas, problemas de custos excessivos; ou simplesmente porque era o suficientemente bom como para fazer o trabalho.

O AberMUD, de muita influência, foi escrito em B.

Nome[editar | editar código-fonte]

B teve uma enorme influência de BCPL, e o seu nome foi provavelmente uma contracção de BCPL. Porém, é possível que o seu nome baseara-se no da linguagem de programação Bon, uma linguagem mais antiga e não relacionada com B, desenhada por Thompson para usar-se no MULTICS.[1]

Exemplos[editar | editar código-fonte]

Um exemplo simples, chamado de programa Olá Mundo.

main( ) {
 extrn a, b, c;
 putchar(a); putchar(b); putchar(c); putchar('!*n');
}
 
a 'hell';
b 'o, w';
c 'orld';

Ou, equivalente:

main() {
   putchar('Olá, Mundo!*n');
}

Programa que imprime os N primeiros números perfeitos, onde N é a entrada do usuário:

main()
{
    auto n,num,soma,cont;
 
    num = 0;	
    cont = 0;
 
    printf( "Digite um valor para N: *n*n");
 
    n=getchar();
 
    printf( "\nOs primeiros numeros perfeitos sao:\n");
 
    while (cont != n);
    {
        num =num+1;
        soma = 0;
		auto i=1;
        while(i <= num-1)
        {
            if( (num % i) == 0 )
            {
                soma =soma+ i;
            }
	    i=i+1;
        }
        if ( soma == num )
        {
            printf("%d*n",soma);
            cont =cont+1;
        }
    }
}

A seguinte função de exemplo está tirada do Users' Reference to B por Ken Thompson:

/* A seguinte função imprime um número não-negativo, n, na
   base b, no qual 2<=b<=10. Esta rotina basea-se no facto
   de que no jogo de caracteres ASCII,  os dígitos do 0 ao
   9 têm valores de código sequenciais.
 */
 
printn(n,b) {
        extrn putchar;
        auto a;
 
        if(a=n/b) /* atribuição, não comprovação de igualdade */
                printn(a, b); /* recursivo */
        putchar(n%b + '0');
}


Função que substitui cada letra maiúscula de uma string de entrada s, por uma letra minúscula correspondente.

lower(s) {
   auto c,i;
   i = 1;
   while( (c=char(s,++i)) !=*e’ )
      if( c >= ’A’ & c <= ’Z’ ) lchar(s~i~c’A’+’a’);
}


Este programa de exemplo em B emprega a função anterior para somar três números imprimindo no ecrã o resultado.

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

Compilando[editar | editar código-fonte]

Algumas versões do Unix possuem o compilador de B. Para compilar e executar um código B, basta digitar estes comandos no shell, desde que, claro, seu sistema operacional possua este compilador.

SYSTEM? filsys cf bsource,b/1,100/
SYSTEM? filsys cf bhs,b/6,6/,m/r/
SYSTEM? ./bj (w) bsource bhs
SYSTEM? /bhs

Ver também[editar | editar código-fonte]

Ligações externas[editar | editar código-fonte]


Ícone de esboço Este artigo sobre programação de computadores é um esboço. Você pode ajudar a Wikipédia expandindo-o.


Referências

  1. a b c Ritchie, Dennis M. (Maio 1993). "The Development of the C Language". ACM SIGPLAN Notices 28 (3): 201–208. DOI:10.1145/155360.155580.
  2. Thompson, Ken (7 Jan 1972). Users' Reference to B. Bell Laboratories. Página visitada em 26 de junho de 2014.