Por que aprender idiomas impopulares. Exemplo de comunidade F #



Existem filmes cult, jogos, livros ou música - eles gostam muito de uma comunidade unida, profissionais e críticos. Mas não há sucesso comercial e popularidade generalizada. Em tais situações, geralmente estou dolorosamente chateado.

No desenvolvimento, as boas tecnologias também nem sempre se disseminam. Por exemplo, F #. Tudo o que sei sobre ele é uma linguagem muito legal, mas completamente impopular, após a qual os desenvolvedores não podem mais voltar apenas às suas línguas habituais.

Eu tentei descobrir o motivo. E em geral - quem são as pessoas que escrevem e por que fazem isso se os negócios não precisam de um idioma? Para fazer isso, liguei para falar com a comunidade F # de língua russa no Telegram. Aqui está a nossa mesa redonda.

Como começar a aprender F #


Airat Khudaigulov ( Szer ): Eu próprio sou do C #. Tivemos um trabalho relacionado ao Akka.NET, que foi portado do Akka para o Scala. O porto é excelente, mas não houve exemplos de casos raros de documentação, eles sempre estavam no cais do Scala. Quando li esta doca, uma pergunta surgiu na minha cabeça - por que tudo está escrito em Scala em algumas linhas e eu sofro em C #?

A saída foi encontrada - F #. Desde então, e sem lágrimas.

Roman Liman ( kagetoki ): Acabou sendo uma ferramenta poderosa para resolver problemas cotidianos muito reais de qualquer programador. As dificuldades que foram consideradas a norma e a inevitabilidade no mundo OOP de C # e Java não são inevitáveis ​​e podem ser facilmente evitadas em vez de serem superadas.

Phil Ranzhin ( fillpackart ): Uma vez em Habré, li uma grande entrevista com Vagif Abilov. Naquela época, eu não entendia o paradigma de programação funcional e qualquer informação sobre ele me irritava seriamente. Então essa entrevista.

Vagif Abilov : Esse material pode ser lido aqui . Isso foi logo após o meu discurso na conferência DotNext de Moscou. Em poucas palavras, comecei a estudar F # com o desejo de escrever código mais compacto (menos código - menos mal) e trabalhar com estruturas de dados imutáveis. Obviamente, ninguém está impedindo um programador de C # ou Java de definir suas estruturas de dados como imutáveis, mas a base das linguagens que implementam o OOP é a possibilidade de mutações nas estruturas de dados, e essa possibilidade não vai a lugar algum. A programação funcional permite que você não se esforce para proteger os dados contra alterações incorretas em um ambiente multithread - os dados cuidam de si mesmos, são imutáveis.

Phil Rangin : Wagif continuou dizendo que após o cerimonial C # e Java, o F # parecia muito mais adequado para o desenvolvimento. Eu não sabia quem era Vagif na época, mas, é claro, decidi imediatamente que ele não entendia nada. C # não é cerimonial, C # é exatamente o que deveria ser. Poderoso e bonito. Decidi escrever um artigo sobre como a programação funcional é ridícula. Peguei uma tarefa simples e comecei a implementá-la em C # e F # para ilustrar meu argumento. O F # no processo me ocorreu tanto que não terminei de escrever o artigo. Comecei a estudar essa tecnologia.

Roman Liman : Muitas coisas testadas em C # em tempo de execução agora migraram para o tempo de comp, portanto parece que a primeira vez que tentei digitar estática - uma revelação direta veio à tona.

Onde no F # você precisa de sete linhas de código, no C # o código equivalente será expandido para 200-300, sem exagero (e isso conta apenas o código útil). O próprio compilador gera um monte de clichê para você, por exemplo, igualdade estrutural.

Phil Rangin : Eu nunca estive o código F #, porque no meu código F # todos os erros são detectados no estágio de compilação. Eu não estou brincando.

É difícil aprender F #


Roman Lyman : Quão difícil é estudar? Para mim, não é nada difícil. A única coisa no começo é um pouco tensa se você se deparar com um paradigma funcional e tipos imutáveis. Mas isso não é uma mudança de linguagem, mas uma mudança de paradigma.

A sintaxe não é óbvia a princípio, então é melhor deixar a bravata de lado e ler sobre o idioma, em vez de esperar que o conhecimento de C # seja suficiente.

Ayrat Khudaigulov : O F # suporta tudo o que está em C #, exceto goto (a linguagem é completamente baseada em expressões, seria estranho fazer uma transição imperativa na expressão calculada) e a palavra-chave protegida (isso ocorre por design, porque obviamente não é difícil). Tudo o mais que amamos - classes abstratas, interfaces, atributos automáticos, usos e tri-ketchy - é, é claro. Também para os fãs da contagem de bytes, tudo está lá: parâmetros ref / out, mutabilidade, extensões, não gerenciados, ponteiros, stackalloc.

