Uma chamada de atenção para os principiantes que estão confusos acerca da diferença entre C e C++

Histórias de programação

Qual é a diferença entre C e C++? Qual é que deve estudar?

C++. Não é necessário ler o que se segue, pelo que a minha recomendação é ver o vídeo apropriado para principiantes no YouTube, criar rapidamente um ambiente e começar já hoje.

… Obrigado pela leitura.

Digo isto porque o C++ tem muito apoio em muitos aspectos. Se o compararmos com um carro, um carro automático é C++ e um carro manual é C. Se é um principiante que está um pouco preocupado, escolha C++.

No Japão e nos EUA, a maioria dos automóveis é AT. A razão é simplesmente o facto de serem mais fáceis de utilizar. Na Europa, porém, os carros manuais continuam a ser a norma. A percentagem de carros automáticos é inferior a 20 por cento. A maioria dos corredores também utiliza carros manuais.

Ambos têm as suas vantagens. E tal como um condutor de um carro manual pode conduzir um carro automático com facilidade, um utilizador de linguagem C pode utilizar C++ com facilidade num período de tempo relativamente curto, mas o inverso não é verdadeiro. Tal como um carro, é preciso tempo, que pode ser visto como treino em muitos aspectos, não apenas na mudança de velocidade e no trabalho do acelerador.

É necessária a linguagem C? Não se pode fazer tudo em C++?

Para ir um pouco mais longe, uma das razões pelas quais o C++ não substituiu o C é o facto de este continuar a ser a linguagem mais forte em termos de fundamentos.

O C reina supremo como a linguagem de eleição em áreas em que é necessária a manipulação direta do hardware, como o desenvolvimento de sistemas e os sistemas incorporados. Por exemplo, se quiser criar um controlador para um sistema operativo ou algo como o Linux ou o Windows, e só souber C++, está com azar.

É C para a programação básica e C++ para a programação avançada.

O quê? O que estou a dizer não é o contrário? Pode pensar-se. Mas isso não está errado.

Se é, por exemplo, um estudante de robótica que precisa de simulações físicas avançadas, ou um programador que quer desenvolver jogos, precisa de C++ porque precisa de fazer programação avançada.

O C++ suporta tanto a programação processual como a programação orientada para os objectos. Além disso, está bem equipado com modelos, tratamento de excepções e uma grande variedade de bibliotecas. Se tentar fazer a mesma coisa em C, não o conseguirá fazer muito bem.

Não reinvente a roda, é o que diz o ditado, e é exatamente isso que acontece.

A maioria de nós não entende a programação dos sistemas dentro de um smartphone. Nem sequer sabemos quantos condensadores são produzidos em que fábrica e por que fabricante. No entanto, podemos facilmente utilizar os nossos smartphones todos os dias para fazer videochamadas, jogar jogos e ouvir música enquanto vemos a nossa posição no GPS. Somos capazes de fazer coisas ditas avançadas sem as compreendermos.

Por exemplo, tanto o desenvolvimento de sistemas operativos em C como a simulação física em C++ são tarefas realisticamente complexas. Mas, em geral, o C++ é mais avançado e complexo em termos de quantidade de informação no programa.

E não estou a fazer uma moral politicamente correcta, estou apenas a dizer que ambos os tipos de programação são importantes em termos práticos. Recomendamos o C++ porque é frequentemente utilizado no desenvolvimento de aplicações informáticas, incluindo jogos, e porque está bem equipado e é fácil para os principiantes.

(Se quer fazer programação pela primeira vez e quer criar um sistema operativo e conquistar o mundo, então o C++ é para si! Agora, vamos fazer algum desenvolvimento incorporado! ). (Para essas pessoas, claro, recomendo vivamente o C, não é?)

Agora, vamos concentrar-nos nas diferenças abaixo.

Linguagem C

A linguagem C centra-se na programação processual e não suporta a sobrecarga de funções.

Isto significa que as funções com o mesmo nome não podem ter parâmetros diferentes. Os ficheiros de cabeçalho e de fonte são utilizados para organizar o código, mas a Standard Template Library (STL) não é suportada nativamente.

