Melhor visão geral dos paradigmas modernos de C ++? [fechadas]

16

Eu costumava escrever C ++ extensivamente entre 8 e 10 anos atrás. Desde então, mudei para o C # por razões profissionais. No entanto, de tempos em tempos, vejo declarações como

"Se você ainda estiver rastreando manualmente as referências dos ponteiros, estará fazendo errado"

ou

"O C ++ é perfeitamente seguro desde que você use conceitos modernos como RAII e não aloque manualmente a memória como um desenvolvedor de C em recuperação".

Ambos eram procedimento padrão há uma década. Vi que o C ++ foi aprimorado consideravelmente nos últimos tempos; C ++ 0x em particular parece ter alguns novos recursos. Qual é o melhor recurso para um programador de "C / old C ++" se envolver com práticas e padrões "modernos" de C ++?

GWLlosa
fonte
3
Eles eram procedimento padrão há uma década. Infelizmente, ainda há uma porção muito significativa de desenvolvedores de C ++ usando o procedimento padrão de três décadas atrás.
DeadMG
7
Não conheço um único recurso, mas o C ++ moderno se resume basicamente a: (1) uso extensivo do STL sempre que possível, em vez de algoritmos manuais, (2) uso de ponteiros inteligentes e contêineres STL sobre alocação / desalocação manual , (3) um estilo de programação funcional usando functors / lambdas junto com funções de ordem superior; e (4) uma preferência pelo polimorfismo estático baseado em modelo sobre as funções virtuais em tempo de execução sempre que possível
Charles Salvia
C ++ eficaz por Scott Meyers
Gyan aka Gary Buyn

Respostas:

5

Pode ter mais a ver com os materiais instrucionais do que a maioria das outras coisas, mas, 8 a 10 anos atrás, parece-me que a maneira como o idioma foi usado diferia muito hoje. Hoje, o foco está mais em alavancar modelos, segurança de tipo e programação genérica onde antes havia mais medo de tudo isso e as pessoas focavam quase exclusivamente no C com aspectos de objetos.

Os materiais instrucionais também estão mudando. Enquanto antes do livro inicial de C ++ padrão o levaria através de printf, scanf, etc ... você quase nem os vê em livros com uma abordagem moderna.

Alguns bons livros são alguns dos livros vermelhos. C ++ excepcional, C ++ mais excepcional, metaprogramação de modelos em C ++, design moderno em C ++, C ++ acelerado ...

Eu acho que olhar para onde trabalho atualmente pode ser um bom exemplo. Eu vim aqui usando C ++ de uma maneira moderna e parece que a maioria dos desenvolvedores nem sabe o que estou fazendo ou por quê. Criando objetos com o operador () neles, por exemplo ... Tive que comentar de todas as ocorrências de bind () e, eventualmente, foi instruído a descartar todo esse código. Eles não sabem o que os inicializadores fazem ... Tem sido realmente esquisito e difícil para mim, na verdade.

Edward Strange
fonte
5

Para obter uma rápida supervisão dos recursos modernos apresentados muito bem, você não erraria ao ver a apresentação recente de Herb Sutter , "Escrevendo códigos C ++ modernos: como o C ++ evoluiu ao longo dos anos" dos recursos C ++ em // build /.

Ele fala sobre por que é uma linguagem melhor do que o C # (é claro - a Microsoft troca suas calças regularmente, e hoje eles estão usando a moda C ++ para que exagerem nisso, apenas como eles exaltaram o C # como a resposta para a fome no mundo em uma década atrás), mas ao fazê-lo, ele descreve todos os bits bons (como gerenciamento de memória 'automático' e as classes STL) e depois fala sobre os novos bits do padrão C ++ 0x.

gbjbaanb
fonte