Implementazione nel mondo reale della programmazione funzionale? [chiuso]


9

Sto cercando di familiarizzare con diversi tipi di lingue per capire le aree in cui ognuna è estremamente brava. Finora mi sono dilettato in C - un linguaggio procedurale, C ++ e java - linguaggi orientati agli oggetti e groovy tipicamente statici - un linguaggio orientato agli oggetti tipicamente dinamico.

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

Ora sono interessato a imparare un linguaggio di programmazione funzionale come Clojure o Lisp. Quindi, dove vengono utilizzati i linguaggi di programmazione funzionale negli scenari del mondo reale? Non penso che uno userebbe Clojure o Lisp per lo sviluppo di applicazioni o interfacce utente. Quindi su quale tipo di progetti dovrei dedicarmi dopo aver seguito i tutorial di base e le risorse di apprendimento per avere una breve comprensione dell'implementazione della programmazione funzionale? E mi consiglia vivamente di One language in particolare, come dire clojure?


5
"E presumo che ogni lingua sia estremamente buona almeno in una cosa a causa della quale diventa uno standard in una specifica area o campo" Questo non è generalmente vero. È un presupposto pericoloso pensare che le lingue siano in qualche modo "specializzate". Alcune lingue hanno nicchie, ma non è vero in generale.
S. Lott,

6
"Non so come e dove iniziare." Cosa ti impedisce di iniziare con i tutorial? Puoi spiegare perché i tutorial per queste lingue non sono utili o utili?
S.Lott

"C ++ e java" hanno molto, molto poco a che fare l'uno con l'altro.
DeadMG

Posso dirti cosa ti ha davvero incuriosito di imparare Clojure o Lisp a parte il motivo per cui seguono il paradigma di Programmazione Funzionale?
Maxood,

3
Quando dici "tempo reale" intendi per caso "mondo reale"? Ciò sembrerebbe avere un po 'più senso nel contesto di questa domanda.
sepp2k,

Risposte:


13

Dici programmazione funzionale nel mondo reale, penso Erlang.

Erlang è un linguaggio di programmazione utilizzato per costruire sistemi soft real-time scalabili su larga scala con requisiti di elevata disponibilità. Alcuni dei suoi usi sono nel settore delle telecomunicazioni, bancario, e-commerce, telefonia informatica e messaggistica istantanea.

http://www.erlang.org/


3
+1 Korrecto! Inoltre, vorrei aggiungere che per i principianti in terra funzionale, il linguaggio funzionale "più puro" in circolazione sarebbe Haskell :)
yati sagade,

5

Esiste una serie di conferenze sulla programmazione funzionale dell'Università di Stanford, che puoi consultare su YouTube.

Ti consiglierei di esaminare Scheme piuttosto che LISP. Schema è una versione modificata di Lisp con ulteriori miglioramenti. Lo schema è utilizzato principalmente per scopi accademici e di formazione. È un linguaggio eccezionale se ti piace fare ricerche sulla scienza teorica dei computer.

Applicazioni :

Google App Inventor per Android utilizza Scheme, in cui Kawa viene utilizzato per compilare il codice dello schema in codici byte per la macchina virtuale Java in esecuzione su dispositivi Android. Elk Scheme è utilizzato da Synopsys come linguaggio di scripting per i suoi strumenti CAD (TCAD) tecnologici.

Cordiali saluti: Utilizzo del regime


Mi chiedo se questa domanda possa aiutarti: programmers.stackexchange.com/questions/25056/…
Maxood

1
E c'è questo libro LISP (gratuito! E online!): Gigamonkeys.com/book Copre progetti "pratici" come un parser di tag ID3, programmazione web e filtro antispam.
FrustratedWithFormsDesigner,

5

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

Lo stesso ragazzo ha scritto un libro intitolato Real World Haskell . Diverse persone hanno menzionato tutorial di programmazione. Questo potrebbe essere abbastanza appropriato per i tuoi interessi (mi piace anche il suggerimento di Erlang).


4

So da amici della finanza che la società commerciale quantitativa Jane Street usa OCaml per attuare le sue strategie di trading. Hanno una pagina in cui parlano del perché, insieme ai collegamenti ai discorsi sull'argomento.


2

Ecco un elenco di storie di successo di Common Lisp:

http://wiki.alu.org/Industry%20Application

http://www.franz.com/success/

http://www.lispworks.com/success-stories/index.html

Sebbene Common Lisp sia solo parzialmente funzionale (supporta anche OOP e procedurale, così come qualsiasi cosa tu voglia implementare te stesso, o con una biblioteca), è un linguaggio molto pragmatico ed estremamente potente nelle mani di un programmatore competente. In realtà lo uso per scrivere app Web con l'eccellente framework RESTAS .

E il progetto commerciale Python a cui sto lavorando in questo momento sarà eventualmente integrato da servizi scritti in lisp (RESTAS come suggerito dal suo nome è eccellente per i servizi RESTful).


1

Suggerirei di immergermi nei compilatori (sia per linguaggi generici o DSL): è qui che la programmazione funzionale è al suo meglio. Ci saranno molte cose interessanti e utili da esplorare, dagli ADT e la corrispondenza dei pattern su un lato di uno spettro alle macro Lisp sull'altro lato.


0

Potresti dare un'occhiata a Hume .

Dalla pagina The Hume Programming Language :

Hume (Meta-Environment unificato di ordine superiore) è un linguaggio fortemente tipizzato, per lo più funzionale con un set di strumenti integrato per lo sviluppo, la dimostrazione e la valutazione di sistemi concorrenti critici per la sicurezza. Hume mira a estendere le frontiere della progettazione linguistica per i sistemi a risorse limitate, compresi i sistemi integrati in tempo reale e critici per la sicurezza, introducendo nuovi livelli di astrazione e dimostrabilità.

Dalla pagina Hume di Wikipedia :

Hume è un linguaggio di programmazione basato sul funzionamento sviluppato all'Università di St Andrews e all'Università Heriot-Watt in Scozia, e prende il nome dal filosofo del XVIII secolo David Hume. Si rivolge a sistemi embedded in tempo reale, con l'obiettivo di produrre un design che sia allo stesso tempo altamente astratto, ma che permetta comunque un'estrazione precisa dei tempi e dei costi di esecuzione dello spazio, consentendo in tal modo di scrivere programmi che verranno eseguiti con limiti di tempo e spazio limitati garantiti.

Hume è insolito nel combinare idee di programmazione funzionale con idee di automi a stati finiti . Gli automi vengono utilizzati per strutturare i programmi di comunicazione in una serie di "riquadri", in cui ciascun riquadro mappa gli input in output in un modo puramente funzionale utilizzando la corrispondenza di pattern di alto livello. È anche insolito essere strutturati come una serie di livelli, ognuno dei quali espone diverse proprietà della macchina, il che è altamente insolito.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.