As funções malloc(), calloc() e free() são utilizadas para a gestão da memória e o tratamento de excepções não é suportado. As funções printf e scanf são utilizadas para operações de E/S normais e os conceitos de programação orientada para objectos, construtores e destruidores, sobrecarga de operadores, métodos em estruturas e funções virtuais não são suportados.

Linguagens C++

O C++, por outro lado, suporta a programação orientada para objectos e possui características como o encapsulamento, a herança e o polimorfismo.

Permite a sobrecarga de funções e introduz namespaces para uma organização mais eficiente do código. É suportada uma STL alargada, com novos operadores de “new new” e “delete” para a gestão da memória. Mecanismos robustos de tratamento de excepções são suportados de forma integrada e as bibliotecas padrão C++ cin e cout são utilizadas para operações de E/S padrão.

Também suporta classes e objectos, com construtores e destruidores para inicializar e limpar objectos. A sobrecarga de operadores é possível, os métodos podem ser incluídos em estruturas e o suporte de funções virtuais desempenha um papel importante na obtenção do polimorfismo.

Vantagens do C++

Em C++, as funções virtuais são utilizadas para realizar o envio dinâmico. Isto permite o tratamento de várias formas de objectos em tempo de execução, o que resulta numa melhor legibilidade e manutenção do código. Existem também noções especiais de funções amigas e classes amigas, que permitem o acesso a membros privados ou protegidos de classes que normalmente não estão acessíveis.

Além disso, o C++ oferece um suporte alargado para modelos de funções e classes, o que permite aos programadores criar código mais genérico e reutilizável. Em contrapartida, a linguagem C não dispõe de um recurso de modelo.

Além disso, o C++11 e posteriores fornecem uma biblioteca de threading padrão para ajudar no desenvolvimento de aplicações multi-threaded, o que facilita a programação multi-threaded.

As melhorias no C++11 não se ficam por aqui. Em particular, a introdução de expressões lambda foi um avanço importante que tornou o código mais conciso e legível. Isto tornou possível definir e utilizar funções sem nome diretamente no código.

Relativamente a este aspeto, no que diz respeito à declaração de constantes, o C++ permite que as constantes sejam declaradas de forma segura utilizando as palavras-chave const e constexpr. Em contrapartida, o C declara as constantes utilizando a diretiva de pré-processador #define, o que pode reduzir a segurança de tipo.

Comparação de vários itens em conjunto

Alguns itens são comparados em conjunto.

No que respeita aos argumentos predefinidos das funções, o C não os suporta, pelo que é necessário sobrecarregar as funções. Em C++, por outro lado, os argumentos predefinidos de funções são suportados, permitindo uma maior flexibilidade nas chamadas de funções.

Quanto à Standard Template Library (STL), o C++ tem uma STL que contém uma grande variedade de classes e funções que suportam tarefas como a manipulação de cadeias de caracteres e a E/S de ficheiros. Isto torna a programação mais eficiente e flexível.

Em termos de espaços de nomes, o C não tem este conceito, enquanto o C++ utiliza espaços de nomes para agrupar variáveis, funções e classes para evitar conflitos de nomes.

Quanto aos destruidores, o conceito de destruidores de objectos não existe em C, ao passo que C++ tem destruidores que são automaticamente invocados quando um objeto sai do âmbito, o que facilita a limpeza de recursos.

Por último, no que respeita à palavra-chave auto, esta não existe em C, mas foi introduzida em C++11. Isto permite ao compilador adivinhar automaticamente o tipo de uma variável, simplificando o código e tornando-o mais fácil de manter.

Considerações finais

É uma longa história, mas, como disse no início, o C++ é basicamente o caminho a seguir se estiver a ter dificuldades. Vamos fazê-lo de qualquer forma.

Passamos muito tempo a preocupar-nos com isso quando somos principiantes. Hoje em dia, é possível configurar o ambiente, etc., copiando vídeos do YouTube para principiantes.

Antigamente, era preciso comprar livros que eram incómodos de transportar e era cansativo manter as páginas abertas, e também era difícil porque a última versão não correspondia. (Risos)

Além disso, pela minha experiência, o C++ é melhor do que o C em termos de GUI e de motivação, como se pode ver no resultado da programação na imagem. (Mas não nos esqueçamos de que a linguagem C é a base e que sem ela não haveria C++, por isso devemos estar gratos a C.)

コメント

タイトルとURLをコピーしました