Domanda

Essendo uno sviluppatore C # dalla versione 1.0, F # ha catturato il mio tempo libero nelle ultime settimane. I computer sono ora venduti con 2, 4 .. I core e il multi-threading non sono sempre facili da realizzare.

Al momento vedo che F # ha un grande potenziale per carichi di lavoro complicati o pesanti. Pensi che F # diventerà (una volta RTM) un attore importante nel mercato del software aziendale?

È stato utile?

Soluzione

Penso che indipendentemente dal fatto che F # diventerà importante per l'impresa che il software in grado di isolare porzioni di codice puramente funzionali in qualsiasi lingua sarà la chiave per utilizzare il potenziale dei computer multi-core. Ad esempio, le Parallel Extensions di Microsoft per .NET sono fantastiche, ma c'è ancora molto spazio per fare errori parallelizzando il codice che non può essere eseguito in parallelo. Se il codice ha la forma di un linguaggio funzionale puro o di un sottoinsieme del linguaggio puramente funzionale, allora si è certi di poterlo eseguire in parallelo. Il trucco è quindi capire il modo più efficiente di assegnare il lavoro.

Il ruolo che F # gioca in questo direi sarebbe più che altro un catalizzatore per bagnare i piedi delle persone e iniziare a pensare in modo più dichiarativo.

Altri suggerimenti

Penso che F # abbia una grande opportunità di farsi strada in alcune aree di nicchia delle applicazioni aziendali come la modellazione matematica (ad es. per applicazioni bancarie / commerciali). La rimozione degli effetti collaterali dalle funzioni porta anche a grandi opportunità di parallelismo e memoizzazione. È difficile dire se queste lingue decolleranno mai per lo sviluppo tradizionale è difficile da dire, ma secondo me i problemi hanno maggiori probabilità di essere orientati all'uomo (cioè mancanza di competenze e alta curva di apprendimento per le persone che hanno familiarità con lingue più tipiche come c # / java / c ++) piuttosto che tecnico.

Quello che penso che vedremo è che alcune cose funzionali migreranno in C # come l'uso crescente di tipi immutabili e le funzioni di marcatura come pure ecc. Non riesco a vedere F # che ha un ruolo più ampio nello sviluppo aziendale troppo mistificante per lo sviluppatore medio.

C # / VB saranno sempre le lingue principali, ma F # è migliore per problemi complessi. C # è uno scopo più generale mentre F # è migliore in IA, statistica, scienza (trovare la cura del cancro, per esempio), ecc. F # non sostituirà mai C #, ma consentirà a .NET di competere in più campi dell'informatica. Per quanto riguarda il data mining e l'elaborazione di grandi quantità di dati, è meglio svilupparsi direttamente all'interno del database, come SQL Server o Oracle.

Quanto a F # è difficile da imparare, è solo perché abbiamo "corrotto". dal modo imperativo di pensare nella maggior parte delle altre lingue. È difficile disimparare qualcosa che fai per 5 anni! Inoltre, nella mia esperienza, ocaml e F # sono una gioia da usare. L'unica lamentela che ho per F # / Ocaml è che il più delle volte le persone abusano dell'inferenza del tipo che rende il codice illeggibile. Preferirei dichiarare i tipi di variabili per facilitarne la manutenzione.

Penso che F # sarà sempre un linguaggio di nicchia, rispetto a VB / C # / Java, perché richiede più di un background matematico o informatico. Tuttavia, il fatto stesso che sia un linguaggio CLR significa che avrà un'esposizione molto maggiore rispetto ai linguaggi funzionali precedenti.

Lavoro in una banca di investimento e stiamo già utilizzando F # per alcuni scopi di scripting ad-hoc, siamo piuttosto desiderosi di vedere una versione rilasciata di F # in modo da poter prendere in considerazione l'integrazione più formale nei nostri sistemi (anche se è probabile rimanere fondamentalmente basato su C #).

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