Todos os recursos do C # vêm com um atraso de alguns anos em comparação com o F # (genéricos, tarefa assíncrona / aguardada +, LINQ, correspondência de padrões e muito mais). E muitas características, em geral, duvido que elas venham (tipos de soma representados por uniões discriminadas, função de função nativa). No C # 8.0, eles prometem trazer registros e um padrão de correspondência recursiva. Pergunta de atenção - por que esperar?

E outra pergunta: por que aprender um novo idioma para escrever exatamente da mesma maneira? Para obter os benefícios que o F # oferece, mas o C # não, você precisa entender o outro lado da Força. E não é fácil.

John Doe : Como desenvolvedor de C #, sou grato aos criadores de F # por genéricos e assincronia com um rosto humano em C #. Se alguém não souber, esses megafits apareceram em C # graças ao F #.

Vagif Abilov : No famoso livro “Pragmatic Programmer”, os desenvolvedores são aconselhados a aprender uma nova linguagem de programação a cada ano. Não posso me gabar de seguir exatamente esse conselho, mas o principal, na minha opinião, é o que os autores querem dizer a eles - o programador deve estar sempre pronto para revisar os princípios de escrever seus programas.

Muitos geralmente estão muito ocupados com linguagens de programação, como uma crença na vida. Se você mudou de Java para Clojure, eles às vezes serão tratados como se um cristão tivesse se convertido ao Islã. Por que, de fato, tanta atenção? Aprender novas linguagens de programação geralmente permite repensar nossos hábitos de trabalhar com linguagens antigas. Aqueles que estão familiarizados com o F # escrevem em C # de maneira diferente.

Roman Melnikov ( neftedollar ): em F #, OOP é mais correto (embora seja totalmente compatível com OOP em C #), pois incentiva a programação em interfaces abstrações, em vez de classes explícitas.

O que eles pensam dos criadores da linguagem


Nikolay Matyushin : Uma vez eu contribuí com o suporte de provedores de tipe no .NET Core. Durante muito tempo eles não funcionaram, e uma pessoa da comunidade de língua russa e eu decidimos descobrir qual era o problema. Examinando, vimos que no .NET Core não há função que salve montagem (objeto) em um arquivo - essa função foi usada pelos provedores.

Passamos uma ou duas semanas em um protótipo que fez isso. Acabou uma muleta terrível, mas parcialmente funcionando. Durante todo esse tempo, conversamos sobre o assunto no github e, em seguida, Don Syme veio, escreveu "Poucas horas de trabalho" e consertou os provedores.

Vagif Abilov : O criador da linguagem Don Syme é acessível e democrático. Espero que ele chegue a alguma conferência russa para que os desenvolvedores russos possam conhecê-lo pessoalmente.

Roman Lyman : Syme é um gênio. Surpreendentemente, ele criou toda essa beleza quase sozinha.

Pavel Smirnov : Ele é meu ídolo de programação.

Airat Khudaigulov : Don Syme, a propósito, introduziu genéricos no .NET, caso contrário, teríamos sentado em C # e transmitido tudo desde objeto e de volta, como era (e é parcialmente) em Java. A Syme está desenvolvendo a linguagem de olho no C #, para compatibilidade com seus novos recursos, o que provavelmente é estrategicamente correto. Mas isso significa que um eco de más decisões em C # também pode entrar no F #. Ele também é contra a introdução de recursos FP "abstrusos" (oi Scala) e o rearranjo da linguagem, como eles podem assustar outras pessoas e aumentar a lib padrão (olá C ++).

Eu acho que Syme é um herói. Eu concordo com a visão dele da linguagem como multiparadigmática, mas gostaria de mergulhar na linguagem acima.

Por que a linguagem não é popular


Roman Lyman : O idioma não é popular, na minha opinião, porque em geral o FP é menos popular que o OOP. Além disso, há um limite de entrada. E então - truque 22. Os projetos em F # não escrevem, porque existem poucos programadores no mercado e os programadores não aprendem essa linguagem, porque não há projetos no mercado.

Phil Rangin : Não conheço pessoas que praticam programação funcional, mas preferem orientação a objetos. Aqui o F # foi especialmente azarado - serve apenas para aqueles que acreditam na simbiose desses paradigmas.

Pavel Smirnov : Muitos o consideraram natimorto por causa da política da Microsoft - o F # era apenas uma plataforma para superar recursos do C #. Mas a linguagem foi inicialmente posicionada mais para a ciência de dados do que para o desenvolvimento industrial.

Roman Melnikov : Resharper. Para C #, este é um tópico importante, e muitos já gastaram nele. Sem um resolvedor, escrever em C # é um pouco complicado, você precisa escrever muito com canetas, como destacar alocações. E o recarregador remove muita dor dos sycharpers. Não há tanta dor no F #, mas aqueles que têm um novo compartilhador não podem apreciar todos os encantos de uma linguagem que não depende de tuling.

