Qual é o melhor código fonte C ++ para ler para um iniciante? [fechadas]

25

Estou tentando melhorar minha técnica de codificação c ++ lendo o código-fonte c ++. Qual projeto de código aberto você recomendaria? O código das bibliotecas Boost C ++ é bom?

Raposa da neve
fonte
11
Por que votos próximos? A questão é clara e concreta.
Nemanja Trifunovic
Implementações de
STLs
12
@dukeofgaming: você esqueceu a tag "irônico".
Doc Brown
1
Bem, acho que o código fonte do impulso não será uma boa idéia para iniciantes. Você provavelmente se afogará em modelos e técnicas da SFNINAE que ainda não entende o funcionamento e os motivos deles.
Chris diz Reinstate Monica
7
Os votos próximos são porque essa questão, embora concreta, não é construtiva. Isso resultará apenas em uma lista do projeto de todos, onde nenhuma resposta pode ser "a resposta". Para mais informações, consulte as Perguntas frequentes .
Walter

Respostas:

27

Eu recomendaria qualquer código C ++ de código aberto do Google, como o seguinte:

Vantagens de usar o código do Google:

  • Ele foi escrito com altos padrões e é revisado por pares (diferente de algum código-fonte aberto).
  • Possui boa documentação do desenvolvedor (o que facilita a captação e a compreensão).
  • Ele usa algumas técnicas C ++ moderadamente avançadas (e, portanto, é bom para aprender).
  • Provavelmente é mais fácil entender do que o Boost, porque não depende muito da metaprogramação avançada de modelos e da metaprogramação de pré - processador e não é tão pesado quanto com inúmeros hacks de compatibilidade do compilador e casos especiais.

O Guia de Estilo do Google C ++ usado pelo código C ++ do Google geralmente é bom, mas possui alguns bits bastante incomuns (como algumas de suas diretrizes de nomenclatura ou suas exceções não permitidas), portanto, lembre-se de que o código C ++ diferirá nesses aspectos de o que você verá no campo.

Josh Kelley
fonte
9

Eu não recomendaria ler uma base de código. Eu recomendo ler C ++ FAQS . Há também um excelente livro que acompanha o site. A melhor maneira de melhorar suas habilidades de codificação em C ++.

Onorio Catenacci
fonte
13
-1: Eu discordo muito. A leitura do código de outras pessoas é parte muito importante para melhorar as habilidades de codificação. A correção de erros nesse código é ainda melhor.
Jan Hudec
6
@ Jan Acordo completo de mim. No entanto, a maioria dos códigos-fonte C ++ é uma droga e emprega todos os tipos de padrões ruins que ensinariam técnicas ruins. Você conhece um bom projeto de OSS que pode servir como uma leitura introdutória?
Konrad Rudolph
Eu estava me referindo a este: amazon.com/FAQs-2nd-Marshall-P-Cline/dp/0201309831/…, mas posso ver que há outros livros também agora.
Onorio Catenacci
6

A leitura de código C ++ limpo existente é uma ótima maneira de aprender o idioma.

O código no kit de ferramentas OpenFST é muito limpo, por exemplo. É legível e usa recursos ligeiramente avançados sem exagerar.

O impulso, por outro lado, pode ser um pouco difícil de ler, em parte porque eles usam truques em C ++ que são difíceis de entender e porque geralmente espalham o código com soluções alternativas para diferentes versões do compilador.

user3287
fonte
6

Eu sugeriria ler o " Effective C ++ " de Scott Meyers e usar as sugestões que ele tem em pequenos programas de brinquedos.

Sardathrion - Restabelecer Monica
fonte
2
Você não aprenderá nada em pequenos programas de brinquedos. Você precisa escrever programas que resolvam problemas reais. Eles não precisam ser grandes, você não conseguirá escrever programas grandes sozinhos, mas eles não devem ser apenas brinquedos.
Jan Hudec
@JanHudec: O que você descreve é ​​o que eu chamo de programas de brinquedos : um pedaço de código que resolve um único problema. Assim, por exemplo, um algoritmo de Runge-Kutta seria um "programa de brinquedos", enquanto uma simulação completa do corpo N não seria.
Sardathrion - Restabelece Monica
2
Esses são os dois "programas de brinquedos". Porque os problemas são exemplos inventados de um problema, a menos que você esteja fazendo simulações numéricas e a maioria dos programadores não. Problema real é algo que você ou alguém que você conhece vai realmente usar. Provavelmente terá GUI ou, pelo menos, uma linha de comando complexa que analisa e manipula arquivos ou se conecta à rede e usa algumas bibliotecas existentes e não possui algoritmos não triviais, porque 99% dos programas por aí não.
Jan Hudec
1
@JanHudec, você está dizendo que uma pessoa não aprende nada trabalhando primeiro com pequenos problemas restritos? Se os programadores saltam diretamente para problemas grandes e complicados sem aprender pelo menos alguns princípios básicos e alguns idiomas básicos de linguagem, é assim que terminamos com esses aplicativos enormes "Big Ball of Mud".
Onorio Catenacci
3
Eu não tenho certeza se isso responde à pergunta, mas cada programador C ++ deve ler esse livro (e suas sequências.)
Gort the Robot
2

Tente ler algo que já existe há anos e é grande em tamanho. Levará alguns meses para começar a entender o código e fazer algo nele.

Firefox, Thunderbird, OpenOffice.org, LibreOffice vêm à mente. Também deve haver muitos outros semelhantes. Esses projetos são executados em muitos sistemas operacionais e plataformas de hardware. Além disso, eles precisam pontuar na legibilidade. Estas podem ser as técnicas que você procura.

vpit3833
fonte
0

Ainda melhor do que ler o código, seria trabalhar com esse código na forma de corrigir bugs e adicionar pequenas melhorias aqui e ali. Escolha um programa, de preferência um que você use, inscreva-se na lista de e-mails, comece a pesquisar o rastreador de erros e tente diagnosticar alguns erros. Pergunte na lista de e-mails se você encontrar uma solução razoável, ou quando você ficar preso. Isso lhe dará alguns objetivos específicos ao ler o código, forçá-lo a realmente entender e é o que você fará na maioria das vezes em qualquer trabalho.

Talvez você possa olhar para algum aplicativo do KDE. A maioria é escrita em C ++ e você pode começar com um menor primeiro.

Jan Hudec
fonte
-3

Sim, o código das Boost C ++ Libraries é um ótimo recurso para aprender, se não um dos melhores do planeta. No entanto, para um iniciante, aprender com o código Boost pode tornar a curva de aprendizado muito acentuada. Se você realmente quiser ler o Boost, comece com algumas bibliotecas pequenas e simples como o Boost.Array .

mloskot
fonte
2
Eu acho que seria como sugerir que uma boa maneira de aprender a esquiar seja comprar as pistas de diamante duplo e preto.
Gort the Robot
@StevenBurnap, leia minha resposta mais uma vez e aponte a sugestão ridícula que fiz. Pare de discutir, e aponte uma biblioteca melhor e abrangente que vale a pena ler para iniciantes. Você chegará à conclusão de que os melhores exemplos adequados para iniciantes são de um livro para iniciantes.
mloskot
-3

Tente ler o PDF C ++. É grátis e eu aprendi C ++ com ele, mesmo que eu não tenha outra experiência em programação e tenha apenas 14 anos. Incrível.

Xi_Ensen
fonte
3
Você pode adicionar um link a algum recurso relacionado a esses projetos?
Giorgio
3
O que você quer dizer com PDF em C ++?
Martijn Pieters