terça-feira, 9 de fevereiro de 2016

LINGUAGEM C/C++ Aula 1.1

AS ORIGENS DO C/C++

A história do C/C++ começa nos anos 70 com a invenção da linguagem C.

A linguagem C foi inventada e implementada pela primeira vez por Dennis Ritchie
em um DEC PDP-11, usando o sistema operacional UNIX. A linguagem C é o
resultado do processo de desenvolvimento iniciado com outra linguagem, chamada
BCPL, desenvolvida por Martin Richards. Esta linguagem influenciou a linguagem
inventada por Ken Thompson, chamado B, a qual levou ao desenvolvimento da
linguagem C.

A linguagem C tornou-se uma das linguagens de programação mais
usadas. Flexível, ainda que poderosa, a linguagem C tem sido utilizada na criação
de alguns dos mais importantes produtos de software dos últimos anos. Entretanto, a
linguagem encontra seus limites quando o tamanho de um projeto ultrapassa um
certo ponto. Ainda que este limite possa variar de projeto para projeto, quanto o
tamanho de um programa se encontra entre 25.000 e 100.000 linhas, torna-se
problemático o gerenciamento, tendo em vista que é difícil compreende-lo como um
todo. Para resolver este problema, em 1980, enquanto trabalhava nos laboratórios
da Bell, em Murray Bill, New Jersey, Bjarne Stroustrup acrescentou várias extensões
à linguagem C e chamou inicialmente esta nova linguagem de “C com classes”.
Entretanto, em 1983, o nome foi mudado para C++.

Muitas adições foram feitas pós-Stroustrup para que a linguagem C
pudesse suportar a programação orientada a objetos, às vezes referenciada como
POO. Stroustrup declarou que algumas das características da orientação a objetos
do C++ foram inspiradas por outra linguagem orientada a objetos chamada de
Simula67.

A linguagem C é freqüentemente referenciada como uma linguagem de
nível médio, posicionando-se entre o assembler (baixo nível) e o Pascal (alto nível)1.
Uma das razões da invenção da linguagem C foi dar ao programador uma linguagem
de alto nível que poderia ser utilizada como uma substituta para a linguagem
assembly.

Como você provavelmente sabe, a linguagem assembly utiliza a
representação simbólica das instruções executadas pelo computador. Existe um
relacionamento de um para um entre cada instrução da linguagem assembly e a
instrução de máquina. Ainda que este relacionamento possibilite escrever programas
altamente eficientes, isso torna a programação um tanto quanto tediosa e passível
de erro. Por outro lado, linguagens de alto nível, como Pascal, estão extremamente
distantes da representação de máquina. Uma instrução em Pascal não possui
essencialmente nenhum relacionamento com a seqüência de instruções de máquina
que são executadas.

Entretanto, ainda que a linguagem C possua estruturas de controle de alto
nível, como é encontrado na Pascal, ela também permite que o programador
manipule bits, bytes e endereços de uma maneira mais proximamente ligada à
máquina, ao contrário da abstração apresentadas por outras linguagens de alto
nível. Por esse motivo, a linguagem C tem sido ocasionalmente chamada de “código
assembly de alto nível”. Por sua natureza dupla, a linguagem C permite que sejam
criado programas rápidos e eficientes sem a necessidade de se recorrer a linguagem assembly.

A filosofia que existe por trás da linguagem C é que o programador sabe
realmente o que está fazendo. Por esse motivo, a linguagem C quase nunca “coloca-se
no caminho” do programador, deixando-o livre para usar (ou abusar) dela de
qualquer forma que queira. Existe uma pequena verificação de erro de execução
runtime error. Por exemplo, se por qualquer motivo você quiser sobrescrever a
memória na qual o seu programa está atualmente residindo, o compilador nada fará
para impedi-lo. O motivo para essa “liberdade na programação” é permitir ao
compilador C criar códigos muito rápidos e eficientes, já que ele deixa a
responsabilidade da verificação de erros para você. Em outras palavras, a linguagem
C considera que você é hábil o bastante para adicionar suas próprias verificações de
erro quando necessário.

Quando C++ foi inventado, Bjarne Stroustrup sabia que era importante
manter o espírito original da linguagem C, incluindo a eficiência, a natureza de nível
médio e a filosofia de que o programador, não a linguagem, está com as
responsabilidades, enquanto, ao mesmo tempo, acrescentava o suporte à
programação orientada a objetos. Assim, o C++ proporciona ao programador a
liberdade e o controle da linguagem C junto com o poder dos objetos. As
características da orientação a objetos em C++, usando as palavras de Stroustrup,
“permite aos programas serem estruturados quanto à clareza e extensibilidade,
tornando fácil a manutenção sem perda de eficiência”.

Nenhum comentário:

Postar um comentário