Autógrafo : Concurrent Programming on Windows
Data:10/30/2008
Comprei o livro justamente no momento de conversar com Joey Duffy, sabia que a conversa prometia e não me enganei :
R: Você já viu as novidades do PDC em relação ao desenvolvimento paralelo ?
P: "Sim, vi alguma coisa, como por exemplo o CCR & DSS Toolkit que foi apresentado no keynote hoje"
R: Sim, mas o CCR & DSS Toolkit é um recurso produzido pela Microsoft Research, isso é algo totalmente a parte.
P: "Entendi. Eu vi que você fala no livro do PLinq, que é parte do Framework para desenvolvimento paralelo, certo ?"
P: "Qual a diferença entre o Framework para desenvolvimento paralelo e o F#, se ambos tem o mesmo objetivo ? "
R: O F# é uma linguagem com síntaxe funcional, mas o compilador transforma o F# para IL e no final o F# está na verdade fazendo uso do framework de desenvolvimento paralelo, que é a base do desenvolvimento paralelo no .NET
P: "O F# então é apenas uma nova síntaxe ?"
R: No momento não. Para o desenvolvimento paralelo são necessários assemblies criados de forma voltada ao desenvolvimento paralelo e muitos assemblies no .NET não são. Por isso o F# tem seus próprios assemblies.
P: "Ou seja, o ambiente do F# tem assemblies equivalentes aos do .NET mas desenvolvidos utilizando o framework de desenvolvimento paralelo ?"
R: Sim, mas não tudo. O F# está sendo criado de forma a ser voltado para o desenvolvimento científico, muitos cálculos matemáticos. Todos os assemblies que sejam de alguma forma ligados a isso foram re-criados para o F# utilizando o framework de desenvolvimento paralelo. Porém como qualquer linguagem do .NET o F# tem acesso a qualquer assemblie, mas acessando um assemblie não desenvolvido de forma paralela, perde este recurso.
P: "Quando o framework .NET foi criado, VB e C# por exemplo eram apenas questões de síntaxe, desenvolvedores podiam escolher qualquer uma que preferissem. Agora temos linguagens específicas com vantagens e desvantagens sobre outras, como o exemplo do F#, de que forma você vê esse distânciamento de recursos entre as linguagens ?"
R: Algumas linguagens tem evoluido mais em algumas direções e por uma parcela de tempo se tornam pioneiras naquela direção, mas isso não significa que as demais linguagens também não evoluirão no mesmo sentido, seguindo os passos umas das outras.
P: "Empresas que lidam com processamento científico intenso tem preferido trabalhar com C++ e interop do que com C# e vêem grandes problemas de performance no C#. O processamento paralelo visa justamente permitir um maior aproveitamento da performance, mas justamente aqueles que trabalham com processamento científico tem evitado. De que forma vê esse assunto ? "
R: O F# é uma linguagem produzida especialmente para o processamento numérico e científico, então acredito que tenha solucionado muitos problemas de performance com esses tipos de dados. O C# irá seguir o F#, com certeza, mas é muito provável que o F# já não tenha esses problemas de performance que os desenvolvedores que citou encontraram.