March 20, 2008

Começando a programar em C++

Resposta às dúvidas mais frequentes.

1. Quero me converter para o lado poderoso da força, mas essa história de C e C++ me confunde. O que é o quê?
A linguagem C foi criada no início dos anos 70 para ser usada na programação do UNIX. Cansados de fazer tudo em Assembly, os programadores resolveram criar uma linguagem que fosse estruturada e que permitisse programação low-level ao mesmo tempo. Assim nasceu a linguagem C.
/*
Isso está em C
*/

#include <
stdio.h>
#include <
string.h>

int main()
{
int a = 15;
int b = 20;
char buffer[128]; /* uma string é um array (ou vetor)
de bytes terminado por ASCII zero */

strcpy(buffer, "A variável [a] é ");

if(a > b)
strcat(buffer, "maior");
else
strcat(buffer, "igual ou menor ");

strcat(buffer, " que a variável [b]\r\n");

printf(buffer);

return 0;
}
O C++ é uma evolução da linguagem C, e foi criada por Bjarne Stroustrup. Nessa evolução foi adicionado à linguagem C o conceito de orientação à objetos, que virou moda naquela época (começo dos anos 80) e é muito usado hoje em dia. Além disso, o próprio C++ foi evoluindo no decorrer da década de 80 e 90, com a adição de recursos como templates e a STL (que veremos depois). O C++ tem tudo que a linguagem C tem (99,8% de compatibilidade) e mais toda a evolução. Todo compilador C++ que eu conheço compila código C sem problemas.
//
// Isso está em C++
//

#include <
iostream>
#include <
string>

using namespace std;

int main()
{
int a = 15;
int b = 20;
string buffer; // string é um objeto

buffer = "A variável [a] é ";

if(a > b)
buffer += "maior";
else
buffer += "igual ou menor ";

buffer += " que a variável [b]";

cout << style="color: rgb(0, 0, 153);">return
0;
}
O exemplo feito em C, é compilado sem problemas por qualquer compilador C++, já que ele é também um código C++ válido.

2. Preciso aprender C antes de aprender C++?
Não, não e não. Eu recomendo que você aprenda C++ direto, sem passar pelo C, já que hoje em dia o C++ é mais usado. Se algum dia você precisar fazer algo em C, é só estudar as limitações do C em relação ao C++. As estruturas básicas de controle (if, while, switch...) são as mesmas, o que muda é que a linguagem C não suporta todos os recursos do C++, com suporte à programação orientada a objetos, bibliotecas, templates, etc. Mesmo assim, em C++ você pode usar as bibliotecas do C sem problemas.

3. Todo mundo diz que C++ é muito complicado. Isso é verdade?

Você é um homem ou um rato? C++ requer mais estudo por ser uma linguagem completa e poderosa, mas não é nada que um ser humano normal não consiga aprender. Tem gente que acha que usar o Microsoft Word é complicado. Esqueça o que os outros dizem e estude aquilo que você tem vontade.

4. A moda agora é .NET e Java, será que vale a pena estudar C++?
Vale. Como as pessoas estão indo para as linguagens mais fáceis, os profissionais de C++ são mais valorizados. Afinal, quando se precisa de algo 10 vezes mais rápido, alguém precisa fazer. Não se esqueça que praticamente todos os softwares comerciais que existem são feitos em C ou C++ (Windows, Office, SQL Server, Oracle, Photoshop, CorelDRAW, Linux, Visual Studio, o próprio .NET e todas as VMs Java, etc, etc, etc).

5. Eu já ouvi falar que o Java e o C# são versões melhoradas do C++. Isso é verdade?
Se você acha que uma versão mais limitada de alguma coisa é uma melhoria... O Java e o C# são baseadas na linguagem C++, tirando muitos recursos que, apesar de poderosos, causavam confusão ou dificuldade. Foi feita uma simplificação e um nivelamento por baixo (ok, pelo meio) para atender às necessidades mais comuns. Por serem mais simples, essas duas linguagens são indicadas para aplicativos tecnicamente mais simples, como os que manipulam bancos de dados, controlam regras de negócios e fazem entradas de dados. As duas runtimes (JVM e .NET) têm algumas vantagens sobre o C++, como gerenciamento automático de memória, independência relativa de arquitetura e mais facilidade para leitura dos metadados (enumerar as classes de um DLL, por exemplo). Mas têm a desvantagem de consumirem bem mais memória, serem mais lentas (isso pode melhorar com o tempo) e terem limitações técnicas que as impedem de desenvolver certos tipos de software (como device drivers).

6. Onde posso achar mais informações sobre C++?
Wikipedia - Linguagem C
Wikipedia - C++
Bjarne Stroustrup's C++ FAQ
Bjarne Stroustrup's C++ Style and Technique FAQ
Google: "C++ tutorial" (antes que alguém pergunte...)

7. Ok, Ok... Mas o que isso tem a ver com CFD?
Você tem lido os outros posts desse blog?

Esse artigo é uma adaptação do original publicado no 1Bit, escrito por Rodrigo Strauss.

2 comments:

  1. Parabéns pela dica, e parabéns pelo sua iniciativa de tratar sobre CFD
    Estudo ciências da computação e acredito que o C/C++ é mais indicado para uma série de coisas e sempre terá o seu espaço e com certeza todo mundo que é homem deveria saber C/C++ :) como linguagem materna de programação, uma vez que se sabe C/C++ as outras linguagens são fichinhas...

    ReplyDelete
  2. Obrigado pelo comentário, xará!
    Concordo plenamente com você. Comecei a estudar programação com C. Logo em seguida tive que aprender Fortran. E, te digo uma coisa, foi muito fácil aprender Fortran devido a base da linguagem C! Não tem pra ninguém, quer começar a estudar programação? C/C++! Depois aprende as outras...
    Mais uma vez, valeu pelo comentário!

    Um Abraço!

    ReplyDelete