BT

Modern C++ e o Visual Studio

por Jeff Martin , traduzido por André Viturino Barbosa em 05 Jun 2014 |

Herb Sutter deu uma palestra sobre o status do Modern C++ durante a conferência Microsoft Build. O C++ passa por uma espécie de renascimento nesses últimos anos na Microsoft, e Sutter tem participado diretamente desse aumento de foco.

Próximas versões do C++

Sutter começou sua palestra fornecendo um rápido resumo de como estão os padrões ISO do C++ no momento. Em Fevereiro completou-se a discussão técnica para o C++ 14, e o comitê está revendo o processo com a intenção de votar na aprovação desse padrão para ser o padrão oficial ISO ainda este ano.

O release C++14 é considerado um minor release, enquanto que o próximo padrão C++17 (ainda em projeto e em discussões) é considerado um major release. A versão mais recente do compilador Microsoft (CTP) foi liberada em Novembro. De acordo com Sutter, o próximo CTP (data ainda não definida) deverá conter as seguintes características:

  • Literais user-defined;
  • C++14 generalized lambda capture;
  • C++14 libs: std:: literais user-defined;
  • Inline namespaces.

Existem ainda algumas características que podem estar presentes neste CTP (o que significa que podem ser adiadas para uma versão posterior):

  • Universal character names nas literais;
  • noexcept (incl. conditional);
  • char16_t, char32_t, attributes;
  • thread_local;
  • unrestricted unions;
  • consexpr (except ctors, literal types);
  • constexpr (incl. ctors, literal types).

O Parallel STL (a convergência de PPL, TBB, Amp, CUDA, Thrust) foi lançado no CodePlex. Sutter anunciou que a conferência C++ que a Microsoft patrocinou nos últimos dois anos (GoingNative) foi substituída pela CPPCon, que está programada para ocorrer de 7 a 12 de Setembro de 2014.

Casos de uso do Modern C++

A próxima parte da sua palestra migrou de discussões sobre lançamentos para uma conversa sobre os casos de uso do Modern C++ no desenvolvimento de aplicações de hoje. Na opinião de Sutter, C++ deve ser usado quando as seguintes metas ou objetivos são necessários:

  • Portabilidade e compatibilidade entre plataformas;
  • Alto desempenho e controle total;
  • Acesso total ao hardware e recursos do SO;
  • Destaques da linguagem C++: value types por padrão, determinismo por padrão, contíguo por padrão.

Sutter observa que Modern C++ não é C++98-- Modern C++ é mais limpo e mais seguro enquanto se mantém rápido e flexível. Isso não quer dizer que o velho C++ não é suportado, como em muitos casos ele vai compilar com avisos e sugestões do compilador de como ele pode ser melhorado.

Uma das características que o Modern C++ oferece é simplificar (da perspectiva do programador) o gerenciamento de memória quando se utiliza new-> make_unique ou new->make_shared. Não há necessidade de exclusão, o gerenciamento do ciclo de vida é automático e exception-safe.

Outra área é como values types são tratados de forma mais eficiente para operações de movimentação. O C++11 adicionou a ideia de mover tipos objeto. Com base nessa abordagem, existe a possibilidade de se tornar dono ao invés de fazer cópias que deverão ser excluídas. A semântica melhorada de movimentação pode melhorar a velocidade de código legado simplesmente recompilando com um compilador C++14.

Escrevendo código rápido

Arrays contíguos são importantes e muitas vezes esquecidos, se está percorrendo muitos objetos, então é muito importante ordená-los para fazer um acesso aos endereços adjacentes. Se há uma preocupação com o desempenho então é melhor usar arrays, e não apenas lists e arraylists.

Continuando nesse tema, Sutter disponibilizou benchmarks indicando que o uso de vector é muito mais eficiente que o uso de lists para inserções e exclusões. Um list pré-alocado é mais rápido do que um list regular, mas ambos permanecem muito piores do que o Vector.

A palestra de Sutter é muito informativa e ele continua sendo um orador envolvente. Consulte o site Channel9 para assistir a palestra completa.

Avalie esse artigo

Relevância
Estilo/Redação

Olá visitante

Você precisa cadastrar-se no InfoQ Brasil ou para enviar comentários. Há muitas vantagens em se cadastrar.

Obtenha o máximo da experiência do InfoQ Brasil.

Dê sua opinião

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão
Comentários da comunidade

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

Dê sua opinião
Feedback geral
Bugs
Publicidade
Editorial
Marketing
InfoQ Brasil e todo o seu conteúdo: todos os direitos reservados. © 2006-2016 C4Media Inc.
Política de privacidade
BT

We notice you’re using an ad blocker

We understand why you use ad blockers. However to keep InfoQ free we need your support. InfoQ will not provide your data to third parties without individual opt-in consent. We only work with advertisers relevant to our readers. Please consider whitelisting us.