Pergunta

Qual é o valor acrescentado para aprender F # quando você já está familiarizado com LISP?

Foi útil?

Solução

Muitos destes são relativamente recentes desenvolvimentos no mundo da linguagem de programação. Isso é algo que você verá em F # que você não vai em Lisp, especialmente Lisp comum, porque o padrão # F ainda está em desenvolvimento. Como resultado, você vai encontrar lá é um um pouco para aprender. Obviamente coisas como ADTs, correspondência de padrões, mônadas e currying pode ser construído como uma biblioteca em Lisp, mas é mais agradável de aprender a usá-los em uma linguagem onde são convenientemente embutido.

A maior vantagem de aprender F # para uso no mundo real é sua integração com .NET.

Outras dicas

Comparando Lisp diretamente para F # não é realmente justo, porque no final do dia, com tempo suficiente, você pode escrever o mesmo aplicativo em qualquer idioma.

No entanto, você deve aprender F #, pelas mesmas razões que o C # ou desenvolvedor Java deve aprendê-lo - porque permite programação funcional na plataforma .NET . Eu não estou 100% familiarizado com Lisp, mas presumo que tem alguns dos mesmos problemas que OCaml em que não há suporte biblioteca estelar. Como você faz o acesso de banco de dados em Lisp? E sobre gráficos de alto desempenho?

Se você quiser saber mais sobre 'Por NET', confira esta pergunta SO .

Se você soubesse F # e Lisp, você iria encontrar esta uma questão bastante estranha para perguntar.

Como os outros têm para fora pontas, Lisp é dinamicamente digitado . Mais importante ainda, a característica única de Lisp é que é homoiconic: Código Lisp é um tipo fundamental Lisp dados (a lista). O sistema de macro leva vantagem de que, permitindo que você escrever código que executa em tempo de compilação e modifica outro código .

F # tem nada como isso - é uma linguagem de tipagem estática, que toma emprestado um monte de idéias de ML e Haskell, e executa na .NET

O que você está pedindo é semelhante ao "Por que eu preciso aprender a usar uma colher se eu sei como usar um garfo?"

Dado que LISP é digitado de forma dinâmica e F # é digitado estaticamente, acho essas comparações estranho.

Se eu estivesse mudando de Lisp para F #, seria apenas porque eu tinha uma tarefa em minhas mãos que imensamente beneficiado de alguns .NET somente biblioteca.

Mas eu não fizer isso, então eu não tenho.

Dinheiro. F # código já é mais valioso do que o código Lisp e esta lacuna irá alargar-se muito rapidamente como F # vê adopção generalizada.

Em outras palavras, você terá uma melhor chance muito de ganhar uma renda estável usando F # que usar Lisp.

Cheers, Jon Harrop.

F # é uma linguagem muito diferente em comparação com a maioria dos dialetos Lisp. Então F # dá-lhe um ângulo muito diferente de programação - um ângulo que você não vai aprender com Lisp. dialetos mais Lisp são mais utilizados para o desenvolvimento incremental, interativa de software simbólico. Ao mesmo tempo dialetos mais Lisp não são linguagens de programação funcional, mas mais como línguas multi-paradigma - com diferentes dialetos colocando peso diferente no apoio FPL apresenta (livre de efeitos colaterais, estruturas de dados imutáveis, tipos de dados algébricos, ...). Assim dialetos mais Lisp qualquer falta tipagem estática ou não colocar muita ênfase sobre ele.

Então, se você conhece algum dialeto Lisp, então aprender F # pode fazer muito sentido. Só não acho que muito do seu conhecimento Lisp se aplica a F #, já que F # é uma linguagem muito diferente. Tanto quanto uma programação imperativa usada para C ou Java precisa desaprender algumas idéias quando aprender Lisp, é necessário também para hábitos desaprender Lisp (sem tipos, efeitos colaterais, macros, ...) ao usar F #. F # também é impulsionado pela Microsoft e aproveitando o .NET Framework.

F # tem a vantagem de que o desenvolvimento .NET (em geral) é amplamente adotado, facilmente disponíveis, e mais mercado de massa.

Se você quiser código de F #, você pode obter Visual Studio, que muitos desenvolvedores já terá ... ao contrário de começar o ambiente LISP instalado e funcionando.

Além disso, os desenvolvedores .NET existentes são muito mais propensos a olhar F # de LISP, se isso significa alguma coisa para você.

(Isso vem de um desenvolvedor .NET que codificado, e amado, LISP, enquanto estava na faculdade).

Eu não tenho certeza se você o faria? Se você encontrar F # interessante que seria um motivo. Se o trabalho exige isso, seria uma razão. Se você acha que seria torná-lo mais produtivo ou trazer valor acrescentado ao longo do seu conhecimento atual, que seria uma razão.

Mas, se você não encontrar F # interessante, o seu trabalho não exige isso e você não acha que seria torná-lo mais produtivo ou trazer valor acrescentado, então por que você?

Se a questão por outro lado, é o que F # dá que lisp não, em seguida, digite inferência, correspondência de padrões e integração com o resto do framework .NET devem ser considerados.

Eu sei que esta discussão é antiga, mas desde que eu tropeçou em um presente Eu só queria comentar sobre as minhas razões. Estou aprendendo F # simplesmente por oportunidades profissionais desde .NET carrega um monte de peso em uma categoria de empresas que dominam o meu campo. O paradigma funcional tem vindo a crescer em uso entre as empresas mais quantitativa e dados orientados e eu gostaria de ser um dos primeiros chegados a esta tendência. Atualmente não faz um exist uma forte linguagem funcional que integra plenamente e em segurança com a biblioteca .NET. Eu realmente tentou porta alguns .NET a partir do código Lisp e é realmente uma dor b / c do FFI só suporta primitivas C e .NET interoperabilidade exige uma construção 'interface' e mesmo que eu sei como fazer isso em C é realmente um enorme dor. Seria muito, muito, bom se Lisp foi a milha extra nele do próximo padrão e exigiu uma classe c ++ (incluindo funções virtuais w / vtables), e um C # tipo de interface estilo nele do FFI. Talvez até mesmo jogar em um tipo de estilo de interface Java também. Isso permitiria a interoperabilidade completa com a biblioteca .NET e fazer Lisp um forte concorrente como uma língua de grande escala. No entanto, com o que disse, vindo de um fundo Lisp fez aprender F # bastante fácil. E eu gosto de como F # tem ido a milha extra para fornecer tipos que você normalmente vê-lo tipo de trabalho quantitativo. Acredito F # foi criado com o trabalho matemático em mente e que por si só tem valor ao longo do Lisp.

Uma maneira de olhar para este (a pergunta original) é para coincidir com a linguagem (e ferramentas e plataformas associadas) para a tarefa imediata. Se a tarefa requer uma percentagem esmagadora de código .NET, e exigiria menos shoe-horning em uma linguagem que o outro para atender a cabeça na tarefa, em seguida, tomar o caminho de menor resistência (F #). Se você não precisa de recursos .NET, e você está trabalhando confortável com LISP e não há nenhum braço-inclinando-se para afastar-se dela, manter a usá-lo.

Não é realmente muito diferente de comparar um martelo com uma chave. Escolher a ferramenta que se encaixa o trabalho mais eficaz. Tentando escolher uma ferramenta que é objetivamente "melhor" é um disparate. E em qualquer caso, em 20 anos, todos os idiomas atualmente "quentes" pode ser ultrapassada de qualquer maneira.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top