Sou codificador e tenho experiência com código nativo e gerenciado. Comecei com Pascal e C, depois mudei para C ++ e, eventualmente, para C #.
Durante o último ano, estive codificando quase exclusivamente em C # e perdi muito do que costumava acontecer naturalmente quando eu era um codificador C ++.
Algumas semanas atrás, quando me sentei para escrever algum código C ++ nativo, me peguei remexendo quando lentamente me familiarizei com as complexidades, peculiaridades e idiossincrasias de tudo isso. Estou quase com vergonha de dizer que tinha esquecido completamente que passar uma matriz alocada dinamicamente para uma função sem também passar seu tamanho significaria que a função de recebimento não teria como saber quanto tempo a matriz é.
Existem inúmeros artigos e documentos que comparam e contrastam código gerenciado versus código não gerenciado. Todos sabemos que o código nativo, se bem otimizado, pode executar significativamente mais rápido e mais leve que o código gerenciado. Por outro lado, o código gerenciado possui coletores de lixo e otimização específica da CPU e do SO em tempo de execução, o que pode dar ao código nativo uma execução pelo seu dinheiro.
Puramente do ponto de vista técnico, não há um vencedor claro.
Não há dúvida de que o código gerenciado é de ordem de magnitude mais simples de codificar e entender. Veja a diferença no número de linhas necessárias para construir uma GUI simples no Win32 C ++ vs C #.
Nos meus dias de codificação nativa, escrevia principalmente simulações matemáticas que rodavam em supercomputadores. Eles tinham CLIs feias e eram principalmente focados em algoritmos. Atualmente, escrevo em C # e produzo belos aplicativos GUI, mas ficaria perdido se eu precisasse criar um calibre semelhante em um idioma nativo. Mesmo com uma estrutura como QT, ainda levaria o dobro do tempo para produzir algo em C ++ / QT do que em C #.
Sempre que vejo alguém que escreveu um aplicativo GUI completo e em grande escala em C / C ++, não posso deixar de sentir uma sensação de reverência e uma pitada de ciúmes.
Estou curioso para saber como outros codificadores experientes veem idiomas gerenciados e não gerenciados. Você vê o código gerenciado como amador ? Você vê codificadores nativos como mais hardcore ?