Quão importante é que você conheça o padrão C ++?

10

Tentei pesquisar, mas não vi uma pergunta semelhante (isso ou minha terminologia de pesquisa estava incorreta - se assim for, sinta-se à vontade para fechar).

Sou um usuário ávido de SO e noto que há muitas referências ao padrão C ++ em discussões e respostas - e devo admitir que nunca li este documento em particular, a linguagem faz meus olhos doerem ... Então , a pergunta é: um desenvolvedor de C ++ pode realmente codificar para viver sem nunca ter lido este documento? É realmente importante para nós meros mortais que não estão no negócio de escrever compiladores?

Nim
fonte
A persistência das perguntas que são respondidas com breves citações do padrão deve ser prova suficiente de que a leitura não é um pré-requisito para o uso da língua ... (desde que você tenha um lugar para virar quando você ficar preso)
Shog9

Respostas:

16

Não - você pode se dar muito bem sem ele

No entanto, você terá um entendimento muito mais profundo se dedicar algum tempo para aprender. Talvez siga as referências dessas perguntas que o incomodam e aprenda um pequeno pedaço de cada vez.

Gary Rowe
fonte
8

Se você quiser discutir sobre a semântica da linguagem e o padrão, então o padrão é muito importante. (Não quero dizer isso de forma totalmente depreciativa.) Se você quer apenas fazer um trabalho no idioma (vs. no idioma), é muito menos.

O padrão pode fazer uma referência decente à biblioteca padrão (não muito para o próprio idioma) assim que você se sentir um pouco confortável, mas hesito em recomendar que seja usado dessa maneira. A maioria das pessoas parece se sair melhor com outros materiais. Dito isto, volto-me ao padrão com mais frequência quando preciso pesquisar algo sobre o stdlib.

No entanto, a leitura dos rascunhos e documentos do comitê é uma maneira de manter-se a par do C ++ 0x - na verdade, é uma das poucas maneiras atualmente.

Para o SO e outros fóruns, hesito em citar o padrão, exceto quando parece que o pôster se beneficiaria clara e definitivamente - talvez eles tenham solicitado isso ou acho que estão implicitamente esperando. Na maioria dos casos, e especialmente com programadores novos em C ++, citá-lo geralmente não parece ajudar muito.

Fred Nurk
fonte
Se alguém quiser saber o que o idioma deve fazer, o Padrão é inestimável. Se eles querem saber por que o compilador faz alguma coisa, geralmente é muito útil. Para outras perguntas, nem tanto.
David Thornley
11
@DavidThornley: É difícil julgar depois de tanto tempo lendo o padrão, mas parece que a maioria das pessoas acha que textos como o TC ++ PL são mais acessíveis, mesmo para descobrir o que a linguagem deve fazer.
Fred Nurk
11
@ Fred Nurk: Quase tudo é mais acessível que o Standard. Eu pretendia responder perguntas sobre SO e coisas do gênero e não estava claro sobre isso. Acrescenta um pouco de autoridade quando as pessoas estão citando cplusplus.com e outras fontes.
David Thornley
@ David David: Eu raramente cito sites como esse (cplusplus.com em particular tem muitos problemas para o meu gosto), mas para a maioria dos pôsteres de SO, eles também parecem mais úteis, mesmo com erros, do que o padrão - e sendo facilmente disponível on-line é, infelizmente, uma grande parte disso.
Fred Nurk
@ Fred, é interessante saber, eu sempre achei que o cplusplus era uma boa referência (a desvantagem é sua fonte de publicidade - o que é altamente inapropriado!), Agora vou ter que lembrar de cruzar a referência com a referência sgi.
Nim
6

Você deveria tê-lo disponível para referência, mas acho que ninguém, exceto seus autores, leu a coisa toda ... se eles o fizeram (eles trabalham em grupos com foco em áreas, então eu meio que duvido).

O motivo pelo qual você deve disponibilizá-lo é que, às vezes, uma pergunta sobre a correção do código só pode ser respondida consultando o padrão.

Edward Strange
fonte
3
Na maioria das situações, você não precisa disso. O que você precisa está coberto em outros livros. Somente quando você acessa os casos de canto ou nunca usa cantos do idioma é necessário verificar a definição no padrão (e geralmente existe uma alternativa ao uso dos casos de canto no idioma). Deixe o padrão para que os desenvolvedores do compilador e o desenvolvedor geral possam se dar bem com outros textos não formais.
Martin York
2

Provavelmente é mais importante que você saiba onde está o padrão e saiba quando procurar as coisas.

Se nada mais, você deve verificar periodicamente para garantir que está aderindo à versão mais recente e não deixou o seu código desviar.

ChrisF
fonte
2

Em uma equipe grande, geralmente você deve ter uma pessoa (mas geralmente não mais) que conheça o padrão pelo menos razoavelmente bem, para que eles possam fazer coisas como resolver quaisquer argumentos / perguntas sobre coisas como se um código específico está em conformidade com os requisitos do padrão.

