Início Notícias Especificação do C++ AMP da Microsoft: buscando diminuir barreiras ao paralelismo de dados
O lançamento da especificação (PDF em inglês) do C++ AMP, ou Paralelismo Maciço Acelerado na sigla em inglês, coincide com o evento GoingNative 2012 da empresa. O C++ AMP é descrito como "um modelo de programação que permite a aceleração de código C++, em hardware com paralelismo de dados". O exemplo mais comum deste tipo de hardware seria a GPU (unidade de processamento gráfico) de uma placa gráfica separada, além da capacidade de usar CPUs com vários núcleos e tecnologia SSE como alternativa.
Traz controle explícito sobre: copiar dados entre a CPU e o acelerador, e os cálculos realizados na GPU. Pode-se gerenciar explicitamente toda a comunicação entre a CPU e o acelerador, e essa comunicação pode ser síncrona ou assíncrona. As operações executadas no acelerador são representadas por arrays multidimensionais, funções de alto-nível para manipulação de matrizes, operações de indexação multidimensional e outras abstrações de alto nível, tudo isso toma como base um grande subconjunto da linguagem de programação C++. O modelo de programação contém múltiplas camadas, de modo que se possa balancear o custo/benefício entre facilidade de uso e máximo desempenho.
A implementação da Microsoft pode ser usada em qualquer sistema rodando DirectX 11; se o DirectX não estiver instalado, uma implementação não-C++ seria executada. A Microsoft não pretende que o C++ AMP seja somente para Windows, uma vez que "apoia e incentiva qualquer pessoa a implementar a especificação do C++ AMP em qualquer plataforma" (veja o original). Até agora, o projeto recebeu contribuições da Nvidia e da AMD. Para incentivar outras implementações, a Microsoft lançou a toda especificação do C++ AMP sob os termos da Microsoft Community Promise.
A interoperabilidade entre o C++ AMP e o Direct 3D é suportada na implementação da Microsoft, mas não é exigida pela especificação. A interoperabilidade com OpenGL não é suportada, e uma recente postagem pelo desenvolvedor Daniel Moth indica que esta implementação não está próxima, pois, segundo ele, ninguém da equipe do projeto tem experiência com OpenGL.
Os desenvolvedores que desejam experimentar o novo modelo de programação C++ AMP podem fazer o download do Visual Studio Developer Preview 11 e analisar o código de exemplo apresentado por esta entrada do blog MSDN. (Este código também inclui exemplos de como os desenvolvedores .NET podem utilizar o C++ AMP a partir do C#.)

Segundo a startup canadense PerfectlySoft Inc, é possível construir aplicações web de nível empresarial com a linguagem Swift da Apple usando o Perfect. Com a recente abertura do código fonte do Swift, o Perfect promete fornecer suporte ao desenvolvimento multi-plataformas, incluindo OS X, Linux, Windows, iOS e Android. De acordo com Sean Stephens CEO da PerfectlySoft, usar o Swift tanto do lado cliente quanto servidor tornará o processo de desenvolvimento mais eficiente permitindo que os desenvolvedores reusem o mesmo código e lógica de negócio, simultaneamente garantindo um elevado nível de segurança e desempenho, graças às capacidades do Swift.
O Perfect é composto do PerfectLib, um framework Swift que fornece um conjunto de funcionalidades principais que podem ser usadas tanto para desenvolvimento frontend como backend. Do lado cliente, o PerfectLib praticamente duplica a maioria das funcionalidades que já são fornecidas pelos SDKs da Apple, tais como: o suporte para o encoding/decoding JSON e marshalling, gerenciamento do fluxo de bytes, suporte cURL, acesso ao SQLite. Ao confiar na implementação desses recursos do PerfectLib, o código do cliente pode ser menos dependente de SDKs da Apple, e portanto, mais facilmente reutilizáveis para o backend. No lado servidor, o PerfectLib inclui funcionalidades adicionais que fazem mais sentido aqui, tais como: suporte ao gerenciamento de arquivos, processos e IPC, análise de template Mustache, gerenciamento de estado/sessão e conectores para os bancos de dados MySQL, PostgreSQL, SQLite e MongoDB.
O InfoQ conversou com Sean Stephens para aprender mais sobre o Perfect e entender melhor o que será fornecido aos desenvolvedores.
Sean Stephens: O Perfect permitirá as pessoas construírem aplicativos móveis, aplicativos para Apple TV, etc, usando o Swift no lado servidor das aplicações como também no lado cliente, e adicionalmente construir websites e aplicações web usando o Swift. Os desenvolvedores poderão reduzir o tempo, curva de aprendizado e código necessário para construir aplicações usando a mesma linguagem através do ecossistema das aplicações.