Beautiful Erlang Code [cerrado]

15

Estoy tratando de aprender más sobre Erlang que los proyectos de juguetes con los que he estado jugando. Con este fin, estoy leyendo Programming Erlang y algunos de los archivos de Armstrong en Software .

También me gustaría leer algún código de ejemplo (preferiblemente de producción) que muestre el tipo de cosas que puede construir con Erlang que serían desproporcionadamente difíciles en otros idiomas. Además de (supongo) Yaws , ¿hay ejemplos disponibles públicamente de un hermoso código de Erlang que pueda leer para comprender mejor el idioma y / o ver los usos idiomáticos de varias construcciones de lenguaje?

Específicamente no busco código que "haga el trabajo", sino que use prácticas cuestionables, o ejemplos en la línea de "así es como se escribe factorialen Erlang".

En la misma línea, ¿alguien puede recomendar alguna buena literatura para aprender este idioma (aparte del mencionado "Programación Erlang")? De preferencia, algo que usted mismo usó para aprenderlo, pero si hay algunos libros estándar de la comunidad, tírelos también.

Inaimathi
fuente
Erlang fue creado por Ericcson para diseñar y construir conmutadores paralelos masivos para el tráfico telefónico. Fue diseñado por Ericsson para admitir aplicaciones distribuidas, tolerantes a fallas, en tiempo real suave y sin interrupciones. Ese es el dominio del problema en el que sobresale. Para todos los demás dominios problemáticos ... Su kilometraje puede variar.
Robert Harvey

Respuestas:

-4

Desde que agregó la etiqueta programación funcional, ¿qué le parece escribir un compilador o intérprete Erlang en Haskell? Erlang ya no es lo último en tecnología, como en todos. Recomiendo aprender Erlang en uno o dos días, como algunos otros idiomas (LISP, Prolog), y luego olvidarme de ellos; son solo un paso para desaprender los imperativos lenguajes OOP.

Para tareas más pequeñas que la implementación de un compilador, vea Proyecto Euler .

[EDITAR] Para responder el comentario:

Desde un punto de vista técnico: Erlang era bueno en los viejos tiempos, cuando no había procesadores multinúcleo. Pero ahora, dado los compiladores / intérpretes existentes de los que estoy seguro, simplemente ya no se escala como debería. Un intérprete escrito en Haskell escalaría, compilado a Haskell lo haría más rápido pero eliminaría la función de reemplazo de código sobre la marcha.

Desde el punto de vista de los programadores: Haskell no es la mejor opción para todas las tareas aplicables, pero atm, los lenguajes probablemente más avanzados son muy experimentales, y esas tareas no aplicables generalmente tienen algo que ver con sistemas integrados (como microcontroladores y GPU) o NumberCrunching, donde C y Assembler siguen siendo la mejor opción.

¿Qué es exactamente algo que podrías hacer con Erlang mejor que en otros idiomas?

comonad
fuente
44
No afirmé que lo estaba aprendiendo porque era lo último en tecnología; Simplemente creo que parece interesante, y puede haber cosas que puedes construir con él que no puedes fácilmente con otros idiomas. Si su respuesta es "Haskell es una mejor opción para todas las tareas aplicables", ¿qué le parece decirme por qué específicamente (en lugar de afirmarlo vagamente) y responder la pregunta inicial para Haskell en lugar de Erlang?
Inaimathi el
1
No sé si esta respuesta es tan mala, aunque bordea la pregunta original. Si desea ver a un encantador Haskell en el sentido en que habla Comanad, mire en.wikibooks.org/wiki/Write_Yourself_a_Scheme_in_48_Hours Es un tutorial que enseña a Haskell, la biblioteca de análisis de parsec y un esquema escribiendo un analizador de esquemas . Los combinadores de analizador son, creo, una de las cosas más hermosas para jugar en lenguajes funcionales. También son un poco prácticos; Una vez que sepa cómo escribir analizadores, puede diseñar sus propios idiomas para resolver problemas específicos.
CodexArcanum
1
"¿Qué es exactamente algo que podrías hacer con Erlang mejor que en otros idiomas?" No lo sé; Por eso estoy tratando de aprenderlo. Mi instinto me dice que un lenguaje cuya construcción principal es el proceso (a diferencia del cierre como en CL, el lambda como en Scheme o el diccionario como en python) tendría algo interesante que ofrecer. Haskell también es funcional, y tiene construcciones de coincidencia de patrones similares, pero no hay un enfoque implacable en la concurrencia. De hecho, la construcción principal en Haskell parece ser el tipo, lo que me hace pensar que son animales muy diferentes.
Inaimathi
2
@CodexArcanum: AFAIK, Erlang y OTP están disponibles bajo un derivado de la Licencia pública de Mozilla, y es gratis como cerveza en los repositorios de Debian. ¿Qué quisiste decir con "el sistema es propietario"?
Inaimathi
1
@comonad: lo que quise decir con "Haskell es una mejor opción para todas las tareas aplicables" fue "Por cada tarea que pudiera completar de manera aceptable con Erlang, Haskell puede hacerlo mejor". No quise dar a entender que podría hacer todo el trabajo de programación con un solo lenguaje, o que estaba buscando usar un solo lenguaje para todos mis proyectos. Parecía preguntar "¿Por qué usar Erlang cuando puedes usar Haskell?", Lo que implica que piensas que Haskell es directamente superior. Quería que aclararas y quizás apoyaras esa afirmación.
Inaimathi