BT

Disseminando conhecimento e inovação em desenvolvimento de software corporativo.

Contribuir

Tópicos

Escolha a região

Início Notícias Modern C++ e o Visual Studio

Modern C++ e o Visual Studio

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

Conteúdo educacional

BT