Realisticamente, no entanto, essas respostas precisam ser temperadas pelo julgamento e pela experiência. O padrão (atual) diz que exporté uma palavra-chave e diz o que faz. Na realidade, simplesmente não funciona dessa maneira com a maioria dos compiladores. Da mesma forma, em muitos casos, se houver três pessoas que discordam de algum código específico e o que o padrão possa dizer sobre isso, isso pode ser um sinal de que o código pode precisar ser reescrito para ser mais direto.

Ao mesmo tempo, a maioria das equipes trabalha mais em uma plataforma e mantém um padrão (e alguém que esteja pelo menos razoavelmente familiarizado) para verificar se o que você está fazendo não está muito ligado a essa plataforma certamente seja útil.

Jerry Coffin
fonte
O "não mais" é provavelmente importante - a menos que você deseja discussões entre os especialistas sobre como interpretar o padrão <g>
Steve314
2

Eu ganho meu pão como desenvolvedor de C ++ há cerca de 4 anos no total, sem ter lido o padrão. De fato, nos primeiros dois anos, eu nem li muito mais que o C ++ Primer de artigos de Stan Lippman e MSDN. Portanto, é possível - de fato, temo que a maioria das pessoas que produzem código C ++ nem tenha lido trabalhos fundamentais como Effective C ++ et al. que eu mesmo descobri apenas mais tarde.

Para ser um bom desenvolvedor de C ++, o IMHO deve entender a lógica interna da (s) linguagem (s) (como observa Scott Meyers, C ++ é de cerca de 4 linguagens diferentes) e os idiomas e armadilhas comuns, e estar pronto para sempre aprender mais. A leitura de threads no SO pode ensinar muito sobre casos de canto onde, por sua vez, pode valer a pena ler em partes relevantes do padrão, se alguém realmente quiser aprofundar. Mas a leitura da totalidade provavelmente não é necessária para a maioria de nós.

Péter Török
fonte
É bom ressaltar que existem livros essenciais muito mais essenciais (para a maioria dos programadores que não estão escrevendo compiladores) do que o padrão. +1 - mas há um número razoável de livros "essenciais".
21311 Steve114
@ Steve314, de fato - começar a listá-los não ajudaria em responder a essa pergunta específica. Mas eu adicionei um link para o segmento relevante no SO agora.
Péter Török
@ Péter - toque agradável, mas meu argumento não declarado era que nenhum dos livros "essenciais" é realmente essencial. A maioria dos programadores de C ++ deveria ter lido vários títulos dessa lista, mas todos eles? Improvável. Mesmo se o fizesse, duvido que você realmente pudesse reter todo esse conhecimento. "C ++ eficaz" está na minha lista de não ler ainda, portanto, obviamente, conto como um livro essencial menos que o essencial.
31311 Steve314
@ Steve314, eu não quis dizer que é preciso ler todos - eu também não, e alguns deles eu li, mas não fiquei impressionado com :-) Também há alguma sobreposição entre alguns deles, então é uma questão de gosto pessoal e chance que um desenvolvedor conhece primeiro e / ou qual (s) ele chama de "essencial". Acredito que o importante é que existem algumas expressões comuns que são boas a serem seguidas, e armadilhas comuns que devem ser evitadas, e deve-se saber sobre a maioria delas, e a maneira menos dolorosa de aprender isso é com (alguns) desses livros .
Péter Török
É claro que eu realmente não vai saber o quanto é essencial até que eu tenha lido.
31511 Steve314
1

"Conhecer o padrão" é uma questão de grau e não significa necessariamente memorizar o documento original.

Um documento de normas foi projetado para ter autoridade - não necessariamente acessível. Existem muitas fontes removidas em uma etapa que são muito mais acessíveis. É verdade que há um pouco de sussurros chineses nisso, mas raramente é um grande problema - certamente no nível de remoção em uma etapa.

Divulgação completa - sou obrigado a dizer isso - nunca li o padrão. Embora eu provavelmente faça um esforço para obter o documento C ++ 0x completo quando for finalizado.

EDIT, é claro, se o Stroustrup lançar uma nova edição de "The C ++ Programming Language", posso resolver isso novamente.

Steve314
fonte
1

Quando programei em C ++, frequentemente me referia ao padrão da linguagem para obter informações sobre as funções padrão da biblioteca. A biblioteca padrão do C ++ é bastante grande e achei o padrão da linguagem a fonte mais conveniente.

Kevin Cline
fonte
11
Uau! Sério? Eu sempre considero indispensáveis ​​recursos on-line, como o cplusplus, nesse sentido ...
Nim
1

Eu poderia jurar que respondi a essa pergunta antes, mas não consigo encontrá-la. Basicamente, C ++ é diferente de Java em que ele está destinado a ter buracos na especificação outras especificações da plataforma pode preencher (por exemplo, POSIX, ou especificação ABI da sua arquitetura, ou seu compilador). Portanto, ao responder a perguntas em sites como o StackOverflow, é comum trazer a especificação para indicar que apenas porque algo funciona em um compilador não implica que funcione em qualquer lugar. Em outras palavras, muitas das razões para fazer referência a especificações específicas ao trabalhar com C ++ é esclarecer exatamente o quão portátil é um uso específico da linguagem.

Ken Bloom
fonte