한국   대만   중국   일본 
B (linguagem de programacao) ? Wikipedia, a enciclopedia livre Saltar para o conteudo

B (linguagem de programacao)

Origem: Wikipedia, a enciclopedia livre.
B
Paradigma imperativo
Surgido em 1969
Criado por Ken Thompson [ 1 ] e Dennis Ritchie [ 1 ]
Influenciada por BCPL
Influenciou C

B e uma linguagem de programacao que pertence ao paradigma imperativo e que foi desenvolvida no Bell Laboratories de 1969 . Apesar de ja ter se tornado obsoleta, foi a predecessora da linguagem de programacao C , que ate hoje e uma das mais populares. Foi majoritariamente um trabalho de Ken Thompson com contribuicoes de Dennis Ritchie , projetada e implementada na cidade de Murray Hill , nos Estados Unidos .

A linguagem foi projetada para ser recursiva , nao-numerica e de aplicacao independente da maquina. [ 2 ]

Historia [ editar | editar codigo-fonte ]

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

B foi essencialmente uma simplificacao da linguagem BCPL ( Basic Combined Programming Language) , quitando qualquer componente que Thompson considerasse prescindivel de modo a caber na memoria dos microcomputadores da epoca. Tambem se realizaram algumas mudancas segundo as preferencias de Thompson (a maioria das quais eram para reduzir o numero de caracteres em um programa tipico).

Como BCPL, B so tinha um tipo de dado , que correspondia com uma palavra de maquina . A maioria dos operadores o manipulavam como um inteiro ; por exemplo + (adicao), - (subtraccao), * (multiplicacao) ou / (divisao). O sistema de tipos empregado em B se caracteriza por tipagem fraca, dinamica e tambem implicita.

Outros operadores o manipulavam como um endereco de memoria ao qual faziam referencia: um Ponteiro . B oferecia operadores que permitiam obter o endereco duma determinada variavel, ou escrever no endereco apontado por uma variavel apontadora ou ponteiro.

As primeiras implementacoes foram para os minicomputadores PDP-7 e PDP-11 executando versoes antigas do UNIX ; e para os mainframes de 36 bits Honeywell executando o sistema GCOS .

Evolucao [ editar | editar codigo-fonte ]

A natureza sem tipos ? isto e, com um so tipo correspondente a palavra de maquina ? de B tinha sentido no Honeywell, no PDP-7 e noutros computadores antigos, mas foi um problema no PDP-11 ja que era dificil aceder a caracteres individuais, um novo tipo de dado que ofertava o PDP-11 assim como a maioria dos computadores modernos. Comecando no 1971 , Ritchie fez mudancas a linguagem ao mesmo tempo que convertia o seu compilador para produzir linguagem de maquina de forma nativa. A mais notavel foi a adicao de tipos de dado diferentes para as variaveis. A linguagem B foi implementada no PDP-11, que foi uma maquina da DEC usada para fazer o primeiro arcade operado por moedas, com o Jogo Galaxy. Predefinicao:Citacao requerida

Durante 1971 e 1972 , B evoluiu primeiro em Novo B ( New B , NB ) e depois em C . Mais tarde, comecando 1973 , foi adicionado um pre-processador , a pedido de Alan Snyder . O esforco foi o suficiente neste ano como para que durante o verao o nucleo do UNIX para o PDP-11 fosse reescrito em C .

Durante o periodo 1972-1973 foi preciso porta-lo ao Honeywell 635 e ao IBM 360 /370, razao pela qual Mike Lesk escreveu o pacote de entrada/saida portavel que se trocaria na conhecida E/S padrao ( standard I/O ou stdio ) da linguagem C.

B seguiu-se a utilizar ate os anos 1990 nos mainframes Honeywell e em certos sistemas embarcados por uma variedade de razoes, 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 influencia, foi escrito em B.

Nome [ editar | editar codigo-fonte ]

B teve uma enorme influencia de BCPL, e o seu nome foi provavelmente uma contraccao de BCPL . Porem, e possivel que o seu nome baseara-se no da linguagem de programacao Bon , uma linguagem mais antiga e nao relacionada com B, desenhada por Thompson para usar-se no MULTICS . [ 1 ]

Exemplos [ editar | editar codigo-fonte ]

Um exemplo simples, chamado de programa Ola 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
(
'
Hello
,
 world
!*
n
'
);

}

Programa que imprime os N primeiros numeros perfeitos, onde N e a entrada do usuario:

main
()

{

    auto
 n
,
num
,
soma
,
cont
;


    num
 =
 0
;

    cont
 =
 0
;


    printf
(
 "Digite um valor para N: *n*n"
);


    n
=
getchar
();


    printf
(
 "
\n
Os 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 funcao de exemplo foi extraida de Users' Reference to B , de Ken Thompson:

/* A seguinte funcao imprime um numero nao-negativo, n, na

   base b, no qual 2<=b<=10. Esta rotina basea-se no facto

   de que no jogo de caracteres ASCII,  os digitos do 0 ao

   9 tem valores de codigo sequenciais.

 */


printn
(
n
,
b
)
 {

        extrn
 putchar
;

        auto
 a
;


        if
(
a
=
n
/
b
)
 /* atribuicao, nao comprovacao de igualdade */

                printn
(
a
,
 b
);
 /* recursivo */

        putchar
(
n
%
b
 +
 '0'
);

}

Funcao que substitui cada letra maiuscula de uma string de entrada s, por uma letra minuscula 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 funcao anterior para somar tres numeros imprimindo no ecra 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 codigo-fonte ]

Algumas versoes do Unix possuem o compilador de B. Para compilar e executar um codigo B, basta digitar estes comandos no shell , desde que, claro, seu sistema operacional possua o 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 tambem [ editar | editar codigo-fonte ]

Referencias

  1. a b c Ritchie, Dennis M. (Maio de 1993). ≪The Development of the C Language≫ . ACM SIGPLAN Notices . 28 (3): 201?208. doi : 10.1145/155360.155580 . Its name most probably represents a contraction of BCPL, though an alternate theory holds that it derives from Bon [Thompson 69], an unrelated language created by Thompson during the Multics days. Bon in turn was named either after his wife Bonnie, or (according to an encyclopedia quotation in its manual), after a religion whose rituals involve the murmuring of magic formulas.  
  2. Thompson, Ken (7 de janeiro de 1972). ≪Users' Reference to B≫ . Bell Laboratories . Consultado em 26 de junho de 2014  

Ligacoes externas [ editar | editar codigo-fonte ]

Ícone de esboço Este artigo sobre programacao de computadores e um esboco . Voce pode ajudar a Wikipedia expandindo-o .