Domanda

Esiste un linguaggio funzionale con un buon supporto e strumenti per la creazione di servizi Web? Ho guardato Scala (che si compila con la JVM e può usare le librerie Java) e F # (che è .NET), ma questi sono giovani e presentano alcune inefficienze. Scala, in particolare, non supporta l'eliminazione della coda, tranne che nelle funzioni auto-ricorsive, il che limita i tipi di composizione che puoi fare (questa è una limitazione fondamentale della JVM). F # è molto nuovo e non sembra essere ancora completamente supportato, il che lo rende più rischioso di un linguaggio più convenzionale.

È possibile costruire un servizio web usando Haskell, ML o uno qualsiasi degli altri linguaggi funzionali più tradizionali, o sarebbe meglio andare con Scala o F #? Altri suggerimenti?

È stato utile?

Soluzione

Se .NET è un'opzione per la piattaforma, non scartare F # a causa della sua giovinezza. Man mano che si avvicina a diventare un prodotto ufficiale, sta diventando sempre più una migliore integrazione con Visual Studio ed eredita tutta la bontà offerta da .NET.

Esiste anche un supporto attivo e accessibile da parte di Microsoft e di una community entusiasta.

Altri suggerimenti

Ocaml ha Ocsigen / Eliom ... Non posso dire di averlo usato, però. È anche nelle sue fasi iniziali.

Erlang, con Yaws . È un linguaggio divertente e potente, si ridimensiona notevolmente e rende sicuro e facile l'utilizzo di 100 o 1000 processi. E divertente.

(Penso anche che sia carino.)

Haskell:

Dai un'occhiata a questa domanda: Qual è il modo più semplice per scrivere app Web in Haskell?

Fondamentalmente, WASH , HAppS e Janus sono i tre grandi in Haskell al momento. Il mio voto è per HAppS che ha il miglior tutorial al momento.

C'è anche HSP ma non l'ho mai visto o ci ho pensato di recente.

Leggi questa introduzione su F # e ASP.NET che fornirà sei un buon inizio.

Esistono diversi esempi sul Web in cui F # viene utilizzato nelle applicazioni Web. Uno di questi è ad esempio il autocompleter di Tomas Petricek, che ha creato come un'applicazione illustrativa per il suo articolo " Strumenti Web F #: applicazioni Ajax rese semplici " . Anch'io ho usato F # come parte di un servizio web e ti garantisco che funziona bene :).

Se lo fai per divertimento, e non per robustezza o ambiente di lavoro, puoi esaminare ARC . È un linguaggio incompiuto, in corso, con i vantaggi e gli svantaggi che ciò implica.

disclaimer: non affiliato con ARC o Paul Graham

Reddit è stato creato su lisp, no? E Paul Graham parla molto bene della sua agilità, soprattutto con le webapp.

Potresti prendere in considerazione Clojure - è un linguaggio molto nuovo, ma sembra molto promettente per applicazioni concorrenti scalabili e ha il vantaggio di un'ottima integrazione JVM e accesso a tutte le librerie Java (proprio come Scala).

Clojure ha anche alcune caratteristiche di design che aggirano il problema della ricorsione della coda (speciale costruzione ricorrente, molte funzioni di base sono implementate in modo iterativo ecc.)

Anche se non posso raccomandarlo perché ci sto ancora giocando, Erlang è molto potente.

Devo concordare con la raccomandazione per Clojure. Ho appena terminato un test di caricamento di un servizio di feed di notizie scritto in Clojure che ha sostenuto 80 messaggi di attività in uscita al secondo per server Web Clojure in esecuzione su un'istanza EC1 m1.medium.

I linguaggi funzionali della generazione precedente hanno strumenti come Ocsigen (per OCaml) e HApps (per Haskell) ma praticamente non hanno utenti: sono software completamente non testati.

Al contrario, Scala e F # si basano su codice molto ben testato da Java e .NET. In particolare, F # è stato fortemente sviluppato da Microsoft nell'ultimo anno perché è stato prodotto. Nessun altro linguaggio funzionale ha mai ricevuto quel livello di supporto e, di conseguenza, F # è già molto utilizzabile (e molto più avanti di linguaggi come Haskell in termini di strumenti di sviluppo).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top