Quais são os vários ramos da linguagem C ++ lá fora?

5

A última vez que tentei usar o C ++ há alguns anos, lembro de ter que incluir diferentes bibliotecas entre diferentes IDEs, mesmo usando o mesmo sistema operacional, o que me deixou um pouco confuso sobre a linguagem C ++.

Existem padronizações diferentes da linguagem C ++? E se sim, que ramos da linguagem existem por aí? A sintaxe e / ou nomes de bibliotecas para cada padronização são diferentes entre os sistemas operacionais? Além disso, qual é a padronização primária usada hoje em dia?

    
por Ein Doofus 24.08.2012 / 14:07
fonte

4 respostas

4

O maior lugar que vi foi o C ++ 11, que incluiu a maior parte do Relatório Técnico 1 bibliotecas. Por exemplo, para acessar a tabela de hash ( unordered_map ), você costumava ter #include <tr1/unordered_map> e estava no namespace std::tr1 . Agora, você simplesmente deixa o tr1 fora de ambos.

O padrão C ++ foi revisado várias vezes, sendo o mais recente C ++ 11, C ++ 03 e C ++ 98. No entanto, poucos compiladores implementam a especificação completa em uma única versão, portanto diferentes versões de diferentes compiladores suportam diferentes partes da especificação. Além disso, como a especificação é escrita em um idioma natural (inglês), ela possui ambigüidades e os casos de canto podem ser tratados de maneira diferente por diferentes compiladores.

Da mesma forma, em uma implementação da biblioteca padrão, #include <vector> pode automaticamente #include <algorithm> , enquanto em outro, não. Portanto, em uma implementação, você pode conseguir usar os métodos em algorithm sem incluí-los, mesmo que seu programa não esteja tecnicamente em conformidade com as especificações do C ++.

Quanto à padronização principal, se você está iniciando um projeto do zero agora, você deve usar o C ++ 11 e a última versão estável do seu compilador favorito. Nem todos os recursos são totalmente implementados por todos os compiladores, mas, por exemplo, você deve usar unique_ptr em vez de auto_ptr , usar lambdas (simples) e a palavra-chave auto onde melhora a legibilidade.

    
por 24.08.2012 / 14:10
fonte
1

Não há ramificações reais do idioma. No entanto, a biblioteca padrão de idioma é muito minimalista em comparação com muitas outras linguagens populares como C #, Java ou Python. Isso poderia muito bem dar uma impressão da linguagem ser ramificada, ou mesmo caótica, porque para usar a funcionalidade de alto nível encontrada em outras linguagens como threads (*) ou recursos HTTP, o programador tem que confiar em bibliotecas externas que não são encontrado na biblioteca padrão. Como tal, o programador é diretamente dependente de provedores externos, em vez de simplesmente ficar com o que a linguagem fornece por padrão.

(*) O C ++ 11 inclui recursos de encadeamento padrão, portanto, muitas vezes não há razão absoluta para se confiar em bibliotecas externas, como o Boost para encadeamentos.

    
por 24.08.2012 / 15:56
fonte
0

A resposta mais correta, até onde sei, para sua pergunta é: nenhuma.

Como uma linguagem é uma linguagem com ou sem alguns cabeçalhos ou algumas bibliotecas, é possível ver as bibliotecas mais comuns, como a biblioteca padrão ou a biblioteca de incentivo , como mercadorias em seu fluxo de trabalho, mas a linguagem em si não exige deles; tudo que você precisa para codificar é um editor de texto e um compilador.

Se você puder ser mais específico sobre isso, ajudará a responder de uma maneira melhor, mas, em geral, isso depende de:

  • que tecnologias você deseja usar em seu projeto (basicamente quais bibliotecas)
  • que tipo de compilação você quer produzir e qual compilador está usando, por exemplo, alguns compiladores e bibliotecas oferecem macros específicas

Em relação às versões mais recentes da linguagem, o C ++ 11, foi um rascunho para algo como 1 ano e foi aprovado recentemente, alguns livros serão publicados em breve sobre esse tópico, mas não acho que veremos o C ++ 11 em um ambiente produtivo em breve; O moderno C ++ é mais orientado para meta-programação, um recurso como a capacidade de usar templates, é muito popular nos dias de hoje e para lhe dar uma idéia dos modelos foram introduzidos no final dos anos 90. A adoção em larga escala é lenta, você pode estudar a partir de um livro ou recurso de 5-10 anos atrás e ter uma boa chance de se tornar um desenvolvedor moderno.

    
por 24.08.2012 / 14:46
fonte
0

Você pode ler sobre o c ++ no wiki do c ++ .

Are there different standardizations of the C++ language? And if so, what branches of the language exist out there?

Existem 3 versões principais do c ++: c ++ 11 , c++03 e c + +98 .

c ++ 11 é a versão mais recente e ainda há recursos que não são suportados em compiladores.

Is the syntax and/or library names for each standardization different between operating systems?

Não, o c ++ tem a mesma sintaxe definida pelo documento ISO (ISO / IEC 14882: 2011 para c ++ 11). O que difere entre sistemas operacionais é o suporte a vários recursos entre compiladores nesses SOs e seus bugs.

Also, What is primary standardization used nowadays?

Isso depende do compilador disponível, dos recursos e da organização em que você trabalha. Alguns compiladores (como, por exemplo, o compilador c ++ da TI) suportam apenas o c ++ 98. Algumas organizações demoram a fazer grandes mudanças (como alterar a versão do compilador) e não permitem recursos do c ++ 11.

    
por 26.08.2012 / 22:50
fonte

Tags