Real world implementation of functional programming? [chiuso]

9

Sto cercando di familiarizzarmi con diversi tipi di linguaggi per comprendere le aree in cui ognuno di loro è estremamente bravo. Finora, mi sono dilettato in C - un linguaggio procedurale, C ++ e amp; java - linguaggi orientati agli oggetti e groovy con orientamento statico - un linguaggio dinamico orientato all'oggetto tipizzato.

Ogni linguaggio di programmazione è stato probabilmente avviato per rispondere a un'esigenza. E presumo che ogni lingua sia estremamente valida ad almeno una cosa, a causa della quale diventa uno standard in un'area o in un campo specifico. Come C, C ++ sono diventati standard in aree come browser o sviluppo di giochi. Python nel mondo Linux per la sua facile capacità di scripting, Java nel mondo enterprise, ecc.

Ora sono interessato ad apprendere un linguaggio di programmazione funzionale come Clojure o Lisp. Quindi, dove sono utilizzati i linguaggi di programmazione funzionale negli scenari del mondo reale? Non penso che uno utilizzerebbe Clojure o Lisp per lo sviluppo di applicazioni o interfacce utente. Quindi su che tipo di progetti dovrei indulgere dopo aver svolto le esercitazioni di base e le risorse di apprendimento per avere una breve comprensione dell'implementazione della programmazione funzionale? E raccomandi strongmente su una lingua specifica, come dire clojure?

    
posta Vamsi Emani 06.02.2012 - 15:39
fonte

7 risposte

13

Si dice programmazione funzionale del mondo reale, penso Erlang.

Erlang is a programming language used to build massively scalable soft real-time systems with requirements on high availability. Some of its uses are in telecoms, banking, e-commerce, computer telephony and instant messaging.

link

    
risposta data 06.02.2012 - 17:23
fonte
5

C'è una grande serie di conferenze sulla programmazione funzionale della Stanford University. Puoi controllarli su YouTube.

Ti consiglierei di esaminare Scheme piuttosto che LISP. Schema è una versione modificata di Lisp con ulteriori miglioramenti. Lo schema è usato principalmente per scopi accademici e di formazione. È un ottimo linguaggio se ti piace fare ricerca nella scienza computerica del cervello.

Applicazioni :

Google App Inventor per Android utilizza Scheme, dove Kawa viene utilizzato per compilare il codice Scheme fino ai codici byte per Java Virtual Machine in esecuzione su dispositivi Android. Elk Scheme viene utilizzato da Synopsys come linguaggio di scripting per i suoi strumenti CAD (TCAD) tecnologici.

FYI: Utilizzo dello schema

    
risposta data 06.02.2012 - 16:06
fonte
5

Bryan O'Sullivan, fondatore di mailrank.com (che è stato acquisito da Facebook) ha costruito l'intero lato server di questo software in Haskell. Ha presentato su questo a Strange Loop 2011, video e diapositive sono disponibili online.

Lo stesso tizio ha scritto un libro chiamato Real World Haskell . Diverse persone hanno menzionato i tutorial di programmazione. Questo può essere abbastanza appropriato ai tuoi interessi (mi piace anche il suggerimento di Erlang).

    
risposta data 06.02.2012 - 20:38
fonte
4

So da amici che la società di trading quantitativa Jane Street utilizza OCaml per implementare le sue strategie di trading. Hanno una pagina dove parlano del perché, insieme ai link ai discorsi sull'argomento.

    
risposta data 06.02.2012 - 20:46
fonte
2

Ecco un elenco di storie di successo di Common Lisp:

link

link

link

Sebbene Common Lisp sia solo parzialmente funzionale (supporta anche OOP e procedurale, oltre a tutto ciò che desideri implementare te stesso o una libreria), è un linguaggio molto pragmatico ed estremamente potente nelle mani di un competente programmatore. In realtà lo uso per scrivere app web con l'eccellente RESTAS framework.

E il progetto python commerciale su cui sto lavorando in questo momento verrà completato da servizi scritti in lisp (RESTAS come suggerito dal suo nome è eccellente per i servizi RESTful).

    
risposta data 14.02.2012 - 18:03
fonte
1

Suggerirei di immergermi nei compilatori (per linguaggi di uso generale o DSL): qui la programmazione funzionale è ottimale. Ci saranno molte cose interessanti e utili da esplorare, da ADT e pattern matching su un lato di uno spettro alle macro Lisp sull'altro lato.

    
risposta data 06.02.2012 - 21:00
fonte
0

Potresti dare un'occhiata a Hume .

Dalla pagina Lingua di programmazione Hume :

Hume (Higher-order Unified Meta-Environment) is a strongly typed, mostly-functional language with an integrated tool set for developing, proving and assessing concurrent, safety-critical systems. Hume aims to extend the frontiers of language design for resource-limited systems, including real-time embedded and safety-critical systems, by introducing new levels of abstraction and provability.

Dalla pagina di Wikipedia Hume :

Hume is a functionally-based programming language developed at the University of St Andrews and Heriot-Watt University in Scotland, and named after the 18th Century philosopher David Hume. It targets real-time embedded systems, aiming to produce a design that is both highly abstract, yet which will still allow precise extraction of time and space execution costs, so allowing programs to be written that will execute under guaranteed bounded time and space constraints.

Hume is unusual in combining functional programming ideas with ideas from finite state automata. Automata are used to structure communicating programs into a series of "boxes", where each box maps inputs to outputs in a purely functional way using high-level pattern-matching. It is also unusual in being structured as a series of levels, each of which exposes different machine properties, which is highly unusual.

    
risposta data 06.02.2012 - 16:47
fonte

Leggi altre domande sui tag