Implementação no mundo real de programação funcional? [fechadas]

9

Estou tentando me familiarizar com diferentes tipos de idiomas para entender as áreas em que cada um deles é extremamente bom. Até agora, eu me envolvi em C - uma linguagem processual, C ++ e java - linguagens orientadas a objetos do tipo estático e groovy - uma linguagem dinâmica orientada a objetos do tipo dinâmico.

Provavelmente todas as linguagens de programação foram iniciadas para atender a uma necessidade. E presumo que todo idioma é extremamente bom em pelo menos uma coisa, pelo que se torna um padrão em uma área ou campo específico. Assim como o C, o C ++ tornou-se padrão em áreas como desenvolvimento de navegador ou jogo. Python no mundo Linux por sua capacidade de script fácil, Java no mundo corporativo etc.

Agora estou interessado em aprender uma linguagem de programação funcional como Clojure ou Lisp. Então, onde as linguagens de programação funcional são usadas nos cenários do mundo real? Eu não acho que alguém usaria o Clojure ou o Lisp para desenvolver aplicativos ou interfaces de usuário. Então, em que tipo de projetos devo entrar depois de passar pelos tutoriais básicos e aprender recursos para obter um breve entendimento sobre a implementação da programação funcional? E você recomenda fortemente um idioma em específico, como digamos clojure?

Vamsi Emani
fonte
5
"E presumo que todo idioma é extremamente bom em pelo menos uma coisa, pelo que se torna um padrão em uma área ou campo específico". Isso geralmente não é verdade. É uma suposição perigosa pensar que os idiomas são de alguma forma "especializados". Alguns idiomas têm nichos, mas isso não é verdade em geral.
31512 S.Lott
6
"Eu não sei como e por onde começar." O que impede você de começar com os tutoriais? Você pode explicar por que os tutoriais para esses idiomas não são úteis ou úteis?
31512 S.Lott
"C ++ e java" têm muito, muito pouco a ver um com o outro.
587 DeadMG #
Posso lhe dizer o que realmente o intrigou em aprender Clojure ou Lisp, além do motivo pelo qual eles seguem o paradigma de Programação Funcional?
Maxood
3
Quando você diz "tempo real", você quer dizer "mundo real" por acaso? Isso parece fazer um pouco mais de sentido no contexto desta questão.
sepp2k

Respostas:

13

Você diz programação funcional do mundo real, acho Erlang.

Erlang é uma linguagem de programação usada para criar sistemas de tempo real flexíveis e escalonáveis, com requisitos de alta disponibilidade. Alguns de seus usos são em telecomunicações, bancos, comércio eletrônico, telefonia por computador e mensagens instantâneas.

http://www.erlang.org/

Robert Harvey
fonte
3
+1 Korrecto! Além disso, eu gostaria de acrescentar que, para iniciantes na terra funcional, o "mais puro" em torno linguagem funcional Haskell seria :)
yati sagade
5

Há uma grande série de palestras sobre programação funcional da Stanford University. Você pode vê-las no YouTube.

Eu aconselho você a examinar o Scheme em vez do LISP. O esquema é uma versão modificada do Lisp com outras melhorias. O esquema é usado principalmente para fins acadêmicos e de treinamento. É uma ótima linguagem, se você gosta de fazer pesquisas em ciências da computação.

Aplicações :

O Google App Inventor para Android usa o Scheme, em que Kawa é usado para compilar o código do Scheme em códigos de bytes para a Java Virtual Machine em execução em dispositivos Android. O Elk Scheme é usado pela Synopsys como uma linguagem de script para suas ferramentas de tecnologia CAD (TCAD).

FYI: Uso do esquema

Maxood
fonte
Pergunto-me se esta pergunta pode ajudá-lo: programmers.stackexchange.com/questions/25056/...
Maxood
11
E existe este livro (gratuito! E online!) Do LISP: gigamonkeys.com/book Ele cobre projetos "práticos", como um analisador de tags ID3, programação na Web e filtragem de spam.
FrustratedWithFormsDesigner
5

Bryan O'Sullivan, fundador do mailrank.com (que foi adquirido pelo Facebook) construiu todo o lado do servidor desse software em Haskell. Ele apresentou isso no Strange Loop 2011, vídeos e slides estão disponíveis online.

O mesmo cara escreveu um livro chamado Real World Haskell . Várias pessoas mencionaram tutoriais de programação. Este pode ser bastante apropriado aos seus interesses (eu também gosto da sugestão de Erlang).

Barend
fonte
4

Sei por amigos das finanças que a empresa de comércio quantitativo Jane Street usa o OCaml para implementar suas estratégias de negociação. Eles têm uma página na qual falam sobre o motivo, além de links para conversas sobre o assunto.

Geoff Oxberry
fonte
2

Aqui está uma lista de histórias de sucesso do Common Lisp:

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

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

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

Embora o Common Lisp seja apenas parcialmente funcional (também suporta OOP e processual, além de qualquer coisa que você queira implementar por conta própria, ou com uma biblioteca), é uma linguagem muito pragmática e extremamente poderosa nas mãos de um programador competente. Na verdade, eu o uso para escrever aplicativos da Web com a excelente estrutura RESTAS .

E o projeto python comercial no qual estou trabalhando agora será complementado por serviços escritos em lisp (RESTAS, conforme sugerido pelo nome, é excelente para serviços RESTful).

Pavel Penev
fonte
1

Eu sugiro mergulhar nos compiladores (para linguagens de uso geral ou DSLs) - é aqui que a programação funcional está no seu melhor. Haverá muitas coisas interessantes e úteis a serem exploradas, desde ADTs e correspondência de padrões de um lado de um espectro até as macros Lisp do outro lado.

SK-logic
fonte
0

Você pode querer dar uma olhada no Hume .

Na página Linguagem de Programação Hume :

Hume (meta-ambiente unificado de ordem superior) é uma linguagem fortemente tipificada e principalmente funcional, com um conjunto de ferramentas integrado para desenvolver, provar e avaliar sistemas concorrentes e críticos para a segurança. Hume visa estender as fronteiras do design de idiomas para sistemas com recursos limitados, incluindo sistemas embarcados e críticos para a segurança em tempo real, introduzindo novos níveis de abstração e provabilidade.

Na página da Hume da wikipedia :

Hume é uma linguagem de programação funcional desenvolvida na Universidade de St. Andrews e na Universidade Heriot-Watt, na Escócia, e nomeada em homenagem ao filósofo do século XVIII David Hume. Ele visa sistemas embarcados em tempo real, com o objetivo de produzir um design altamente abstrato, mas que ainda permita a extração precisa dos custos de execução de tempo e espaço, permitindo a criação de programas que serão executados sob restrições limitadas de tempo e espaço.

Hume é incomum na combinação de idéias de programação funcional com idéias de autômatos de estados finitos . Os autômatos são usados ​​para estruturar os programas de comunicação em uma série de "caixas", em que cada caixa mapeia as entradas para as saídas de uma maneira puramente funcional , usando a correspondência de padrões de alto nível. Também é incomum ser estruturado como uma série de níveis, cada um dos quais expõe diferentes propriedades da máquina, o que é altamente incomum.

Mark Booth
fonte