Eu ouvi falar sobre a popularidade moderna do C ++ e algumas palestras sobre a migração de volta para C ++ do C # ou de outras linguagens do tipo C.
Conheço os recursos do C ++ 11, mas gostaria de ouvir suas experiências, principalmente dos desenvolvedores que migraram do C # para o C ++.
Mais importante, a Microsoft incentiva os desenvolvedores a usar C ++? Se sim, por que?
Respostas:
Sim, suas suspeitas estão corretas. A Microsoft está pressionando o C ++ para voltar e se tornar mais popular.
Não consigo encontrá-lo agora, mas há um tempo vi uma apresentação de um dos grandes nomes da Microsoft e tudo foi voltado para desenvolvedores, e era sobre o lançamento do Windows 8 e, especialmente, do WinRT (também o substituto para o .NET framework) como API do Win32).
Ele tinha uma linha do tempo que explicava como várias pressões estavam afetando a tecnologia popular em determinados momentos. Então, a princípio, as pessoas queriam velocidade, então todas codificadas em C / C ++ (duas linguagens separadas). À medida que o hardware ficava mais rápido, o foco se afastava da velocidade de execução e mais para a velocidade de desenvolvimento, de modo que as linguagens de nível superior se tornaram muito mais populares.
No entanto, agora o foco está se voltando mais para computadores móveis e baseados em ARM (o Windows 8 é o primeiro lançamento do Windows a ser compilado para ARM) e muitos acreditam que se tornarão muito mais populares e, para alguns, substituirão completamente a área de trabalho. Portanto, o foco (pelo menos aos olhos da Microsoft) está de volta ao C ++, porque agora nos preocupamos com a duração da bateria. Código de nível superior = mais instruções = mais suco necessário.
Para dar suporte a essa transição de volta ao C ++, eles introduziram uma API de programação do Windows 8 completamente nova, chamada WinRT (a última vez que verifiquei, esse era o nome). Essa API segue o tema do .NET Framework no escopo de funcionalidade que fornece, mas estará disponível para qualquer pessoa que codifique em C ++ (via interfaces COM), em C # ou mesmo em Javascript para aqueles que desejam escrever aplicativos HTML 5 / Javascript. Eles também estão trazendo o XAML (tecnologia usada no WPF, sua mais nova estrutura de interface do usuário) para estar disponível também em C ++.
Então, para mim, isso indica que há definitivamente mais foco em C ++ na Microsoft do que no passado.
ATUALIZAÇÃO # 1:
Como acabei de receber um distintivo de 'boa resposta', pensei que talvez devesse voltar e a) esclarecer algumas coisas eb) fazer a polícia de verificação de fatos feliz porque, como todos sabemos nos fóruns de tecnologia, algo impreciso pode resultar em guerras que duram anos.
O WinRT não é um substituto para o .NET framework, mas é mais uma alternativa que os desenvolvedores do MS Windows agora têm e o MS está pressionando fortemente as pessoas a seguir nessa direção. Parece (mantenha suas chamas se isso não for 100% preciso) que o WinRT foi direcionado principalmente para aplicativos de interface de usuário modernos, embora aplicativos de desktop comuns também possam tirar proveito disso. Dito isto, a MS está pressionando fortemente para que as pessoas passem a escrever a) aplicativos modernos da interface do usuário eb) começar a usar o WinRT, de modo que o saldo das mudanças de porcentagem de pessoas que usam o .NET framework provavelmente cairá.
O C ++ NUNCA substituirá linguagens de nível superior, como C # ou python. Assim como essas linguagens, NUNCA substituirá o C ++. Essa foi provavelmente a parte mais controversa da pergunta do OP. Mas é tudo uma questão de equilíbrio e os fatos são os seguintes:
Então, em conclusão: Sim, a MS está pressionando para que o C ++ volte, provavelmente sua popularidade aumentará. Não, o C ++ nunca substituirá o C #.
Atualização # 2:
Não sei por que, mas a comunidade técnica tende a ver as coisas em termos absolutos de preto / branco quando a realidade está cheia de tons de cinza. Esta é uma resposta a vários novos comentários que foram adicionados a esta postagem:
O .NET framework não desaparecerá tão cedo (ou nunca). Praticamente todas as tecnologias que o Windows possuía desde os anos 90 ainda existem de alguma forma ou moda. Portanto, para aqueles que estão tão ligados ao framework .NET: a) não se preocupe com o desaparecimento eb) pare de argumentar a seu favor como se sua vida dependesse disso, sua API está segura.
O WinRT reimplementa muitas funcionalidades que anteriormente eram fornecidas pelas APIs de estrutura do Win32 e .NET. As pessoas que desejam essa funcionalidade terão uma opção se quiserem usar o WinRT, a estrutura .NET ou continuar com a API do Win32 (que também não está morta). Se o WinRT não suporta a criação fácil de aplicativos da Web hoje, há uma chance muito boa de que ele os suporte no futuro.
A posição que a Microsoft anunciou é que o WinRT é uma estrutura grande que deu à Microsoft a chance de começar com uma lista limpa e criou uma API usando as lições aprendidas na API do Win32 e na própria estrutura .NET. Eu tentei procurar esse vídeo e ainda não consigo encontrá-lo, mas uma das coisas que o orador mencionou é que há certas áreas do .NET framework que poderiam ter sido definidas melhor / mais simples / mais limpas e o WinRT expõe a mesma funcionalidade nessa nova interface mais limpa.
fonte
Full
.NET Profile e o 'WinRT' .NET Profile, as principais diferenças, são muitas coisas que foram mal implementadas há 10 a 15 anos, foram removidas e substituídas por um código melhor projetado. Até que eles se livrem da biblioteca Win32 todos juntos. O .NET veio para ficar. Seu comentário mostra uma total e completa falta de conhecimento em relação às linguagens .NET e C #.Não, o Windows 8 tem tudo a ver com usar o idioma que você precisa (ou conhece) para fazer o trabalho. JavaScript, linguagens .Net (C #) e C / C ++ são todos suportados igualmente.
Nada está sendo substituído e, no final, depende dos desenvolvedores. Há, no entanto, um esforço para melhorar a vida útil da bateria, o que o WinRT facilita.
A exceção são os jogos nos quais o C ++ está obtendo mais suporte, especialmente no Windows Phone 8, enquanto os idiomas gerenciados não têm suporte nativo (também conhecido como xna).
fonte
O pensamento de que as pessoas preferem C ++ em vez de C # (ou praticamente qualquer outro alterador pós-1990 [não-php]) para programação de uso geral é ridículo . O C ++ 11 adiciona alguns bons bits ausentes, mas ainda está pegando as pernas de um cachorro .
O C ++ possui alguns nichos bons e ainda é a melhor opção em algumas plataformas com suporte limitado ao compilador. Mas não, o C ++ moderno não está nem perto de substituir algo, exceto C ++ quebrado e antiquado.
fonte
DXM escreveu:
De acordo com essas palavras, escolher Java como linguagem / estrutura principal para o Android do Google foi um erro. Não era. Linguagem de nível superior geralmente significa fazer as coisas com mais rapidez e acho que é a coisa mais importante para a Microsoft e o Google. Quanto mais e melhores aplicativos são criados para a plataforma, maior é o lucro do produtor do SO.
Por outro lado, ainda há muitos softwares para Windows escritos em C ++, portanto, forçar esses desenvolvedores a mudarem para C # / JavaScript / qualquer outra coisa seria insano. A Microsoft se concentra em dar a possibilidade de desenvolver aplicativos Win8 para o maior número possível de desenvolvedores, por isso, na minha opinião, eles decidiram oferecer suporte a C ++ e JavaScript na pilha de desenvolvimento do Win8.
fonte
O C ++ ainda possui arquivos de cabeçalho, pré-processadores flexíveis (#define), ... coisas que algumas pessoas consideram esses recursos 'ruins' ou 'difíceis de gerenciar'.
C #, por outro lado, usa metadados, sem necessidade de gravar e manter arquivos de cabeçalho.
Sobre a Microsoft adicionando mais recursos ao C ++: Não é um problema.
Todo compilador C ++ está adicionando mais recursos, incluindo recursos do C ++ 11. O GCC também é.
fonte
Pode ser apenas eu, mas vejo um uso muito mais simples de C do que C ++.
O fato de o C ++ ter engolido todo o C simples torna difícil inferir quem está usando o quê.
Mas há muito mais projetos de código aberto em C que C ++.
Minha opinião é que se você precisar de velocidade próxima ao metal, use C. Se você precisar de flexibilidade e capacidade de gerenciamento com desempenho razoável, use C # ou Java. Se você deseja um design limpo, use rapidamente Python, Scala, Groovy ou qualquer um dos vários idiomas completos.
fonte
O c ++ não está substituindo o c #. Vamos ver onde a linguagem c ++ é usada. É usado quando há necessidade de alto desempenho, para escrever bibliotecas de middleware, acesso de baixo nível e para escrever código para dispositivos com recursos limitados. Embora você possa usar c # para alguns deles, o c ++ é mais adequado para eles. O impulso da Microsoft para c ++ está altamente relacionado ao seu grande impulso no espaço móvel. Ninguém solicitará que você escreva seu próximo aplicativo Web em c ++. Mas com Qt, o argumento da produtividade não pode ser feito em relação ao c ++. Mas acho que muitas pessoas não estão familiarizadas com o Qt.
fonte
Não, o C ++ não pode substituir o C # porque todos os aplicativos que não são do Direct3D Windows Phone 8 devem ser desenvolvidos com C #. Você não pode desenvolver e publicar aplicativos na loja de aplicativos wp8 usando C ++ ou HTML5 / Javascript. E enquanto a Microsoft não remover essa restrição, o C ++ não substituirá nada. Como resultado, tenho certeza de que poucas pessoas desenvolverão o WP8. Pobre Nokia, perdendo mais uma vez.
Aqui está o trecho do microsoft dev center :
Ainda outra:
Até os MVPs da Microsoft alegam que esse boato é uma desinformação deliberada feita pela própria Microsoft:
E esse marketing errado deliberado desperdiça os meses das pessoas :
fonte