C++11 e C11. Realmente elevaram o nível?

1 resposta
L

Bom pessoa como alguns sabem estou estudando C++ e pesquisando pela internet sobre o novo padrão vi muita gente dizendo que esse novo padrão melhorou consideravelmente alguns pontos ruins do C++ (pra todo iniciante que veio de linguagens mais modernas, python, ruby e outras, não precisar ter que declarar o tipo de variavel ajuda bastante, auto x = 4, auto x = Lucas, auto x = ! e por ai vai).
Vi tambem que o C ganhou uma repaginada, depois de 13 anos, o C11 (tanto o C como o C++ trabalharam juntos nesses padrões), sabemos que C é uma linguagem errr digamos … dificil para um iniciante…, sera que essas mudanças a deixaram mais legais para uma pessoa que nunca programou? Logicamente sem interferir em quem já domina a linguagem (um dos mantras do C++ é que você não precisa pagar pelo que não vai usar).

Colocando todas as linguagens em seus mais novos padrões, C++11 e C11 fazem feio em facilidade de aprendizado, legibilidade do código, facil manutenção???

Enfim sei que já tem um topico aqui se o C++11 vale a pena (inclusive nessa mesma parte do forum), mas queria abranger mais um pouco essa conversar, incluindo o C11 e colocando todas elas no mesmo nível.
O proprio ‘criador’ do C++ disse que esse novo padrão (C++11) é praticamente uma nova linguagem, se formos usar todos os recursos novos (lembrando que a compatibilidade retroativa é praticamente 100%).

Vamos conversar…

1 Resposta

ViniGodoy

lnas90:
Bom pessoa como alguns sabem estou estudando C++ e pesquisando pela internet sobre o novo padrão vi muita gente dizendo que esse novo padrão melhorou consideravelmente alguns pontos ruins do C++ (pra todo iniciante que veio de linguagens mais modernas, python, ruby e outras, não precisar ter que declarar o tipo de variavel ajuda bastante, auto x = 4, auto x = Lucas, auto x = ! e por ai vai).
Vi tambem que o C ganhou uma repaginada, depois de 13 anos, o C11 (tanto o C como o C++ trabalharam juntos nesses padrões), sabemos que C é uma linguagem errr digamos … dificil para um iniciante…, sera que essas mudanças a deixaram mais legais para uma pessoa que nunca programou? Logicamente sem interferir em quem já domina a linguagem (um dos mantras do C++ é que você não precisa pagar pelo que não vai usar).

Colocando todas as linguagens em seus mais novos padrões, C++11 e C11 fazem feio em facilidade de aprendizado, legibilidade do código, facil manutenção???

Enfim sei que já tem um topico aqui se o C++11 vale a pena (inclusive nessa mesma parte do forum), mas queria abranger mais um pouco essa conversar, incluindo o C11 e colocando todas elas no mesmo nível.
O proprio ‘criador’ do C++ disse que esse novo padrão (C++11) é praticamente uma nova linguagem, se formos usar todos os recursos novos (lembrando que a compatibilidade retroativa é praticamente 100%).

Vamos conversar…

Não sei à respeito do C11. Mas posso falar à respeito do C++.
E, definitivamente, não ficou mais fácil para o iniciante. Até alguns veteranos se assuntam um pouco com a move semantics e suas implicações.
A introdução de lambda adiciona mais um paradigma à mesa e, embora facilite o código em muita coisa, representa mais coisas para aprender.

Quanto a legibilidade do código e facilidade de manutenção. Definitivamente o C++11, em geral, é bem mais fácil de escrever e manter.
A introdução oficial dos smart pointers tornam o C++ uma linguagem semi-gerenciada, o que facilita a codificação.
A biblioteca de threads também vai ajudar bastante a quem faz programação concorrente.
Os lambdas vão substituir structs inteiras, que eram escritas apenas com o propósito de servirem de functors.
Em geral, creio que a linguagem teve uma grande evolução.

Vale lembrar que nenhuma dessas linguagens tem como objetivo ser fácil. Os objetivos delas é serem linguagens em que o programador tenha muito poder e controle, e que não desperdice tempo ou recursos com coisas que ele não quer.
Portanto, são linguagens onde ser um bom programador e um conhecedor de padrões de desenvolvimento e de boas práticas, conta muito mais.

Veja os princípios de design do C++, escritos pelo próprio Stroustrup, destaquei os que dizem respeito ao que comentei:

  • C++ is designed to give the programmer choice, even if this makes it possible for the programmer to choose incorrectly

  • C++ does not incur overhead for features that are not used (the “zero-overhead principle”)

  • C++ is designed to directly and comprehensively support multiple programming styles (procedural programming, data abstraction, object-oriented programming, and generic programming)

  • C++ is designed to be a statically typed, general-purpose language that is as efficient and portable as C

  • C++ is designed to be as compatible with C as possible, therefore providing a smooth transition from C

  • C++ avoids features that are platform specific or not general purpose

  • C++ is designed to function without a sophisticated programming environment

Também vale lembrar que a evolução do C++, nas últimas duas décadas, não está necessariamente na linguagem, mas nas práticas de programação.
Ou seja, conhecer RAII, Smart Pointers, Exception Safety, entre outras práticas.

Criado 4 de agosto de 2012
Ultima resposta 4 de ago. de 2012
Respostas 1
Participantes 2