scegliere una piattaforma linguistica funzionale per un nuovo progetto [chiuso]

6

Ho scritto codice per alcuni anni e non credo di poter affermare di avere ancora una conoscenza completa di questo lavoro.

La mia esperienza ruota principalmente attorno alle aree correlate a C # con una conoscenza decente su Silverlight e Asp .Net MVC. Tendo ad usare Sql server e Postgres per normali attività RDBMS correlate con Mybatis o LinqtoSql come ORM (e Cassandra anche per NoSql).

Dato questo background, sto cercando di creare un nuovo progetto che sia una normale applicazione che utilizza schermate di database e di interfaccia utente. È considerevolmente un grande progetto che prevediamo di implementare come prodotto.

Negli ultimi tempi, vedo molti rumori sulla programmazione funzionale come Haskell e F #. mi chiedo    - se vale la pena costruire il nuovo sistema usando Haskell    - o semplicemente attenersi a un modello di costruzione dell'applicazione normale utilizzando Silverlight / Prism con una stratificazione simile all'architettura di cipolla

Capisco il vantaggio di stare con lo stesso background tecnologico in quanto è sempre utile lavorare su una tecnologia familiare.

Ho anche sentito che spostandosi verso un linguaggio funzionale come Haskell otteniamo codice più pulito, testabilità migliorata ecc.,

Vale veramente la pena considerare una mossa per costruire nuovi sistemi in Hasekll? O deve ancora essere provato negli ambienti di produzione?

In poche parole, sarei al sicuro se costruissi il nuovo progetto usando Haskell e il mio database preferito, altrimenti è troppo rischioso scegliere Haskell.

Qualsiasi aiuto apprezzato.

Modifica: ho già visto alcuni altri thread come il seguente e altri ancora, ma non ho ottenuto una risposta definitiva. Scelta di un linguaggio di programmazione funzionale

    
posta Muthu 08.03.2012 - 11:14
fonte

3 risposte

3

Se vuoi restare con .net usa F #. Da quello che capisco, è un linguaggio davvero carino e prende in prestito abbastanza pesantemente haskell (The Don Syme e Simon Payton Jones hanno uffici nella stessa sala al MS Cambridge)

Haskell è stato provato in alcuni ambienti di produzione di fascia alta. Molte banche lo usano per cose come i sistemi di trading. A causa di come funziona il suo sistema di tipi, hai molte garanzie molto forti su come verrà eseguito il tuo sistema. L'unico inconveniente è che è molto diverso e imparare può essere un po 'difficile.

Potresti anche dare un'occhiata a Erlang

    
risposta data 08.03.2012 - 12:14
fonte
2

Uso haskell in produzione per costruire interfacce web con MS Sql Server. Lo adoro, sono molto produttivo con esso. E mi sento molto più sicuro perché il compilatore è estremamente utile nel cogliere i miei errori. Molto più di java / c #

Detto questo, se esprimi la tua domanda come "sarò sicuro con questa scelta" invece di "cosa ne ricaverò", allora dovresti certamente stare con c # o java.

Haskell è molto diverso. Trascorrerai molto più tempo a impararlo che a imparare qualsiasi altra lingua imperativa.

Haskell non ha ancora strumenti adeguati (mancanza di IDE) e molte librerie utili (ad esempio nessuna buona libreria pdf)

Stai chiedendo che valga la pena di costruire nuovi sistemi con haskell. Ma li stai costruendo da soli? E gli altri membri della tua squadra? Che dire dei futuri membri della tua squadra? Dove troverai gli haskeller? Come convincerai i programmatori dotnet o java a intraprendere un duro e lungo processo di apprendimento con un linguaggio completamente nuovo e alieno?

Haskell ne vale sicuramente la pena, se ami la programmazione e non lo fai solo per soldi. Ma tu non lavori da solo nel vuoto. Devono essere prese molte decisioni con il tuo ambiente in mente, le persone con cui lavori ecc.

    
risposta data 14.03.2012 - 06:43
fonte
1

Non posso dire nulla su Haskell, perché non l'ho usato. Ma come sviluppatore .NET ti consiglio di dare un'occhiata a Nemerle se stai considerando l'uso di F #. Anche se Nemerle non è supportato da Visual Studio e F #, esiste una perfetta estensione che risolve tutti i problemi con l'integrazione. Perché consiglio Nemerle?

  1. È scritto su .NET e per piattaforma .NET.
  2. È un linguaggio funzionale perfetto (persino migliore di F # sulla stessa piattaforma).
  3. Supporta la concezione delle macro molto bene. Così puoi facilmente estendere il sistema di tipi esistente e persino creare la tua DSL senza sforzo.

Per essere onesti, devo ricordare i principali svantaggi di Nemerle che possono essere applicati anche ad altri linguaggi funzionali:

  1. Può essere piuttosto difficile trovare sviluppatori che conoscano Nemerle (e Haskell / F #) per il tuo progetto. Almeno è molto più difficile che assumere uno sviluppatore C # "normale".
  2. Nemerle (e Haskel) e alcuni altri linguaggi non sono ben supportati dalla piattaforma .NET. Quindi puoi fare affidamento solo su te stesso e sulla comunità della lingua scelta.
risposta data 08.03.2012 - 11:39
fonte