paulo1205
(usa Ubuntu)
Enviado em 06/06/2014 - 16:12h
Algumas pessoas já responderam, mas eu gostaria de acrescentar algumas informações.
luizkdias escreveu:
Boa tarde galera.
Alguém poderia por favor tirar essa dúvida:
- Qual a diferença entre C e C++?
C e C++ são duas linguagens de programação diferentes, mas que compartilham pontos comuns em suas linhas de evolução. Em particular, enquanto o então pesquisador do Bell Labs chamado Bjarne Stroustrup fazia suas pesquisas com orientação a objetos, usou uma linguagem de uso comum naquela instituição (na verdade, inventada e mantida ali), que era a linguagem C, como base sobre a qual trabalhava e como local onde aplicava o produto das pesquisas. As primeiras versões modificadas do C tinham o nome "C com classes", e o seu compilador não gerava código executável diretamente, mas apenas convertia o código para C puro, para que fosse então compilado com o compilador tradicional.
No geral, costuma-se dizer que um programa válido e bem escrito em C é também um programa válido em C++. Isso ainda é geralmente verdadeiro, mas ao longo dos últimos 30 anos, as duas linguagens foram evoluindo por caminhos ligeiramente divergentes. O comitê internacional responsável pela padronização do C++ geralmente procura não introduzir incompatibilidades desnecessárias com C, mas o comitê do C não me parece historicamente se preocupar na mesma medida em preservar compatibilidade com C++.
Recomendo os seguintes links:
- http://www.stroustrup.com/sibling_rivalry.pdf (graficamente, os diagramas da página 3 são muito didáticos; vale notar que o artigo foi escrito em 2002, nove anos antes da aprovação do novos padrões do C e do C++, que saíram em 2011, e por isso eles são referidos como C0x e C++0x).
- http://www.stroustrup.com/siblings_short.pdf (versão reduzida do artigo acima).
- http://david.tribble.com/text/cdiffs.htm (descrição bem detalhada de cada diferença entre C90, C99 e C++98; infelizmente o artigo não foi atualizado com as novas características introduzidas em 2011 pelo C++11 e C11).
O artigo sobre o C++11 da Wikipedia em Inglês é muito bom; o de C11 nem tanto, mas é melhor do que nada. Eles não lhe apontarão diretamente todas as incompatibilidades, mais vão informá-lo dos recursos, para que você possa fazer suas próprias comparações.
- C++ é uma versão atualizada e mais recente do C?
Como dito acima, são linguagens distintas que guardam um parentesco entre si. Cada uma tem suas próprias versões e padrões.
- Os compiladores são os mesmos em ambas as versões?
Podem ser ou podem não ser. Isto é: você pode ter um compilador só que entende as duas linguagens, até pelo fato de elas serem parecidas, ou pode ter de usar programas diferentes para compilar código escrito em cada linguagem.
Além disso, cada compilador pode variar em termos de quantos dos recursos prescritos para uma linguagem são efetivamente suportados. Nem o GCC nem o Visual Studio suportam totalmente o C99 ou o C++11, por exemplo.
- Para programar em C++ deve-se conhecer anteriormente C?
Não é necessário saber C para aprender C++. Eu já sabia um bocado de C quando parti para o C++, mas se fosse para indicar a um novato (é o seu caso?), eu diria para começar logo com C++.
Quero aprender a programar em C para desenvolver programas tanto para Windows como Linux. Mas não sei qual estudar (C ou C++).
Obrigado!
A maioria dos
front ends para desenvolvimento de interfaces gráficas é em C++. Uma exceção importante é o GTK+, que usa C, mas o faz de um modo altamente dependente de macros que estendem a sintaxe da linguagem, a fim de simular orientação a objetos.
Eu não costumo desenvolver GUIs mas, nas vezes em que precisei fazê-lo, achei bastante razoável e confortável desenvolver com Qt 4, que é um toolkit em e para C++ (com extensões à linguagem, resolvidas por um compilador de metaobjetos). A última versão do Qt é a 5, e parece que tem recursos que a deixam muito melhor do que quando a utilizei pela última vez.
Tanto o Qt quanto o GTK+ são multiplataforma, permitindo que o mesmo código fonte seja compilado para produzir executáveis de Linux ou executáveis de Windows. Cada um tem suas vantagens e desvantagens, mas parece que há uma certa tendência em favor do Qt -- especialmente o Qt5.
Uma desvantagem do Qt em relação ao GTK+ é justamente não ter uma interface de comunicação com aplicações nativamente escritas em C -- talvez justamente por causa da premissa de que um programa em C bem escrito também é um programa válido se compilado como C++. Mesmo assim, se fosse para indicar um dos dois, eu indicaria Qt.