Pergunta

1) São linguagens funcionais adequados para o desenvolvimento de aplicações web?

2) São linguagens funcionais adequados para negócios / ERP / CRM tipo de aplicações?

Foi útil?

Solução

As linguagens funcionais do tipo que você descreve são gerais linguagens de programação propósito, eles são usados ??para todos os tipos de coisas, incluindo aplicações web e aplicativos de negócios. (Eu uso Haskell).

Como gabor implica, em última análise, tudo se resume a bibliotecas. Scala tem um framework web: elevador. Haskell tem happstack , bem como 2100 4400 (em 2010 2012) bibliotecas em Hackage para todos os tipos de thiings.

Realmente não é tanto uma questão da língua, como o conjunto de ferramentas, ao considerar determinados domínios especializados.

Outras dicas

As linguagens funcionais são bons para qualquer coisa que você gostaria de usá-las.

No entanto, o desenvolvimento de aplicações nos dias de hoje não são tão simples quanto usar uma linguagem de programação. A vantagem de Java, C #, etc. é que eles vêm com grandes bibliotecas e outras sutilezas ambiente que são absolutamente necessários quando você construir software de negócios. A maioria das linguagens funcionais não têm esse grande apoio (ainda?).

F # pode ser promissor, já que é no ambiente .NET e pode tirar proveito das ferramentas disponíveis lá (me corrija se eu estiver errado).

Este artigo descreve como Lisp, uma linguagem funcional precoce, foi usada para criar uma web baseada aplicativo com êxito.

As linguagens funcionais são bem adequados para o desenvolvimento de aplicações web, Scala, em particular.

Tenha um olhar para o quadro Elevador para obter mais informações.

2) São linguagens funcionais adequados para o negócio tipo / ERP / CRM de aplicações?

Para resolver o segundo ponto sobre o negócio / ERP / CRM Apps: pessoalmente, eu não iria implementar isso em uma linguagem funcional "puro", como Haskell, ou uma linguagem funcional dinâmico como Clojure. Por outro lado, eu am actualmente a implementar um ERP em Scala, o que obviamente é híbrido OOP / FP e compilado estaticamente.

A razão de eu dizer isso é que um aplicativo de negócios como um ERP é, fundamentalmente, recorde-oriented: existe um esquema de dados expressando os diferentes tipos de registro e a lógica aplicativo é então projetado quase totalmente em torno CRUDing esses registros e aplicação de fluxos de trabalho personalizados para eles. E fundamentalmente, eu não acredito que esses tipos de aplicativos de negócios centrados em dados são um grande ajuste para o modelo funcional.

As pessoas podem falar sobre a incompatibilidade OOP-relacional todos eles gostam, mas em última análise, tanto OOP e bancos de dados são orientados para o registro: uma linguagem OOP com um bom ORM permite mapear esses modelos de dados diferentes em seu código e, em seguida, anexar o código para lidar com cada um dos modelos. E, tendo esta tipagem estática (de preferência com um ORM fortemente tipado como squeryl de Scala) maciçamente reduz as chances de um erro de execução ou, por exemplo uma mudança para um dos modelos de dados não está sendo devidamente aplicado através do código.

Não me entenda errado - eu sou um grande fã de FP (Eu estou fazendo mais e mais dos meus sistemas de programação em Haskell), mas para mim a abordagem orientada para o registro de OOP faz mais sentido do que a função abordagem -oriented de FP para disputa os objetos de dados de um ERP negócios ou similar. (Scala é uma agradável exceção à regra, porque você começa a usar o paradigma OOP com ORMs de qualidade para a manipulação registro, mas também a bondade FP para sua programação geral app.)

  1. Sim, nitrogênio é um bom exemplo de um framework web funcional. É escalas também.

http://nitrogenproject.com/

Bouba é um servidor web fantástico para Erlang.

Enquanto eu não diria que quaisquer linguagens funcionais particulares são adaptados para fazer web-development, eu também não diria que você não pode fazer desenvolvimento web com uma linguagem funcional. Eu acho que depende inteiramente do que frameworks web podem estar disponíveis para o idioma que você escolher e se ou não existem quaisquer servidores web que suportam a linguagem.

Por exemplo, eu tenho certeza que você pode usar F # juntamente com ASP.Net no IIS para fazer o desenvolvimento web. Duvido que haja suporte para F # no motor de templates, mas você pode lógica de negócios definitivamente escrita em F #.

Da mesma forma, há mod_haskell para o Apache, o que deve torná-lo relativamente fácil ter uma saída dinâmica com Haskell. Embora, eu nunca usei pessoalmente. Ao mesmo tempo, se há uma mod_(erlang or scala) para Apache, seria igualmente fácil para esses idiomas.

Em última análise, eu acho que a natureza sem estado de linguagens funcionais deve torná-lo adequado para uma apátrida, framework web estilo MVC. No entanto, eu acho que realmente se resume ao que ferramentas e frameworks estão disponíveis para tornar a sua vida mais fácil quando se trabalha com línguas. Por exemplo, Ruby não era realmente popular para o desenvolvimento web até trilhos ficou popular, e eu realmente não gosto de fazer qualquer coisa webby com Python até que encontrei Django.

As linguagens funcionais fornece novos tipos de abstrações que podem ser usadas para o desenvolvimento web. servidores web baseados continuação são, por exemplo popular entre linguagens funcionais. O href="http://docs.plt-scheme.org/web-server/index.html" rel="nofollow noreferrer"> PLT servidor web suporta este tipo de desenvolvimento de aplicações web. Você pode ler mais sobre continuações e seu uso no desenvolvimento web on wikipedia

A maioria das linguagens funcionais, ou seja, os que você incluídos, são consideradas línguas de uso geral. Para o desenvolvimento web, eu profundamente considerar o uso de Clojure, ou Scala. Ambos têm muito bons frameworks web, e ambos partem na JVM. Posso totalmente recomendar Clojure e Scala, mas não tanto para os outros.

Haskell tem um framework web, mas eu nunca tê-lo usado.

As aplicações de negócios? Claro, por que não. linguagens funcionais são grandes para praticamente qualquer coisa.

Uma das maiores vantagens reivindicadas pelos proponentes de linguagens funcionais é que eles tornam mais fácil escrever programas que podem ser executados em paralelo. Mas aplicações web normalmente não têm problemas com paralelismo. Normalmente, o servidor web servidor / aplicativo mantém um pool de threads, e cada solicitação do usuário é atribuído a um segmento diferente, que pode ser executado em um processador físico diferente. Assim, você pode tirar proveito dos vários processadores sem muita dificuldade. O truque é que aplicações web são caracterizadas por um grande número de pequenos pedidos, e as roscas e linguagens imperativas funcionar bem lá. Onde linguagens imperativas começar a quebrar é quando você tem um pequeno número de pedidos computacionalmente caros.

Outra grande vantagem de linguagens funcionais é que desde que as funções não têm efeitos colaterais, o teste é mais fácil. Você testar cada função em isolamento através de alguns de seus insumos, e você sabe que o sistema irá funcionar. Mas, há um problema. Se a sua operação envolve entrada ou saída, você usa uma mônada, em vez de uma função, e você perde esse benefício testability para essa parte do seu código.

Mas, tipicamente aplicações web envolvem leitura de informações a partir de um pedido, fazer pedidos a uma base de dados, lendo a resposta do banco de dados e formatação de uma resposta. Isso é muita e muita IO, ou mônadas, e muito pouca oportunidade para as funções.

Tendo em conta estas características de aplicações web, quais os benefícios que as linguagens funcionais trazem para programação de aplicações web?

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