Vagif Abilov : Na minha opinião, a razão do atraso no sucesso do Scala está no domínio da Microsoft, que ainda determina o que é prioritário na plataforma Windows. Embora o F # tenha sido desenvolvido pela Microsoft Research, ele sempre foi posicionado pela empresa como um idioma para entusiastas. A Microsoft possui métricas que mostram a viabilidade econômica de desenvolver uma tecnologia específica, dependendo das vendas atuais e, é claro, qualquer SharePoint de acordo com essas métricas parece mais atraente que o F #. Mas uma gota desgasta uma pedra.

Phil Rangin : Eu acredito que ele disparará. Todo o poder do .NET combinado com a sintaxe mais moderna e a abordagem mais idiomática da história não pode deixar de disparar.

Roman Melnikov : As perspectivas são incríveis. O F # está gradualmente migrando para a análise de dados, graças a provedores de tipos, por exemplo. Existem compiladores em js e na biblioteca mágica elmish (essencialmente Elm for .NET).

Miguel De Icaza apoia ativamente o F #, e no Xamarin seu apoio sempre foi como o C #. Existe um compilador no ErlangCore, que também é muito interessante. No F #, você pode escrever um back-end e front-end totalmente. O SAFE-Stack é uma coisa esquisita, com chamadas de API digitadas, invólucros legais em cima de websockets (Elmish.Bridge) e muito mais.

Vagif Abilov : Estou muito satisfeito por o F # estar sendo usado. Trabalho em um projeto de transmissão norueguês; nosso sistema carrega arquivos de mídia de programas de televisão e rádio na “nuvem” para disponibilizá-los para visualização e escuta de computadores e dispositivos móveis. O sistema é escrito em F # e usa o Akka.NET. Este não é o único projeto em nossa organização que usa F #, e o que é especialmente agradável é que o número de projetos está crescendo, bem como o número de desenvolvedores que desejam mudar para esse idioma.

Para que é adequado o F #?


Phil Rangin : O F # se encaixa perfeitamente no desenvolvimento da IA. Essa linguagem é literalmente feita para me abstrair das dificuldades e focar no principal. Quando você faz IA, sua tarefa é mapear sua maneira de pensar sobre o comportamento da máquina. Nesses casos, o código é sua linguagem intermediária, que não é capaz de expressar coisas muito complexas. Aqui, o F # é capaz de ser tão abstrato que não interfere com você e seu carro fazendo história.

Vagif Abilov : É aplicável a todas as tarefas e se aplica especialmente às tarefas de modelagem de domínio. Na entrevista do ano passado sobre Habré, eu disse imprudentemente que as linguagens funcionais são mais aplicáveis ​​a algoritmos e back-end e menos à programação de uma interface de usuário e páginas da web.

Então, nos comentários, alguém notou que existe uma linguagem funcional Elm, especialmente escrita para programar páginas da web. O comentarista estava absolutamente certo. Desde então, comecei a usar o Fable, que permite escrever aplicativos da Web em F #, compilando-os em JavaScript. Uma experiência incrível, a combinação do F # + Fable (e da biblioteca Fable-Elmish) abre acesso à programação da Web para desenvolvedores que não entendem nada em CSS como eu.

Pavel Sirnov : desenvolvimento orientado a dados - uma linguagem FP concisa que suporta provedores de tipo. Modelo de ator - MailboxProcessor na biblioteca padrão é um conto de fadas.

Roman Melnikov : Resolve perfeitamente as tarefas da web, integra-se aos componentes de reação . As tarefas de análise de dados e aprendizado de máquina ( fslab.org ), ETL e design de lógica de negócios estão sendo tratadas - o sistema de tipos permite que você escreva para que não haja estados incorretos.
Ótimas tarefas de análise (Fparsec). Ótimo para escrever seus próprios idiomas. O mesmo TypeScript foi originalmente escrito em F #. O código para a GPU está escrito.
Eu mesmo escrevo scripts fsx nele, em vez de bash e python para minha máquina.

Sim, sob microcontroladores você não entenderá. Mas acho que muitas pessoas podem ficar sem isso.

Onde obter informações


Livros



A internet



Telegram


  • fsharp_news
  • fsharp_chat

Algumas palavras sobre a comunidade


Roman Liman : A comunidade é legal, todos estão unidos pelo desejo de escrever F # por dinheiro, para que todos os recém-chegados sejam grandemente ajudados a aumentar a comunidade, aumentando suas chances de encontrar um emprego.

Phil Rangin : Cultistas Perigosos. Mas eles estão certos.

Pavel Smirnov : A comunidade de língua russa F # é um lugar muito confortável. Acima de tudo, gosto que eles não sejam indiferentes à sua língua, como acontece em outros ecossistemas mais conhecidos.

Nikolai Matyushin : Talvez devido ao fato de o idioma não ser muito popular, e as pessoas tóxicas não persistirem.

Roman Melnikov : Existem dramas que não afetam o idioma. Mas a vida se torna mais interessante.

Source: https://habr.com/ru/post/pt424461/


All Articles