¿Implementación del mundo real de la programación funcional? [cerrado]

9

Estoy tratando de familiarizarme con diferentes tipos de idiomas para comprender las áreas en las que cada uno de ellos es extremadamente bueno. Hasta ahora, he incursionado en C, un lenguaje de procedimiento, C ++ y java, lenguajes orientados a objetos de tipo estático y maravilloso, un lenguaje orientado a objetos de tipo dinámico.

Es probable que cada lenguaje de programación haya comenzado a responder a una necesidad. Y supongo que cada idioma es extremadamente bueno en al menos una cosa, por lo que se convierte en un estándar en un área o campo específico. Al igual que C, C ++ se ha convertido en estándar en áreas como el navegador o el desarrollo de juegos. Python en el mundo Linux por su capacidad de scripting fácil, Java en el mundo empresarial, etc.

Ahora estoy interesado en aprender un lenguaje de programación funcional como Clojure o Lisp. Entonces, ¿dónde se utilizan los lenguajes de programación funcionales en escenarios del mundo real? No creo que se use Clojure o Lisp para desarrollar aplicaciones o interfaces de usuario. Entonces, ¿en qué tipo de proyectos debería participar después de seguir los tutoriales básicos y los recursos de aprendizaje para obtener una breve comprensión sobre la implementación de la programación funcional? ¿Y recomienda encarecidamente un idioma en específico, como por ejemplo clojure?

Vamsi Emani
fuente
55
"Y supongo que cada idioma es extremadamente bueno en al menos una cosa, por lo que se convierte en un estándar en un área o campo específico" Eso no es generalmente cierto. Es una suposición peligrosa pensar que los idiomas son de alguna manera "especializados". Algunos idiomas tienen nichos, pero no es cierto en general.
S.Lott
66
"No sé cómo y dónde comenzar". ¿Qué te impide comenzar con los tutoriales? ¿Puede explicar por qué los tutoriales para estos idiomas no son útiles o útiles?
S.Lott
"C ++ y Java" tienen muy, muy poco que ver entre sí.
DeadMG
¿Puedo decirle lo que realmente lo intrigó para aprender Clojure o Lisp, aparte de la razón por la que siguen el paradigma de la Programación Funcional?
Maxood
3
Cuando dices "tiempo real", ¿te refieres a "mundo real" por casualidad? Eso parecería tener un poco más de sentido en el contexto de esta pregunta.
sepp2k

Respuestas:

13

Dices programación funcional del mundo real, creo Erlang.

Erlang es un lenguaje de programación que se utiliza para construir sistemas de software en tiempo real suaves y escalables con requisitos de alta disponibilidad. Algunos de sus usos son en telecomunicaciones, banca, comercio electrónico, telefonía informática y mensajería instantánea.

http://www.erlang.org/

Robert Harvey
fuente
3
+1 Korrecto! Además, me encantaría agregar que para los principiantes en terreno funcional, el lenguaje funcional "más puro" sería Haskell :)
yati sagade
5

Hay una gran serie de conferencias sobre programación funcional de la Universidad de Stanford. Puede consultarlas en YouTube.

Te aconsejaría que busques en Scheme en lugar de LISP. Scheme es una versión modificada de Lisp con mejoras adicionales. El esquema se usa principalmente para fines académicos y de capacitación. Es un gran lenguaje si te gusta investigar en ciencia de la informática teórica.

Aplicaciones :

Google App Inventor para Android usa Scheme, donde Kawa se utiliza para compilar el código del Scheme en códigos de bytes para la máquina virtual Java que se ejecuta en dispositivos Android. Synopsys utiliza Elk Scheme como lenguaje de programación para sus herramientas de tecnología CAD (TCAD).

FYI: uso del esquema

Maxood
fuente
Me
1
Y existe este libro LISP (¡gratis y en línea!): Gigamonkeys.com/book Cubre proyectos "prácticos" como un analizador de etiquetas ID3, programación web y filtrado de spam.
FrustratedWithFormsDesigner
5

Bryan O'Sullivan, fundador de mailrank.com (que fue adquirido por Facebook) construyó todo el lado del servidor de este software en Haskell. Se presenta en este lazo extraño en el 2011, de vídeo y diapositivas están disponibles en línea.

El mismo tipo escribió un libro llamado Real World Haskell . Varias personas mencionaron tutoriales de programación. Este puede ser bastante apropiado para sus intereses (también me gusta la sugerencia de Erlang).

Extremo de la barra
fuente
4

Sé por amigos en finanzas que la empresa comercial cuantitativa Jane Street usa OCaml para implementar sus estrategias comerciales. Tienen una página donde hablan sobre por qué, junto con enlaces a charlas sobre el tema.

Geoff Oxberry
fuente
2

Aquí hay una lista de historias de éxito de Common Lisp:

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

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

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

Aunque Common Lisp es solo parcialmente funcional (también es compatible con OOP y procedimientos, así como con cualquier cosa que desee implementar usted mismo o con una biblioteca), es un lenguaje muy pragmático y extremadamente poderoso en manos de un programador competente. De hecho, lo uso para escribir aplicaciones web con el excelente marco RESTAS .

Y el proyecto comercial de Python en el que estoy trabajando ahora eventualmente se complementará con servicios escritos en lisp (RESTAS como lo sugiere su nombre es excelente para servicios RESTful).

Pavel Penev
fuente
1

Sugeriría sumergirse en los compiladores (ya sea para lenguajes de propósito general o DSL): aquí es donde la programación funcional es óptima. Habrá muchas cosas interesantes y útiles para explorar, desde ADT y coincidencia de patrones en un lado de un espectro hasta las macros Lisp en el otro lado.

SK-logic
fuente
0

Es posible que desee echar un vistazo a Hume .

Desde la página del lenguaje de programación The Hume :

Hume (Meta-Environment unificado de orden superior) es un lenguaje fuertemente tipado, en su mayoría funcional, con un conjunto de herramientas integradas para desarrollar, probar y evaluar sistemas concurrentes críticos para la seguridad. Hume tiene como objetivo ampliar las fronteras del diseño del lenguaje para sistemas con recursos limitados, incluidos los sistemas integrados y críticos para la seguridad en tiempo real, mediante la introducción de nuevos niveles de abstracción y demostrabilidad.

Desde la página de Hume wikipedia :

Hume es un lenguaje de programación basado en funciones desarrollado en la Universidad de St Andrews y la Universidad Heriot-Watt en Escocia, y que lleva el nombre del filósofo del siglo XVIII David Hume. Está dirigido a sistemas embebidos en tiempo real, con el objetivo de producir un diseño que sea altamente abstracto, pero que aún permita la extracción precisa de los costos de ejecución de tiempo y espacio, lo que permite escribir programas que se ejecutarán bajo restricciones de tiempo y espacio acotadas garantizadas.

Hume es inusual en la combinación de ideas de programación funcional con ideas de autómatas de estados finitos . Los autómatas se utilizan para estructurar los programas de comunicación en una serie de "cuadros", donde cada cuadro asigna entradas a salidas de una manera puramente funcional utilizando la coincidencia de patrones de alto nivel. También es inusual en su estructura como una serie de niveles, cada uno de los cuales expone diferentes propiedades de la máquina, lo cual es muy inusual.

Mark Booth
fuente