Enviamos o primeiro produto comercial do mundo escrito em F # ( F # para visualização ) e o segundo ( F # para Numerics ), bem como a primeira literatura comercial sobre F # ( The F # .NET Journal ) e escrevemos e publicamos o único livro sobre a versão atual de F # ( Visual F # 2010 para computação técnica ).
Estávamos enviando produtos de acordo com linhas semelhantes escritas em C # (por exemplo, isto ), mas também tínhamos uma sólida experiência no uso comercial do OCaml. Éramos os primeiros adeptos entusiasmados do F # quando ainda era um protótipo de pesquisa em 2006 porque reconhecemos o potencial de ter uma linguagem decente do tipo OCaml moderna na plataforma .NET de força industrial e, consequentemente, pressionamos para que ele fosse produzido. O resultado foi um sucesso incrível e o F # excedeu em muito nossas elevadas expectativas.
Para nós, o F # tem muitas vantagens diferentes e o usamos para uma ampla variedade de aplicações. Temos centenas de milhares de linhas de código F # em produção. Agora usamos F # para todos os nossos aplicativos LOB: nossas transações com cartão de crédito são processadas usando o código F #, nossas notificações de produtos são enviadas usando o código F #, nossas assinaturas são tratadas com o código F #, nossas contas são feitas com o código F # e assim por diante. Talvez o principal recurso do idioma que pague dividendos aqui seja a correspondência de padrões. Até usamos F # para colorir a sintaxe e destacar nosso último livro ...
Nossa biblioteca de visualização é uma grande vendedora e suas funcionalidades estão centradas na execução interativa de F # no Visual Studio. Nossa biblioteca aumenta isso com a capacidade de gerar visualizações interativas em 2D e 3D com o mínimo de esforço (por exemplo, apenasPlot([Function sin], (-6., 6.))
traçar uma onda senoidal). Em particular, todos os problemas de encadeamento são completamente automatizados, para que os usuários não precisem se preocupar com threads e despacho da interface do usuário. Funções de primeira classe e preguiça foram extremamente valiosas ao escrever essa parte da biblioteca e os tipos de dados algébricos foram usados extensivamente em outros lugares. O desempenho previsível também se mostrou valioso aqui quando nossos clientes encontraram bugs de desempenho nos testes de impacto do WPF e conseguiram reimplementar facilmente o código relevante no F # para uma melhoria de 10.000 × no desempenho. Devido à natureza de forma livre da GUI deste produto, o designer da GUI e o C # não seriam benéficos.
Grande parte do nosso trabalho gira em torno de métodos numéricos, incluindo nossas bibliotecas comerciais e livros. O F # é muito mais forte nessa área do que o C # porque oferece abstrações de alto nível (por exemplo, funções de ordem superior) com penalidades mínimas de desempenho. Nosso resultado mais convincente nesse contexto foi a criação de uma implementação simples, mas generalizada, da decomposição QR da álgebra linear 20 vezes menor que o código Fortran da implementação de referência do LAPACK, até 3 vezes mais rápida que a Intel Math ajustada pelo fornecedor Biblioteca de Kernel e mais genérica, porque nosso código pode lidar com matrizes de qualquer tipo, mesmo matrizes simbólicas!
No momento, estamos desenvolvendo componentes WPF / Silverlight em uma combinação de F # (para o interior) e C # (para o calço), criando aplicativos WPF para atuar como manuais interativos para nossos produtos de software e estou escrevendo um novo livro, Multicore F #, que será o guia definitivo para a programação paralela de memória compartilhada no .NET.