Introdução a C++

Introdução

No mundo da programação nós podemos classificar as linguagens de duas maneiras: Linguagem de Baixo Nível e Linguagem de Alto Nível. Quando nos referimos à linguagem de Baixo Nível estamos nos referindo a sintaxes próximas ao código de maquina, ou seja, a linguagem que o computador consegue facilmente interpretar. Em contrapartida a definição de linguagem de Baixo Nível nós encontramos as linguagem de Alto Nível, com relação a esse tipo de linguagem podemos afirmar que a mesma possui uma sintaxe próxima à linguagem humana um exemplo desse tipo de linguagem é o próprio C/C++, ente outras.

O C++ foi inicialmente desenvolvido por Bjarne Stroustrup dos Bell Labs durante a década de 1980 (originalmente com o nome C with Classes, como um adicional à linguagem C) com o objectivo de melhorar a linguagem de programação C ainda que mantendo máxima compatibilidade. Em 1983 o nome da linguagem foi alterado de C with Classes para C++, novas características foram adicionadas, como funções virtuais, sobrecarga de operadores e funções, referências, constantes, gerenciamento manual de memória, melhorias na verificação de tipo de dado e estilo de comentário de código de uma linha (//).

Stroustrup percebeu que a linguagem simula possuía características muito úteis para o desenvolvimento de software, mas era muito lenta para uso prático. Por outro lado, a linguagem BCPL era rápida, mas possuía muito baixo nível, dificultando sua utilização em desenvolvimento de aplicações. Durante seu período na Bell Labs, ele enfrentou o problema de analisar o kernel do Unix com respeito à computação distribuída. A partir de sua experiência de Doutorado, começou a acrescentar elementos do simula no C. O C foi escolhido como base de desenvolvimento da nova linguagem, pois possuía uma proposta de uso genérico, era rápido e também portável para diversas plataformas. Algumas outras linguagens que também serviram de inspiração para o cientista da computação foram Algol 68, Ada, Clu e Ml. Em 1985 foi lançada a primeira edição do livro The C++ Programming Language, contendo referências para a utilização da linguagem, já que ainda não era uma norma oficial. A primeira versão comercial foi lançada em outubro do mesmo ano. Em 1989 a segunda versão foi lançada, contendo novas características como herança múltipla, classes abstratas, métodos estáticos, métodos constantes e membros protegidos, incrementando o suporte a orientação a objeto. Em 1990 foi lançado o livro The Annotated C++ Reference Manual, que se tornou base para o futuro padrão. Outras adições na linguagem incluem Templates, tratamento de exceções, espaço de nomes, conversão segura de tipo de dado e o tipo Booleano.

Um fator extremamente importante para as pessoas que estão conhecendo a linguagem de programação C++ é afirmar que é mesma é case sensitive, ou seja, ao programar nesse tipo linguagem as pessoas devem tomar muito cuidado ao declarar variáveis ou fazer o uso de determinados métodos, pois ao se declarar uma variável chamada conta e outra chamada cONta (note as letras maiúsculas), nesse caso o compilador entenderá que isso são variáveis distintas e provavelmente ocorrera algo completamente diferente do resultado esperado. O mesmo vale ressaltar sobre o uso da estrutura de seleção if (se) e else (senão), a declaração das mesmas devem ser sempre minúsculas, caso o programador defina as mesmas com letras maiúsculas o compilador entenderá que a declaração corresponde a uma variável.

Após a padronização ISO realizada em 1998 e a posterior revisão realizada em 2003, uma nova versão da especificação da linguagem foi lançada em setembro de 2011, conhecida informalmente como C++11 ou C++0x. Este novo padrão incluirá muitas adições ao núcleo da linguagem (sua implementação principal), e estenderá a biblioteca padrão do C++, incluindo a maior parte da biblioteca do chamado C++ Technical Report 1 — um documento que propõe mudanças ao C++ — com exceção das funções matemáticas específicas.

Ambiente de Linguagem

O C++ pode ser chamado de linguagem compilada, ou seja, além de escrever o código, é necessário um outro software que possa entender esse código e traduzí-lo para uma sintaxe que o computador possa interpretar denominado Código de Máquina.

É necessário um editor de texto puro (como o Bloco de Notas) e um compilador para o desenvolvimento de aplicativos na linguagem C++, nesse caso quando o programador digitar o código-fonte o mesmo deve ser salvo com a extensão .CPP ao invés de .TXT, em seguida o índividuo deve abrir o prompt digitar o comando de compilação do compilador instalado (por exemplo no compilador Borland C++Builder 3.0 o respectivo comando de compilação é bcc32) seguido pelo nome do arquivo salvo.CPP, ou então o programador pode optar por utilizar um Ambiente de Desenvolvimento Integrado (IDE - Integrated Development Environment) para otimizar o desenvolvimento de suas aplicações.

Instalação

A primeira coisa a fazer antes de desenvolver programas usando a linguagem C++ é instalar um compilador. Existem diversos compiladores C++ disponíveis para os programadores, a decisão sobre qual compilador utilizar pode ser baseada em vários fatores:

Características do C++

C++ pode ser visto como uma linguagem procedimental tradicional com alguns construtores adicionais. Começando pelo C, alguns construtores para programação orientada a objetos e para melhorar a sintaxe procedimental foram acrescentados.

Um programa bem escrito em C++ irá refletir elementos tanto do estilo de programação orientada a objetos como programação procedimental clássica. Isto porque o C++ é na verdade uma linguagem extensível já que podemos definir novos tipos de tal maneira que eles agem de mesmo modo que os tipos pré-definidos que fazem parte da linguagem padrão.

Abaixo estão listados itens que caracterizam a linguagem C++:

Vantagens

Desvantagens

Críticas

"C faz com que dar um tiro no pé seja fácil; C++ torna isso mais difícil, mas quando nós o fazemos arrebentamos com a perna toda." - Bjarne Stroustrup

A linguagem é por vezes criticada como sendo muito complicada e, portanto, difícil de dominar completamente, porque ele inclui a maior parte da linguagem de programação C como um subconjunto. C++ também herda muitas das críticas feitas ao C.

Outras críticas relacionam-se à ausência de funcionalidades, como a falta de facilidades multithreading "nativas" -- recurso presente em alguns outras linguagens como, por exemplo, Ada, C# e Java. O atual padrão C++11 resolve este problema, adicionando suporte para concorrência direta com a linguagem, mas no momento isto só é possível usando chamadas do sistema operacional ou bibliotecas de terceiros.

C++ também é por vezes comparada desfavoravelmente com linguagens como Eiffel, Java ou Smalltalk por permitir aos programadores "misturar e combinar" estilos de programação declarativa, funcional, genérico, modular, e processuais com programação orientada a objetos, ao invés de estritamente impor um estilo único, embora C++ seja intencionalmente uma linguagem multi-paradigma.

Um artigo satírico amplamente distribuído apresenta uma suposta entrevista com Bjarne Stroustrup em 1998 que seria publicada na revista Computer, editada pela IEEE Computer Society. Nela haveria a confissão de que C++ foi deliberadamente concebida para ser complexa e difícil, com o intuito de eliminar programadores amadores e elevar os salários dos poucos programadores capazes de dominar a linguagem. A seção FAQ do site pessoal Stroustrup contém uma negação e um link para a entrevista real.

Outro ponto de crítica é a característica de herança múltipla, cujo uso descuidado produz uma codificação confusa e de manutenção difícil. Um exemplo é o problema conhecido como Diamond problem.

Conclusão

Um dos objetivos da criação da linguagem de programação C++ foi a programação orientada à objetos pois, possibilita ao programador projetar aplicações de um ponto de vista mais parecido, com comunicação entre objetos. O programador pode programar tanto em alto nível como em baixo nível, entre outras coisas. Porém, devido à semelhança que possui com a linguagem de programação C, herdou os seus problemas de entendimento de sintaxe.

C++ foi escolhida por possuir uma proposta de uso genérico, ser rápido e portável para diversas plataformas e também por apresentar grandes possibilidades para a meta-programação e programação genérica.

É uma linguagem complexa, utilizada principalmente por programadores profissionais.

Sobre... Assembly C C++ C# Java